chrono-node 2.6.4 → 2.6.6

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 (134) hide show
  1. package/dist/cjs/common/parsers/AbstractTimeExpressionParser.js +2 -2
  2. package/dist/cjs/common/parsers/AbstractTimeExpressionParser.js.map +1 -1
  3. package/dist/cjs/index.d.ts +4 -4
  4. package/dist/cjs/index.js +3 -1
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/cjs/locales/de/index.d.ts +2 -2
  7. package/dist/cjs/locales/de/index.js +3 -1
  8. package/dist/cjs/locales/de/index.js.map +1 -1
  9. package/dist/cjs/locales/en/configuration.js +5 -6
  10. package/dist/cjs/locales/en/configuration.js.map +1 -1
  11. package/dist/cjs/locales/en/index.d.ts +2 -2
  12. package/dist/cjs/locales/en/index.js +3 -1
  13. package/dist/cjs/locales/en/index.js.map +1 -1
  14. package/dist/cjs/locales/en/parsers/ENCasualTimeParser.d.ts +1 -1
  15. package/dist/cjs/locales/en/parsers/ENMonthNameMiddleEndianParser.d.ts +1 -1
  16. package/dist/cjs/locales/es/index.d.ts +2 -2
  17. package/dist/cjs/locales/es/index.js +3 -1
  18. package/dist/cjs/locales/es/index.js.map +1 -1
  19. package/dist/cjs/locales/es/parsers/ESCasualTimeParser.d.ts +1 -1
  20. package/dist/cjs/locales/fr/index.d.ts +2 -2
  21. package/dist/cjs/locales/fr/index.js +3 -1
  22. package/dist/cjs/locales/fr/index.js.map +1 -1
  23. package/dist/cjs/locales/fr/refiners/FRMergeDateRangeRefiner.js +1 -1
  24. package/dist/cjs/locales/fr/refiners/FRMergeDateRangeRefiner.js.map +1 -1
  25. package/dist/cjs/locales/fr/refiners/FRMergeDateTimeRefiner.js +1 -1
  26. package/dist/cjs/locales/fr/refiners/FRMergeDateTimeRefiner.js.map +1 -1
  27. package/dist/cjs/locales/ja/index.d.ts +2 -2
  28. package/dist/cjs/locales/ja/index.js +3 -1
  29. package/dist/cjs/locales/ja/index.js.map +1 -1
  30. package/dist/cjs/locales/ja/parsers/JPCasualDateParser.d.ts +1 -1
  31. package/dist/cjs/locales/ja/parsers/JPStandardParser.d.ts +1 -1
  32. package/dist/cjs/locales/nl/index.d.ts +2 -2
  33. package/dist/cjs/locales/nl/index.js +3 -1
  34. package/dist/cjs/locales/nl/index.js.map +1 -1
  35. package/dist/cjs/locales/nl/parsers/NLCasualTimeParser.d.ts +1 -1
  36. package/dist/cjs/locales/nl/parsers/NLMonthNameMiddleEndianParser.d.ts +1 -1
  37. package/dist/cjs/locales/nl/parsers/NLMonthNameParser.d.ts +1 -1
  38. package/dist/cjs/locales/pt/index.d.ts +2 -2
  39. package/dist/cjs/locales/pt/index.js +3 -1
  40. package/dist/cjs/locales/pt/index.js.map +1 -1
  41. package/dist/cjs/locales/pt/parsers/PTCasualTimeParser.d.ts +1 -1
  42. package/dist/cjs/locales/ru/index.d.ts +2 -2
  43. package/dist/cjs/locales/ru/index.js +3 -1
  44. package/dist/cjs/locales/ru/index.js.map +1 -1
  45. package/dist/cjs/locales/ru/parsers/RUCasualTimeParser.d.ts +1 -1
  46. package/dist/cjs/locales/uk/index.d.ts +2 -2
  47. package/dist/cjs/locales/uk/index.js +3 -1
  48. package/dist/cjs/locales/uk/index.js.map +1 -1
  49. package/dist/cjs/locales/uk/parsers/UKCasualTimeParser.d.ts +1 -1
  50. package/dist/cjs/locales/zh/hans/index.d.ts +2 -2
  51. package/dist/cjs/locales/zh/hans/index.js +3 -1
  52. package/dist/cjs/locales/zh/hans/index.js.map +1 -1
  53. package/dist/cjs/locales/zh/hant/index.d.ts +2 -2
  54. package/dist/cjs/locales/zh/hant/index.js +3 -1
  55. package/dist/cjs/locales/zh/hant/index.js.map +1 -1
  56. package/dist/esm/common/parsers/AbstractTimeExpressionParser.js +2 -2
  57. package/dist/esm/common/parsers/AbstractTimeExpressionParser.js.map +1 -1
  58. package/dist/esm/index.d.ts +4 -4
  59. package/dist/esm/index.js +2 -2
  60. package/dist/esm/index.js.map +1 -1
  61. package/dist/esm/locales/de/index.d.ts +2 -2
  62. package/dist/esm/locales/de/index.js +2 -2
  63. package/dist/esm/locales/de/index.js.map +1 -1
  64. package/dist/esm/locales/en/configuration.js +5 -6
  65. package/dist/esm/locales/en/configuration.js.map +1 -1
  66. package/dist/esm/locales/en/index.d.ts +2 -2
  67. package/dist/esm/locales/en/index.js +2 -2
  68. package/dist/esm/locales/en/index.js.map +1 -1
  69. package/dist/esm/locales/en/parsers/ENCasualTimeParser.d.ts +1 -1
  70. package/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.d.ts +1 -1
  71. package/dist/esm/locales/es/index.d.ts +2 -2
  72. package/dist/esm/locales/es/index.js +2 -2
  73. package/dist/esm/locales/es/index.js.map +1 -1
  74. package/dist/esm/locales/es/parsers/ESCasualTimeParser.d.ts +1 -1
  75. package/dist/esm/locales/fr/index.d.ts +2 -2
  76. package/dist/esm/locales/fr/index.js +2 -2
  77. package/dist/esm/locales/fr/index.js.map +1 -1
  78. package/dist/esm/locales/fr/refiners/FRMergeDateRangeRefiner.js +1 -1
  79. package/dist/esm/locales/fr/refiners/FRMergeDateRangeRefiner.js.map +1 -1
  80. package/dist/esm/locales/fr/refiners/FRMergeDateTimeRefiner.js +1 -1
  81. package/dist/esm/locales/fr/refiners/FRMergeDateTimeRefiner.js.map +1 -1
  82. package/dist/esm/locales/ja/index.d.ts +2 -2
  83. package/dist/esm/locales/ja/index.js +2 -2
  84. package/dist/esm/locales/ja/index.js.map +1 -1
  85. package/dist/esm/locales/ja/parsers/JPCasualDateParser.d.ts +1 -1
  86. package/dist/esm/locales/ja/parsers/JPStandardParser.d.ts +1 -1
  87. package/dist/esm/locales/nl/index.d.ts +2 -2
  88. package/dist/esm/locales/nl/index.js +2 -2
  89. package/dist/esm/locales/nl/index.js.map +1 -1
  90. package/dist/esm/locales/nl/parsers/NLCasualTimeParser.d.ts +1 -1
  91. package/dist/esm/locales/nl/parsers/NLMonthNameMiddleEndianParser.d.ts +1 -1
  92. package/dist/esm/locales/nl/parsers/NLMonthNameParser.d.ts +1 -1
  93. package/dist/esm/locales/pt/index.d.ts +2 -2
  94. package/dist/esm/locales/pt/index.js +2 -2
  95. package/dist/esm/locales/pt/index.js.map +1 -1
  96. package/dist/esm/locales/pt/parsers/PTCasualTimeParser.d.ts +1 -1
  97. package/dist/esm/locales/ru/index.d.ts +2 -2
  98. package/dist/esm/locales/ru/index.js +2 -2
  99. package/dist/esm/locales/ru/index.js.map +1 -1
  100. package/dist/esm/locales/ru/parsers/RUCasualTimeParser.d.ts +1 -1
  101. package/dist/esm/locales/uk/index.d.ts +2 -2
  102. package/dist/esm/locales/uk/index.js +2 -2
  103. package/dist/esm/locales/uk/index.js.map +1 -1
  104. package/dist/esm/locales/uk/parsers/UKCasualTimeParser.d.ts +1 -1
  105. package/dist/esm/locales/zh/hans/index.d.ts +2 -2
  106. package/dist/esm/locales/zh/hans/index.js +2 -2
  107. package/dist/esm/locales/zh/hans/index.js.map +1 -1
  108. package/dist/esm/locales/zh/hant/index.d.ts +2 -2
  109. package/dist/esm/locales/zh/hant/index.js +2 -2
  110. package/dist/esm/locales/zh/hant/index.js.map +1 -1
  111. package/package.json +1 -1
  112. package/src/common/parsers/AbstractTimeExpressionParser.ts +2 -2
  113. package/src/common/refiners/ExtractTimezoneAbbrRefiner.ts +2 -2
  114. package/src/configurations.ts +1 -1
  115. package/src/index.ts +4 -5
  116. package/src/locales/de/index.ts +2 -2
  117. package/src/locales/en/configuration.ts +7 -6
  118. package/src/locales/en/index.ts +2 -2
  119. package/src/locales/es/index.ts +2 -2
  120. package/src/locales/fr/index.ts +2 -2
  121. package/src/locales/fr/refiners/FRMergeDateRangeRefiner.ts +1 -1
  122. package/src/locales/fr/refiners/FRMergeDateTimeRefiner.ts +1 -1
  123. package/src/locales/ja/index.ts +2 -2
  124. package/src/locales/nl/index.ts +2 -2
  125. package/src/locales/pt/index.ts +2 -2
  126. package/src/locales/ru/index.ts +2 -2
  127. package/src/locales/uk/index.ts +2 -2
  128. package/src/locales/zh/hans/index.ts +2 -2
  129. package/src/locales/zh/hant/index.ts +2 -2
  130. package/test/en/en_slash.test.ts +34 -0
  131. package/test/en/en_time_exp.test.ts +11 -0
  132. package/test/en/en_time_units_within.test.ts +7 -0
  133. package/test/en/en_timezone_exp.test.ts +47 -3
  134. package/test/fr/fr_casual.test.ts +10 -0
