chrono-node 2.8.4 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/calculation/duration.d.ts +5 -0
- package/dist/cjs/calculation/duration.js +6 -0
- package/dist/cjs/calculation/duration.js.map +1 -1
- package/dist/cjs/calculation/mergingCalculation.js +5 -4
- package/dist/cjs/calculation/mergingCalculation.js.map +1 -1
- package/dist/cjs/calculation/weekdays.js +1 -2
- package/dist/cjs/calculation/weekdays.js.map +1 -1
- package/dist/cjs/calculation/years.js +11 -16
- package/dist/cjs/calculation/years.js.map +1 -1
- package/dist/cjs/common/casualReferences.d.ts +1 -1
- package/dist/cjs/common/casualReferences.js +29 -31
- package/dist/cjs/common/casualReferences.js.map +1 -1
- package/dist/cjs/common/parsers/AbstractTimeExpressionParser.js +3 -0
- package/dist/cjs/common/parsers/AbstractTimeExpressionParser.js.map +1 -1
- package/dist/cjs/common/refiners/AbstractMergeDateRangeRefiner.js +20 -19
- package/dist/cjs/common/refiners/AbstractMergeDateRangeRefiner.js.map +1 -1
- package/dist/cjs/common/refiners/ForwardDateRefiner.js +16 -24
- package/dist/cjs/common/refiners/ForwardDateRefiner.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/locales/de/constants.d.ts +4 -4
- package/dist/cjs/locales/de/constants.js +5 -5
- package/dist/cjs/locales/de/constants.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DECasualDateParser.js +18 -15
- package/dist/cjs/locales/de/parsers/DECasualDateParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DECasualTimeParser.js +4 -9
- package/dist/cjs/locales/de/parsers/DECasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DETimeUnitRelativeFormatParser.js +2 -2
- package/dist/cjs/locales/de/parsers/DETimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DETimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/de/parsers/DETimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/constants.d.ts +5 -6
- package/dist/cjs/locales/en/constants.js +5 -5
- package/dist/cjs/locales/en/constants.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENCasualDateParser.js +7 -9
- package/dist/cjs/locales/en/parsers/ENCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENRelativeDateFormatParser.js +14 -18
- package/dist/cjs/locales/en/parsers/ENRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitAgoFormatParser.js +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitLaterFormatParser.js +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js +1 -5
- package/dist/cjs/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js +3 -3
- package/dist/cjs/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js.map +1 -1
- package/dist/cjs/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js +1 -1
- package/dist/cjs/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js.map +1 -1
- package/dist/cjs/locales/es/constants.d.ts +4 -5
- package/dist/cjs/locales/es/constants.js +4 -4
- package/dist/cjs/locales/es/constants.js.map +1 -1
- package/dist/cjs/locales/es/parsers/ESCasualTimeParser.js +6 -7
- package/dist/cjs/locales/es/parsers/ESCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/es/parsers/ESTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/es/parsers/ESTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/fr/constants.d.ts +4 -5
- package/dist/cjs/locales/fr/constants.js +4 -4
- package/dist/cjs/locales/fr/constants.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRCasualDateParser.js +6 -9
- package/dist/cjs/locales/fr/parsers/FRCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitAgoFormatParser.js +3 -3
- package/dist/cjs/locales/fr/parsers/FRTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +2 -2
- package/dist/cjs/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/constants.d.ts +4 -4
- package/dist/cjs/locales/it/constants.js +4 -4
- package/dist/cjs/locales/it/constants.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualDateParser.d.ts +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualDateParser.js +9 -11
- package/dist/cjs/locales/it/parsers/ITCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualTimeParser.d.ts +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js +8 -9
- package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js +14 -18
- package/dist/cjs/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js +3 -3
- package/dist/cjs/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js +3 -3
- package/dist/cjs/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.js +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/it/parsers/ITTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/refiners/ITMergeRelativeDateRefiner.js +3 -3
- package/dist/cjs/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +1 -1
- package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js +4 -8
- package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/ja/parsers/JPStandardParser.js +1 -6
- package/dist/cjs/locales/ja/parsers/JPStandardParser.js.map +1 -1
- package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.d.ts +1 -1
- package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.js +77 -187
- package/dist/cjs/locales/ja/parsers/JPTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/nl/constants.d.ts +4 -4
- package/dist/cjs/locales/nl/constants.js +4 -4
- package/dist/cjs/locales/nl/constants.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualDateTimeParser.js +10 -9
- package/dist/cjs/locales/nl/parsers/NLCasualDateTimeParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js +6 -7
- package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLRelativeDateFormatParser.js +14 -18
- package/dist/cjs/locales/nl/parsers/NLRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +3 -3
- package/dist/cjs/locales/nl/parsers/NLTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js +3 -3
- package/dist/cjs/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/nl/parsers/NLTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.js +6 -7
- package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/ru/constants.d.ts +4 -4
- package/dist/cjs/locales/ru/constants.js +7 -7
- package/dist/cjs/locales/ru/constants.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js +6 -9
- package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js +14 -18
- package/dist/cjs/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js +3 -3
- package/dist/cjs/locales/ru/parsers/RUTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +3 -3
- package/dist/cjs/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/sv/constants.d.ts +8 -4
- package/dist/cjs/locales/sv/constants.js +25 -7
- package/dist/cjs/locales/sv/constants.js.map +1 -1
- package/dist/cjs/locales/sv/index.js +2 -0
- package/dist/cjs/locales/sv/index.js.map +1 -1
- package/dist/cjs/locales/sv/parsers/SVCasualDateParser.js +14 -13
- package/dist/cjs/locales/sv/parsers/SVCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.d.ts +9 -0
- package/dist/cjs/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.js +34 -0
- package/dist/cjs/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.js.map +1 -0
- package/dist/cjs/locales/uk/constants.d.ts +4 -4
- package/dist/cjs/locales/uk/constants.js +8 -8
- package/dist/cjs/locales/uk/constants.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js +6 -9
- package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js +14 -18
- package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js +3 -3
- package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js +3 -3
- package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.js +1 -1
- package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansCasualDateParser.js +23 -27
- package/dist/cjs/locales/zh/hans/parsers/ZHHansCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDateParser.js +2 -7
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js +20 -21
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js +17 -22
- package/dist/cjs/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +71 -76
- package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansWeekdayParser.js +14 -19
- package/dist/cjs/locales/zh/hans/parsers/ZHHansWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantCasualDateParser.js +23 -27
- package/dist/cjs/locales/zh/hant/parsers/ZHHantCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDateParser.js +2 -7
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDateParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js +20 -21
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js +17 -22
- package/dist/cjs/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +73 -78
- package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantWeekdayParser.js +14 -19
- package/dist/cjs/locales/zh/hant/parsers/ZHHantWeekdayParser.js.map +1 -1
- package/dist/cjs/results.d.ts +3 -4
- package/dist/cjs/results.js +74 -60
- package/dist/cjs/results.js.map +1 -1
- package/dist/cjs/timezone.js +1 -6
- package/dist/cjs/timezone.js.map +1 -1
- package/dist/cjs/types.d.ts +1 -1
- package/dist/esm/calculation/duration.d.ts +5 -0
- package/dist/esm/calculation/duration.js +5 -0
- package/dist/esm/calculation/duration.js.map +1 -1
- package/dist/esm/calculation/mergingCalculation.js +5 -4
- package/dist/esm/calculation/mergingCalculation.js.map +1 -1
- package/dist/esm/calculation/weekdays.js +1 -2
- package/dist/esm/calculation/weekdays.js.map +1 -1
- package/dist/esm/calculation/years.js +11 -13
- package/dist/esm/calculation/years.js.map +1 -1
- package/dist/esm/common/casualReferences.d.ts +1 -1
- package/dist/esm/common/casualReferences.js +21 -20
- package/dist/esm/common/casualReferences.js.map +1 -1
- package/dist/esm/common/parsers/AbstractTimeExpressionParser.js +3 -0
- package/dist/esm/common/parsers/AbstractTimeExpressionParser.js.map +1 -1
- package/dist/esm/common/refiners/AbstractMergeDateRangeRefiner.js +20 -19
- package/dist/esm/common/refiners/AbstractMergeDateRangeRefiner.js.map +1 -1
- package/dist/esm/common/refiners/ForwardDateRefiner.js +16 -21
- package/dist/esm/common/refiners/ForwardDateRefiner.js.map +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/locales/de/constants.d.ts +4 -4
- package/dist/esm/locales/de/constants.js +4 -4
- package/dist/esm/locales/de/constants.js.map +1 -1
- package/dist/esm/locales/de/parsers/DECasualDateParser.js +13 -10
- package/dist/esm/locales/de/parsers/DECasualDateParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DECasualTimeParser.js +3 -5
- package/dist/esm/locales/de/parsers/DECasualTimeParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js +2 -2
- package/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/de/parsers/DETimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/de/parsers/DETimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/en/constants.d.ts +5 -6
- package/dist/esm/locales/en/constants.js +7 -7
- package/dist/esm/locales/en/constants.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENCasualDateParser.js +6 -5
- package/dist/esm/locales/en/parsers/ENCasualDateParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENRelativeDateFormatParser.js +14 -15
- package/dist/esm/locales/en/parsers/ENRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js +2 -2
- package/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +2 -2
- package/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js +2 -2
- package/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js +2 -6
- package/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js +4 -4
- package/dist/esm/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js.map +1 -1
- package/dist/esm/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js +2 -2
- package/dist/esm/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js.map +1 -1
- package/dist/esm/locales/es/constants.d.ts +4 -5
- package/dist/esm/locales/es/constants.js +3 -3
- package/dist/esm/locales/es/constants.js.map +1 -1
- package/dist/esm/locales/es/parsers/ESCasualTimeParser.js +6 -4
- package/dist/esm/locales/es/parsers/ESCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/es/parsers/ESTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/es/parsers/ESTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/fr/constants.d.ts +4 -5
- package/dist/esm/locales/fr/constants.js +3 -3
- package/dist/esm/locales/fr/constants.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRCasualDateParser.js +5 -5
- package/dist/esm/locales/fr/parsers/FRCasualDateParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRTimeUnitAgoFormatParser.js +4 -4
- package/dist/esm/locales/fr/parsers/FRTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +2 -2
- package/dist/esm/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/fr/parsers/FRTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/it/constants.d.ts +4 -4
- package/dist/esm/locales/it/constants.js +3 -3
- package/dist/esm/locales/it/constants.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITCasualDateParser.d.ts +1 -1
- package/dist/esm/locales/it/parsers/ITCasualDateParser.js +7 -6
- package/dist/esm/locales/it/parsers/ITCasualDateParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITCasualTimeParser.d.ts +1 -1
- package/dist/esm/locales/it/parsers/ITCasualTimeParser.js +7 -5
- package/dist/esm/locales/it/parsers/ITCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITRelativeDateFormatParser.js +14 -15
- package/dist/esm/locales/it/parsers/ITRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js +4 -4
- package/dist/esm/locales/it/parsers/ITTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js +4 -4
- package/dist/esm/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js +2 -2
- package/dist/esm/locales/it/parsers/ITTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/it/parsers/ITTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/it/refiners/ITMergeRelativeDateRefiner.js +4 -4
- package/dist/esm/locales/it/refiners/ITMergeRelativeDateRefiner.js.map +1 -1
- package/dist/esm/locales/ja/parsers/JPCasualDateParser.js +4 -5
- package/dist/esm/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
- package/dist/esm/locales/ja/parsers/JPStandardParser.js +1 -3
- package/dist/esm/locales/ja/parsers/JPStandardParser.js.map +1 -1
- package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.d.ts +1 -1
- package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.js +75 -186
- package/dist/esm/locales/ja/parsers/JPTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/nl/constants.d.ts +4 -4
- package/dist/esm/locales/nl/constants.js +3 -3
- package/dist/esm/locales/nl/constants.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualDateTimeParser.js +9 -5
- package/dist/esm/locales/nl/parsers/NLCasualDateTimeParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualTimeParser.js +6 -4
- package/dist/esm/locales/nl/parsers/NLCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLRelativeDateFormatParser.js +14 -15
- package/dist/esm/locales/nl/parsers/NLRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +4 -4
- package/dist/esm/locales/nl/parsers/NLTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js +4 -4
- package/dist/esm/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +2 -2
- package/dist/esm/locales/nl/parsers/NLTimeUnitLaterFormatParser.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/nl/parsers/NLTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/pt/parsers/PTCasualTimeParser.js +6 -4
- package/dist/esm/locales/pt/parsers/PTCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/ru/constants.d.ts +4 -4
- package/dist/esm/locales/ru/constants.js +6 -6
- package/dist/esm/locales/ru/constants.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUCasualTimeParser.js +6 -6
- package/dist/esm/locales/ru/parsers/RUCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.js +14 -15
- package/dist/esm/locales/ru/parsers/RURelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeUnitAgoFormatParser.js +4 -4
- package/dist/esm/locales/ru/parsers/RUTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js +4 -4
- package/dist/esm/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/ru/parsers/RUTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/sv/constants.d.ts +8 -4
- package/dist/esm/locales/sv/constants.js +23 -5
- package/dist/esm/locales/sv/constants.js.map +1 -1
- package/dist/esm/locales/sv/index.js +2 -0
- package/dist/esm/locales/sv/index.js.map +1 -1
- package/dist/esm/locales/sv/parsers/SVCasualDateParser.js +14 -10
- package/dist/esm/locales/sv/parsers/SVCasualDateParser.js.map +1 -1
- package/dist/esm/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.d.ts +9 -0
- package/dist/esm/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.js +32 -0
- package/dist/esm/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.js.map +1 -0
- package/dist/esm/locales/uk/constants.d.ts +4 -4
- package/dist/esm/locales/uk/constants.js +7 -7
- package/dist/esm/locales/uk/constants.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKCasualTimeParser.js +6 -6
- package/dist/esm/locales/uk/parsers/UKCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.js +14 -15
- package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKTimeUnitAgoFormatParser.js +4 -4
- package/dist/esm/locales/uk/parsers/UKTimeUnitAgoFormatParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js +4 -4
- package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.js +2 -2
- package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansCasualDateParser.js +23 -24
- package/dist/esm/locales/zh/hans/parsers/ZHHansCasualDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansDateParser.js +2 -4
- package/dist/esm/locales/zh/hans/parsers/ZHHansDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js +20 -18
- package/dist/esm/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js +17 -19
- package/dist/esm/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js +71 -73
- package/dist/esm/locales/zh/hans/parsers/ZHHansTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansWeekdayParser.js +14 -16
- package/dist/esm/locales/zh/hans/parsers/ZHHansWeekdayParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantCasualDateParser.js +23 -24
- package/dist/esm/locales/zh/hant/parsers/ZHHantCasualDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantDateParser.js +2 -4
- package/dist/esm/locales/zh/hant/parsers/ZHHantDateParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js +20 -18
- package/dist/esm/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js +17 -19
- package/dist/esm/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js +73 -75
- package/dist/esm/locales/zh/hant/parsers/ZHHantTimeExpressionParser.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantWeekdayParser.js +14 -16
- package/dist/esm/locales/zh/hant/parsers/ZHHantWeekdayParser.js.map +1 -1
- package/dist/esm/results.d.ts +3 -4
- package/dist/esm/results.js +75 -58
- package/dist/esm/results.js.map +1 -1
- package/dist/esm/timezone.js +1 -3
- package/dist/esm/timezone.js.map +1 -1
- package/dist/esm/types.d.ts +1 -1
- package/package.json +2 -4
- package/src/calculation/duration.ts +10 -0
- package/src/calculation/mergingCalculation.ts +5 -4
- package/src/calculation/weekdays.ts +2 -2
- package/src/calculation/years.ts +11 -16
- package/src/common/casualReferences.ts +23 -33
- package/src/common/parsers/AbstractTimeExpressionParser.ts +6 -0
- package/src/common/refiners/AbstractMergeDateRangeRefiner.ts +20 -21
- package/src/common/refiners/ForwardDateRefiner.ts +17 -22
- package/src/index.ts +3 -1
- package/src/locales/de/constants.ts +8 -8
- package/src/locales/de/parsers/DECasualDateParser.ts +13 -10
- package/src/locales/de/parsers/DECasualTimeParser.ts +3 -5
- package/src/locales/de/parsers/DETimeUnitRelativeFormatParser.ts +2 -2
- package/src/locales/de/parsers/DETimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/en/constants.ts +12 -13
- package/src/locales/en/parsers/ENCasualDateParser.ts +6 -5
- package/src/locales/en/parsers/ENRelativeDateFormatParser.ts +14 -16
- package/src/locales/en/parsers/ENTimeUnitAgoFormatParser.ts +2 -2
- package/src/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.ts +2 -2
- package/src/locales/en/parsers/ENTimeUnitLaterFormatParser.ts +2 -2
- package/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts +2 -7
- package/src/locales/en/refiners/ENMergeRelativeAfterDateRefiner.ts +4 -4
- package/src/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.ts +2 -2
- package/src/locales/es/constants.ts +7 -6
- package/src/locales/es/parsers/ESCasualTimeParser.ts +6 -4
- package/src/locales/es/parsers/ESTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/fr/constants.ts +7 -6
- package/src/locales/fr/parsers/FRCasualDateParser.ts +5 -5
- package/src/locales/fr/parsers/FRTimeUnitAgoFormatParser.ts +4 -4
- package/src/locales/fr/parsers/FRTimeUnitRelativeFormatParser.ts +2 -2
- package/src/locales/fr/parsers/FRTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/it/constants.ts +7 -7
- package/src/locales/it/parsers/ITCasualDateParser.ts +7 -6
- package/src/locales/it/parsers/ITCasualTimeParser.ts +7 -5
- package/src/locales/it/parsers/ITRelativeDateFormatParser.ts +14 -16
- package/src/locales/it/parsers/ITTimeUnitAgoFormatParser.ts +4 -4
- package/src/locales/it/parsers/ITTimeUnitCasualRelativeFormatParser.ts +4 -4
- package/src/locales/it/parsers/ITTimeUnitLaterFormatParser.ts +2 -2
- package/src/locales/it/parsers/ITTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/it/refiners/ITMergeRelativeDateRefiner.ts +4 -4
- package/src/locales/ja/parsers/JPCasualDateParser.ts +4 -5
- package/src/locales/ja/parsers/JPStandardParser.ts +1 -4
- package/src/locales/ja/parsers/JPTimeExpressionParser.ts +91 -190
- package/src/locales/nl/constants.ts +7 -7
- package/src/locales/nl/parsers/NLCasualDateTimeParser.ts +9 -5
- package/src/locales/nl/parsers/NLCasualTimeParser.ts +6 -4
- package/src/locales/nl/parsers/NLRelativeDateFormatParser.ts +14 -16
- package/src/locales/nl/parsers/NLTimeUnitAgoFormatParser.ts +4 -4
- package/src/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.ts +4 -4
- package/src/locales/nl/parsers/NLTimeUnitLaterFormatParser.ts +2 -2
- package/src/locales/nl/parsers/NLTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/pt/parsers/PTCasualTimeParser.ts +6 -4
- package/src/locales/ru/constants.ts +10 -10
- package/src/locales/ru/parsers/RUCasualTimeParser.ts +6 -6
- package/src/locales/ru/parsers/RURelativeDateFormatParser.ts +15 -18
- package/src/locales/ru/parsers/RUTimeUnitAgoFormatParser.ts +4 -4
- package/src/locales/ru/parsers/RUTimeUnitCasualRelativeFormatParser.ts +4 -4
- package/src/locales/ru/parsers/RUTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/sv/constants.ts +31 -9
- package/src/locales/sv/index.ts +2 -0
- package/src/locales/sv/parsers/SVCasualDateParser.ts +14 -10
- package/src/locales/sv/parsers/SVTimeUnitCasualRelativeFormatParser.ts +42 -0
- package/src/locales/uk/constants.ts +11 -11
- package/src/locales/uk/parsers/UKCasualTimeParser.ts +6 -6
- package/src/locales/uk/parsers/UKRelativeDateFormatParser.ts +14 -16
- package/src/locales/uk/parsers/UKTimeUnitAgoFormatParser.ts +4 -4
- package/src/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.ts +4 -4
- package/src/locales/uk/parsers/UKTimeUnitWithinFormatParser.ts +2 -2
- package/src/locales/zh/hans/parsers/ZHHansCasualDateParser.ts +23 -24
- package/src/locales/zh/hans/parsers/ZHHansDateParser.ts +2 -4
- package/src/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.ts +20 -18
- package/src/locales/zh/hans/parsers/ZHHansRelationWeekdayParser.ts +18 -18
- package/src/locales/zh/hans/parsers/ZHHansTimeExpressionParser.ts +71 -73
- package/src/locales/zh/hans/parsers/ZHHansWeekdayParser.ts +16 -15
- package/src/locales/zh/hant/parsers/ZHHantCasualDateParser.ts +23 -24
- package/src/locales/zh/hant/parsers/ZHHantDateParser.ts +2 -4
- package/src/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.ts +20 -18
- package/src/locales/zh/hant/parsers/ZHHantRelationWeekdayParser.ts +18 -18
- package/src/locales/zh/hant/parsers/ZHHantTimeExpressionParser.ts +73 -75
- package/src/locales/zh/hant/parsers/ZHHantWeekdayParser.ts +16 -15
- package/src/results.ts +82 -58
- package/src/timezone.ts +1 -5
- package/src/types.ts +1 -1
- package/test/calculation_weekdays.test.ts +17 -0
- package/test/en/en_time_exp.test.ts +2 -0
- package/test/it/it_casual.test.ts +44 -0
- package/test/it/it_month_name_little_endian.test.ts +28 -0
- package/test/it/it_weekday.test.ts +37 -0
- package/test/ja/ja_time_exp.test.ts +82 -21
- package/test/result.test.ts +74 -0
- package/test/sv/sv_casual.test.ts +42 -0
- package/test/sv/sv_month_name_little_endian.test.ts +48 -0
- package/test/sv/sv_time_units_casual_relative.test.ts +143 -0
- package/test/zh/hans/zh_hans_casual.test.ts +14 -0
- package/test/zh/hans/zh_hans_date.test.ts +14 -0
- package/test/zh/hans/zh_hans_deadline.test.ts +39 -0
- package/test/zh/hans/zh_hans_time_exp.test.ts +51 -0
- package/test/zh/hans/zh_hans_weekday.test.ts +87 -0
- package/test/zh/hant/zh_hant_casual.test.ts +14 -0
- package/test/zh/hant/zh_hant_date.test.ts +14 -0
- package/test/zh/hant/zh_hant_weekday.test.ts +43 -0
- package/dist/cjs/utils/dayjs.d.ts +0 -8
- package/dist/cjs/utils/dayjs.js +0 -48
- package/dist/cjs/utils/dayjs.js.map +0 -1
- package/dist/cjs/utils/timeunits.d.ts +0 -7
- package/dist/cjs/utils/timeunits.js +0 -30
- package/dist/cjs/utils/timeunits.js.map +0 -1
- package/dist/esm/utils/dayjs.d.ts +0 -8
- package/dist/esm/utils/dayjs.js +0 -40
- package/dist/esm/utils/dayjs.js.map +0 -1
- package/dist/esm/utils/timeunits.d.ts +0 -7
- package/dist/esm/utils/timeunits.js +0 -26
- package/dist/esm/utils/timeunits.js.map +0 -1
- package/src/utils/dayjs.ts +0 -52
- package/src/utils/timeunits.ts +0 -47
package/src/results.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { Component, ParsedComponents, ParsedResult, ParsingReference, TimezoneAbbrMap } from "./types";
|
|
2
2
|
|
|
3
|
-
import quarterOfYear from "dayjs/plugin/quarterOfYear";
|
|
4
|
-
import dayjs, { QUnitType } from "dayjs";
|
|
5
3
|
import { assignSimilarDate, assignSimilarTime, implySimilarTime } from "./utils/dates";
|
|
6
4
|
import { toTimezoneOffset } from "./timezone";
|
|
7
|
-
import { addDuration, Duration } from "./calculation/duration";
|
|
8
|
-
dayjs.extend(quarterOfYear);
|
|
5
|
+
import { addDuration, Duration, EmptyDuration } from "./calculation/duration";
|
|
9
6
|
|
|
10
7
|
export class ReferenceWithTimezone {
|
|
11
8
|
readonly instant: Date;
|
|
@@ -79,16 +76,62 @@ export class ParsingComponents implements ParsedComponents {
|
|
|
79
76
|
}
|
|
80
77
|
}
|
|
81
78
|
|
|
82
|
-
const
|
|
83
|
-
this.imply("day",
|
|
84
|
-
this.imply("month",
|
|
85
|
-
this.imply("year",
|
|
79
|
+
const date = reference.getDateWithAdjustedTimezone();
|
|
80
|
+
this.imply("day", date.getDate());
|
|
81
|
+
this.imply("month", date.getMonth() + 1);
|
|
82
|
+
this.imply("year", date.getFullYear());
|
|
86
83
|
this.imply("hour", 12);
|
|
87
84
|
this.imply("minute", 0);
|
|
88
85
|
this.imply("second", 0);
|
|
89
86
|
this.imply("millisecond", 0);
|
|
90
87
|
}
|
|
91
88
|
|
|
89
|
+
static createRelativeFromReference(
|
|
90
|
+
reference: ReferenceWithTimezone,
|
|
91
|
+
duration: Duration = EmptyDuration
|
|
92
|
+
): ParsingComponents {
|
|
93
|
+
let date = addDuration(reference.getDateWithAdjustedTimezone(), duration);
|
|
94
|
+
|
|
95
|
+
const components = new ParsingComponents(reference);
|
|
96
|
+
components.addTag("result/relativeDate");
|
|
97
|
+
if ("hour" in duration || "minute" in duration || "second" in duration || "millisecond" in duration) {
|
|
98
|
+
components.addTag("result/relativeDateAndTime");
|
|
99
|
+
assignSimilarTime(components, date);
|
|
100
|
+
assignSimilarDate(components, date);
|
|
101
|
+
components.assign("timezoneOffset", reference.getTimezoneOffset());
|
|
102
|
+
} else {
|
|
103
|
+
implySimilarTime(components, date);
|
|
104
|
+
components.imply("timezoneOffset", reference.getTimezoneOffset());
|
|
105
|
+
|
|
106
|
+
if ("day" in duration) {
|
|
107
|
+
components.assign("day", date.getDate());
|
|
108
|
+
components.assign("month", date.getMonth() + 1);
|
|
109
|
+
components.assign("year", date.getFullYear());
|
|
110
|
+
components.assign("weekday", date.getDay());
|
|
111
|
+
} else if ("week" in duration) {
|
|
112
|
+
components.assign("day", date.getDate());
|
|
113
|
+
components.assign("month", date.getMonth() + 1);
|
|
114
|
+
components.assign("year", date.getFullYear());
|
|
115
|
+
components.imply("weekday", date.getDay());
|
|
116
|
+
} else {
|
|
117
|
+
components.imply("day", date.getDate());
|
|
118
|
+
if ("month" in duration) {
|
|
119
|
+
components.assign("month", date.getMonth() + 1);
|
|
120
|
+
components.assign("year", date.getFullYear());
|
|
121
|
+
} else {
|
|
122
|
+
components.imply("month", date.getMonth() + 1);
|
|
123
|
+
if ("year" in duration) {
|
|
124
|
+
components.assign("year", date.getFullYear());
|
|
125
|
+
} else {
|
|
126
|
+
components.imply("year", date.getFullYear());
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return components;
|
|
133
|
+
}
|
|
134
|
+
|
|
92
135
|
get(component: Component): number | null {
|
|
93
136
|
if (component in this.knownValues) {
|
|
94
137
|
return this.knownValues[component];
|
|
@@ -123,9 +166,37 @@ export class ParsingComponents implements ParsedComponents {
|
|
|
123
166
|
return this;
|
|
124
167
|
}
|
|
125
168
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
169
|
+
/**
|
|
170
|
+
* Add the `duration` into this component, mark the modified date and/or time as implied.
|
|
171
|
+
* @param duration
|
|
172
|
+
*/
|
|
173
|
+
addDurationAsImplied(duration: Duration): ParsingComponents {
|
|
174
|
+
const currentDate = this.dateWithoutTimezoneAdjustment();
|
|
175
|
+
const date = addDuration(currentDate, duration);
|
|
176
|
+
if ("day" in duration || "week" in duration || "month" in duration || "year" in duration) {
|
|
177
|
+
this.delete(["day", "weekday", "month", "year"]);
|
|
178
|
+
this.imply("day", date.getDate());
|
|
179
|
+
this.imply("weekday", date.getDay());
|
|
180
|
+
this.imply("month", date.getMonth() + 1);
|
|
181
|
+
this.imply("year", date.getFullYear());
|
|
182
|
+
}
|
|
183
|
+
if ("second" in duration || "minute" in duration || "hour" in duration) {
|
|
184
|
+
this.delete(["second", "minute", "hour"]);
|
|
185
|
+
this.imply("second", date.getSeconds());
|
|
186
|
+
this.imply("minute", date.getMinutes());
|
|
187
|
+
this.imply("hour", date.getHours());
|
|
188
|
+
}
|
|
189
|
+
return this;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
delete(components: Component | Component[]) {
|
|
193
|
+
if (typeof components === "string") {
|
|
194
|
+
components = [components];
|
|
195
|
+
}
|
|
196
|
+
for (const component of components) {
|
|
197
|
+
delete this.knownValues[component];
|
|
198
|
+
delete this.impliedValues[component];
|
|
199
|
+
}
|
|
129
200
|
}
|
|
130
201
|
|
|
131
202
|
clone(): ParsingComponents {
|
|
@@ -182,10 +253,6 @@ export class ParsingComponents implements ParsedComponents {
|
|
|
182
253
|
reference: ${JSON.stringify(this.reference)}]`;
|
|
183
254
|
}
|
|
184
255
|
|
|
185
|
-
dayjs() {
|
|
186
|
-
return dayjs(this.dateWithoutTimezoneAdjustment());
|
|
187
|
-
}
|
|
188
|
-
|
|
189
256
|
date(): Date {
|
|
190
257
|
const date = this.dateWithoutTimezoneAdjustment();
|
|
191
258
|
const timezoneAdjustment = this.reference.getSystemTimezoneAdjustmentMinute(date, this.get("timezoneOffset"));
|
|
@@ -222,49 +289,6 @@ export class ParsingComponents implements ParsedComponents {
|
|
|
222
289
|
date.setFullYear(this.get("year"));
|
|
223
290
|
return date;
|
|
224
291
|
}
|
|
225
|
-
|
|
226
|
-
static createRelativeFromReference(reference: ReferenceWithTimezone, duration: Duration): ParsingComponents {
|
|
227
|
-
let date = addDuration(reference.getDateWithAdjustedTimezone(), duration);
|
|
228
|
-
|
|
229
|
-
const components = new ParsingComponents(reference);
|
|
230
|
-
components.addTag("result/relativeDate");
|
|
231
|
-
if (duration["hour"] || duration["minute"] || duration["second"]) {
|
|
232
|
-
components.addTag("result/relativeDateAndTime");
|
|
233
|
-
assignSimilarTime(components, date);
|
|
234
|
-
assignSimilarDate(components, date);
|
|
235
|
-
components.assign("timezoneOffset", reference.getTimezoneOffset());
|
|
236
|
-
} else {
|
|
237
|
-
implySimilarTime(components, date);
|
|
238
|
-
components.imply("timezoneOffset", reference.getTimezoneOffset());
|
|
239
|
-
|
|
240
|
-
if (duration["day"]) {
|
|
241
|
-
components.assign("day", date.getDate());
|
|
242
|
-
components.assign("month", date.getMonth() + 1);
|
|
243
|
-
components.assign("year", date.getFullYear());
|
|
244
|
-
components.assign("weekday", date.getDay());
|
|
245
|
-
} else if (duration["week"]) {
|
|
246
|
-
components.assign("day", date.getDate());
|
|
247
|
-
components.assign("month", date.getMonth() + 1);
|
|
248
|
-
components.assign("year", date.getFullYear());
|
|
249
|
-
components.imply("weekday", date.getDay());
|
|
250
|
-
} else {
|
|
251
|
-
components.imply("day", date.getDate());
|
|
252
|
-
if (duration["month"]) {
|
|
253
|
-
components.assign("month", date.getMonth() + 1);
|
|
254
|
-
components.assign("year", date.getFullYear());
|
|
255
|
-
} else {
|
|
256
|
-
components.imply("month", date.getMonth() + 1);
|
|
257
|
-
if (duration["year"]) {
|
|
258
|
-
components.assign("year", date.getFullYear());
|
|
259
|
-
} else {
|
|
260
|
-
components.imply("year", date.getFullYear());
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
return components;
|
|
267
|
-
}
|
|
268
292
|
}
|
|
269
293
|
|
|
270
294
|
export class ParsingResult implements ParsedResult {
|
package/src/timezone.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import dayjs from "dayjs";
|
|
2
1
|
import { TimezoneAbbrMap, Weekday, Month } from "./types";
|
|
3
2
|
|
|
4
3
|
export const TIMEZONE_ABBR_MAP: TimezoneAbbrMap = {
|
|
@@ -310,10 +309,7 @@ export function toTimezoneOffset(
|
|
|
310
309
|
}
|
|
311
310
|
|
|
312
311
|
// Return DST offset if the refDate is during daylight savings
|
|
313
|
-
if (
|
|
314
|
-
dayjs(date).isAfter(matchedTimezone.dstStart(date.getFullYear())) &&
|
|
315
|
-
!dayjs(date).isAfter(matchedTimezone.dstEnd(date.getFullYear()))
|
|
316
|
-
) {
|
|
312
|
+
if (date > matchedTimezone.dstStart(date.getFullYear()) && !(date > matchedTimezone.dstEnd(date.getFullYear()))) {
|
|
317
313
|
return matchedTimezone.timezoneOffsetDuringDst;
|
|
318
314
|
}
|
|
319
315
|
|
package/src/types.ts
CHANGED
|
@@ -129,7 +129,7 @@ export type Component =
|
|
|
129
129
|
| "meridiem"
|
|
130
130
|
| "timezoneOffset";
|
|
131
131
|
|
|
132
|
-
export type Timeunit = "year" | "month" | "week" | "day" | "hour" | "minute" | "second" | "millisecond";
|
|
132
|
+
export type Timeunit = "year" | "month" | "week" | "day" | "hour" | "minute" | "second" | "millisecond" | "quarter";
|
|
133
133
|
|
|
134
134
|
export enum Meridiem {
|
|
135
135
|
AM = 0,
|
|
@@ -114,3 +114,20 @@ test("Test - Closest Weekday Calculation", () => {
|
|
|
114
114
|
expect(getDaysToWeekday(refDate, Weekday.WEDNESDAY)).toBe(-3);
|
|
115
115
|
}
|
|
116
116
|
});
|
|
117
|
+
|
|
118
|
+
test("Test - Weekdays calculation with timezone", () => {
|
|
119
|
+
// Thu Feb 27 2025 17:00:00 GMT+0000
|
|
120
|
+
// Thu Feb 27 2025 09:00:00 GMT-0800 (PST)
|
|
121
|
+
// Fri Feb 28 2025 02:00:00 GMT+0900 (JST)
|
|
122
|
+
const refInstant = new Date("2025-02-27T17:00:00.000Z");
|
|
123
|
+
{
|
|
124
|
+
const reference = ReferenceWithTimezone.fromInput({ instant: refInstant, timezone: "JST" });
|
|
125
|
+
const output = createParsingComponentsAtWeekday(reference, Weekday.FRIDAY, "this");
|
|
126
|
+
expect(output.date()).toStrictEqual(new Date("Fri Feb 28 2025 12:00:00 GMT+0900 (JST)"));
|
|
127
|
+
}
|
|
128
|
+
{
|
|
129
|
+
const reference = ReferenceWithTimezone.fromInput({ instant: refInstant, timezone: "PST" });
|
|
130
|
+
const output = createParsingComponentsAtWeekday(reference, Weekday.FRIDAY, "this");
|
|
131
|
+
expect(output.date()).toStrictEqual(new Date("Fri Feb 28 2025 12:00:00 GMT-0800 (PST)"));
|
|
132
|
+
}
|
|
133
|
+
});
|
|
@@ -432,6 +432,8 @@ test("Test - Parsing negative cases : [year-like] pattern", function () {
|
|
|
432
432
|
testUnexpectedResult(chrono, "2020");
|
|
433
433
|
|
|
434
434
|
testUnexpectedResult(chrono, "2020 ");
|
|
435
|
+
|
|
436
|
+
testUnexpectedResult(chrono, "2019 to 2020");
|
|
435
437
|
});
|
|
436
438
|
|
|
437
439
|
test("Test - Parsing negative cases : 'at [some numbers]'", function () {
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import * as chrono from "../../src/";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single Expression", () => {
|
|
5
|
+
testSingleCase(chrono.it.casual, "La scadenza è ora", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
|
|
6
|
+
expect(result.index).toBe(14);
|
|
7
|
+
expect(result.text).toBe("ora");
|
|
8
|
+
|
|
9
|
+
expect(result.start).not.toBeNull();
|
|
10
|
+
expect(result.start.get("year")).toBe(2012);
|
|
11
|
+
expect(result.start.get("month")).toBe(8);
|
|
12
|
+
expect(result.start.get("day")).toBe(10);
|
|
13
|
+
expect(result.start.get("hour")).toBe(8);
|
|
14
|
+
expect(result.start.get("minute")).toBe(9);
|
|
15
|
+
expect(result.start.get("second")).toBe(10);
|
|
16
|
+
expect(result.start.get("millisecond")).toBe(11);
|
|
17
|
+
|
|
18
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 9, 10, 11));
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
testSingleCase(chrono.it.casual, "La scadenza è oggi", new Date(2012, 7, 10, 14, 12), (result) => {
|
|
22
|
+
expect(result.index).toBe(14);
|
|
23
|
+
expect(result.text).toBe("oggi");
|
|
24
|
+
|
|
25
|
+
expect(result.start).not.toBeNull();
|
|
26
|
+
expect(result.start.get("year")).toBe(2012);
|
|
27
|
+
expect(result.start.get("month")).toBe(8);
|
|
28
|
+
expect(result.start.get("day")).toBe(10);
|
|
29
|
+
|
|
30
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 14, 12));
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
testSingleCase(chrono.it.casual, "La scadenza è domani", new Date(2012, 7, 10, 17, 10), (result) => {
|
|
34
|
+
expect(result.index).toBe(14);
|
|
35
|
+
expect(result.text).toBe("domani");
|
|
36
|
+
|
|
37
|
+
expect(result.start).not.toBeNull();
|
|
38
|
+
expect(result.start.get("year")).toBe(2012);
|
|
39
|
+
expect(result.start.get("month")).toBe(8);
|
|
40
|
+
expect(result.start.get("day")).toBe(11);
|
|
41
|
+
|
|
42
|
+
expect(result.start).toBeDate(new Date(2012, 7, 11, 17, 10));
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as chrono from "../../src/";
|
|
2
|
+
import { testSingleCase, testUnexpectedResult } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single expression", () => {
|
|
5
|
+
testSingleCase(chrono.it, "10 Agosto 2012", new Date(2012, 7, 10), (result) => {
|
|
6
|
+
expect(result.start).not.toBeNull();
|
|
7
|
+
expect(result.start.get("year")).toBe(2012);
|
|
8
|
+
expect(result.start.get("month")).toBe(8);
|
|
9
|
+
expect(result.start.get("day")).toBe(10);
|
|
10
|
+
|
|
11
|
+
expect(result.index).toBe(0);
|
|
12
|
+
expect(result.text).toBe("10 Agosto 2012");
|
|
13
|
+
|
|
14
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
testSingleCase(chrono.it, "La scadenza è il 10 Agosto", new Date(2012, 7, 10), (result) => {
|
|
18
|
+
expect(result.index).toBe(17);
|
|
19
|
+
expect(result.text).toBe("10 Agosto");
|
|
20
|
+
|
|
21
|
+
expect(result.start).not.toBeNull();
|
|
22
|
+
expect(result.start.get("year")).toBe(2012);
|
|
23
|
+
expect(result.start.get("month")).toBe(8);
|
|
24
|
+
expect(result.start.get("day")).toBe(10);
|
|
25
|
+
|
|
26
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
|
|
27
|
+
});
|
|
28
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as chrono from "../../src/";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single Expression", function () {
|
|
5
|
+
testSingleCase(chrono.it, "Lunedì", new Date(2012, 7, 9), (result) => {
|
|
6
|
+
expect(result.index).toBe(0);
|
|
7
|
+
expect(result.text).toBe("Lunedì");
|
|
8
|
+
|
|
9
|
+
expect(result.start).not.toBeNull();
|
|
10
|
+
expect(result.start.get("year")).toBe(2012);
|
|
11
|
+
expect(result.start.get("month")).toBe(8);
|
|
12
|
+
expect(result.start.get("day")).toBe(6);
|
|
13
|
+
expect(result.start.get("weekday")).toBe(1);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
testSingleCase(chrono.it, "Giovedì", new Date(2012, 7, 9), (result) => {
|
|
17
|
+
expect(result.index).toBe(0);
|
|
18
|
+
expect(result.text).toBe("Giovedì");
|
|
19
|
+
|
|
20
|
+
expect(result.start).not.toBeNull();
|
|
21
|
+
expect(result.start.get("year")).toBe(2012);
|
|
22
|
+
expect(result.start.get("month")).toBe(8);
|
|
23
|
+
expect(result.start.get("day")).toBe(9);
|
|
24
|
+
expect(result.start.get("weekday")).toBe(4);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
testSingleCase(chrono.it, "Domenica", new Date(2012, 7, 9), (result) => {
|
|
28
|
+
expect(result.index).toBe(0);
|
|
29
|
+
expect(result.text).toBe("Domenica");
|
|
30
|
+
|
|
31
|
+
expect(result.start).not.toBeNull();
|
|
32
|
+
expect(result.start.get("year")).toBe(2012);
|
|
33
|
+
expect(result.start.get("month")).toBe(8);
|
|
34
|
+
expect(result.start.get("day")).toBe(12);
|
|
35
|
+
expect(result.start.get("weekday")).toBe(0);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as chrono from "../../src";
|
|
2
|
-
import { testSingleCase } from "../test_util";
|
|
2
|
+
import { testSingleCase, testUnexpectedResult } from "../test_util";
|
|
3
|
+
import { Meridiem } from "../../src";
|
|
3
4
|
|
|
4
5
|
test("Test - Single Expression", function () {
|
|
5
6
|
testSingleCase(chrono.ja, "私は午前6時13分に起きた", new Date(2012, 7, 10), (result) => {
|
|
@@ -165,28 +166,34 @@ test("Test - Date + Time Expression", function () {
|
|
|
165
166
|
});
|
|
166
167
|
|
|
167
168
|
test("Test - Time Expression's Meridiem imply", function () {
|
|
168
|
-
testSingleCase(chrono.ja, "午後1
|
|
169
|
-
expect(result.
|
|
170
|
-
expect(result.
|
|
169
|
+
testSingleCase(chrono.ja, "午後1時30分から3時10分", new Date(2012, 7, 10), (result) => {
|
|
170
|
+
expect(result.start.get("hour")).toBe(13);
|
|
171
|
+
expect(result.start.get("minute")).toBe(30);
|
|
172
|
+
expect(result.start.get("second")).toBe(0);
|
|
173
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
174
|
+
expect(result.start.isCertain("meridiem")).toBe(true);
|
|
175
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 13, 30));
|
|
171
176
|
|
|
172
|
-
expect(result.
|
|
173
|
-
expect(result.
|
|
174
|
-
expect(result.
|
|
177
|
+
expect(result.end.get("hour")).toBe(15);
|
|
178
|
+
expect(result.end.get("minute")).toBe(10);
|
|
179
|
+
expect(result.end.get("second")).toBe(0);
|
|
180
|
+
expect(result.end.get("meridiem")).toBe(Meridiem.PM);
|
|
181
|
+
expect(result.end).toBeDate(new Date(2012, 8 - 1, 10, 15, 10));
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
testSingleCase(chrono.ja, "1時20分P.M.から3時", new Date(2012, 7, 10), (result) => {
|
|
175
185
|
expect(result.start.get("hour")).toBe(13);
|
|
176
|
-
expect(result.start.get("minute")).toBe(
|
|
186
|
+
expect(result.start.get("minute")).toBe(20);
|
|
177
187
|
expect(result.start.get("second")).toBe(0);
|
|
178
|
-
expect(result.start.get("
|
|
179
|
-
expect(result.start.get("meridiem")).toBe(1);
|
|
188
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
180
189
|
expect(result.start.isCertain("meridiem")).toBe(true);
|
|
190
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 13, 20));
|
|
181
191
|
|
|
182
|
-
expect(result.end.get("year")).toBe(2012);
|
|
183
|
-
expect(result.end.get("month")).toBe(8);
|
|
184
|
-
expect(result.end.get("day")).toBe(10);
|
|
185
192
|
expect(result.end.get("hour")).toBe(15);
|
|
186
193
|
expect(result.end.get("minute")).toBe(0);
|
|
187
194
|
expect(result.end.get("second")).toBe(0);
|
|
188
|
-
expect(result.end.get("
|
|
189
|
-
expect(result.
|
|
195
|
+
expect(result.end.get("meridiem")).toBe(Meridiem.PM);
|
|
196
|
+
expect(result.end).toBeDate(new Date(2012, 8 - 1, 10, 15, 0));
|
|
190
197
|
});
|
|
191
198
|
|
|
192
199
|
testSingleCase(chrono.ja, "午後6時半-11時", new Date(2012, 7, 10), (result) => {
|
|
@@ -196,16 +203,44 @@ test("Test - Time Expression's Meridiem imply", function () {
|
|
|
196
203
|
expect(result.start).not.toBeNull();
|
|
197
204
|
expect(result.start.get("hour")).toBe(18);
|
|
198
205
|
expect(result.start.get("minute")).toBe(30);
|
|
199
|
-
expect(result.start.get("meridiem")).toBe(
|
|
200
|
-
|
|
201
|
-
const resultDate = result.start.date();
|
|
202
|
-
const expectDate = new Date(2012, 7, 10, 18, 30);
|
|
203
|
-
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime());
|
|
206
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
207
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 18, 30));
|
|
204
208
|
|
|
205
209
|
expect(result.end).not.toBeNull();
|
|
206
210
|
expect(result.end.get("hour")).toBe(23);
|
|
207
211
|
expect(result.end.get("minute")).toBe(0);
|
|
208
|
-
expect(result.end.get("meridiem")).toBe(
|
|
212
|
+
expect(result.end.get("meridiem")).toBe(Meridiem.PM);
|
|
213
|
+
expect(result.end).toBeDate(new Date(2012, 8 - 1, 10, 23, 0));
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
testSingleCase(chrono.ja, "午後11時半-1時", new Date(2012, 8 - 1, 10), (result) => {
|
|
217
|
+
expect(result.index).toBe(0);
|
|
218
|
+
expect(result.text).toBe("午後11時半-1時");
|
|
219
|
+
|
|
220
|
+
expect(result.start.get("hour")).toBe(23);
|
|
221
|
+
expect(result.start.get("minute")).toBe(30);
|
|
222
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
223
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 23, 30));
|
|
224
|
+
|
|
225
|
+
expect(result.end.get("hour")).toBe(1);
|
|
226
|
+
expect(result.end.get("minute")).toBe(0);
|
|
227
|
+
expect(result.end.get("meridiem")).toBe(Meridiem.AM);
|
|
228
|
+
expect(result.end).toBeDate(new Date(2012, 8 - 1, 11, 1, 0));
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
testSingleCase(chrono.ja, "23時20分から2時", new Date(2012, 8 - 1, 10), (result) => {
|
|
232
|
+
expect(result.index).toBe(0);
|
|
233
|
+
expect(result.text).toBe("23時20分から2時");
|
|
234
|
+
|
|
235
|
+
expect(result.start.get("hour")).toBe(23);
|
|
236
|
+
expect(result.start.get("minute")).toBe(20);
|
|
237
|
+
expect(result.start.get("meridiem")).toBe(Meridiem.PM);
|
|
238
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 23, 20));
|
|
239
|
+
|
|
240
|
+
expect(result.end.get("hour")).toBe(2);
|
|
241
|
+
expect(result.end.get("minute")).toBe(0);
|
|
242
|
+
expect(result.end.get("meridiem")).toBe(Meridiem.AM);
|
|
243
|
+
expect(result.end).toBeDate(new Date(2012, 8 - 1, 11, 2, 0));
|
|
209
244
|
});
|
|
210
245
|
});
|
|
211
246
|
|
|
@@ -242,3 +277,29 @@ test("Test - Random date + time expression", function () {
|
|
|
242
277
|
expect(result.start.get("hour")).toBe(12);
|
|
243
278
|
});
|
|
244
279
|
});
|
|
280
|
+
|
|
281
|
+
test("Test - Incorrect time expressions", () => {
|
|
282
|
+
testUnexpectedResult(chrono.ja, "午後13時");
|
|
283
|
+
|
|
284
|
+
testUnexpectedResult(chrono.ja, "25時");
|
|
285
|
+
|
|
286
|
+
testUnexpectedResult(chrono.ja, "5時70分");
|
|
287
|
+
|
|
288
|
+
testUnexpectedResult(chrono.ja, "5時30分65秒");
|
|
289
|
+
|
|
290
|
+
testUnexpectedResult(chrono.ja, "23時-25時");
|
|
291
|
+
|
|
292
|
+
testUnexpectedResult(chrono.ja, "3時-5時70分");
|
|
293
|
+
|
|
294
|
+
testUnexpectedResult(chrono.ja, "3時-5時30分65秒");
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
test("Test - Non time expressions", () => {
|
|
298
|
+
testUnexpectedResult(chrono.ja, "1");
|
|
299
|
+
testUnexpectedResult(chrono.ja, "12");
|
|
300
|
+
testUnexpectedResult(chrono.ja, "12a");
|
|
301
|
+
|
|
302
|
+
testUnexpectedResult(chrono.ja, "1時間");
|
|
303
|
+
|
|
304
|
+
testUnexpectedResult(chrono.ja, "25時間");
|
|
305
|
+
});
|
package/test/result.test.ts
CHANGED
|
@@ -38,6 +38,30 @@ test("Test - Create & manipulate parsing components", () => {
|
|
|
38
38
|
expect(components.toString()).toContain("custom/testing_component_tag");
|
|
39
39
|
});
|
|
40
40
|
|
|
41
|
+
test("Test - Creating component from reference date (and duration)", () => {
|
|
42
|
+
{
|
|
43
|
+
const reference = ReferenceWithTimezone.fromDate(new Date("Sat, Aug 27 2022 12:52:11"));
|
|
44
|
+
const components = ParsingComponents.createRelativeFromReference(reference);
|
|
45
|
+
expect(components.date()).toStrictEqual(new Date("Sat, Aug 27 2022 12:52:11"));
|
|
46
|
+
expect(components.isCertain("day")).toBe(true);
|
|
47
|
+
expect(components.isCertain("hour")).toBe(true);
|
|
48
|
+
}
|
|
49
|
+
{
|
|
50
|
+
const reference = ReferenceWithTimezone.fromDate(new Date("Sat, Aug 27 2022 12:52:11"));
|
|
51
|
+
const components = ParsingComponents.createRelativeFromReference(reference, { day: 3 });
|
|
52
|
+
expect(components.date()).toStrictEqual(new Date("Sat, Aug 30 2022 12:52:11"));
|
|
53
|
+
expect(components.isCertain("day")).toBe(true);
|
|
54
|
+
expect(components.isCertain("hour")).toBe(false);
|
|
55
|
+
}
|
|
56
|
+
{
|
|
57
|
+
const reference = ReferenceWithTimezone.fromDate(new Date("Sat, Aug 27 2022 12:52:11"));
|
|
58
|
+
const components = ParsingComponents.createRelativeFromReference(reference, { day: 1, hour: 3 });
|
|
59
|
+
expect(components.date()).toStrictEqual(new Date("Sat, Aug 28 2022 15:52:11"));
|
|
60
|
+
expect(components.isCertain("day")).toBe(true);
|
|
61
|
+
expect(components.isCertain("hour")).toBe(true);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
41
65
|
test("Test - Create & manipulate parsing results", () => {
|
|
42
66
|
const reference = new ReferenceWithTimezone(new Date());
|
|
43
67
|
const text = "1 - 2 hour later";
|
|
@@ -199,3 +223,53 @@ test("Test - Getting timezone adjust date from references", () => {
|
|
|
199
223
|
expect(reference.getDateWithAdjustedTimezone()).toStrictEqual(new Date(2021, 6 - 1, 9, 7, 21, 32));
|
|
200
224
|
}
|
|
201
225
|
});
|
|
226
|
+
|
|
227
|
+
test("Test - ParsingComponents.addDurationAsImplied", () => {
|
|
228
|
+
{
|
|
229
|
+
const reference = ReferenceWithTimezone.fromDate(new Date("Sat, Aug 27 2022 12:52:11"));
|
|
230
|
+
const components = ParsingComponents.createRelativeFromReference(reference);
|
|
231
|
+
components.addDurationAsImplied({ hour: 3 });
|
|
232
|
+
|
|
233
|
+
expect(components.date()).toStrictEqual(new Date("Sat, Aug 27 2022 15:52:11"));
|
|
234
|
+
expect(components.isCertain("second")).toBe(false);
|
|
235
|
+
expect(components.isCertain("minute")).toBe(false);
|
|
236
|
+
expect(components.isCertain("hour")).toBe(false);
|
|
237
|
+
}
|
|
238
|
+
{
|
|
239
|
+
const reference = ReferenceWithTimezone.fromDate(new Date("Sat, Aug 27 2022 12:52:11"));
|
|
240
|
+
const components = ParsingComponents.createRelativeFromReference(reference);
|
|
241
|
+
components.addDurationAsImplied({ day: 3 });
|
|
242
|
+
expect(components.date()).toStrictEqual(new Date("Sat, Aug 30 2022 12:52:11"));
|
|
243
|
+
expect(components.isCertain("day")).toBe(false);
|
|
244
|
+
expect(components.isCertain("weekday")).toBe(false);
|
|
245
|
+
expect(components.isCertain("month")).toBe(false);
|
|
246
|
+
expect(components.isCertain("year")).toBe(false);
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
test("Test - ParsingComponents.addDurationAsImplied on different timezones", () => {
|
|
251
|
+
{
|
|
252
|
+
// Thu Feb 27 2025 17:00:00 GMT+0000
|
|
253
|
+
// Fri Feb 28 2025 02:00:00 GMT+0900 (JST)
|
|
254
|
+
const refInstant = new Date("Thu Feb 27 2025 17:00:00 GMT+0000");
|
|
255
|
+
const reference = ReferenceWithTimezone.fromInput({ instant: refInstant, timezone: "JST" });
|
|
256
|
+
const components = ParsingComponents.createRelativeFromReference(reference);
|
|
257
|
+
components.addDurationAsImplied({ hour: 3 });
|
|
258
|
+
expect(components.date()).toStrictEqual(new Date("Fri Feb 28 2025 05:00:00 GMT+0900 (JST)"));
|
|
259
|
+
|
|
260
|
+
components.addDurationAsImplied({ day: 3 });
|
|
261
|
+
expect(components.date()).toStrictEqual(new Date("Mon Mar 3 2025 05:00:00 GMT+0900 (JST)"));
|
|
262
|
+
}
|
|
263
|
+
{
|
|
264
|
+
// Thu Feb 27 2025 17:00:00 GMT+0000
|
|
265
|
+
// Thu Feb 27 2025 09:00:00 GMT-0800 (PST)
|
|
266
|
+
const refInstant = new Date("Thu Feb 27 2025 17:00:00 GMT+0000");
|
|
267
|
+
const reference = ReferenceWithTimezone.fromInput({ instant: refInstant, timezone: "PST" });
|
|
268
|
+
const components = ParsingComponents.createRelativeFromReference(reference);
|
|
269
|
+
components.addDurationAsImplied({ hour: 3 });
|
|
270
|
+
expect(components.date()).toStrictEqual(new Date("Thu Feb 27 2025 12:00:00 GMT-0800 (PST)"));
|
|
271
|
+
|
|
272
|
+
components.addDurationAsImplied({ day: 3 });
|
|
273
|
+
expect(components.date()).toStrictEqual(new Date("Mon Mar 2 2025 12:00:00 GMT-0800 (PST)"));
|
|
274
|
+
}
|
|
275
|
+
});
|
|
@@ -35,6 +35,48 @@ test("Test - Combined Expression", function () {
|
|
|
35
35
|
expect(result.start.get("hour")).toBe(6);
|
|
36
36
|
});
|
|
37
37
|
|
|
38
|
+
testSingleCase(chrono, "idag på förmiddagen", new Date(2012, 7, 10), (result) => {
|
|
39
|
+
expect(result.start.get("year")).toBe(2012);
|
|
40
|
+
expect(result.start.get("month")).toBe(8);
|
|
41
|
+
expect(result.start.get("day")).toBe(10);
|
|
42
|
+
expect(result.start.get("hour")).toBe(9);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
testSingleCase(chrono, "idag på middagen", new Date(2012, 7, 10), (result) => {
|
|
46
|
+
expect(result.start.get("year")).toBe(2012);
|
|
47
|
+
expect(result.start.get("month")).toBe(8);
|
|
48
|
+
expect(result.start.get("day")).toBe(10);
|
|
49
|
+
expect(result.start.get("hour")).toBe(12);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
testSingleCase(chrono, "idag på eftermiddagen", new Date(2012, 7, 10), (result) => {
|
|
53
|
+
expect(result.start.get("year")).toBe(2012);
|
|
54
|
+
expect(result.start.get("month")).toBe(8);
|
|
55
|
+
expect(result.start.get("day")).toBe(10);
|
|
56
|
+
expect(result.start.get("hour")).toBe(15);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
testSingleCase(chrono, "idag på kvällen", new Date(2012, 7, 10), (result) => {
|
|
60
|
+
expect(result.start.get("year")).toBe(2012);
|
|
61
|
+
expect(result.start.get("month")).toBe(8);
|
|
62
|
+
expect(result.start.get("day")).toBe(10);
|
|
63
|
+
expect(result.start.get("hour")).toBe(20);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
testSingleCase(chrono, "idag på natten", new Date(2012, 7, 10), (result) => {
|
|
67
|
+
expect(result.start.get("year")).toBe(2012);
|
|
68
|
+
expect(result.start.get("month")).toBe(8);
|
|
69
|
+
expect(result.start.get("day")).toBe(10);
|
|
70
|
+
expect(result.start.get("hour")).toBe(2);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
testSingleCase(chrono, "idag vid midnatt", new Date(2012, 7, 10), (result) => {
|
|
74
|
+
expect(result.start.get("year")).toBe(2012);
|
|
75
|
+
expect(result.start.get("month")).toBe(8);
|
|
76
|
+
expect(result.start.get("day")).toBe(10);
|
|
77
|
+
expect(result.start.get("hour")).toBe(0);
|
|
78
|
+
});
|
|
79
|
+
|
|
38
80
|
// Denna funktionalitet behöver ytterligare utveckling
|
|
39
81
|
// testSingleCase(chrono, "imorgon kväll", new Date(2012, 7, 10), (result) => {
|
|
40
82
|
// expect(result.start.get("year")).toBe(2012);
|