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,573 +0,0 @@
1
- import * as chrono from "../../src";
2
- import { testSingleCase } from "../test_util";
3
-
4
- test("Test - Single Expression", function () {
5
- testSingleCase(chrono.casual, "Monday", new Date(2012, 7, 9), (result) => {
6
- expect(result.index).toBe(0);
7
- expect(result.text).toBe("Monday");
8
-
9
- expect(result.start).not.toBeNull();
10
- expect(result.start.get("year")).toBe(2012);
11
- expect(result.start.get("month")).toBe(8);
12
- expect(result.start.get("day")).toBe(6);
13
- expect(result.start.get("weekday")).toBe(1);
14
-
15
- expect(result.start.isCertain("day")).toBe(false);
16
- expect(result.start.isCertain("month")).toBe(false);
17
- expect(result.start.isCertain("year")).toBe(false);
18
- expect(result.start.isCertain("weekday")).toBe(true);
19
-
20
- expect(result.start).toBeDate(new Date(2012, 7, 6, 12));
21
- });
22
-
23
- testSingleCase(chrono.casual, "Thursday", new Date(2012, 7, 9), (result) => {
24
- expect(result.index).toBe(0);
25
- expect(result.text).toBe("Thursday");
26
-
27
- expect(result.start).not.toBeNull();
28
- expect(result.start.get("year")).toBe(2012);
29
- expect(result.start.get("month")).toBe(8);
30
- expect(result.start.get("day")).toBe(9);
31
- expect(result.start.get("weekday")).toBe(4);
32
-
33
- expect(result.start).toBeDate(new Date(2012, 7, 9, 12));
34
- });
35
-
36
- testSingleCase(chrono.casual, "Sunday", new Date(2012, 7, 9), (result) => {
37
- expect(result.index).toBe(0);
38
- expect(result.text).toBe("Sunday");
39
-
40
- expect(result.start).not.toBeNull();
41
- expect(result.start.get("year")).toBe(2012);
42
- expect(result.start.get("month")).toBe(8);
43
- expect(result.start.get("day")).toBe(12);
44
- expect(result.start.get("weekday")).toBe(0);
45
-
46
- expect(result.start).toBeDate(new Date(2012, 7, 12, 12));
47
- });
48
-
49
- testSingleCase(chrono.casual, "The Deadline is last Friday...", new Date(2012, 7, 9), (result) => {
50
- expect(result.index).toBe(16);
51
- expect(result.text).toBe("last Friday");
52
-
53
- expect(result.start).not.toBeNull();
54
- expect(result.start.get("year")).toBe(2012);
55
- expect(result.start.get("month")).toBe(8);
56
- expect(result.start.get("day")).toBe(3);
57
- expect(result.start.get("weekday")).toBe(5);
58
-
59
- expect(result.start).toBeDate(new Date(2012, 7, 3, 12));
60
- });
61
-
62
- testSingleCase(chrono.casual, "The Deadline is past Friday...", new Date(2012, 7, 9), (result) => {
63
- expect(result.index).toBe(16);
64
- expect(result.text).toBe("past Friday");
65
-
66
- expect(result.start).not.toBeNull();
67
- expect(result.start.get("year")).toBe(2012);
68
- expect(result.start.get("month")).toBe(8);
69
- expect(result.start.get("day")).toBe(3);
70
- expect(result.start.get("weekday")).toBe(5);
71
-
72
- expect(result.start).toBeDate(new Date(2012, 7, 3, 12));
73
- });
74
-
75
- testSingleCase(chrono.casual, "Let's have a meeting on Friday next week", new Date("Sat Apr 18 2015"), (result) => {
76
- expect(result.index).toBe(21);
77
- expect(result.text).toBe("on Friday next week");
78
-
79
- expect(result.start).not.toBeNull();
80
- expect(result.start.get("year")).toBe(2015);
81
- expect(result.start.get("month")).toBe(4);
82
- expect(result.start.get("day")).toBe(24);
83
- expect(result.start.get("weekday")).toBe(5);
84
-
85
- expect(result.start).toBeDate(new Date(2015, 3, 24, 12));
86
- });
87
-
88
- testSingleCase(
89
- chrono.casual,
90
- "I plan on taking the day off on Tuesday, next week",
91
- new Date(2015, 3, 18),
92
- (result) => {
93
- expect(result.index).toBe(29);
94
- expect(result.text).toBe("on Tuesday, next week");
95
-
96
- expect(result.start).not.toBeNull();
97
- expect(result.start.get("year")).toBe(2015);
98
- expect(result.start.get("month")).toBe(4);
99
- expect(result.start.get("day")).toBe(21);
100
- expect(result.start.get("weekday")).toBe(2);
101
-
102
- expect(result.start).toBeDate(new Date(2015, 3, 21, 12));
103
- }
104
- );
105
- });
106
-
107
- test("Test - Weekday casual `This` guessing", function () {
108
- testSingleCase(chrono.casual, "This Saturday", new Date("Tue Aug 2 2022"), (result) => {
109
- expect(result.start.get("day")).toBe(6);
110
- expect(result.start.get("month")).toBe(8);
111
- expect(result.start.get("year")).toBe(2022);
112
- });
113
-
114
- testSingleCase(chrono.casual, "This Sunday", new Date("Tue Aug 2 2022"), (result) => {
115
- expect(result.start.get("day")).toBe(7);
116
- expect(result.start.get("month")).toBe(8);
117
- expect(result.start.get("year")).toBe(2022);
118
- });
119
-
120
- testSingleCase(chrono.casual, "This Wednesday", new Date("Tue Aug 2 2022"), (result) => {
121
- expect(result.start.get("day")).toBe(3);
122
- expect(result.start.get("month")).toBe(8);
123
- expect(result.start.get("year")).toBe(2022);
124
- });
125
-
126
- testSingleCase(chrono.casual, "This Saturday", new Date("Sun Aug 7 2022"), (result) => {
127
- expect(result.start.get("day")).toBe(13);
128
- expect(result.start.get("month")).toBe(8);
129
- expect(result.start.get("year")).toBe(2022);
130
- });
131
-
132
- testSingleCase(chrono.casual, "This Sunday", new Date("Sun Aug 7 2022"), (result) => {
133
- expect(result.start.get("day")).toBe(7);
134
- expect(result.start.get("month")).toBe(8);
135
- expect(result.start.get("year")).toBe(2022);
136
- });
137
-
138
- testSingleCase(chrono.casual, "This Wednesday", new Date("Sun Aug 7 2022"), (result) => {
139
- expect(result.start.get("day")).toBe(10);
140
- expect(result.start.get("month")).toBe(8);
141
- expect(result.start.get("year")).toBe(2022);
142
- });
143
- });
144
-
145
- test("Test - Weekday casual `Last` guessing", function () {
146
- testSingleCase(chrono.casual, "Last Saturday", new Date("Tue Aug 2 2022"), (result) => {
147
- expect(result.start.get("day")).toBe(30);
148
- expect(result.start.get("month")).toBe(7);
149
- expect(result.start.get("year")).toBe(2022);
150
- });
151
-
152
- testSingleCase(chrono.casual, "Last Sunday", new Date("Tue Aug 2 2022"), (result) => {
153
- expect(result.start.get("day")).toBe(31);
154
- expect(result.start.get("month")).toBe(7);
155
- expect(result.start.get("year")).toBe(2022);
156
- });
157
-
158
- testSingleCase(chrono.casual, "Last Wednesday", new Date("Tue Aug 2 2022"), (result) => {
159
- expect(result.start.get("day")).toBe(27);
160
- expect(result.start.get("month")).toBe(7);
161
- expect(result.start.get("year")).toBe(2022);
162
- });
163
- });
164
-
165
- test("Test - Weekday casual `Next` guessing", function () {
166
- {
167
- const refDate = new Date("Tue Aug 2 2022");
168
- testSingleCase(chrono.casual, "Next Saturday", refDate, (result) => {
169
- expect(result.start.get("day")).toBe(13);
170
- expect(result.start.get("month")).toBe(8);
171
- expect(result.start.get("year")).toBe(2022);
172
- });
173
- testSingleCase(chrono.casual, "Next Sunday", refDate, (result) => {
174
- expect(result.start.get("day")).toBe(14);
175
- expect(result.start.get("month")).toBe(8);
176
- expect(result.start.get("year")).toBe(2022);
177
- });
178
- testSingleCase(chrono.casual, "Next Wednesday", refDate, (result) => {
179
- expect(result.start.get("day")).toBe(10);
180
- expect(result.start.get("month")).toBe(8);
181
- expect(result.start.get("year")).toBe(2022);
182
- });
183
- }
184
- {
185
- const refDate = new Date("Saturday Aug 6 2022");
186
- testSingleCase(chrono.casual, "Next Saturday", refDate, (result) => {
187
- expect(result.start.get("day")).toBe(13);
188
- expect(result.start.get("month")).toBe(8);
189
- expect(result.start.get("year")).toBe(2022);
190
- });
191
- testSingleCase(chrono.casual, "Next Sunday", refDate, (result) => {
192
- expect(result.start.get("day")).toBe(14);
193
- expect(result.start.get("month")).toBe(8);
194
- expect(result.start.get("year")).toBe(2022);
195
- });
196
- testSingleCase(chrono.casual, "Next Wednesday", refDate, (result) => {
197
- expect(result.start.get("day")).toBe(10);
198
- expect(result.start.get("month")).toBe(8);
199
- expect(result.start.get("year")).toBe(2022);
200
- });
201
- }
202
- {
203
- const refDate = new Date("Sun Aug 7 2022");
204
- testSingleCase(chrono.casual, "Next Saturday", refDate, (result) => {
205
- expect(result.start.get("day")).toBe(13);
206
- expect(result.start.get("month")).toBe(8);
207
- expect(result.start.get("year")).toBe(2022);
208
- });
209
- testSingleCase(chrono.casual, "Next Sunday", refDate, (result) => {
210
- expect(result.start.get("day")).toBe(14);
211
- expect(result.start.get("month")).toBe(8);
212
- expect(result.start.get("year")).toBe(2022);
213
- });
214
- testSingleCase(chrono.casual, "Next Wednesday", refDate, (result) => {
215
- expect(result.start.get("day")).toBe(10);
216
- expect(result.start.get("month")).toBe(8);
217
- expect(result.start.get("year")).toBe(2022);
218
- });
219
- }
220
- });
221
-
222
- test("Test - Casual 'weekend' and 'weekday'", () => {
223
- {
224
- const refDateOnFriday = new Date(2024, 10 - 1, 18, 12, 0);
225
- testSingleCase(chrono.casual, "last weekend", refDateOnFriday, (result, text) => {
226
- expect(result.text).toBe(text);
227
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 13, 12)); // Sunday
228
- });
229
- testSingleCase(chrono.casual, "this weekend", refDateOnFriday, (result, text) => {
230
- expect(result.text).toBe(text);
231
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 19, 12)); // Saturday
232
- });
233
- testSingleCase(chrono.casual, "next weekend", refDateOnFriday, (result, text) => {
234
- expect(result.text).toBe(text);
235
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 26, 12)); // Saturday
236
- });
237
- }
238
- });
239
-
240
- test("Test - Casual 'weekday' mentioning", () => {
241
- {
242
- const refDateOnFriday = new Date(2024, 10 - 1, 18, 12, 0);
243
- testSingleCase(chrono.casual, "last weekday", refDateOnFriday, (result, text) => {
244
- expect(result.text).toBe(text);
245
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 17, 12)); // Thursday
246
- });
247
- testSingleCase(chrono.casual, "next weekday", refDateOnFriday, (result, text) => {
248
- expect(result.text).toBe(text);
249
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 21, 12)); // Monday
250
- });
251
- }
252
- {
253
- const refDateOnSaturday = new Date(2024, 10 - 1, 19, 12, 0);
254
- testSingleCase(chrono.casual, "last weekday", refDateOnSaturday, (result, text) => {
255
- expect(result.text).toBe(text);
256
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 18, 12)); // Friday
257
- });
258
- testSingleCase(chrono.casual, "next weekday", refDateOnSaturday, (result, text) => {
259
- expect(result.text).toBe(text);
260
- expect(result.start).toBeDate(new Date(2024, 10 - 1, 21, 12)); // Monday
261
- });
262
- }
263
- });
264
-
265
- test("Test - Weekday With Casual Time", function () {
266
- testSingleCase(chrono.casual, "Lets meet on Tuesday morning", new Date(2015, 3, 18), (result) => {
267
- expect(result.index).toBe(10);
268
- expect(result.text).toBe("on Tuesday morning");
269
-
270
- expect(result.start).not.toBeNull();
271
- expect(result.start.get("year")).toBe(2015);
272
- expect(result.start.get("month")).toBe(4);
273
- expect(result.start.get("day")).toBe(21);
274
- expect(result.start.get("weekday")).toBe(2);
275
- expect(result.start.get("hour")).toBe(6);
276
-
277
- expect(result.start).toBeDate(new Date(2015, 3, 21, 6));
278
- });
279
- });
280
-
281
- test("Test - Weekday Overlap", function () {
282
- testSingleCase(chrono.casual, "Sunday, December 7, 2014", new Date(2012, 7, 9), (result) => {
283
- expect(result.index).toBe(0);
284
- expect(result.text).toBe("Sunday, December 7, 2014");
285
-
286
- expect(result.start).not.toBeNull();
287
- expect(result.start.get("year")).toBe(2014);
288
- expect(result.start.get("month")).toBe(12);
289
- expect(result.start.get("day")).toBe(7);
290
- expect(result.start.get("weekday")).toBe(0);
291
-
292
- expect(result.start.isCertain("day")).toBe(true);
293
- expect(result.start.isCertain("month")).toBe(true);
294
- expect(result.start.isCertain("year")).toBe(true);
295
- expect(result.start.isCertain("weekday")).toBe(true);
296
-
297
- expect(result.start).toBeDate(new Date(2014, 12 - 1, 7, 12));
298
- });
299
-
300
- testSingleCase(chrono.casual, "Sunday 12/7/2014", new Date(2012, 7, 9), (result) => {
301
- expect(result.index).toBe(0);
302
- expect(result.text).toBe("Sunday 12/7/2014");
303
-
304
- expect(result.start).not.toBeNull();
305
- expect(result.start.get("year")).toBe(2014);
306
- expect(result.start.get("month")).toBe(12);
307
- expect(result.start.get("day")).toBe(7);
308
- expect(result.start.get("weekday")).toBe(0);
309
-
310
- expect(result.start.isCertain("day")).toBe(true);
311
- expect(result.start.isCertain("month")).toBe(true);
312
- expect(result.start.isCertain("year")).toBe(true);
313
- expect(result.start.isCertain("weekday")).toBe(true);
314
-
315
- expect(result.start).toBeDate(new Date(2014, 12 - 1, 7, 12));
316
- });
317
- });
318
-
319
- test("Test - Weekday range", () => {
320
- testSingleCase(chrono.casual, "Friday to Monday", new Date(2023, 4 - 1, 9) /*Sunday*/, (result) => {
321
- expect(result.start.get("year")).toBe(2023);
322
- expect(result.start.get("month")).toBe(4);
323
- expect(result.start.get("day")).toBe(7);
324
- expect(result.start.get("weekday")).toBe(5);
325
-
326
- expect(result.end.get("year")).toBe(2023);
327
- expect(result.end.get("month")).toBe(4);
328
- expect(result.end.get("day")).toBe(10);
329
- expect(result.end.get("weekday")).toBe(1);
330
- });
331
-
332
- testSingleCase(chrono.casual, "Monday to Friday", new Date(2023, 4 - 1, 9) /*Sunday*/, (result) => {
333
- expect(result.start.get("year")).toBe(2023);
334
- expect(result.start.get("month")).toBe(4);
335
- expect(result.start.get("day")).toBe(10);
336
- expect(result.start.get("weekday")).toBe(1);
337
-
338
- expect(result.end.get("year")).toBe(2023);
339
- expect(result.end.get("month")).toBe(4);
340
- expect(result.end.get("day")).toBe(14);
341
- expect(result.end.get("weekday")).toBe(5);
342
- });
343
- });
344
-
345
- test("Test - Weekday 'of next/last/this week' connector", function () {
346
- // Ref date is a Tuesday — the same weekday as most test targets below.
347
- // Before the fix, 'Tuesday of next week' silently dropped the modifier and
348
- // resolved to today (0 days forward) instead of +7 days.
349
- const refDate = new Date("Tue Aug 2 2022");
350
-
351
- // --- of next week ---
352
-
353
- testSingleCase(chrono.casual, "Tuesday of next week", refDate, (result) => {
354
- expect(result.text).toBe("Tuesday of next week");
355
- expect(result.start.get("year")).toBe(2022);
356
- expect(result.start.get("month")).toBe(8);
357
- expect(result.start.get("day")).toBe(9); // Aug 9 — NOT today (Aug 2)
358
- expect(result.start.get("weekday")).toBe(2);
359
- expect(result.start).toBeDate(new Date(2022, 7, 9, 12));
360
- });
361
-
362
- testSingleCase(chrono.casual, "Friday of next week", refDate, (result) => {
363
- expect(result.text).toBe("Friday of next week");
364
- expect(result.start.get("year")).toBe(2022);
365
- expect(result.start.get("month")).toBe(8);
366
- expect(result.start.get("day")).toBe(12); // Aug 12
367
- expect(result.start.get("weekday")).toBe(5);
368
- expect(result.start).toBeDate(new Date(2022, 7, 12, 12));
369
- });
370
-
371
- testSingleCase(chrono.casual, "Monday of next week", refDate, (result) => {
372
- expect(result.text).toBe("Monday of next week");
373
- expect(result.start.get("year")).toBe(2022);
374
- expect(result.start.get("month")).toBe(8);
375
- expect(result.start.get("day")).toBe(8); // Aug 8
376
- expect(result.start.get("weekday")).toBe(1);
377
- expect(result.start).toBeDate(new Date(2022, 7, 8, 12));
378
- });
379
-
380
- // --- of last week ---
381
-
382
- testSingleCase(chrono.casual, "Tuesday of last week", refDate, (result) => {
383
- expect(result.text).toBe("Tuesday of last week");
384
- expect(result.start.get("year")).toBe(2022);
385
- expect(result.start.get("month")).toBe(7);
386
- expect(result.start.get("day")).toBe(26); // Jul 26
387
- expect(result.start.get("weekday")).toBe(2);
388
- expect(result.start).toBeDate(new Date(2022, 6, 26, 12));
389
- });
390
-
391
- testSingleCase(chrono.casual, "Friday of last week", refDate, (result) => {
392
- expect(result.text).toBe("Friday of last week");
393
- expect(result.start.get("year")).toBe(2022);
394
- expect(result.start.get("month")).toBe(7);
395
- expect(result.start.get("day")).toBe(29); // Jul 29
396
- expect(result.start.get("weekday")).toBe(5);
397
- expect(result.start).toBeDate(new Date(2022, 6, 29, 12));
398
- });
399
-
400
- // --- of this week ---
401
-
402
- testSingleCase(chrono.casual, "Wednesday of this week", refDate, (result) => {
403
- expect(result.text).toBe("Wednesday of this week");
404
- expect(result.start.get("year")).toBe(2022);
405
- expect(result.start.get("month")).toBe(8);
406
- expect(result.start.get("day")).toBe(3); // Aug 3
407
- expect(result.start.get("weekday")).toBe(3);
408
- expect(result.start).toBeDate(new Date(2022, 7, 3, 12));
409
- });
410
-
411
- testSingleCase(chrono.casual, "Tuesday of this week", refDate, (result) => {
412
- expect(result.text).toBe("Tuesday of this week");
413
- expect(result.start.get("year")).toBe(2022);
414
- expect(result.start.get("month")).toBe(8);
415
- expect(result.start.get("day")).toBe(2); // Aug 2 — same day as ref
416
- expect(result.start.get("weekday")).toBe(2);
417
- expect(result.start).toBeDate(new Date(2022, 7, 2, 12));
418
- });
419
-
420
- // --- with time: merges into a single result (the original bug produced two) ---
421
-
422
- testSingleCase(chrono.casual, "Tuesday of next week after 2pm", refDate, (result) => {
423
- expect(result.text).toBe("Tuesday of next week after 2pm");
424
- expect(result.start.get("year")).toBe(2022);
425
- expect(result.start.get("month")).toBe(8);
426
- expect(result.start.get("day")).toBe(9); // Aug 9
427
- expect(result.start.get("hour")).toBe(14);
428
- expect(result.start).toBeDate(new Date(2022, 7, 9, 14));
429
- });
430
-
431
- testSingleCase(chrono.casual, "Friday of next week at 9am", refDate, (result) => {
432
- expect(result.text).toBe("Friday of next week at 9am");
433
- expect(result.start.get("year")).toBe(2022);
434
- expect(result.start.get("month")).toBe(8);
435
- expect(result.start.get("day")).toBe(12); // Aug 12
436
- expect(result.start.get("hour")).toBe(9);
437
- expect(result.start).toBeDate(new Date(2022, 7, 12, 9));
438
- });
439
-
440
- // --- in sentence context ---
441
-
442
- testSingleCase(chrono.casual, "Let's sync on Tuesday of next week", refDate, (result) => {
443
- expect(result.text).toBe("on Tuesday of next week");
444
- expect(result.start.get("day")).toBe(9);
445
- expect(result.start.get("month")).toBe(8);
446
- expect(result.start.get("year")).toBe(2022);
447
- });
448
- });
449
-
450
- test("Test - forward dates only option", () => {
451
- testSingleCase(
452
- chrono.casual,
453
- "Monday (forward dates only)",
454
- new Date(2012, 7, 9),
455
- { forwardDate: true },
456
- (result) => {
457
- expect(result.index).toBe(0);
458
- expect(result.text).toBe("Monday");
459
-
460
- expect(result.start).not.toBeNull();
461
- expect(result.start.get("year")).toBe(2012);
462
- expect(result.start.get("month")).toBe(8);
463
- expect(result.start.get("day")).toBe(13);
464
- expect(result.start.get("weekday")).toBe(1);
465
-
466
- expect(result.start.isCertain("day")).toBe(false);
467
- expect(result.start.isCertain("month")).toBe(false);
468
- expect(result.start.isCertain("year")).toBe(false);
469
- expect(result.start.isCertain("weekday")).toBe(true);
470
-
471
- expect(result.start).toBeDate(new Date(2012, 7, 13, 12));
472
- }
473
- );
474
-
475
- testSingleCase(
476
- chrono.casual,
477
- "this Friday to this Monday",
478
- new Date(2016, 8 - 1, 4),
479
- { forwardDate: true },
480
- (result) => {
481
- expect(result.index).toBe(0);
482
- expect(result.text).toBe("this Friday to this Monday");
483
-
484
- expect(result.start).not.toBeNull();
485
- expect(result.start.get("year")).toBe(2016);
486
- expect(result.start.get("month")).toBe(8);
487
- expect(result.start.get("day")).toBe(5);
488
- expect(result.start.get("weekday")).toBe(5);
489
-
490
- expect(result.start.isCertain("day")).toBe(false);
491
- expect(result.start.isCertain("month")).toBe(false);
492
- expect(result.start.isCertain("year")).toBe(false);
493
- expect(result.start.isCertain("weekday")).toBe(true);
494
-
495
- expect(result.start).toBeDate(new Date(2016, 8 - 1, 5, 12));
496
-
497
- expect(result.end).not.toBeNull();
498
- expect(result.end.get("year")).toBe(2016);
499
- expect(result.end.get("month")).toBe(8);
500
- expect(result.end.get("day")).toBe(8);
501
- expect(result.end.get("weekday")).toBe(1);
502
-
503
- expect(result.end.isCertain("day")).toBe(false);
504
- expect(result.end.isCertain("month")).toBe(false);
505
- expect(result.end.isCertain("year")).toBe(false);
506
- expect(result.end.isCertain("weekday")).toBe(true);
507
-
508
- expect(result.end).toBeDate(new Date(2016, 8 - 1, 8, 12));
509
- }
510
- );
511
-
512
- testSingleCase(
513
- chrono.casual,
514
- "sunday morning",
515
- new Date("August 15, 2021, 20:00"),
516
- { forwardDate: true },
517
- (result) => {
518
- expect(result.index).toBe(0);
519
- expect(result.text).toBe("sunday morning");
520
-
521
- expect(result.start).not.toBeNull();
522
- expect(result.start.get("year")).toBe(2021);
523
- expect(result.start.get("month")).toBe(8);
524
- expect(result.start.get("day")).toBe(22);
525
- expect(result.start.get("weekday")).toBe(0);
526
-
527
- expect(result.start.isCertain("day")).toBe(false);
528
- expect(result.start.isCertain("month")).toBe(false);
529
- expect(result.start.isCertain("year")).toBe(false);
530
- expect(result.start.isCertain("weekday")).toBe(true);
531
-
532
- expect(result.start).toBeDate(new Date(2021, 8 - 1, 22, 6));
533
- }
534
- );
535
-
536
- testSingleCase(
537
- chrono.casual,
538
- "vacation monday - friday",
539
- new Date("thursday 13 June 2019"),
540
- { forwardDate: true },
541
- (result) => {
542
- expect(result.text).toBe("monday - friday");
543
-
544
- expect(result.start).not.toBeNull();
545
- expect(result.start.get("year")).toBe(2019);
546
- expect(result.start.get("month")).toBe(6);
547
- expect(result.start.get("day")).toBe(17);
548
-
549
- expect(result.end).not.toBeNull();
550
- expect(result.end.get("year")).toBe(2019);
551
- expect(result.end.get("month")).toBe(6);
552
- expect(result.end.get("day")).toBe(21);
553
- }
554
- );
555
-
556
- testSingleCase(
557
- chrono.casual,
558
- "timeoff monday 7 to 9am",
559
- new Date("thursday 13 June 2019"),
560
- { forwardDate: true },
561
- (result) => {
562
- expect(result.text).toBe("monday 7 to 9am");
563
-
564
- expect(result.start.get("year")).toBe(2019);
565
- expect(result.start.get("month")).toBe(6);
566
- expect(result.start.get("day")).toBe(17);
567
-
568
- expect(result.end.get("year")).toBe(2019);
569
- expect(result.end.get("month")).toBe(6);
570
- expect(result.end.get("day")).toBe(17);
571
- }
572
- );
573
- });