chrono-node 2.9.2 → 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.
Files changed (142) hide show
  1. package/dist/cjs/results.js +15 -9
  2. package/dist/cjs/results.js.map +1 -1
  3. package/dist/esm/results.js +14 -9
  4. package/dist/esm/results.js.map +1 -1
  5. package/package.json +5 -1
  6. package/src/results.ts +40 -9
  7. package/test/calculation_duration.test.ts +0 -165
  8. package/test/calculation_weekdays.test.ts +0 -133
  9. package/test/de/de_casual.test.ts +0 -336
  10. package/test/de/de_dash.test.ts +0 -32
  11. package/test/de/de_month_name_little_endian.test.ts +0 -273
  12. package/test/de/de_time_exp.test.ts +0 -223
  13. package/test/de/de_time_units_casual_relative.test.ts +0 -120
  14. package/test/de/de_time_units_within.test.ts +0 -119
  15. package/test/de/de_weekday.test.ts +0 -158
  16. package/test/de/de_year.test.ts +0 -147
  17. package/test/debugging.test.ts +0 -17
  18. package/test/en/en.test.ts +0 -191
  19. package/test/en/en_casual.test.ts +0 -425
  20. package/test/en/en_inter_std.test.ts +0 -118
  21. package/test/en/en_merging_relative_dates.test.ts +0 -50
  22. package/test/en/en_month.test.ts +0 -339
  23. package/test/en/en_month_name_little_endian.test.ts +0 -448
  24. package/test/en/en_month_name_middle_endian.test.ts +0 -386
  25. package/test/en/en_performance.test.ts +0 -26
  26. package/test/en/en_relative.test.ts +0 -393
  27. package/test/en/en_slash.test.ts +0 -284
  28. package/test/en/en_time_exp.test.ts +0 -535
  29. package/test/en/en_time_units_ago.test.ts +0 -357
  30. package/test/en/en_time_units_casual_relative.test.ts +0 -186
  31. package/test/en/en_time_units_later.test.ts +0 -361
  32. package/test/en/en_time_units_within.test.ts +0 -417
  33. package/test/en/en_timezone_exp.test.ts +0 -410
  34. package/test/en/en_weekday.test.ts +0 -573
  35. package/test/en/en_year.test.ts +0 -138
  36. package/test/en/en_year_month_day.test.ts +0 -101
  37. package/test/en/negative_cases.test.ts +0 -99
  38. package/test/es/es_casual.test.ts +0 -175
  39. package/test/es/es_month_name_little_endian.test.ts +0 -217
  40. package/test/es/es_slash.test.ts +0 -26
  41. package/test/es/es_time_exp.test.ts +0 -175
  42. package/test/es/es_time_units_within.test.ts +0 -119
  43. package/test/fi/fi_casual.test.ts +0 -99
  44. package/test/fi/fi_casual_time.test.ts +0 -56
  45. package/test/fi/fi_month_name_little_endian.test.ts +0 -50
  46. package/test/fi/fi_time_exp.test.ts +0 -39
  47. package/test/fi/fi_time_units_ago.test.ts +0 -93
  48. package/test/fi/fi_time_units_casual_relative.test.ts +0 -117
  49. package/test/fi/fi_time_units_within.test.ts +0 -74
  50. package/test/fi/fi_weekday.test.ts +0 -90
  51. package/test/fr/fr_casual.test.ts +0 -314
  52. package/test/fr/fr_little_endian.test.ts +0 -320
  53. package/test/fr/fr_slash.test.ts +0 -49
  54. package/test/fr/fr_time_exp.test.ts +0 -588
  55. package/test/fr/fr_time_units_ago.test.ts +0 -103
  56. package/test/fr/fr_time_units_casual_relative.test.ts +0 -114
  57. package/test/fr/fr_time_units_within.test.ts +0 -129
  58. package/test/fr/fr_weekday.test.ts +0 -130
  59. package/test/it/it_casual.test.ts +0 -81
  60. package/test/it/it_month_name_little_endian.test.ts +0 -28
  61. package/test/it/it_month_name_middle_endian.test.ts +0 -39
  62. package/test/it/it_time_exp.test.ts +0 -84
  63. package/test/it/it_weekday.test.ts +0 -37
  64. package/test/it/it_year_month_day.test.ts +0 -41
  65. package/test/ja/ja_casual.test.ts +0 -73
  66. package/test/ja/ja_slash_date_format.test.ts +0 -60
  67. package/test/ja/ja_standard.test.ts +0 -235
  68. package/test/ja/ja_time_exp.test.ts +0 -305
  69. package/test/ja/ja_weekday.test.ts +0 -183
  70. package/test/nl/nl_casual.test.ts +0 -408
  71. package/test/nl/nl_month.test.ts +0 -205
  72. package/test/nl/nl_month_name_little_endian.test.ts +0 -358
  73. package/test/nl/nl_relative.test.ts +0 -242
  74. package/test/nl/nl_slash.test.ts +0 -206
  75. package/test/nl/nl_time_exp.test.ts +0 -79
  76. package/test/nl/nl_time_units_ago.test.ts +0 -243
  77. package/test/nl/nl_time_units_casual_relative.test.ts +0 -130
  78. package/test/nl/nl_time_units_later.test.ts +0 -250
  79. package/test/nl/nl_time_units_within.test.ts +0 -225
  80. package/test/nl/nl_weekday.test.ts +0 -216
  81. package/test/pt/pt_casual.test.ts +0 -175
  82. package/test/pt/pt_month_name_little_endian.test.ts +0 -217
  83. package/test/pt/pt_slash.test.ts +0 -26
  84. package/test/pt/pt_time_exp.test.ts +0 -175
  85. package/test/result.test.ts +0 -283
  86. package/test/ru/ru_casual.test.ts +0 -159
  87. package/test/ru/ru_month.test.ts +0 -70
  88. package/test/ru/ru_month_name_little_endian.test.ts +0 -145
  89. package/test/ru/ru_relative.test.ts +0 -107
  90. package/test/ru/ru_time_exp.test.ts +0 -111
  91. package/test/ru/ru_time_units_ago.test.ts +0 -48
  92. package/test/ru/ru_time_units_casual_relative.test.ts +0 -190
  93. package/test/ru/ru_time_units_within.test.ts +0 -16
  94. package/test/ru/ru_weekday.test.ts +0 -52
  95. package/test/sv/sv_casual.test.ts +0 -87
  96. package/test/sv/sv_month_name_little_endian.test.ts +0 -48
  97. package/test/sv/sv_time_units_casual_relative.test.ts +0 -143
  98. package/test/sv/sv_weekday.test.ts +0 -68
  99. package/test/system.test.ts +0 -247
  100. package/test/system_timezone.test.ts +0 -284
  101. package/test/test_util.ts +0 -135
  102. package/test/uk/uk_casual.test.ts +0 -153
  103. package/test/uk/uk_month.test.ts +0 -70
  104. package/test/uk/uk_month_name_little_endian.test.ts +0 -148
  105. package/test/uk/uk_relative.test.ts +0 -107
  106. package/test/uk/uk_time_exp.test.ts +0 -111
  107. package/test/uk/uk_time_units_ago.test.ts +0 -48
  108. package/test/uk/uk_time_units_casual_relative.test.ts +0 -142
  109. package/test/uk/uk_time_units_within.test.ts +0 -23
  110. package/test/uk/uk_weekday.test.ts +0 -52
  111. package/test/vi/vi_casual.test.ts +0 -84
  112. package/test/vi/vi_casual_time.test.ts +0 -77
  113. package/test/vi/vi_date_range.test.ts +0 -61
  114. package/test/vi/vi_forward_date.test.ts +0 -45
  115. package/test/vi/vi_month_year.test.ts +0 -40
  116. package/test/vi/vi_negative_cases.test.ts +0 -60
  117. package/test/vi/vi_slash.test.ts +0 -36
  118. package/test/vi/vi_standard.test.ts +0 -86
  119. package/test/vi/vi_strict.test.ts +0 -67
  120. package/test/vi/vi_time_exp.test.ts +0 -99
  121. package/test/vi/vi_time_units_ago.test.ts +0 -56
  122. package/test/vi/vi_time_units_casual_relative.test.ts +0 -56
  123. package/test/vi/vi_time_units_later.test.ts +0 -43
  124. package/test/vi/vi_time_units_within.test.ts +0 -24
  125. package/test/vi/vi_weekday.test.ts +0 -77
  126. package/test/vi/vi_year.test.ts +0 -42
  127. package/test/zh/hans/zh_hans_ago.test.ts +0 -58
  128. package/test/zh/hans/zh_hans_casual.test.ts +0 -242
  129. package/test/zh/hans/zh_hans_date.test.ts +0 -116
  130. package/test/zh/hans/zh_hans_deadline.test.ts +0 -175
  131. package/test/zh/hans/zh_hans_time_exp.test.ts +0 -508
  132. package/test/zh/hans/zh_hans_weekday.test.ts +0 -219
  133. package/test/zh/hant/zh_hant_ago.test.ts +0 -58
  134. package/test/zh/hant/zh_hant_casual.test.ts +0 -260
  135. package/test/zh/hant/zh_hant_date.test.ts +0 -116
  136. package/test/zh/hant/zh_hant_deadline.test.ts +0 -136
  137. package/test/zh/hant/zh_hant_time_exp.test.ts +0 -226
  138. package/test/zh/hant/zh_hant_weekday.test.ts +0 -175
  139. package/test/zh/zh.test.ts +0 -36
  140. package/tsconfig.build.esm.json +0 -8
  141. package/tsconfig.build.json +0 -10
  142. 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
- });