chrono-node 2.9.1 → 2.10.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/locales/de/parsers/DECasualTimeParser.js +7 -0
- package/dist/cjs/locales/de/parsers/DECasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/en/configuration.js +2 -0
- package/dist/cjs/locales/en/configuration.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENMonthNameLittleEndianParser.js +1 -1
- package/dist/cjs/locales/en/parsers/ENMonthNameLittleEndianParser.js.map +1 -1
- package/dist/cjs/locales/en/parsers/ENYearMonthNameParser.d.ts +6 -0
- package/dist/cjs/locales/en/parsers/ENYearMonthNameParser.js +31 -0
- package/dist/cjs/locales/en/parsers/ENYearMonthNameParser.js.map +1 -0
- package/dist/cjs/locales/fi/parsers/FICasualTimeParser.js +7 -0
- package/dist/cjs/locales/fi/parsers/FICasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRCasualTimeParser.js +5 -0
- package/dist/cjs/locales/fr/parsers/FRCasualTimeParser.js.map +1 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +2 -1
- package/dist/cjs/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/cjs/locales/it/parsers/ITCasualTimeParser.js +5 -0
- package/dist/cjs/locales/it/parsers/ITCasualTimeParser.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/index.js +2 -0
- package/dist/cjs/locales/zh/hans/index.js.map +1 -1
- package/dist/cjs/locales/zh/hans/parsers/ZHHansAgoFormatParser.d.ts +6 -0
- package/dist/cjs/locales/zh/hans/parsers/ZHHansAgoFormatParser.js +80 -0
- package/dist/cjs/locales/zh/hans/parsers/ZHHansAgoFormatParser.js.map +1 -0
- package/dist/cjs/locales/zh/hant/index.js +2 -0
- package/dist/cjs/locales/zh/hant/index.js.map +1 -1
- package/dist/cjs/locales/zh/hant/parsers/ZHHantAgoFormatParser.d.ts +6 -0
- package/dist/cjs/locales/zh/hant/parsers/ZHHantAgoFormatParser.js +80 -0
- package/dist/cjs/locales/zh/hant/parsers/ZHHantAgoFormatParser.js.map +1 -0
- package/dist/cjs/results.js +15 -9
- package/dist/cjs/results.js.map +1 -1
- package/dist/esm/locales/de/parsers/DECasualTimeParser.js +7 -0
- package/dist/esm/locales/de/parsers/DECasualTimeParser.js.map +1 -1
- package/dist/esm/locales/en/configuration.js +2 -0
- package/dist/esm/locales/en/configuration.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENMonthNameLittleEndianParser.js +1 -1
- package/dist/esm/locales/en/parsers/ENMonthNameLittleEndianParser.js.map +1 -1
- package/dist/esm/locales/en/parsers/ENYearMonthNameParser.d.ts +6 -0
- package/dist/esm/locales/en/parsers/ENYearMonthNameParser.js +28 -0
- package/dist/esm/locales/en/parsers/ENYearMonthNameParser.js.map +1 -0
- package/dist/esm/locales/fi/parsers/FICasualTimeParser.js +7 -0
- package/dist/esm/locales/fi/parsers/FICasualTimeParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRCasualTimeParser.js +5 -0
- package/dist/esm/locales/fr/parsers/FRCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +2 -1
- package/dist/esm/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js.map +1 -1
- package/dist/esm/locales/it/parsers/ITCasualTimeParser.js +5 -0
- package/dist/esm/locales/it/parsers/ITCasualTimeParser.js.map +1 -1
- package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.js +1 -1
- package/dist/esm/locales/uk/parsers/UKTimeUnitWithinFormatParser.js.map +1 -1
- package/dist/esm/locales/zh/hans/index.js +2 -0
- package/dist/esm/locales/zh/hans/index.js.map +1 -1
- package/dist/esm/locales/zh/hans/parsers/ZHHansAgoFormatParser.d.ts +6 -0
- package/dist/esm/locales/zh/hans/parsers/ZHHansAgoFormatParser.js +77 -0
- package/dist/esm/locales/zh/hans/parsers/ZHHansAgoFormatParser.js.map +1 -0
- package/dist/esm/locales/zh/hant/index.js +2 -0
- package/dist/esm/locales/zh/hant/index.js.map +1 -1
- package/dist/esm/locales/zh/hant/parsers/ZHHantAgoFormatParser.d.ts +6 -0
- package/dist/esm/locales/zh/hant/parsers/ZHHantAgoFormatParser.js +77 -0
- package/dist/esm/locales/zh/hant/parsers/ZHHantAgoFormatParser.js.map +1 -0
- package/dist/esm/results.js +14 -9
- package/dist/esm/results.js.map +1 -1
- package/package.json +5 -1
- package/src/locales/de/parsers/DECasualTimeParser.ts +7 -0
- package/src/locales/en/configuration.ts +2 -0
- package/src/locales/en/parsers/ENMonthNameLittleEndianParser.ts +1 -1
- package/src/locales/en/parsers/ENYearMonthNameParser.ts +38 -0
- package/src/locales/fi/parsers/FICasualTimeParser.ts +7 -0
- package/src/locales/fr/parsers/FRCasualTimeParser.ts +5 -0
- package/src/locales/fr/parsers/FRTimeUnitRelativeFormatParser.ts +2 -1
- package/src/locales/it/parsers/ITCasualTimeParser.ts +5 -0
- package/src/locales/uk/parsers/UKTimeUnitWithinFormatParser.ts +1 -1
- package/src/locales/zh/hans/index.ts +2 -0
- package/src/locales/zh/hans/parsers/ZHHansAgoFormatParser.ts +87 -0
- package/src/locales/zh/hant/index.ts +2 -0
- package/src/locales/zh/hant/parsers/ZHHantAgoFormatParser.ts +87 -0
- package/src/results.ts +40 -9
- package/test/calculation_duration.test.ts +0 -165
- package/test/calculation_weekdays.test.ts +0 -133
- package/test/de/de_casual.test.ts +0 -322
- package/test/de/de_dash.test.ts +0 -32
- package/test/de/de_month_name_little_endian.test.ts +0 -273
- package/test/de/de_time_exp.test.ts +0 -223
- package/test/de/de_time_units_casual_relative.test.ts +0 -120
- package/test/de/de_time_units_within.test.ts +0 -119
- package/test/de/de_weekday.test.ts +0 -158
- package/test/de/de_year.test.ts +0 -147
- package/test/debugging.test.ts +0 -17
- package/test/en/en.test.ts +0 -191
- package/test/en/en_casual.test.ts +0 -425
- package/test/en/en_inter_std.test.ts +0 -118
- package/test/en/en_merging_relative_dates.test.ts +0 -50
- package/test/en/en_month.test.ts +0 -295
- package/test/en/en_month_name_little_endian.test.ts +0 -448
- package/test/en/en_month_name_middle_endian.test.ts +0 -386
- package/test/en/en_performance.test.ts +0 -26
- package/test/en/en_relative.test.ts +0 -393
- package/test/en/en_slash.test.ts +0 -284
- package/test/en/en_time_exp.test.ts +0 -535
- package/test/en/en_time_units_ago.test.ts +0 -357
- package/test/en/en_time_units_casual_relative.test.ts +0 -186
- package/test/en/en_time_units_later.test.ts +0 -361
- package/test/en/en_time_units_within.test.ts +0 -417
- package/test/en/en_timezone_exp.test.ts +0 -410
- package/test/en/en_weekday.test.ts +0 -573
- package/test/en/en_year.test.ts +0 -138
- package/test/en/en_year_month_day.test.ts +0 -101
- package/test/en/negative_cases.test.ts +0 -99
- package/test/es/es_casual.test.ts +0 -175
- package/test/es/es_month_name_little_endian.test.ts +0 -217
- package/test/es/es_slash.test.ts +0 -26
- package/test/es/es_time_exp.test.ts +0 -175
- package/test/es/es_time_units_within.test.ts +0 -119
- package/test/fi/fi_casual.test.ts +0 -85
- package/test/fi/fi_casual_time.test.ts +0 -56
- package/test/fi/fi_month_name_little_endian.test.ts +0 -50
- package/test/fi/fi_time_exp.test.ts +0 -39
- package/test/fi/fi_time_units_ago.test.ts +0 -93
- package/test/fi/fi_time_units_casual_relative.test.ts +0 -117
- package/test/fi/fi_time_units_within.test.ts +0 -74
- package/test/fi/fi_weekday.test.ts +0 -90
- package/test/fr/fr_casual.test.ts +0 -300
- package/test/fr/fr_little_endian.test.ts +0 -320
- package/test/fr/fr_slash.test.ts +0 -49
- package/test/fr/fr_time_exp.test.ts +0 -588
- package/test/fr/fr_time_units_ago.test.ts +0 -103
- package/test/fr/fr_time_units_casual_relative.test.ts +0 -108
- package/test/fr/fr_time_units_within.test.ts +0 -129
- package/test/fr/fr_weekday.test.ts +0 -130
- package/test/it/it_casual.test.ts +0 -44
- package/test/it/it_month_name_little_endian.test.ts +0 -28
- package/test/it/it_month_name_middle_endian.test.ts +0 -39
- package/test/it/it_time_exp.test.ts +0 -84
- package/test/it/it_weekday.test.ts +0 -37
- package/test/it/it_year_month_day.test.ts +0 -41
- package/test/ja/ja_casual.test.ts +0 -73
- package/test/ja/ja_slash_date_format.test.ts +0 -60
- package/test/ja/ja_standard.test.ts +0 -235
- package/test/ja/ja_time_exp.test.ts +0 -305
- package/test/ja/ja_weekday.test.ts +0 -183
- package/test/nl/nl_casual.test.ts +0 -408
- package/test/nl/nl_month.test.ts +0 -205
- package/test/nl/nl_month_name_little_endian.test.ts +0 -358
- package/test/nl/nl_relative.test.ts +0 -242
- package/test/nl/nl_slash.test.ts +0 -206
- package/test/nl/nl_time_exp.test.ts +0 -79
- package/test/nl/nl_time_units_ago.test.ts +0 -243
- package/test/nl/nl_time_units_casual_relative.test.ts +0 -130
- package/test/nl/nl_time_units_later.test.ts +0 -250
- package/test/nl/nl_time_units_within.test.ts +0 -225
- package/test/nl/nl_weekday.test.ts +0 -216
- package/test/pt/pt_casual.test.ts +0 -175
- package/test/pt/pt_month_name_little_endian.test.ts +0 -217
- package/test/pt/pt_slash.test.ts +0 -26
- package/test/pt/pt_time_exp.test.ts +0 -175
- package/test/result.test.ts +0 -283
- package/test/ru/ru_casual.test.ts +0 -159
- package/test/ru/ru_month.test.ts +0 -70
- package/test/ru/ru_month_name_little_endian.test.ts +0 -145
- package/test/ru/ru_relative.test.ts +0 -107
- package/test/ru/ru_time_exp.test.ts +0 -111
- package/test/ru/ru_time_units_ago.test.ts +0 -48
- package/test/ru/ru_time_units_casual_relative.test.ts +0 -190
- package/test/ru/ru_time_units_within.test.ts +0 -16
- package/test/ru/ru_weekday.test.ts +0 -52
- package/test/sv/sv_casual.test.ts +0 -87
- package/test/sv/sv_month_name_little_endian.test.ts +0 -48
- package/test/sv/sv_time_units_casual_relative.test.ts +0 -143
- package/test/sv/sv_weekday.test.ts +0 -68
- package/test/system.test.ts +0 -247
- package/test/system_timezone.test.ts +0 -284
- package/test/test_util.ts +0 -135
- package/test/uk/uk_casual.test.ts +0 -153
- package/test/uk/uk_month.test.ts +0 -70
- package/test/uk/uk_month_name_little_endian.test.ts +0 -148
- package/test/uk/uk_relative.test.ts +0 -107
- package/test/uk/uk_time_exp.test.ts +0 -111
- package/test/uk/uk_time_units_ago.test.ts +0 -48
- package/test/uk/uk_time_units_casual_relative.test.ts +0 -142
- package/test/uk/uk_time_units_within.test.ts +0 -16
- package/test/uk/uk_weekday.test.ts +0 -52
- package/test/vi/vi_casual.test.ts +0 -84
- package/test/vi/vi_casual_time.test.ts +0 -77
- package/test/vi/vi_date_range.test.ts +0 -61
- package/test/vi/vi_forward_date.test.ts +0 -45
- package/test/vi/vi_month_year.test.ts +0 -40
- package/test/vi/vi_negative_cases.test.ts +0 -60
- package/test/vi/vi_slash.test.ts +0 -36
- package/test/vi/vi_standard.test.ts +0 -86
- package/test/vi/vi_strict.test.ts +0 -67
- package/test/vi/vi_time_exp.test.ts +0 -99
- package/test/vi/vi_time_units_ago.test.ts +0 -56
- package/test/vi/vi_time_units_casual_relative.test.ts +0 -56
- package/test/vi/vi_time_units_later.test.ts +0 -43
- package/test/vi/vi_time_units_within.test.ts +0 -24
- package/test/vi/vi_weekday.test.ts +0 -77
- package/test/vi/vi_year.test.ts +0 -42
- package/test/zh/hans/zh_hans_casual.test.ts +0 -242
- package/test/zh/hans/zh_hans_date.test.ts +0 -116
- package/test/zh/hans/zh_hans_deadline.test.ts +0 -175
- package/test/zh/hans/zh_hans_time_exp.test.ts +0 -508
- package/test/zh/hans/zh_hans_weekday.test.ts +0 -219
- package/test/zh/hant/zh_hant_casual.test.ts +0 -260
- package/test/zh/hant/zh_hant_date.test.ts +0 -116
- package/test/zh/hant/zh_hant_deadline.test.ts +0 -136
- package/test/zh/hant/zh_hant_time_exp.test.ts +0 -226
- package/test/zh/hant/zh_hant_weekday.test.ts +0 -175
- package/test/zh/zh.test.ts +0 -36
- package/tsconfig.build.esm.json +0 -8
- package/tsconfig.build.json +0 -10
- package/tsconfig.json +0 -29
|
@@ -1,410 +0,0 @@
|
|
|
1
|
-
import * as chrono from "../../src";
|
|
2
|
-
import { Month, Weekday } from "../../src/types";
|
|
3
|
-
import { getLastWeekdayOfMonth } from "../../src/timezone";
|
|
4
|
-
import { testSingleCase } from "../test_util";
|
|
5
|
-
import { Meridiem } from "../../src";
|
|
6
|
-
|
|
7
|
-
test("Test - Parsing date/time with UTC offset", function () {
|
|
8
|
-
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am utc+02:45 ", (result, text) => {
|
|
9
|
-
expect(result.text).toBe("wednesday, september 16, 2020 at 11 am utc+02:45");
|
|
10
|
-
|
|
11
|
-
expect(result.start.get("hour")).toBe(11);
|
|
12
|
-
expect(result.start.get("minute")).toBe(0);
|
|
13
|
-
expect(result.start.get("timezoneOffset")).toBe(2 * 60 + 45);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am utc+0245 ", (result, text) => {
|
|
17
|
-
expect(result.text).toBe("wednesday, september 16, 2020 at 11 am utc+0245");
|
|
18
|
-
|
|
19
|
-
expect(result.start.get("hour")).toBe(11);
|
|
20
|
-
expect(result.start.get("minute")).toBe(0);
|
|
21
|
-
expect(result.start.get("timezoneOffset")).toBe(2 * 60 + 45);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am utc+02 ", (result, text) => {
|
|
25
|
-
expect(result.text).toBe("wednesday, september 16, 2020 at 11 am utc+02");
|
|
26
|
-
|
|
27
|
-
expect(result.start.get("hour")).toBe(11);
|
|
28
|
-
expect(result.start.get("minute")).toBe(0);
|
|
29
|
-
expect(result.start.get("timezoneOffset")).toBe(2 * 60);
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
test("Test - Parsing date/time with numeric offset", () => {
|
|
34
|
-
testSingleCase(chrono, "wednesday, september 16, 2020 at 23.00+14", (result, text) => {
|
|
35
|
-
expect(result.text).toBe(text);
|
|
36
|
-
expect(result.start.isCertain("timezoneOffset")).toBe(true);
|
|
37
|
-
expect(result.start.get("timezoneOffset")).toBe(14 * 60);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
testSingleCase(chrono, "wednesday, september 16, 2020 at 23.00+1400", (result, text) => {
|
|
41
|
-
expect(result.text).toBe(text);
|
|
42
|
-
expect(result.start.isCertain("timezoneOffset")).toBe(true);
|
|
43
|
-
expect(result.start.get("timezoneOffset")).toBe(14 * 60);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
testSingleCase(chrono, "wednesday, september 16, 2020 at 23.00+15", (result, text) => {
|
|
47
|
-
expect(result.text).toBe("wednesday, september 16, 2020 at 23.00");
|
|
48
|
-
expect(result.start.isCertain("timezoneOffset")).toBe(false);
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
test("Test - Parsing date/time with GMT offset", function () {
|
|
53
|
-
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am GMT -08:45 ", (result, text) => {
|
|
54
|
-
expect(result.text).toBe("wednesday, september 16, 2020 at 11 am GMT -08:45");
|
|
55
|
-
|
|
56
|
-
expect(result.start.get("hour")).toBe(11);
|
|
57
|
-
expect(result.start.get("minute")).toBe(0);
|
|
58
|
-
expect(result.start.get("timezoneOffset")).toBe(-(8 * 60 + 45));
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am gmt+02 ", (result, text) => {
|
|
62
|
-
expect(result.text).toBe("wednesday, september 16, 2020 at 11 am gmt+02");
|
|
63
|
-
|
|
64
|
-
expect(result.start.get("hour")).toBe(11);
|
|
65
|
-
expect(result.start.get("minute")).toBe(0);
|
|
66
|
-
expect(result.start.get("timezoneOffset")).toBe(2 * 60);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
testSingleCase(chrono, "published: 10:30 (gmt-2:30).", (result, text) => {
|
|
70
|
-
expect(result.text).toBe("10:30 (gmt-2:30)");
|
|
71
|
-
|
|
72
|
-
expect(result.start.get("hour")).toBe(10);
|
|
73
|
-
expect(result.start.get("minute")).toBe(30);
|
|
74
|
-
expect(result.start.get("timezoneOffset")).toBe(-(2 * 60 + 30));
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
test("Test - Parsing date/time with timezone abbreviation", function () {
|
|
79
|
-
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am", (result, text) => {
|
|
80
|
-
expect(result.text).toBe(text);
|
|
81
|
-
expect(result.start.get("year")).toBe(2020);
|
|
82
|
-
expect(result.start.get("month")).toBe(9);
|
|
83
|
-
expect(result.start.get("day")).toBe(16);
|
|
84
|
-
expect(result.start.get("hour")).toBe(11);
|
|
85
|
-
expect(result.start.get("minute")).toBe(0);
|
|
86
|
-
expect(result.start.get("timezoneOffset")).toBe(null);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am JST", (result, text) => {
|
|
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);
|
|
94
|
-
expect(result.start.get("hour")).toBe(11);
|
|
95
|
-
expect(result.start.get("minute")).toBe(0);
|
|
96
|
-
|
|
97
|
-
// JST: GMT+9:00
|
|
98
|
-
expect(result.start.get("timezoneOffset")).toBe(9 * 60);
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am GMT+0900 (JST)", (result, text) => {
|
|
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);
|
|
106
|
-
expect(result.start.get("hour")).toBe(11);
|
|
107
|
-
expect(result.start.get("minute")).toBe(0);
|
|
108
|
-
|
|
109
|
-
// JST: GMT+9:00
|
|
110
|
-
expect(result.start.get("timezoneOffset")).toBe(9 * 60);
|
|
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)
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
test("Test - Parsing date/time with ambiguous timezone abbreviations", function () {
|
|
150
|
-
// Test dates around transition to DST for ET
|
|
151
|
-
testSingleCase(chrono, "2022-03-12 23:00 ET", (result, text) => {
|
|
152
|
-
expect(result.text).toBe(text);
|
|
153
|
-
expect(result.start.get("hour")).toBe(23);
|
|
154
|
-
expect(result.start.get("timezoneOffset")).toBe(-5 * 60); // ET during standard time (EST) in 2022
|
|
155
|
-
});
|
|
156
|
-
testSingleCase(chrono, "2022-03-13 23:00 ET", (result, text) => {
|
|
157
|
-
expect(result.text).toBe(text);
|
|
158
|
-
expect(result.start.get("hour")).toBe(23);
|
|
159
|
-
expect(result.start.get("timezoneOffset")).toBe(-4 * 60); // ET during DST (EDT) in 2022
|
|
160
|
-
});
|
|
161
|
-
testSingleCase(chrono, "2021-03-13 23:00 ET", (result, text) => {
|
|
162
|
-
expect(result.text).toBe(text);
|
|
163
|
-
expect(result.start.get("hour")).toBe(23);
|
|
164
|
-
expect(result.start.get("timezoneOffset")).toBe(-5 * 60); // ET during standard time (EST) in 2021
|
|
165
|
-
});
|
|
166
|
-
testSingleCase(chrono, "2021-03-14 23:00 ET", (result, text) => {
|
|
167
|
-
expect(result.text).toBe(text);
|
|
168
|
-
expect(result.start.get("hour")).toBe(23);
|
|
169
|
-
expect(result.start.get("timezoneOffset")).toBe(-4 * 60); // ET during DST (EDT) in 2021
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
// Also test around transition *from* DST
|
|
173
|
-
testSingleCase(chrono, "2021-11-06 23:00 ET", (result, text) => {
|
|
174
|
-
expect(result.text).toBe(text);
|
|
175
|
-
expect(result.start.get("hour")).toBe(23);
|
|
176
|
-
expect(result.start.get("timezoneOffset")).toBe(-4 * 60); // ET during DST (EDT) in 2021
|
|
177
|
-
});
|
|
178
|
-
testSingleCase(chrono, "2021-11-07 23:00 ET", (result, text) => {
|
|
179
|
-
expect(result.text).toBe(text);
|
|
180
|
-
expect(result.start.get("hour")).toBe(23);
|
|
181
|
-
expect(result.start.get("timezoneOffset")).toBe(-5 * 60); // ET during standard time (EST) in 2021
|
|
182
|
-
});
|
|
183
|
-
testSingleCase(chrono, "2020-10-31 23:00 ET", (result, text) => {
|
|
184
|
-
expect(result.text).toBe(text);
|
|
185
|
-
expect(result.start.get("hour")).toBe(23);
|
|
186
|
-
expect(result.start.get("timezoneOffset")).toBe(-4 * 60); // ET during DST (EDT) in 2020
|
|
187
|
-
});
|
|
188
|
-
testSingleCase(chrono, "2020-11-01 23:00 ET", (result, text) => {
|
|
189
|
-
expect(result.text).toBe(text);
|
|
190
|
-
expect(result.start.get("hour")).toBe(23);
|
|
191
|
-
expect(result.start.get("timezoneOffset")).toBe(-5 * 60); // ET during standard time (EST) in 2020
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
// Same checks, but for CET (which transitions at different dates with different rules)
|
|
195
|
-
// Test dates around transition to DST for CET
|
|
196
|
-
testSingleCase(chrono, "2022-03-26 23:00 CET", (result, text) => {
|
|
197
|
-
expect(result.text).toBe(text);
|
|
198
|
-
expect(result.start.get("hour")).toBe(23);
|
|
199
|
-
expect(result.start.get("timezoneOffset")).toBe(60); // CET during standard time (CET) in 2022
|
|
200
|
-
});
|
|
201
|
-
testSingleCase(chrono, "2022-03-27 23:00 CET", (result, text) => {
|
|
202
|
-
expect(result.text).toBe(text);
|
|
203
|
-
expect(result.start.get("hour")).toBe(23);
|
|
204
|
-
expect(result.start.get("timezoneOffset")).toBe(2 * 60); // CET during DST (CEST) in 2022
|
|
205
|
-
});
|
|
206
|
-
testSingleCase(chrono, "2021-03-27 23:00 CET", (result, text) => {
|
|
207
|
-
expect(result.text).toBe(text);
|
|
208
|
-
expect(result.start.get("hour")).toBe(23);
|
|
209
|
-
expect(result.start.get("timezoneOffset")).toBe(60); // CET during standard time (CET) in 2021
|
|
210
|
-
});
|
|
211
|
-
testSingleCase(chrono, "2021-03-28 23:00 CET", (result, text) => {
|
|
212
|
-
expect(result.text).toBe(text);
|
|
213
|
-
expect(result.start.get("hour")).toBe(23);
|
|
214
|
-
expect(result.start.get("timezoneOffset")).toBe(2 * 60); // CET during DST (CEST) in 2021
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
// Also test around transition *from* DST for CET
|
|
218
|
-
testSingleCase(chrono, "2022-10-29 23:00 CET", (result, text) => {
|
|
219
|
-
expect(result.text).toBe(text);
|
|
220
|
-
expect(result.start.get("hour")).toBe(23);
|
|
221
|
-
expect(result.start.get("timezoneOffset")).toBe(2 * 60); // CET during DST (CEST) in 2022
|
|
222
|
-
});
|
|
223
|
-
testSingleCase(chrono, "2022-10-30 23:00 CET", (result, text) => {
|
|
224
|
-
expect(result.text).toBe(text);
|
|
225
|
-
expect(result.start.get("hour")).toBe(23);
|
|
226
|
-
expect(result.start.get("timezoneOffset")).toBe(60); // CET during standard time (CET) in 2022
|
|
227
|
-
});
|
|
228
|
-
testSingleCase(chrono, "2021-10-30 23:00 CET", (result, text) => {
|
|
229
|
-
expect(result.text).toBe(text);
|
|
230
|
-
expect(result.start.get("hour")).toBe(23);
|
|
231
|
-
expect(result.start.get("timezoneOffset")).toBe(2 * 60); // CET during DST (CEST) in 2021
|
|
232
|
-
});
|
|
233
|
-
testSingleCase(chrono, "2021-10-31 23:00 CET", (result, text) => {
|
|
234
|
-
expect(result.text).toBe(text);
|
|
235
|
-
expect(result.start.get("hour")).toBe(23);
|
|
236
|
-
expect(result.start.get("timezoneOffset")).toBe(60); // CET during standard time (CET) in 2021
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
test("Test - Timezone parsing overrides", function () {
|
|
241
|
-
// chrono.parse('at 10:00 XYZ', new Date(2023, 3, 20), {timezones: {XYZ: -180}})
|
|
242
|
-
// XYZ shouldn't be recognized or parsed as a timezone
|
|
243
|
-
testSingleCase(chrono, "Jan 1st 2023 at 10:00 XYZ", (result) => {
|
|
244
|
-
expect(result.text).toBe("Jan 1st 2023 at 10:00");
|
|
245
|
-
expect(result.start).toBeDate(new Date(2023, 1 - 1, 1, 10));
|
|
246
|
-
});
|
|
247
|
-
// Parse the correct tzoffset when XYZ is provided as a custom tz in parsingOptions
|
|
248
|
-
testSingleCase(
|
|
249
|
-
chrono,
|
|
250
|
-
"Jan 1st 2023 at 10:00 XYZ",
|
|
251
|
-
new Date(2023, 1, 1),
|
|
252
|
-
{ timezones: { XYZ: -180 } },
|
|
253
|
-
(result) => {
|
|
254
|
-
expect(result.text).toBe("Jan 1st 2023 at 10:00 XYZ");
|
|
255
|
-
expect(result.start.get("timezoneOffset")).toBe(-180);
|
|
256
|
-
}
|
|
257
|
-
);
|
|
258
|
-
// Parse the correct tzoffset when XYZ is provided as a custom ambiguous tz in parsingOptions
|
|
259
|
-
const parseXYZAsAmbiguousTz = {
|
|
260
|
-
timezoneOffsetDuringDst: -120,
|
|
261
|
-
timezoneOffsetNonDst: -180,
|
|
262
|
-
dstStart: (year: number) => getLastWeekdayOfMonth(year, Month.MARCH, Weekday.SUNDAY, 2),
|
|
263
|
-
dstEnd: (year: number) => getLastWeekdayOfMonth(year, Month.OCTOBER, Weekday.SUNDAY, 3),
|
|
264
|
-
};
|
|
265
|
-
// Parsing a non-DST date
|
|
266
|
-
testSingleCase(
|
|
267
|
-
chrono,
|
|
268
|
-
"Jan 1st 2023 at 10:00 XYZ",
|
|
269
|
-
new Date(2023, 1, 1),
|
|
270
|
-
{ timezones: { XYZ: parseXYZAsAmbiguousTz } },
|
|
271
|
-
(result) => {
|
|
272
|
-
expect(result.text).toBe("Jan 1st 2023 at 10:00 XYZ");
|
|
273
|
-
expect(result.start.get("timezoneOffset")).toBe(-180);
|
|
274
|
-
}
|
|
275
|
-
);
|
|
276
|
-
// Parsing a DST date
|
|
277
|
-
testSingleCase(
|
|
278
|
-
chrono,
|
|
279
|
-
"Jun 1st 2023 at 10:00 XYZ",
|
|
280
|
-
new Date(2023, 1, 1),
|
|
281
|
-
{ timezones: { XYZ: parseXYZAsAmbiguousTz } },
|
|
282
|
-
(result) => {
|
|
283
|
-
expect(result.text).toBe("Jun 1st 2023 at 10:00 XYZ");
|
|
284
|
-
expect(result.start.get("timezoneOffset")).toBe(-120);
|
|
285
|
-
}
|
|
286
|
-
);
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
test("Test - Parsing date with timezone abbreviation", function () {
|
|
290
|
-
testSingleCase(chrono, "Wednesday, September 16, 2020, EST", (result, text) => {
|
|
291
|
-
expect(result.text).toBe(text);
|
|
292
|
-
expect(result.start.get("timezoneOffset")).toBe(-300);
|
|
293
|
-
});
|
|
294
|
-
});
|
|
295
|
-
|
|
296
|
-
test("Test - Not parsing timezone from relative time", function () {
|
|
297
|
-
{
|
|
298
|
-
const refInstant = new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)");
|
|
299
|
-
const expectedInstant = new Date("Sun Nov 29 2020 14:24:13 GMT+0900 (Japan Standard Time)");
|
|
300
|
-
|
|
301
|
-
testSingleCase(chrono, "in 1 hour get eggs and milk", refInstant, (result, text) => {
|
|
302
|
-
expect(result.text).toBe("in 1 hour");
|
|
303
|
-
expect(result.start.get("timezoneOffset")).toBe(-refInstant.getTimezoneOffset());
|
|
304
|
-
expect(result.start).toBeDate(expectedInstant);
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
{
|
|
309
|
-
const refInstant = new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)");
|
|
310
|
-
const expectedInstant = new Date("Sun Nov 29 2020 14:24:13 GMT+0900 (Japan Standard Time)");
|
|
311
|
-
|
|
312
|
-
testSingleCase(chrono, "in 1 hour GMT", refInstant, (result, text) => {
|
|
313
|
-
// expect(result.text).toBe("in 1 hour"); known issue when running test in the GMT time
|
|
314
|
-
expect(result.start).toBeDate(expectedInstant);
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
{
|
|
319
|
-
const refInstant = new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)");
|
|
320
|
-
const expectedInstant = new Date("Sun Nov 29 2020 14:24:13 GMT+0900 (Japan Standard Time)");
|
|
321
|
-
|
|
322
|
-
testSingleCase(chrono, "in 1 hour GMT", { instant: refInstant, timezone: "JST" }, (result, text) => {
|
|
323
|
-
// expect(result.text).toBe("in 1 hour");
|
|
324
|
-
expect(result.start).toBeDate(expectedInstant);
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
{
|
|
329
|
-
const refInstant = new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)");
|
|
330
|
-
const expectedInstant = new Date("Sun Nov 29 2020 14:24:13 GMT+0900 (Japan Standard Time)");
|
|
331
|
-
|
|
332
|
-
testSingleCase(chrono, "in 1 hour GMT", { instant: refInstant, timezone: "BST" }, (result, text) => {
|
|
333
|
-
// expect(result.text).toBe("in 1 hour");
|
|
334
|
-
expect(result.start).toBeDate(expectedInstant);
|
|
335
|
-
});
|
|
336
|
-
}
|
|
337
|
-
});
|
|
338
|
-
|
|
339
|
-
test("Test - Relative time (Now) is not effected by timezone setting", function () {
|
|
340
|
-
const refInstant = new Date(1637674343000);
|
|
341
|
-
|
|
342
|
-
testSingleCase(chrono, "now", { instant: refInstant }, (result) => {
|
|
343
|
-
expect(result.text).toBe("now");
|
|
344
|
-
expect(result.start).toBeDate(refInstant);
|
|
345
|
-
});
|
|
346
|
-
|
|
347
|
-
testSingleCase(chrono, "now", { instant: refInstant, timezone: null }, (result) => {
|
|
348
|
-
expect(result.text).toBe("now");
|
|
349
|
-
expect(result.start).toBeDate(refInstant);
|
|
350
|
-
});
|
|
351
|
-
|
|
352
|
-
testSingleCase(chrono, "now", { instant: refInstant, timezone: "BST" }, (result) => {
|
|
353
|
-
expect(result.text).toBe("now");
|
|
354
|
-
expect(result.start).toBeDate(refInstant);
|
|
355
|
-
});
|
|
356
|
-
|
|
357
|
-
testSingleCase(chrono, "now", { instant: refInstant, timezone: "JST" }, (result) => {
|
|
358
|
-
expect(result.text).toBe("now");
|
|
359
|
-
expect(result.start).toBeDate(refInstant);
|
|
360
|
-
});
|
|
361
|
-
});
|
|
362
|
-
|
|
363
|
-
test("Test - Relative time (2 hour later) is not effected by timezone setting", function () {
|
|
364
|
-
const refInstant = new Date(1637674343000);
|
|
365
|
-
const expectedInstant = new Date(1637674343000 + 2 * 60 * 60 * 1000);
|
|
366
|
-
|
|
367
|
-
testSingleCase(chrono, "2 hour later", { instant: refInstant }, (result) => {
|
|
368
|
-
expect(result.text).toBe("2 hour later");
|
|
369
|
-
expect(result.start).toBeDate(expectedInstant);
|
|
370
|
-
});
|
|
371
|
-
|
|
372
|
-
testSingleCase(chrono, "2 hour later", { instant: refInstant, timezone: null }, (result) => {
|
|
373
|
-
expect(result.text).toBe("2 hour later");
|
|
374
|
-
expect(result.start).toBeDate(expectedInstant);
|
|
375
|
-
});
|
|
376
|
-
|
|
377
|
-
testSingleCase(chrono, "2 hour later", { instant: refInstant, timezone: "BST" }, (result) => {
|
|
378
|
-
expect(result.text).toBe("2 hour later");
|
|
379
|
-
expect(result.start).toBeDate(expectedInstant);
|
|
380
|
-
});
|
|
381
|
-
|
|
382
|
-
testSingleCase(chrono, "2 hour later", { instant: refInstant, timezone: "JST" }, (result) => {
|
|
383
|
-
expect(result.text).toBe("2 hour later");
|
|
384
|
-
expect(result.start).toBeDate(expectedInstant);
|
|
385
|
-
});
|
|
386
|
-
});
|
|
387
|
-
|
|
388
|
-
test("Test - Parsing timezone from relative date when valid", function () {
|
|
389
|
-
const refDate = new Date(2020, 11 - 1, 14, 13, 48, 22);
|
|
390
|
-
|
|
391
|
-
testSingleCase(chrono, "in 1 day get eggs and milk", refDate, (result, text) => {
|
|
392
|
-
expect(result.text).toBe("in 1 day");
|
|
393
|
-
expect(result.start.get("timezoneOffset")).toBe(-refDate.getTimezoneOffset());
|
|
394
|
-
});
|
|
395
|
-
|
|
396
|
-
testSingleCase(chrono, "in 1 day GET", refDate, (result, text) => {
|
|
397
|
-
expect(result.text).toBe("in 1 day GET");
|
|
398
|
-
expect(result.start.get("timezoneOffset")).toBe(240);
|
|
399
|
-
});
|
|
400
|
-
|
|
401
|
-
testSingleCase(chrono, "today EST", (result, text) => {
|
|
402
|
-
expect(result.text).toBe(text);
|
|
403
|
-
expect(result.start.get("timezoneOffset")).toBe(-300);
|
|
404
|
-
});
|
|
405
|
-
|
|
406
|
-
testSingleCase(chrono, "next week EST", (result, text) => {
|
|
407
|
-
expect(result.text).toBe(text);
|
|
408
|
-
expect(result.start.get("timezoneOffset")).toBe(-300);
|
|
409
|
-
});
|
|
410
|
-
});
|