feat(new tools): Date+Duration and Days Calculator

Allows computing specific date + some durations
Allows computing Date interval with many options (include end date, select week days, holidays, business time) and output many statistics

Fix #778, #584, #971
This commit is contained in:
ShareVB 2024-10-27 17:22:53 +01:00
parent 4c381f3b6d
commit dec2e31654
14 changed files with 1736 additions and 6 deletions

100
pnpm-lock.yaml generated
View file

@ -29,6 +29,9 @@ dependencies:
'@types/figlet':
specifier: ^1.5.8
version: 1.5.8
'@types/luxon':
specifier: ^3.4.2
version: 3.4.2
'@types/markdown-it':
specifier: ^13.0.7
version: 13.0.9
@ -59,6 +62,9 @@ dependencies:
composerize-ts:
specifier: ^0.6.2
version: 0.6.2
countries-and-timezones:
specifier: ^3.7.2
version: 3.7.2
country-code-lookup:
specifier: ^0.1.0
version: 0.1.0
@ -74,6 +80,9 @@ dependencies:
date-fns:
specifier: ^2.29.3
version: 2.29.3
date-holidays:
specifier: ^3.23.12
version: 3.23.12
dompurify:
specifier: ^3.0.6
version: 3.0.6
@ -119,6 +128,9 @@ dependencies:
lodash:
specifier: ^4.17.21
version: 4.17.21
luxon:
specifier: ^3.5.0
version: 3.5.0
markdown-it:
specifier: ^14.0.0
version: 14.1.0
@ -3005,6 +3017,10 @@ packages:
resolution: {integrity: sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q==}
dev: false
/@types/luxon@3.4.2:
resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==}
dev: false
/@types/markdown-it@12.2.3:
resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==}
dependencies:
@ -4192,6 +4208,11 @@ packages:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
dev: true
/astronomia@4.1.1:
resolution: {integrity: sha512-TcJD9lUC5eAo0/Ji7rnQauX/yQbi0yZWM+JsNr77W3OA5fsrgvuFgubLMFwfw4VlZ29cu9dG/yfJbfvuTSftjg==}
engines: {node: '>=12.0.0'}
dev: false
/async-validator@4.2.5:
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
dev: false
@ -4350,6 +4371,13 @@ packages:
engines: {node: '>=8'}
dev: true
/caldate@2.0.5:
resolution: {integrity: sha512-JndhrUuDuE975KUhFqJaVR1OQkCHZqpOrJur/CFXEIEhWhBMjxO85cRSK8q4FW+B+yyPq6GYua2u4KvNzTcq0w==}
engines: {node: '>=12.0.0'}
dependencies:
moment-timezone: 0.5.46
dev: false
/call-bind@1.0.5:
resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
dependencies:
@ -4666,6 +4694,11 @@ packages:
browserslist: 4.22.1
dev: true
/countries-and-timezones@3.7.2:
resolution: {integrity: sha512-BHAMt4pKb3U3r/mRfiIlVnDhRd8m6VC20gwCWtpZGZkSsjZmnMDKFnnjWYGWhBmypQAqcQILFJwmEhIgWGVTmw==}
engines: {node: '>=8.x', npm: '>=5.x'}
dev: false
/country-code-lookup@0.1.0:
resolution: {integrity: sha512-IOI66HEG+8bXfWPy+sTzuN7161vmDZOHg1wgIPFf3WfD73FeLajnn6C+fnxOIa9RL1WRBDMXQQWW/FOaOYaQ3w==}
dev: false
@ -4783,6 +4816,23 @@ packages:
whatwg-url: 12.0.1
dev: true
/date-bengali-revised@2.0.2:
resolution: {integrity: sha512-q9iDru4+TSA9k4zfm0CFHJj6nBsxP7AYgWC/qodK/i7oOIlj5K2z5IcQDtESfs/Qwqt/xJYaP86tkazd/vRptg==}
engines: {node: '>=12.0.0'}
dev: false
/date-chinese@2.1.4:
resolution: {integrity: sha512-WY+6+Qw92ZGWFvGtStmNQHEYpNa87b8IAQ5T8VKt4wqrn24lBXyyBnWI5jAIyy7h/KVwJZ06bD8l/b7yss82Ww==}
engines: {node: '>=12.0.0'}
dependencies:
astronomia: 4.1.1
dev: false
/date-easter@1.0.3:
resolution: {integrity: sha512-aOViyIgpM4W0OWUiLqivznwTtuMlD/rdUWhc5IatYnplhPiWrLv75cnifaKYhmQwUBLAMWLNG4/9mlLIbXoGBQ==}
engines: {node: '>=12.0.0'}
dev: false
/date-fns-tz@2.0.0(date-fns@2.30.0):
resolution: {integrity: sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==}
peerDependencies:
@ -4803,6 +4853,31 @@ packages:
'@babel/runtime': 7.23.2
dev: false
/date-holidays-parser@3.4.4:
resolution: {integrity: sha512-R5aO4oT8H51ZKdvApqHrqYEiNBrqT6tRj2PFXNcZfqMI4nxY7KKKly0ZsmquR5gY+x9ldKR8SAMdozzIInaoXg==}
engines: {node: '>=12.0.0'}
dependencies:
astronomia: 4.1.1
caldate: 2.0.5
date-bengali-revised: 2.0.2
date-chinese: 2.1.4
date-easter: 1.0.3
deepmerge: 4.3.1
jalaali-js: 1.2.7
moment-timezone: 0.5.46
dev: false
/date-holidays@3.23.12:
resolution: {integrity: sha512-DLyP0PPVgNydgaTAY7SBS26+5h3KO1Z8FRKiAROkz0hAGNBLGAM48SMabfVa2ACRHH7Qw3LXYvlJkt9oa9WePA==}
engines: {node: '>=12.0.0'}
hasBin: true
dependencies:
date-holidays-parser: 3.4.4
js-yaml: 4.1.0
lodash: 4.17.21
prepin: 1.0.3
dev: false
/de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
dev: false
@ -6521,6 +6596,10 @@ packages:
minimatch: 3.1.2
dev: true
/jalaali-js@1.2.7:
resolution: {integrity: sha512-gE+YHWSbygYAoJa+Xg8LWxGILqFOxZSBQQw39ghel01fVFUxV7bjL0x1JFsHcLQ3uPjvn81HQMa+kxwyPWnxGQ==}
dev: false
/javascript-natural-sort@0.7.1:
resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==}
dev: false
@ -6573,7 +6652,6 @@ packages:
hasBin: true
dependencies:
argparse: 2.0.1
dev: true
/jsbn@1.1.0:
resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
@ -6830,6 +6908,11 @@ packages:
dependencies:
yallist: 4.0.0
/luxon@3.5.0:
resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==}
engines: {node: '>=12'}
dev: false
/magic-string@0.25.9:
resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
dependencies:
@ -7036,6 +7119,16 @@ packages:
pkg-types: 1.0.3
ufo: 1.3.1
/moment-timezone@0.5.46:
resolution: {integrity: sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw==}
dependencies:
moment: 2.30.1
dev: false
/moment@2.30.1:
resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
dev: false
/monaco-editor@0.43.0:
resolution: {integrity: sha512-cnoqwQi/9fml2Szamv1XbSJieGJ1Dc8tENVMD26Kcfl7xGQWp7OBKMjlwKVGYFJ3/AXJjSOGvcqK7Ry/j9BM1Q==}
dev: false
@ -7570,6 +7663,11 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
/prepin@1.0.3:
resolution: {integrity: sha512-0XL2hreherEEvUy0fiaGEfN/ioXFV+JpImqIzQjxk6iBg4jQ2ARKqvC4+BmRD8w/pnpD+lbxvh0Ub+z7yBEjvA==}
hasBin: true
dev: false
/prettier@3.0.0:
resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==}
engines: {node: '>=14'}