@@ -159,6 +159,40 @@ test("Test - Range Expression", function () {
159
159
  });
160
160
  });
161
161
 
162
+ test("Test - Range Expressions with Time", function () {
163
+ testSingleCase(chrono.en, "from 01/21/2021 10:00 to 01/01/2023 07:00", new Date(2012, 7, 10), (result) => {
164
+ expect(result.start).not.toBeNull();
165
+ expect(result.start.get("year")).toBe(2021);
166
+ expect(result.start.get("month")).toBe(1);
167
+ expect(result.start.get("day")).toBe(21);
168
+ expect(result.start.get("hour")).toBe(10);
169
+ expect(result.start.get("minute")).toBe(0);
170
+
171
+ expect(result.end).not.toBeNull();
172
+ expect(result.end.get("year")).toBe(2023);
173
+ expect(result.end.get("month")).toBe(1);
174
+ expect(result.end.get("day")).toBe(1);
175
+ expect(result.end.get("hour")).toBe(7);
176
+ expect(result.end.get("minute")).toBe(0);
177
+ });
178
+
179
+ testSingleCase(chrono.en, "08/08/2023, 09:15 AM to 08/29/2023, 09:15 AM", new Date(2012, 7, 10), (result) => {
180
+ expect(result.start).not.toBeNull();
181
+ expect(result.start.get("year")).toBe(2023);
182
+ expect(result.start.get("month")).toBe(8);
183
+ expect(result.start.get("day")).toBe(8);
184
+ expect(result.start.get("hour")).toBe(9);
185
+ expect(result.start.get("minute")).toBe(15);
186
+
187
+ expect(result.end).not.toBeNull();
188
+ expect(result.end.get("year")).toBe(2023);
189
+ expect(result.end.get("month")).toBe(8);
190
+ expect(result.end.get("day")).toBe(29);
191
+ expect(result.end.get("hour")).toBe(9);
192
+ expect(result.end.get("minute")).toBe(15);
193
+ });
194
+ });
195
+
162
196
  test("Test - Splitter variances patterns", function () {
163
197
  const expectDate = new Date(2015, 5 - 1, 25, 12, 0);
164
198
 
@@ -82,6 +82,17 @@ test("Test - Time range expression", function () {
82
82
  });
83
83
  });
