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