chrono-node 2.6.3 → 2.6.5
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/README.md +25 -3
- package/dist/cjs/calculation/mergingCalculation.js +2 -2
- package/dist/cjs/chrono.d.ts +3 -1
- package/dist/cjs/chrono.js +10 -4
- package/dist/cjs/chrono.js.map +1 -1
- package/dist/cjs/common/calculation/weekdays.d.ts +1 -1
- package/dist/cjs/common/calculation/weekdays.js +7 -7
- package/dist/cjs/common/casualReferences.js +7 -7
- package/dist/cjs/common/parsers/AbstractParserWithWordBoundary.d.ts +1 -1
- package/dist/cjs/common/parsers/AbstractTimeExpressionParser.js +16 -16
- package/dist/cjs/common/refiners/ExtractTimezoneAbbrRefiner.d.ts +1 -1
- package/dist/cjs/index.d.ts +8 -63
- package/dist/cjs/index.js +10 -31
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/locales/de/index.d.ts +5 -2
- package/dist/cjs/locales/de/index.js +9 -1
- package/dist/cjs/locales/de/index.js.map +1 -1
- package/dist/cjs/locales/de/parsers/DECasualTimeParser.js +8 -8
- package/dist/cjs/locales/de/parsers/DESpecificTimeExpressionParser.js +9 -9
- package/dist/cjs/locales/en/configuration.d.ts +5 -0
- package/dist/cjs/locales/en/configuration.js +57 -0
- package/dist/cjs/locales/en/configuration.js.map +1 -0
- package/dist/cjs/locales/en/constants.d.ts +1 -1
- package/dist/cjs/locales/en/index.d.ts +5 -4
- package/dist/cjs/locales/en/index.js +14 -51
- package/dist/cjs/locales/en/index.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENCasualTimeParser.d.ts +1 -1
- package/dist/cjs/locales/en/parsers/ENMonthNameMiddleEndianParser.d.ts +1 -1
- package/dist/cjs/locales/en/parsers/ENMonthNameParser.d.ts +1 -1
- package/dist/cjs/locales/en/parsers/ENTimeExpressionParser.js +5 -5
- package/dist/cjs/locales/es/index.d.ts +5 -2
- package/dist/cjs/locales/es/index.js +9 -1
- package/dist/cjs/locales/es/index.js.map +1 -1
- package/dist/cjs/locales/es/parsers/ESCasualTimeParser.d.ts +1 -1
- package/dist/cjs/locales/es/parsers/ESCasualTimeParser.js +5 -5
- package/dist/cjs/locales/fr/index.d.ts +5 -2
- package/dist/cjs/locales/fr/index.js +9 -1
- package/dist/cjs/locales/fr/index.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRCasualDateParser.js +2 -2
- package/dist/cjs/locales/fr/parsers/FRCasualTimeParser.js +6 -6
- package/dist/cjs/locales/fr/parsers/FRSpecificTimeExpressionParser.js +6 -6
- package/dist/cjs/locales/ja/index.d.ts +5 -2
- package/dist/cjs/locales/ja/index.js +9 -1
- package/dist/cjs/locales/ja/index.js.map +1 -1
- package/dist/cjs/locales/ja/parsers/JPCasualDateParser.d.ts +1 -1
- package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js +27 -5
- package/dist/cjs/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
- package/dist/cjs/locales/ja/parsers/JPStandardParser.d.ts +1 -1
- package/dist/cjs/locales/nl/index.d.ts +5 -2
- package/dist/cjs/locales/nl/index.js +9 -1
- package/dist/cjs/locales/nl/index.js.map +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualDateTimeParser.js +5 -5
- package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.d.ts +1 -1
- package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.js +5 -5
- package/dist/cjs/locales/nl/parsers/NLMonthNameMiddleEndianParser.d.ts +1 -1
- package/dist/cjs/locales/nl/parsers/NLMonthNameParser.d.ts +1 -1
- package/dist/cjs/locales/pt/index.d.ts +5 -2
- package/dist/cjs/locales/pt/index.js +9 -1
- package/dist/cjs/locales/pt/index.js.map +1 -1
- package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.d.ts +1 -1
- package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.js +5 -5
- package/dist/cjs/locales/ru/index.d.ts +5 -2
- package/dist/cjs/locales/ru/index.js +9 -1
- package/dist/cjs/locales/ru/index.js.map +1 -1
- package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.d.ts +1 -1
- package/dist/cjs/locales/ru/parsers/RUMonthNameParser.d.ts +1 -1
- package/dist/cjs/locales/ru/parsers/RUTimeExpressionParser.js +5 -5
- package/dist/cjs/locales/uk/constants.d.ts +33 -0
- package/dist/cjs/locales/uk/constants.js +301 -0
- package/dist/cjs/locales/uk/constants.js.map +1 -0
- package/dist/cjs/locales/uk/index.d.ts +11 -0
- package/dist/cjs/locales/uk/index.js +66 -0
- package/dist/cjs/locales/uk/index.js.map +1 -0
- package/dist/cjs/locales/uk/parsers/UKCasualDateParser.d.ts +8 -0
- package/dist/cjs/locales/uk/parsers/UKCasualDateParser.js +56 -0
- package/dist/cjs/locales/uk/parsers/UKCasualDateParser.js.map +1 -0
- package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.d.ts +7 -0
- package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js +77 -0
- package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.js.map +1 -0
- package/dist/cjs/locales/uk/parsers/UKMonthNameLittleEndianParser.d.ts +8 -0
- package/dist/cjs/locales/uk/parsers/UKMonthNameLittleEndianParser.js +59 -0
- package/dist/cjs/locales/uk/parsers/UKMonthNameLittleEndianParser.js.map +1 -0
- package/dist/cjs/locales/uk/parsers/UKMonthNameParser.d.ts +7 -0
- package/dist/cjs/locales/uk/parsers/UKMonthNameParser.js +45 -0
- package/dist/cjs/locales/uk/parsers/UKMonthNameParser.js.map +1 -0
- package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.d.ts +8 -0
- package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js +66 -0
- package/dist/cjs/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -0
- package/dist/cjs/locales/uk/parsers/UKTimeExpressionParser.d.ts +12 -0
- package/dist/cjs/locales/uk/parsers/UKTimeExpressionParser.js +57 -0
- package/dist/cjs/locales/uk/parsers/UKTimeExpressionParser.js.map +1 -0
- package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.d.ts +8 -0
- package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js +22 -0
- package/dist/cjs/locales/uk/parsers/UKTimeUnitAgoFormatParser.js.map +1 -0
- package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.d.ts +8 -0
- package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js +29 -0
- package/dist/cjs/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js.map +1 -0
- package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.d.ts +8 -0
- package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.js +22 -0
- package/dist/cjs/locales/uk/parsers/UKTimeUnitWithinFormatParser.js.map +1 -0
- package/dist/cjs/locales/uk/parsers/UKWeekdayParser.d.ts +8 -0
- package/dist/cjs/locales/uk/parsers/UKWeekdayParser.js +50 -0
- package/dist/cjs/locales/uk/parsers/UKWeekdayParser.js.map +1 -0
- package/dist/cjs/locales/uk/refiners/UKMergeDateRangeRefiner.d.ts +4 -0
- package/dist/cjs/locales/uk/refiners/UKMergeDateRangeRefiner.js +13 -0
- package/dist/cjs/locales/uk/refiners/UKMergeDateRangeRefiner.js.map +1 -0
- package/dist/cjs/locales/uk/refiners/UKMergeDateTimeRefiner.d.ts +4 -0
- package/dist/cjs/locales/uk/refiners/UKMergeDateTimeRefiner.js +13 -0
- package/dist/cjs/locales/uk/refiners/UKMergeDateTimeRefiner.js.map +1 -0
- package/dist/cjs/locales/zh/hans/index.d.ts +5 -2
- package/dist/cjs/locales/zh/hans/index.js +10 -2
- package/dist/cjs/locales/zh/hans/index.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDateParser.d.ts +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.d.ts +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansTimeExpressionParser.d.ts +1 -1
- package/dist/cjs/locales/zh/hant/index.d.ts +5 -2
- package/dist/cjs/locales/zh/hant/index.js +10 -2
- package/dist/cjs/locales/zh/hant/index.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDateParser.d.ts +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.d.ts +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantTimeExpressionParser.d.ts +1 -1
- package/dist/cjs/results.d.ts +1 -1
- package/dist/cjs/timezone.d.ts +1 -1
- package/dist/cjs/timezone.js +11 -11
- package/dist/cjs/types.d.ts +58 -0
- package/dist/cjs/types.js +34 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/dayjs.js +3 -3
- package/dist/esm/calculation/mergingCalculation.js +1 -1
- package/dist/esm/chrono.d.ts +3 -1
- package/dist/esm/chrono.js +7 -4
- package/dist/esm/chrono.js.map +1 -1
- package/dist/esm/common/calculation/weekdays.d.ts +1 -1
- package/dist/esm/common/calculation/weekdays.js +1 -1
- package/dist/esm/common/casualReferences.js +1 -1
- package/dist/esm/common/parsers/AbstractParserWithWordBoundary.d.ts +1 -1
- package/dist/esm/common/parsers/AbstractTimeExpressionParser.js +1 -1
- package/dist/esm/common/refiners/ExtractTimezoneAbbrRefiner.d.ts +1 -1
- package/dist/esm/index.d.ts +8 -63
- package/dist/esm/index.js +6 -32
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/locales/de/index.d.ts +5 -2
- package/dist/esm/locales/de/index.js +4 -0
- package/dist/esm/locales/de/index.js.map +1 -1
- package/dist/esm/locales/de/parsers/DECasualTimeParser.js +1 -1
- package/dist/esm/locales/de/parsers/DESpecificTimeExpressionParser.js +1 -1
- package/dist/esm/locales/en/configuration.d.ts +5 -0
- package/dist/esm/locales/en/configuration.js +51 -0
- package/dist/esm/locales/en/configuration.js.map +1 -0
- package/dist/esm/locales/en/constants.d.ts +1 -1
- package/dist/esm/locales/en/index.d.ts +5 -4
- package/dist/esm/locales/en/index.js +9 -48
- package/dist/esm/locales/en/index.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENCasualTimeParser.d.ts +1 -1
- package/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.d.ts +1 -1
- package/dist/esm/locales/en/parsers/ENMonthNameParser.d.ts +1 -1
- package/dist/esm/locales/en/parsers/ENTimeExpressionParser.js +1 -1
- package/dist/esm/locales/es/index.d.ts +5 -2
- package/dist/esm/locales/es/index.js +4 -0
- package/dist/esm/locales/es/index.js.map +1 -1
- package/dist/esm/locales/es/parsers/ESCasualTimeParser.d.ts +1 -1
- package/dist/esm/locales/es/parsers/ESCasualTimeParser.js +1 -1
- package/dist/esm/locales/fr/index.d.ts +5 -2
- package/dist/esm/locales/fr/index.js +4 -0
- package/dist/esm/locales/fr/index.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRCasualDateParser.js +1 -1
- package/dist/esm/locales/fr/parsers/FRCasualTimeParser.js +1 -1
- package/dist/esm/locales/fr/parsers/FRSpecificTimeExpressionParser.js +1 -1
- package/dist/esm/locales/ja/index.d.ts +5 -2
- package/dist/esm/locales/ja/index.js +4 -0
- package/dist/esm/locales/ja/index.js.map +1 -1
- package/dist/esm/locales/ja/parsers/JPCasualDateParser.d.ts +1 -1
- package/dist/esm/locales/ja/parsers/JPCasualDateParser.js +25 -3
- package/dist/esm/locales/ja/parsers/JPCasualDateParser.js.map +1 -1
- package/dist/esm/locales/ja/parsers/JPStandardParser.d.ts +1 -1
- package/dist/esm/locales/nl/index.d.ts +5 -2
- package/dist/esm/locales/nl/index.js +4 -0
- package/dist/esm/locales/nl/index.js.map +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualDateTimeParser.js +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualTimeParser.d.ts +1 -1
- package/dist/esm/locales/nl/parsers/NLCasualTimeParser.js +1 -1
- package/dist/esm/locales/nl/parsers/NLMonthNameMiddleEndianParser.d.ts +1 -1
- package/dist/esm/locales/nl/parsers/NLMonthNameParser.d.ts +1 -1
- package/dist/esm/locales/pt/index.d.ts +5 -2
- package/dist/esm/locales/pt/index.js +4 -0
- package/dist/esm/locales/pt/index.js.map +1 -1
- package/dist/esm/locales/pt/parsers/PTCasualTimeParser.d.ts +1 -1
- package/dist/esm/locales/pt/parsers/PTCasualTimeParser.js +1 -1
- package/dist/esm/locales/ru/index.d.ts +5 -2
- package/dist/esm/locales/ru/index.js +4 -0
- package/dist/esm/locales/ru/index.js.map +1 -1
- package/dist/esm/locales/ru/parsers/RUCasualTimeParser.d.ts +1 -1
- package/dist/esm/locales/ru/parsers/RUMonthNameParser.d.ts +1 -1
- package/dist/esm/locales/ru/parsers/RUTimeExpressionParser.js +1 -1
- package/dist/esm/locales/uk/constants.d.ts +33 -0
- package/dist/esm/locales/uk/constants.js +324 -0
- package/dist/esm/locales/uk/constants.js.map +1 -0
- package/dist/esm/locales/uk/index.d.ts +11 -0
- package/dist/esm/locales/uk/index.js +52 -0
- package/dist/esm/locales/uk/index.js.map +1 -0
- package/dist/esm/locales/uk/parsers/UKCasualDateParser.d.ts +8 -0
- package/dist/esm/locales/uk/parsers/UKCasualDateParser.js +34 -0
- package/dist/esm/locales/uk/parsers/UKCasualDateParser.js.map +1 -0
- package/dist/esm/locales/uk/parsers/UKCasualTimeParser.d.ts +7 -0
- package/dist/esm/locales/uk/parsers/UKCasualTimeParser.js +52 -0
- package/dist/esm/locales/uk/parsers/UKCasualTimeParser.js.map +1 -0
- package/dist/esm/locales/uk/parsers/UKMonthNameLittleEndianParser.d.ts +8 -0
- package/dist/esm/locales/uk/parsers/UKMonthNameLittleEndianParser.js +56 -0
- package/dist/esm/locales/uk/parsers/UKMonthNameLittleEndianParser.js.map +1 -0
- package/dist/esm/locales/uk/parsers/UKMonthNameParser.d.ts +7 -0
- package/dist/esm/locales/uk/parsers/UKMonthNameParser.js +42 -0
- package/dist/esm/locales/uk/parsers/UKMonthNameParser.js.map +1 -0
- package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.d.ts +8 -0
- package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.js +60 -0
- package/dist/esm/locales/uk/parsers/UKRelativeDateFormatParser.js.map +1 -0
- package/dist/esm/locales/uk/parsers/UKTimeExpressionParser.d.ts +12 -0
- package/dist/esm/locales/uk/parsers/UKTimeExpressionParser.js +54 -0
- package/dist/esm/locales/uk/parsers/UKTimeExpressionParser.js.map +1 -0
- package/dist/esm/locales/uk/parsers/UKTimeUnitAgoFormatParser.d.ts +8 -0
- package/dist/esm/locales/uk/parsers/UKTimeUnitAgoFormatParser.js +19 -0
- package/dist/esm/locales/uk/parsers/UKTimeUnitAgoFormatParser.js.map +1 -0
- package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.d.ts +8 -0
- package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js +26 -0
- package/dist/esm/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.js.map +1 -0
- package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.d.ts +8 -0
- package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.js +19 -0
- package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.js.map +1 -0
- package/dist/esm/locales/uk/parsers/UKWeekdayParser.d.ts +8 -0
- package/dist/esm/locales/uk/parsers/UKWeekdayParser.js +47 -0
- package/dist/esm/locales/uk/parsers/UKWeekdayParser.js.map +1 -0
- package/dist/esm/locales/uk/refiners/UKMergeDateRangeRefiner.d.ts +4 -0
- package/dist/esm/locales/uk/refiners/UKMergeDateRangeRefiner.js +7 -0
- package/dist/esm/locales/uk/refiners/UKMergeDateRangeRefiner.js.map +1 -0
- package/dist/esm/locales/uk/refiners/UKMergeDateTimeRefiner.d.ts +4 -0
- package/dist/esm/locales/uk/refiners/UKMergeDateTimeRefiner.js +7 -0
- package/dist/esm/locales/uk/refiners/UKMergeDateTimeRefiner.js.map +1 -0
- package/dist/esm/locales/zh/hans/index.d.ts +5 -2
- package/dist/esm/locales/zh/hans/index.js +5 -1
- package/dist/esm/locales/zh/hans/index.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansDateParser.d.ts +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansDeadlineFormatParser.d.ts +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansTimeExpressionParser.d.ts +1 -1
- package/dist/esm/locales/zh/hant/index.d.ts +5 -2
- package/dist/esm/locales/zh/hant/index.js +5 -1
- package/dist/esm/locales/zh/hant/index.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantDateParser.d.ts +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantDeadlineFormatParser.d.ts +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantTimeExpressionParser.d.ts +1 -1
- package/dist/esm/results.d.ts +1 -1
- package/dist/esm/timezone.d.ts +1 -1
- package/dist/esm/timezone.js +1 -1
- package/dist/esm/types.d.ts +58 -0
- package/dist/esm/types.js +31 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/dayjs.js +1 -1
- package/package.json +9 -1
- package/src/calculation/mergingCalculation.ts +1 -1
- package/src/chrono.ts +14 -8
- package/src/common/calculation/weekdays.ts +1 -1
- package/src/common/casualReferences.ts +1 -1
- package/src/common/parsers/AbstractParserWithWordBoundary.ts +1 -1
- package/src/common/parsers/AbstractTimeExpressionParser.ts +1 -1
- package/src/common/parsers/ISOFormatParser.ts +1 -1
- package/src/common/refiners/ExtractTimezoneAbbrRefiner.ts +3 -3
- package/src/configurations.ts +1 -1
- package/src/index.ts +7 -153
- package/src/locales/de/index.ts +6 -2
- package/src/locales/de/parsers/DECasualTimeParser.ts +1 -1
- package/src/locales/de/parsers/DESpecificTimeExpressionParser.ts +1 -1
- package/src/locales/en/configuration.ts +71 -0
- package/src/locales/en/constants.ts +1 -1
- package/src/locales/en/index.ts +11 -65
- package/src/locales/en/parsers/ENTimeExpressionParser.ts +1 -1
- package/src/locales/es/index.ts +6 -2
- package/src/locales/es/parsers/ESCasualTimeParser.ts +1 -1
- package/src/locales/fr/index.ts +6 -2
- package/src/locales/fr/parsers/FRCasualDateParser.ts +1 -1
- package/src/locales/fr/parsers/FRCasualTimeParser.ts +1 -1
- package/src/locales/fr/parsers/FRSpecificTimeExpressionParser.ts +1 -1
- package/src/locales/ja/index.ts +6 -2
- package/src/locales/ja/parsers/JPCasualDateParser.ts +26 -3
- package/src/locales/nl/index.ts +6 -2
- package/src/locales/nl/parsers/NLCasualDateTimeParser.ts +1 -1
- package/src/locales/nl/parsers/NLCasualTimeParser.ts +1 -1
- package/src/locales/pt/index.ts +6 -2
- package/src/locales/pt/parsers/PTCasualTimeParser.ts +1 -1
- package/src/locales/ru/index.ts +6 -2
- package/src/locales/ru/parsers/RUTimeExpressionParser.ts +1 -1
- package/src/locales/uk/constants.ts +349 -0
- package/src/locales/uk/index.ts +90 -0
- package/src/locales/uk/parsers/UKCasualDateParser.ts +50 -0
- package/src/locales/uk/parsers/UKCasualTimeParser.ts +59 -0
- package/src/locales/uk/parsers/UKMonthNameLittleEndianParser.ts +72 -0
- package/src/locales/uk/parsers/UKMonthNameParser.ts +61 -0
- package/src/locales/uk/parsers/UKRelativeDateFormatParser.ts +85 -0
- package/src/locales/uk/parsers/UKTimeExpressionParser.ts +64 -0
- package/src/locales/uk/parsers/UKTimeUnitAgoFormatParser.ts +24 -0
- package/src/locales/uk/parsers/UKTimeUnitCasualRelativeFormatParser.ts +34 -0
- package/src/locales/uk/parsers/UKTimeUnitWithinFormatParser.ts +27 -0
- package/src/locales/uk/parsers/UKWeekdayParser.ts +59 -0
- package/src/locales/uk/refiners/UKMergeDateRangeRefiner.ts +13 -0
- package/src/locales/uk/refiners/UKMergeDateTimeRefiner.ts +13 -0
- package/src/locales/zh/hans/index.ts +6 -2
- package/src/locales/zh/hant/index.ts +6 -2
- package/src/results.ts +1 -1
- package/src/timezone.ts +1 -1
- package/src/types.ts +150 -0
- package/src/utils/dayjs.ts +1 -1
- package/test/debugging.test.ts +17 -0
- package/test/en/en_month_name_little_endian.test.ts +12 -0
- package/test/en/en_time_units_within.test.ts +7 -0
- package/test/en/en_timezone_exp.test.ts +48 -4
- package/test/ja/ja_casual.test.ts +50 -13
- package/test/uk/uk_casual.test.ts +153 -0
- package/test/uk/uk_month.test.ts +70 -0
- package/test/uk/uk_month_name_little_endian.test.ts +148 -0
- package/test/uk/uk_relative.test.ts +74 -0
- package/test/uk/uk_time_exp.test.ts +111 -0
- package/test/uk/uk_time_units_ago.test.ts +48 -0
- package/test/uk/uk_time_units_casual_relative.test.ts +112 -0
- package/test/uk/uk_time_units_within.test.ts +16 -0
- package/test/uk/uk_weekday.test.ts +52 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { DebugConsume, DebugHandler } from "./debugging";
|
|
2
|
+
|
|
3
|
+
export interface ParsingOption {
|
|
4
|
+
/**
|
|
5
|
+
* To parse only forward dates (the results should be after the reference date).
|
|
6
|
+
* This effects date/time implication (e.g. weekday or time mentioning)
|
|
7
|
+
*/
|
|
8
|
+
forwardDate?: boolean;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Additional timezone keywords for the parsers to recognize.
|
|
12
|
+
* Any value provided will override the default handling of that value.
|
|
13
|
+
*/
|
|
14
|
+
timezones?: TimezoneAbbrMap;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Internal debug event handler.
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
debug?: DebugHandler | DebugConsume;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Some timezone abbreviations are ambiguous in that they refer to different offsets
|
|
25
|
+
* depending on the time of year — daylight savings time (DST), or non-DST. This interface
|
|
26
|
+
* allows defining such timezones
|
|
27
|
+
*/
|
|
28
|
+
export interface AmbiguousTimezoneMap {
|
|
29
|
+
timezoneOffsetDuringDst: number;
|
|
30
|
+
timezoneOffsetNonDst: number;
|
|
31
|
+
/**
|
|
32
|
+
* Return the start date of DST for the given year.
|
|
33
|
+
* timezone.ts contains helper methods for common such rules.
|
|
34
|
+
*/
|
|
35
|
+
dstStart: (year: number) => Date;
|
|
36
|
+
/**
|
|
37
|
+
* Return the end date of DST for the given year.
|
|
38
|
+
* timezone.ts contains helper methods for common such rules.
|
|
39
|
+
*/
|
|
40
|
+
dstEnd: (year: number) => Date;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* A map describing how timezone abbreviations should map to time offsets.
|
|
45
|
+
* Supports both unambigous mappings abbreviation => offset,
|
|
46
|
+
* and ambiguous mappings, where the offset will depend on whether the
|
|
47
|
+
* time in question is during daylight savings time or not.
|
|
48
|
+
*/
|
|
49
|
+
export type TimezoneAbbrMap = { [key: string]: number | AmbiguousTimezoneMap };
|
|
50
|
+
|
|
51
|
+
export interface ParsingReference {
|
|
52
|
+
/**
|
|
53
|
+
* Reference date. The instant (JavaScript Date object) when the input is written or mention.
|
|
54
|
+
* This effect date/time implication (e.g. weekday or time mentioning).
|
|
55
|
+
* (default = now)
|
|
56
|
+
*/
|
|
57
|
+
instant?: Date;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Reference timezone. The timezone where the input is written or mention.
|
|
61
|
+
* Date/time implication will account the difference between input timezone and the current system timezone.
|
|
62
|
+
* (default = current timezone)
|
|
63
|
+
*/
|
|
64
|
+
timezone?: string | number;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Parsed result or final output.
|
|
69
|
+
* Each result object represents a date/time (or date/time-range) mentioning in the input.
|
|
70
|
+
*/
|
|
71
|
+
export interface ParsedResult {
|
|
72
|
+
readonly refDate: Date;
|
|
73
|
+
readonly index: number;
|
|
74
|
+
readonly text: string;
|
|
75
|
+
|
|
76
|
+
readonly start: ParsedComponents;
|
|
77
|
+
readonly end?: ParsedComponents;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Create a javascript date object (from the result.start).
|
|
81
|
+
*/
|
|
82
|
+
date(): Date;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* A collection of parsed date/time components (e.g. day, hour, minute, ..., etc).
|
|
87
|
+
*
|
|
88
|
+
* Each parsed component has three different levels of certainty.
|
|
89
|
+
* - *Certain* (or *Known*): The component is directly mentioned and parsed.
|
|
90
|
+
* - *Implied*: The component is not directly mentioned, but implied by other parsed information.
|
|
91
|
+
* - *Unknown*: Completely no mention of the component.
|
|
92
|
+
*/
|
|
93
|
+
export interface ParsedComponents {
|
|
94
|
+
/**
|
|
95
|
+
* Check the component certainly if the component is *Certain* (or *Known*)
|
|
96
|
+
*/
|
|
97
|
+
isCertain(component: Component): boolean;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Get the component value for either *Certain* or *Implied* value.
|
|
101
|
+
*/
|
|
102
|
+
get(component: Component): number | null;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* @return a javascript date object.
|
|
106
|
+
*/
|
|
107
|
+
date(): Date;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export type Component =
|
|
111
|
+
| "year"
|
|
112
|
+
| "month"
|
|
113
|
+
| "day"
|
|
114
|
+
| "weekday"
|
|
115
|
+
| "hour"
|
|
116
|
+
| "minute"
|
|
117
|
+
| "second"
|
|
118
|
+
| "millisecond"
|
|
119
|
+
| "meridiem"
|
|
120
|
+
| "timezoneOffset";
|
|
121
|
+
|
|
122
|
+
export enum Meridiem {
|
|
123
|
+
AM = 0,
|
|
124
|
+
PM = 1,
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export enum Weekday {
|
|
128
|
+
SUNDAY = 0,
|
|
129
|
+
MONDAY = 1,
|
|
130
|
+
TUESDAY = 2,
|
|
131
|
+
WEDNESDAY = 3,
|
|
132
|
+
THURSDAY = 4,
|
|
133
|
+
FRIDAY = 5,
|
|
134
|
+
SATURDAY = 6,
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export enum Month {
|
|
138
|
+
JANUARY = 1,
|
|
139
|
+
FEBRUARY = 2,
|
|
140
|
+
MARCH = 3,
|
|
141
|
+
APRIL = 4,
|
|
142
|
+
MAY = 5,
|
|
143
|
+
JUNE = 6,
|
|
144
|
+
JULY = 7,
|
|
145
|
+
AUGUST = 8,
|
|
146
|
+
SEPTEMBER = 9,
|
|
147
|
+
OCTOBER = 10,
|
|
148
|
+
NOVEMBER = 11,
|
|
149
|
+
DECEMBER = 12,
|
|
150
|
+
}
|
package/src/utils/dayjs.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ParsingComponents } from "../results";
|
|
2
2
|
import dayjs from "dayjs";
|
|
3
|
-
import { Meridiem } from "../
|
|
3
|
+
import { Meridiem } from "../types";
|
|
4
4
|
|
|
5
5
|
export function assignTheNextDay(component: ParsingComponents, targetDayJs: dayjs.Dayjs) {
|
|
6
6
|
targetDayJs = targetDayJs.add(1, "day");
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BufferedDebugHandler } from "../src/debugging";
|
|
2
|
+
|
|
3
|
+
test("Test - BufferedDebugHandler", () => {
|
|
4
|
+
const debugHandler = new BufferedDebugHandler();
|
|
5
|
+
|
|
6
|
+
const debugBlockA = jest.fn();
|
|
7
|
+
debugHandler.debug(() => debugBlockA());
|
|
8
|
+
expect(debugBlockA).not.toBeCalled();
|
|
9
|
+
|
|
10
|
+
const debugBlockB = jest.fn();
|
|
11
|
+
debugHandler.debug(() => debugBlockB());
|
|
12
|
+
expect(debugBlockB).not.toBeCalled();
|
|
13
|
+
|
|
14
|
+
debugHandler.executeBufferedBlocks();
|
|
15
|
+
expect(debugBlockA).toBeCalled();
|
|
16
|
+
expect(debugBlockB).toBeCalled();
|
|
17
|
+
});
|
|
@@ -211,6 +211,18 @@ test("Test - Range expression", () => {
|
|
|
211
211
|
|
|
212
212
|
expect(result.end).toBeDate(new Date(2013, 9 - 1, 12, 12));
|
|
213
213
|
});
|
|
214
|
+
|
|
215
|
+
testSingleCase(chrono, " 17 August 2013 to 19 August 2013", new Date(2012, 7, 10), (result) => {
|
|
216
|
+
expect(result.text).toBe("17 August 2013 to 19 August 2013");
|
|
217
|
+
|
|
218
|
+
expect(result.start.get("year")).toBe(2013);
|
|
219
|
+
expect(result.start.get("month")).toBe(8);
|
|
220
|
+
expect(result.start.get("day")).toBe(17);
|
|
221
|
+
|
|
222
|
+
expect(result.end.get("year")).toBe(2013);
|
|
223
|
+
expect(result.end.get("month")).toBe(8);
|
|
224
|
+
expect(result.end.get("day")).toBe(19);
|
|
225
|
+
});
|
|
214
226
|
});
|
|
215
227
|
|
|
216
228
|
test("Test - Combined expression", () => {
|
|
@@ -165,6 +165,13 @@ test("Test - The normal within expression", () => {
|
|
|
165
165
|
expect(result.start.get("day")).toBe(1);
|
|
166
166
|
expect(result.start.get("hour")).toBe(18);
|
|
167
167
|
});
|
|
168
|
+
|
|
169
|
+
testSingleCase(chrono, "in 1 month", new Date(2016, 10 - 1, 1, 14, 52), (result, text) => {
|
|
170
|
+
expect(result.text).toBe("in 1 month");
|
|
171
|
+
expect(result.start.get("year")).toBe(2016);
|
|
172
|
+
expect(result.start.get("month")).toBe(11);
|
|
173
|
+
expect(result.start.get("day")).toBe(1);
|
|
174
|
+
});
|
|
168
175
|
});
|
|
169
176
|
|
|
170
177
|
test("Test - The within expression with certain keywords", () => {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as chrono from "../../src";
|
|
2
|
-
import { Month, Weekday } from "../../src";
|
|
2
|
+
import { Month, Weekday } from "../../src/types";
|
|
3
3
|
import { getLastWeekdayOfMonth } from "../../src/timezone";
|
|
4
4
|
import { testSingleCase } from "../test_util";
|
|
5
|
+
import { Meridiem } from "../../src";
|
|
5
6
|
|
|
6
7
|
test("Test - Parsing date/time with UTC offset", function () {
|
|
7
8
|
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am utc+02:45 ", (result, text) => {
|
|
@@ -77,7 +78,9 @@ test("Test - Parsing date/time with GMT offset", function () {
|
|
|
77
78
|
test("Test - Parsing date/time with timezone abbreviation", function () {
|
|
78
79
|
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am", (result, text) => {
|
|
79
80
|
expect(result.text).toBe(text);
|
|
80
|
-
|
|
81
|
+
expect(result.start.get("year")).toBe(2020);
|
|
82
|
+
expect(result.start.get("month")).toBe(9);
|
|
83
|
+
expect(result.start.get("day")).toBe(16);
|
|
81
84
|
expect(result.start.get("hour")).toBe(11);
|
|
82
85
|
expect(result.start.get("minute")).toBe(0);
|
|
83
86
|
expect(result.start.get("timezoneOffset")).toBe(null);
|
|
@@ -85,21 +88,62 @@ test("Test - Parsing date/time with timezone abbreviation", function () {
|
|
|
85
88
|
|
|
86
89
|
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am JST", (result, text) => {
|
|
87
90
|
expect(result.text).toBe(text);
|
|
91
|
+
expect(result.start.get("year")).toBe(2020);
|
|
92
|
+
expect(result.start.get("month")).toBe(9);
|
|
93
|
+
expect(result.start.get("day")).toBe(16);
|
|
88
94
|
expect(result.start.get("hour")).toBe(11);
|
|
89
95
|
expect(result.start.get("minute")).toBe(0);
|
|
90
96
|
|
|
91
|
-
// JST GMT+9:00
|
|
97
|
+
// JST: GMT+9:00
|
|
92
98
|
expect(result.start.get("timezoneOffset")).toBe(9 * 60);
|
|
93
99
|
});
|
|
94
100
|
|
|
95
101
|
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am GMT+0900 (JST)", (result, text) => {
|
|
96
102
|
expect(result.text).toBe(text);
|
|
103
|
+
expect(result.start.get("year")).toBe(2020);
|
|
104
|
+
expect(result.start.get("month")).toBe(9);
|
|
105
|
+
expect(result.start.get("day")).toBe(16);
|
|
97
106
|
expect(result.start.get("hour")).toBe(11);
|
|
98
107
|
expect(result.start.get("minute")).toBe(0);
|
|
99
108
|
|
|
100
|
-
// JST GMT+9:00
|
|
109
|
+
// JST: GMT+9:00
|
|
101
110
|
expect(result.start.get("timezoneOffset")).toBe(9 * 60);
|
|
102
111
|
});
|
|
112
|
+
|
|
113
|
+
testSingleCase(chrono, "10:30 pst today", new Date(2016, 10 - 1, 1, 8), (result, text) => {
|
|
114
|
+
expect(result.text).toBe("10:30 pst today");
|
|
115
|
+
expect(result.start.get("year")).toBe(2016);
|
|
116
|
+
expect(result.start.get("month")).toBe(10);
|
|
117
|
+
expect(result.start.get("day")).toBe(1);
|
|
118
|
+
expect(result.start.get("hour")).toBe(10);
|
|
119
|
+
expect(result.start.get("minute")).toBe(30);
|
|
120
|
+
|
|
121
|
+
// PST: UTC−08:00
|
|
122
|
+
expect(result.start.get("timezoneOffset")).toBe(-8 * 60);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
test("Test - Parsing date range with timezone abbreviation", function () {
|
|
127
|
+
testSingleCase(chrono, "10:30 JST today to 10:30 pst tomorrow ", new Date(2016, 10 - 1, 1, 8), (result, text) => {
|
|
128
|
+
expect(result.text).toBe("10:30 JST today to 10:30 pst tomorrow");
|
|
129
|
+
|
|
130
|
+
expect(result.start.get("year")).toBe(2016);
|
|
131
|
+
expect(result.start.get("month")).toBe(10);
|
|
132
|
+
expect(result.start.get("day")).toBe(1);
|
|
133
|
+
expect(result.start.get("hour")).toBe(10);
|
|
134
|
+
expect(result.start.get("minute")).toBe(30);
|
|
135
|
+
expect(result.start.get("timezoneOffset")).toBe(9 * 60); // JST: GMT+9:00
|
|
136
|
+
|
|
137
|
+
expect(result.end.get("year")).toBe(2016);
|
|
138
|
+
expect(result.end.get("month")).toBe(10);
|
|
139
|
+
expect(result.end.get("day")).toBe(2);
|
|
140
|
+
expect(result.end.get("hour")).toBe(10);
|
|
141
|
+
expect(result.end.get("minute")).toBe(30);
|
|
142
|
+
expect(result.end.get("timezoneOffset")).toBe(-8 * 60); // PST: UTC−08:00
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
// TODO: Support "10:30 JST today - 10:30 pst tomorrow" case.
|
|
146
|
+
// Currently, this is not possible because "today - 10:30" is recognized as "today 10:30" (not range)
|
|
103
147
|
});
|
|
104
148
|
|
|
105
149
|
test("Test - Parsing date/time with ambiguous timezone abbreviations", function () {
|
|
@@ -3,26 +3,63 @@ import { testSingleCase } from "../test_util";
|
|
|
3
3
|
|
|
4
4
|
test("Test - Single Expression", function () {
|
|
5
5
|
testSingleCase(chrono.ja, "今日感じたことを忘れずに", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
6
|
-
expect(result.index).toBe(0);
|
|
7
6
|
expect(result.text).toBe("今日");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
expect(result.
|
|
12
|
-
expect(result.start.get("day")).toBe(10);
|
|
13
|
-
|
|
7
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
|
|
8
|
+
});
|
|
9
|
+
testSingleCase(chrono.ja, "きょう感じたことを忘れずに", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
10
|
+
expect(result.text).toBe("きょう");
|
|
14
11
|
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 12));
|
|
15
12
|
});
|
|
16
13
|
|
|
17
14
|
testSingleCase(chrono.ja, "昨日の全国観測値ランキング", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
18
|
-
expect(result.index).toBe(0);
|
|
19
15
|
expect(result.text).toBe("昨日");
|
|
16
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 9, 12));
|
|
17
|
+
});
|
|
18
|
+
testSingleCase(chrono.ja, "きのうの全国観測値ランキング", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
19
|
+
expect(result.text).toBe("きのう");
|
|
20
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 9, 12));
|
|
21
|
+
});
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
expect(result.
|
|
23
|
-
expect(result.start
|
|
24
|
-
|
|
23
|
+
testSingleCase(chrono.ja, "明日の天気は晴れです", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
24
|
+
expect(result.text).toBe("明日");
|
|
25
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 11, 12));
|
|
26
|
+
});
|
|
27
|
+
testSingleCase(chrono.ja, "あしたの天気は晴れです", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
28
|
+
expect(result.text).toBe("あした");
|
|
29
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 11, 12));
|
|
30
|
+
});
|
|
25
31
|
|
|
26
|
-
|
|
32
|
+
testSingleCase(chrono.ja, "今夜には雨が降るでしょう", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
33
|
+
expect(result.text).toBe("今夜");
|
|
34
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 22));
|
|
35
|
+
});
|
|
36
|
+
testSingleCase(chrono.ja, "こんやには雨が降るでしょう", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
37
|
+
expect(result.text).toBe("こんや");
|
|
38
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 22));
|
|
39
|
+
});
|
|
40
|
+
testSingleCase(chrono.ja, "今夕には雨が降るでしょう", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
41
|
+
expect(result.text).toBe("今夕");
|
|
42
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 22));
|
|
43
|
+
});
|
|
44
|
+
testSingleCase(chrono.ja, "こんゆうには雨が降るでしょう", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
45
|
+
expect(result.text).toBe("こんゆう");
|
|
46
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 22));
|
|
47
|
+
});
|
|
48
|
+
testSingleCase(chrono.ja, "今晩には雨が降るでしょう", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
49
|
+
expect(result.text).toBe("今晩");
|
|
50
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 22));
|
|
51
|
+
});
|
|
52
|
+
testSingleCase(chrono.ja, "こんばんには雨が降るでしょう", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
53
|
+
expect(result.text).toBe("こんばん");
|
|
54
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 22));
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
testSingleCase(chrono.ja, "今朝食べたパンは美味しかった", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
58
|
+
expect(result.text).toBe("今朝");
|
|
59
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 6));
|
|
60
|
+
});
|
|
61
|
+
testSingleCase(chrono.ja, "けさ食べたパンは美味しかった", new Date(2012, 8 - 1, 10, 12), (result) => {
|
|
62
|
+
expect(result.text).toBe("けさ");
|
|
63
|
+
expect(result.start).toBeDate(new Date(2012, 8 - 1, 10, 6));
|
|
27
64
|
});
|
|
28
65
|
});
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import * as chrono from "../../src/";
|
|
2
|
+
import { testSingleCase, testUnexpectedResult } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Single Expression", () => {
|
|
5
|
+
testSingleCase(chrono.uk.casual, "Дедлайн сьогодні", new Date(2012, 7, 10, 17, 10), (result) => {
|
|
6
|
+
expect(result.index).toBe(8);
|
|
7
|
+
expect(result.text).toBe("сьогодні");
|
|
8
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 17, 10));
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
testSingleCase(chrono.uk.casual, "Дедлайн завтра", new Date(2012, 7, 10, 17, 10), (result) => {
|
|
12
|
+
expect(result.index).toBe(8);
|
|
13
|
+
expect(result.text).toBe("завтра");
|
|
14
|
+
expect(result.start).toBeDate(new Date(2012, 7, 11, 17, 10));
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
testSingleCase(chrono.uk.casual, "Дедлайн післязавтра", new Date(2012, 7, 10, 17, 10), (result) => {
|
|
18
|
+
expect(result.index).toBe(8);
|
|
19
|
+
expect(result.text).toBe("післязавтра");
|
|
20
|
+
expect(result.start).toBeDate(new Date(2012, 7, 12, 17, 10));
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
testSingleCase(chrono.uk.casual, "Дедлайн післяпіслязавтра", new Date(2012, 7, 10, 17, 10), (result) => {
|
|
24
|
+
expect(result.index).toBe(8);
|
|
25
|
+
expect(result.text).toBe("післяпіслязавтра");
|
|
26
|
+
expect(result.start).toBeDate(new Date(2012, 7, 13, 17, 10));
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
testSingleCase(chrono.uk.casual, "Дедлайн вчора", new Date(2012, 7, 10, 17, 10), (result) => {
|
|
30
|
+
expect(result.index).toBe(8);
|
|
31
|
+
expect(result.text).toBe("вчора");
|
|
32
|
+
expect(result.start).toBeDate(new Date(2012, 7, 9, 17, 10));
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
testSingleCase(chrono.uk.casual, "Дедлайн позавчора", new Date(2012, 7, 10, 17, 10), (result) => {
|
|
36
|
+
expect(result.index).toBe(8);
|
|
37
|
+
expect(result.text).toBe("позавчора");
|
|
38
|
+
expect(result.start).toBeDate(new Date(2012, 7, 8, 17, 10));
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
testSingleCase(chrono.uk.casual, "Дедлайн позапозавчора", new Date(2012, 7, 10, 17, 10), (result) => {
|
|
42
|
+
expect(result.index).toBe(8);
|
|
43
|
+
expect(result.text).toBe("позапозавчора");
|
|
44
|
+
expect(result.start).toBeDate(new Date(2012, 7, 7, 17, 10));
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
testSingleCase(chrono.uk.casual, "Дедлайн зараз", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
|
|
48
|
+
expect(result.index).toBe(8);
|
|
49
|
+
expect(result.text).toBe("зараз");
|
|
50
|
+
expect(result.start).toBeDate(result.refDate);
|
|
51
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 8, 9, 10, 11));
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
testSingleCase(chrono.uk.casual, "Дедлайн вранці", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
|
|
55
|
+
expect(result.index).toBe(8);
|
|
56
|
+
expect(result.text).toBe("вранці");
|
|
57
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 6, 0, 0, 0));
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
testSingleCase(chrono.uk.casual, "Дедлайн цього ранку", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
|
|
61
|
+
expect(result.index).toBe(8);
|
|
62
|
+
expect(result.text).toBe("цього ранку");
|
|
63
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 6, 0, 0, 0));
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
testSingleCase(chrono.uk.casual, "Дедлайн опівдні", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
|
|
67
|
+
expect(result.index).toBe(8);
|
|
68
|
+
expect(result.text).toBe("опівдні");
|
|
69
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12, 0, 0, 0));
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
testSingleCase(chrono.uk.casual, "Дедлайн минулого вечора", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
|
|
73
|
+
expect(result.index).toBe(8);
|
|
74
|
+
expect(result.text).toBe("минулого вечора");
|
|
75
|
+
expect(result.start).toBeDate(new Date(2012, 7, 9, 20, 0, 0, 0));
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
testSingleCase(chrono.uk.casual, "Дедлайн ввечері", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
|
|
79
|
+
expect(result.index).toBe(8);
|
|
80
|
+
expect(result.text).toBe("ввечері");
|
|
81
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 20, 0, 0, 0));
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
testSingleCase(chrono.uk.casual, "Дедлайн минулої ночі", new Date(2012, 7, 10, 8, 9, 10, 11), (result) => {
|
|
85
|
+
expect(result.index).toBe(8);
|
|
86
|
+
expect(result.text).toBe("минулої ночі");
|
|
87
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 0, 0, 0));
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
testSingleCase(chrono.uk.casual, "Дедлайн сьогодні вночі", new Date(2012, 7, 10, 2, 9, 10, 11), (result) => {
|
|
91
|
+
expect(result.index).toBe(8);
|
|
92
|
+
expect(result.text).toBe("сьогодні вночі");
|
|
93
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 0, 0, 0));
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
testSingleCase(chrono.uk.casual, "Дедлайн цієї ночі", new Date(2012, 7, 10, 2, 9, 10, 11), (result) => {
|
|
97
|
+
expect(result.index).toBe(8);
|
|
98
|
+
expect(result.text).toBe("цієї ночі");
|
|
99
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 0, 0, 0));
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
testSingleCase(chrono.uk.casual, "Дедлайн вночі", new Date(2012, 7, 10, 2, 9, 10, 11), (result) => {
|
|
103
|
+
expect(result.index).toBe(8);
|
|
104
|
+
expect(result.text).toBe("вночі");
|
|
105
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 0, 0, 0));
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
testSingleCase(chrono.uk.casual, "Дедлайн опівночі", new Date(2012, 7, 10, 2, 9, 10, 11), (result) => {
|
|
109
|
+
expect(result.index).toBe(8);
|
|
110
|
+
expect(result.text).toBe("опівночі");
|
|
111
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 0, 0, 0, 0));
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
test("Test - Combined Expression", () => {
|
|
116
|
+
testSingleCase(chrono.uk.casual, "Дедлайн вчора ввечері", new Date(2012, 7, 10, 12), (result) => {
|
|
117
|
+
expect(result.index).toBe(8);
|
|
118
|
+
expect(result.text).toBe("вчора ввечері");
|
|
119
|
+
expect(result.start).toBeDate(new Date(2012, 7, 9, 20));
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
testSingleCase(chrono.uk.casual, "Дедлайн завтра вранці", new Date(2012, 8, 10, 14), (result) => {
|
|
123
|
+
expect(result.index).toBe(8);
|
|
124
|
+
expect(result.text).toBe("завтра вранці");
|
|
125
|
+
expect(result.start).toBeDate(new Date(2012, 8, 11, 6));
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
test("Test - Casual date range", () => {
|
|
130
|
+
testSingleCase(chrono.uk.casual, "Подія від сьогодні і до післязавтра", new Date(2012, 7, 4, 12), (result) => {
|
|
131
|
+
expect(result.index).toBe(6);
|
|
132
|
+
expect(result.text).toBe("від сьогодні і до післязавтра");
|
|
133
|
+
expect(result.start).toBeDate(new Date(2012, 7, 4, 12));
|
|
134
|
+
expect(result.end).toBeDate(new Date(2012, 7, 6, 12));
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
testSingleCase(chrono.uk.casual, "Подія сьогодні-завтра", new Date(2012, 7, 10, 12), (result) => {
|
|
138
|
+
expect(result.index).toBe(6);
|
|
139
|
+
expect(result.text).toBe("сьогодні-завтра");
|
|
140
|
+
expect(result.start).toBeDate(new Date(2012, 7, 10, 12));
|
|
141
|
+
expect(result.end).toBeDate(new Date(2012, 7, 11, 12));
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
test("Test - Random negative text", () => {
|
|
146
|
+
testUnexpectedResult(chrono.uk, "несьогодні");
|
|
147
|
+
|
|
148
|
+
testUnexpectedResult(chrono.uk, "звтра");
|
|
149
|
+
|
|
150
|
+
testUnexpectedResult(chrono.uk, "ввчора");
|
|
151
|
+
|
|
152
|
+
testUnexpectedResult(chrono.uk, "січен");
|
|
153
|
+
});
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as chrono from "../../src";
|
|
2
|
+
import { testSingleCase } from "../test_util";
|
|
3
|
+
|
|
4
|
+
test("Test - Month-Year expression", function () {
|
|
5
|
+
testSingleCase(chrono.uk, "Вересень 2012", (result) => {
|
|
6
|
+
expect(result.index).toBe(0);
|
|
7
|
+
expect(result.text).toBe("Вересень 2012");
|
|
8
|
+
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
testSingleCase(chrono.uk, "верес 2012", (result) => {
|
|
12
|
+
expect(result.index).toBe(0);
|
|
13
|
+
expect(result.text).toBe("верес 2012");
|
|
14
|
+
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
testSingleCase(chrono.uk, "верес. 2012", (result) => {
|
|
18
|
+
expect(result.index).toBe(0);
|
|
19
|
+
expect(result.text).toBe("верес. 2012");
|
|
20
|
+
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
testSingleCase(chrono.uk, "верес-2012", (result) => {
|
|
24
|
+
expect(result.index).toBe(0);
|
|
25
|
+
expect(result.text).toBe("верес-2012");
|
|
26
|
+
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test("Test - Month-Only expression", function () {
|
|
31
|
+
testSingleCase(chrono.uk, "в січні", new Date(2020, 11 - 1, 22), (result) => {
|
|
32
|
+
expect(result.index).toBe(0);
|
|
33
|
+
expect(result.text).toBe("в січні");
|
|
34
|
+
expect(result.start).toBeDate(new Date(2021, 1 - 1, 1, 12));
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
testSingleCase(chrono.uk, "в січ", new Date(2020, 11 - 1, 22), (result) => {
|
|
38
|
+
expect(result.index).toBe(0);
|
|
39
|
+
expect(result.text).toBe("в січ");
|
|
40
|
+
expect(result.start).toBeDate(new Date(2021, 1 - 1, 1, 12));
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
testSingleCase(chrono.uk, "травень", new Date(2020, 11 - 1, 22), (result) => {
|
|
44
|
+
expect(result.index).toBe(0);
|
|
45
|
+
expect(result.text).toBe("травень");
|
|
46
|
+
expect(result.start).toBeDate(new Date(2021, 5 - 1, 1, 12));
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test("Test - Month expression in context", function () {
|
|
51
|
+
testSingleCase(chrono.uk, "Це було у вересні 2012 перед новим роком", (result) => {
|
|
52
|
+
expect(result.index).toBe(8);
|
|
53
|
+
expect(result.text).toBe("у вересні 2012");
|
|
54
|
+
expect(result.start).toBeDate(new Date(2012, 9 - 1, 1, 12));
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
test("Test - year 90's parsing", () => {
|
|
59
|
+
testSingleCase(chrono.uk, "сер 96", new Date(2012, 7, 10), (result) => {
|
|
60
|
+
expect(result.index).toBe(0);
|
|
61
|
+
expect(result.text).toBe("сер 96");
|
|
62
|
+
expect(result.start).toBeDate(new Date(1996, 8 - 1, 1, 12));
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
testSingleCase(chrono.uk, "96 сер 96", new Date(2012, 7, 10), (result) => {
|
|
66
|
+
expect(result.index).toBe(3);
|
|
67
|
+
expect(result.text).toBe("сер 96");
|
|
68
|
+
expect(result.start).toBeDate(new Date(1996, 8 - 1, 1, 12));
|
|
69
|
+
});
|
|
70
|
+
});
|