84
84
 
85
+ test("Test - Time non-range expression", function () {
86
+ testSingleCase(chrono, "10:00:00 - 15/15", new Date(2016, 10 - 1, 1, 8), (result, text) => {
87
+ expect(result.text).toBe("10:00:00");
88
+
89
+ expect(result.start.get("hour")).toBe(10);
90
+ expect(result.start.get("minute")).toBe(0);
91
+ expect(result.start.get("second")).toBe(0);
92
+ expect(result.start.get("meridiem")).toBe(Meridiem.AM);
93
+ });
94
+ });
95
+
85
96
  test("Test - Casual time number expression", function () {
86
97
  testSingleCase(chrono, "11 at night", new Date(2016, 10 - 1, 1, 8), (result, text) => {
87
98
  expect(result.text).toBe(text);
@@ -165,6 +165,13 @@ test("Test - The normal within expression", () => {
165
165
  expect(result.start.get("day")).toBe(1);
166
166
  expect(result.start.get("hour")).toBe(18);
167
167
  });
168
+
169
+ testSingleCase(chrono, "in 1 month", new Date(2016, 10 - 1, 1, 14, 52), (result, text) => {
170
+ expect(result.text).toBe("in 1 month");
171
+ expect(result.start.get("year")).toBe(2016);
172
+ expect(result.start.get("month")).toBe(11);
173
+ expect(result.start.get("day")).toBe(1);
174
+ });
168
175
  });
169
176
 
170
177
  test("Test - The within expression with certain keywords", () => {
@@ -2,6 +2,7 @@ import * as chrono from "../../src";
2
2
  import { Month, Weekday } from "../../src/types";
3
3
  import { getLastWeekdayOfMonth } from "../../src/timezone";
4
4
  import { testSingleCase } from "../test_util";
5
+ import { Meridiem } from "../../src";
5
6
 
6
7
  test("Test - Parsing date/time with UTC offset", function () {
7
8
  testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am utc+02:45 ", (result, text) => {
@@ -77,7 +78,9 @@ test("Test - Parsing date/time with GMT offset", function () {
77
78
  test("Test - Parsing date/time with timezone abbreviation", function () {
78
79
  testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am", (result, text) => {
79
80
  expect(result.text).toBe(text);
80
-
81
+ expect(result.start.get("year")).toBe(2020);
82
+ expect(result.start.get("month")).toBe(9);
83
+ expect(result.start.get("day")).toBe(16);
81
84
  expect(result.start.get("hour")).toBe(11);
82
85
  expect(result.start.get("minute")).toBe(0);
83
86
  expect(result.start.get("timezoneOffset")).toBe(null);
@@ -85,21 +88,62 @@ test("Test - Parsing date/time with timezone abbreviation", function () {
85
88
 
86
89
  testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am JST", (result, text) => {
87
90
  expect(result.text).toBe(text);
91
+ expect(result.start.get("year")).toBe(2020);
92
+ expect(result.start.get("month")).toBe(9);
93
+ expect(result.start.get("day")).toBe(16);
88
94
  expect(result.start.get("hour")).toBe(11);
89
95
  expect(result.start.get("minute")).toBe(0);
90
96
 
91
- // JST GMT+9:00
97
+ // JST: GMT+9:00
92
98
  expect(result.start.get("timezoneOffset")).toBe(9 * 60);
93
99
  });
94
100
 
95
101
  testSingleCase(chrono, "wednesday, september 16, 2020 at 11 am GMT+0900 (JST)", (result, text) => {
96
102
  expect(result.text).toBe(text);
103
+ expect(result.start.get("year")).toBe(2020);
104
+ expect(result.start.get("month")).toBe(9);
105
+ expect(result.start.get("day")).toBe(16);
97
106
  expect(result.start.get("hour")).toBe(11);
98
107
  expect(result.start.get("minute")).toBe(0);
99
108
 
100
- // JST GMT+9:00
109
+ // JST: GMT+9:00
101
110
  expect(result.start.get("timezoneOffset")).toBe(9 * 60);
102
111
  });
112
+
113
+ testSingleCase(chrono, "10:30 pst today", new Date(2016, 10 - 1, 1, 8), (result, text) => {
114
+ expect(result.text).toBe("10:30 pst today");
115
+ expect(result.start.get("year")).toBe(2016);
116
+ expect(result.start.get("month")).toBe(10);
117
+ expect(result.start.get("day")).toBe(1);
118
+ expect(result.start.get("hour")).toBe(10);
119
+ expect(result.start.get("minute")).toBe(30);
120
+
121
+ // PST: UTC−08:00
122
+ expect(result.start.get("timezoneOffset")).toBe(-8 * 60);
123
+ });
124
+ });
125
+
126
+ test("Test - Parsing date range with timezone abbreviation", function () {
127
+ testSingleCase(chrono, "10:30 JST today to 10:30 pst tomorrow ", new Date(2016, 10 - 1, 1, 8), (result, text) => {
128
+ expect(result.text).toBe("10:30 JST today to 10:30 pst tomorrow");
129
+
130
+ expect(result.start.get("year")).toBe(2016);
131
+ expect(result.start.get("month")).toBe(10);
132
+ expect(result.start.get("day")).toBe(1);
133
+ expect(result.start.get("hour")).toBe(10);
134
+ expect(result.start.get("minute")).toBe(30);
135
+ expect(result.start.get("timezoneOffset")).toBe(9 * 60); // JST: GMT+9:00
136
+
137
+ expect(result.end.get("year")).toBe(2016);
138
+ expect(result.end.get("month")).toBe(10);
139
+ expect(result.end.get("day")).toBe(2);
140
+ expect(result.end.get("hour")).toBe(10);
141
+ expect(result.end.get("minute")).toBe(30);
142
+ expect(result.end.get("timezoneOffset")).toBe(-8 * 60); // PST: UTC−08:00
143
+ });
144
+
145
+ // TODO: Support "10:30 JST today - 10:30 pst tomorrow" case.
146
+ // Currently, this is not possible because "today - 10:30" is recognized as "today 10:30" (not range)
103
147
  });
104
148
 
105
149
  test("Test - Parsing date/time with ambiguous timezone abbreviations", function () {
@@ -132,6 +132,16 @@ test("Test - Single Expression", function () {
132
132
  expect(result.text).toBe(text);
133
133
  expect(result.start.get("hour")).toBe(0);
134
134
  });
135
+
136
+ testSingleCase(chrono.fr, "Du 24 août 2023 au 26 août 2023", (result) => {
137
+ expect(result.text).toBe("24 août 2023 au 26 août 2023");
138
+ expect(result.start.get("year")).toBe(2023);
139
+ expect(result.start.get("month")).toBe(8);
140
+ expect(result.start.get("day")).toBe(24);
141
+ expect(result.end.get("year")).toBe(2023);
142
+ expect(result.end.get("month")).toBe(8);
143
+ expect(result.end.get("day")).toBe(26);
144
+ });
135
145
  });
136
146
 
137
147
  test("Test - Combined Expression", function () {