chrono-node 2.7.9 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/common/casualReferences.js +8 -10
- package/dist/cjs/common/casualReferences.js.map +1 -1
- package/dist/cjs/common/refiners/ForwardDateRefiner.js +33 -12
- package/dist/cjs/common/refiners/ForwardDateRefiner.js.map +1 -1
- package/dist/cjs/results.d.ts +1 -0
- package/dist/cjs/results.js +18 -13
- package/dist/cjs/results.js.map +1 -1
- package/dist/cjs/utils/dates.d.ts +3 -0
- package/dist/cjs/utils/dates.js +17 -0
- package/dist/cjs/utils/dates.js.map +1 -0
- package/dist/cjs/utils/dayjs.js.map +1 -1
- package/dist/esm/common/casualReferences.js +8 -10
- package/dist/esm/common/casualReferences.js.map +1 -1
- package/dist/esm/common/refiners/ForwardDateRefiner.js +14 -12
- package/dist/esm/common/refiners/ForwardDateRefiner.js.map +1 -1
- package/dist/esm/results.d.ts +1 -0
- package/dist/esm/results.js +17 -13
- package/dist/esm/results.js.map +1 -1
- package/dist/esm/utils/dates.d.ts +3 -0
- package/dist/esm/utils/dates.js +12 -0
- package/dist/esm/utils/dates.js.map +1 -0
- package/dist/esm/utils/dayjs.js.map +1 -1
- package/package.json +1 -1
- package/src/common/casualReferences.ts +8 -10
- package/src/common/refiners/ForwardDateRefiner.ts +17 -11
- package/src/results.ts +18 -13
- package/src/utils/dates.ts +24 -0
- package/src/utils/dayjs.ts +6 -0
- package/test/en/en_casual.test.ts +4 -1
- package/test/en/en_relative.test.ts +126 -39
- package/test/en/en_time_exp.test.ts +27 -18
- package/test/nl/nl_relative.test.ts +33 -17
- package/test/result.test.ts +24 -0
- package/test/system_timezone.test.ts +20 -4
|
@@ -185,42 +185,58 @@ test("Test - Relative date components' certainty", () => {
|
|
|
185
185
|
});
|
|
186
186
|
});
|
|
187
187
|
|
|
188
|
-
test("Test - Relative date
|
|
188
|
+
test("Test - Relative date when the timezone is irrelevant", () => {
|
|
189
189
|
const refDate = new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)");
|
|
190
|
-
|
|
191
190
|
{
|
|
192
191
|
// now
|
|
193
192
|
const text = "nu";
|
|
194
193
|
const result = chrono.nl.parse(text, refDate)[0] as ParsingResult;
|
|
194
|
+
expect(result).toBeDate(new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)"));
|
|
195
|
+
expect(result).toBeDate(new Date("Sun Nov 29 2020 5:24:13 GMT+0100"));
|
|
195
196
|
|
|
196
|
-
expect(result.text).toBe(text);
|
|
197
197
|
result.start.imply("timezoneOffset", 60);
|
|
198
|
-
|
|
199
198
|
expect(result).toBeDate(new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)"));
|
|
200
199
|
expect(result).toBeDate(new Date("Sun Nov 29 2020 5:24:13 GMT+0100"));
|
|
201
200
|
}
|
|
202
|
-
|
|
203
201
|
{
|
|
204
|
-
//
|
|
205
|
-
const text = "
|
|
202
|
+
// in 10 minutes
|
|
203
|
+
const text = "binnen 10 minuten";
|
|
206
204
|
const result = chrono.nl.parse(text, refDate)[0] as ParsingResult;
|
|
205
|
+
expect(result).toBeDate(new Date("Sun Nov 29 2020 13:34:13 GMT+0900 (Japan Standard Time)"));
|
|
206
|
+
expect(result).toBeDate(new Date("Sun Nov 29 2020 5:34:13 GMT+0100"));
|
|
207
207
|
|
|
208
|
-
expect(result.text).toBe(text);
|
|
209
208
|
result.start.imply("timezoneOffset", 60);
|
|
210
|
-
|
|
211
|
-
expect(result).toBeDate(new Date("Sun
|
|
212
|
-
expect(result).toBeDate(new Date("Sun Nov 30 2020 17:00:00 GMT+0100"));
|
|
209
|
+
expect(result).toBeDate(new Date("Sun Nov 29 2020 13:34:13 GMT+0900 (Japan Standard Time)"));
|
|
210
|
+
expect(result).toBeDate(new Date("Sun Nov 29 2020 5:34:13 GMT+0100"));
|
|
213
211
|
}
|
|
212
|
+
});
|
|
214
213
|
|
|
214
|
+
test("Test - Relative date when the timezone is relevant and known", () => {
|
|
215
|
+
// Sun Nov 29 2020 13:24:13 GMT+0900 (JST)
|
|
216
|
+
// Sat Nov 28 2020 21:24:13 GMT-0700 (PDT)
|
|
217
|
+
const refInstant = new Date("Sun Nov 29 2020 13:24:13 GMT+0900 (Japan Standard Time)");
|
|
215
218
|
{
|
|
216
|
-
//
|
|
217
|
-
const text = "
|
|
218
|
-
const result = chrono.nl.parse(text,
|
|
219
|
+
// In JST (Nov 29 2020 13:24:13 GMT+0900), "tomorrow at 5pm"
|
|
220
|
+
const text = "morgen om 17 uur";
|
|
221
|
+
const result = chrono.nl.parse(text, { instant: refInstant, timezone: "JST" })[0] as ParsingResult;
|
|
222
|
+
expect(result).toBeDate(new Date("Mon Nov 30 2020 17:00:00 GMT+0900 (JST)"));
|
|
223
|
+
expect(result.start.get("month")).toBe(11);
|
|
224
|
+
expect(result.start.get("day")).toBe(30);
|
|
225
|
+
expect(result.start.get("hour")).toBe(17);
|
|
219
226
|
|
|
220
|
-
expect(result.text).toBe(text);
|
|
221
227
|
result.start.imply("timezoneOffset", 60);
|
|
228
|
+
expect(result).toBeDate(new Date("Mon Nov 30 2020 17:00:00 GMT+0100 (BST)"));
|
|
229
|
+
}
|
|
230
|
+
{
|
|
231
|
+
// In PDT (Sat Nov 28 2020 21:24:13 GMT-0700), "tomorrow at 5pm"
|
|
232
|
+
const text = "morgen om 17 uur";
|
|
233
|
+
const result = chrono.nl.parse(text, { instant: refInstant, timezone: -7 * 60 })[0] as ParsingResult;
|
|
234
|
+
expect(result).toBeDate(new Date("Sun Nov 29 2020 17:00:00 GMT-0700 (PST)"));
|
|
235
|
+
expect(result.start.get("month")).toBe(11);
|
|
236
|
+
expect(result.start.get("day")).toBe(29);
|
|
237
|
+
expect(result.start.get("hour")).toBe(17);
|
|
222
238
|
|
|
223
|
-
|
|
224
|
-
expect(result).toBeDate(new Date("Sun Nov 29 2020
|
|
239
|
+
result.start.imply("timezoneOffset", 60);
|
|
240
|
+
expect(result).toBeDate(new Date("Sun Nov 29 2020 17:00:00 GMT+0100 (BST)"));
|
|
225
241
|
}
|
|
226
242
|
});
|
package/test/result.test.ts
CHANGED
|
@@ -175,3 +175,27 @@ test("Test - Checking non-existing date during DST skip", () => {
|
|
|
175
175
|
).toBe(true);
|
|
176
176
|
}
|
|
177
177
|
});
|
|
178
|
+
|
|
179
|
+
test("Test - Getting timezone adjust date from references", () => {
|
|
180
|
+
{
|
|
181
|
+
const reference = new ReferenceWithTimezone({
|
|
182
|
+
instant: new Date("Wed Jun 09 2021 07:21:32 GMT+0900 (JST)"),
|
|
183
|
+
timezone: 9 * 60,
|
|
184
|
+
});
|
|
185
|
+
expect(reference.getDateWithAdjustedTimezone()).toStrictEqual(new Date(2021, 6 - 1, 9, 7, 21, 32));
|
|
186
|
+
}
|
|
187
|
+
{
|
|
188
|
+
const reference = new ReferenceWithTimezone({
|
|
189
|
+
instant: new Date("Wed Jun 09 2021 07:21:32 GMT+0900 (JST)"),
|
|
190
|
+
timezone: "JST",
|
|
191
|
+
});
|
|
192
|
+
expect(reference.getDateWithAdjustedTimezone()).toStrictEqual(new Date(2021, 6 - 1, 9, 7, 21, 32));
|
|
193
|
+
}
|
|
194
|
+
{
|
|
195
|
+
const reference = new ReferenceWithTimezone({
|
|
196
|
+
instant: new Date("Wed Jun 09 2021 07:21:32 GMT-0500 (CDT)"),
|
|
197
|
+
timezone: "CDT",
|
|
198
|
+
});
|
|
199
|
+
expect(reference.getDateWithAdjustedTimezone()).toStrictEqual(new Date(2021, 6 - 1, 9, 7, 21, 32));
|
|
200
|
+
}
|
|
201
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as chrono from "../src/";
|
|
2
2
|
import { testSingleCase } from "./test_util";
|
|
3
3
|
|
|
4
|
-
test("Test -
|
|
4
|
+
test("Test - Using reference with timezone", function () {
|
|
5
5
|
testSingleCase(
|
|
6
6
|
chrono,
|
|
7
7
|
"Friday at 4pm",
|
|
@@ -11,12 +11,26 @@ test("Test - Timezone difference on reference example", function () {
|
|
|
11
11
|
},
|
|
12
12
|
(result) => {
|
|
13
13
|
expect(result).toBeDate(new Date("Fri Jun 11 2021 16:00:00 GMT-0500 (CDT)"));
|
|
14
|
-
expect(result).toBeDate(new Date("
|
|
14
|
+
expect(result).toBeDate(new Date("Sat Jun 12 2021 06:00:00 GMT+0900 (JST)"));
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
testSingleCase(
|
|
18
|
+
chrono,
|
|
19
|
+
"1am",
|
|
20
|
+
{
|
|
21
|
+
instant: new Date("Wed May 26 2022 01:57:00 GMT-0500 (CDT)"),
|
|
22
|
+
timezone: "CDT",
|
|
23
|
+
},
|
|
24
|
+
(result) => {
|
|
25
|
+
expect(result.start.get("year")).toBe(2022);
|
|
26
|
+
expect(result.start.get("month")).toBe(5);
|
|
27
|
+
expect(result.start.get("day")).toBe(26);
|
|
28
|
+
expect(result.start.get("hour")).toBe(1);
|
|
15
29
|
}
|
|
16
30
|
);
|
|
17
31
|
});
|
|
18
32
|
|
|
19
|
-
test("Test -
|
|
33
|
+
test("Test - Using reference with missing/default timezone", function () {
|
|
20
34
|
const INPUT = "Friday at 4pm";
|
|
21
35
|
const REF_INSTANT = new Date(2021, 6 - 1, 9, 7, 0, 0);
|
|
22
36
|
const EXPECTED_INSTANT = new Date(2021, 6 - 1, 11, 16, 0, 0);
|
|
@@ -38,16 +52,18 @@ test("Test - Timezone difference on default timezone", function () {
|
|
|
38
52
|
});
|
|
39
53
|
});
|
|
40
54
|
|
|
41
|
-
test("Test -
|
|
55
|
+
test("Test - Using reference instance with different timezone", function () {
|
|
42
56
|
// Sun Jun 06 2021 19:00:00 GMT+0900 (JST)
|
|
43
57
|
// Sun Jun 06 2021 11:00:00 GMT+0100 (BST)
|
|
44
58
|
const refInstant = new Date("Sun Jun 06 2021 19:00:00 GMT+0900 (JST)");
|
|
45
59
|
|
|
60
|
+
// "At 4pm tomorrow" at "Sun Jun 06 2021 11:00:00 (BST)"
|
|
46
61
|
testSingleCase(chrono, "At 4pm tomorrow", { instant: refInstant, timezone: "BST" }, (result) => {
|
|
47
62
|
const expectedInstant = new Date("Mon Jun 07 2021 16:00:00 GMT+0100 (BST)");
|
|
48
63
|
expect(result).toBeDate(expectedInstant);
|
|
49
64
|
});
|
|
50
65
|
|
|
66
|
+
// "At 4pm tomorrow" at "Sun Jun 06 2021 19:00:00 (JST)"
|
|
51
67
|
testSingleCase(chrono, "At 4pm tomorrow", { instant: refInstant, timezone: "JST" }, (result) => {
|
|
52
68
|
const expectedInstant = new Date("Mon Jun 07 2021 16:00:00 GMT+0900 (JST)");
|
|
53
69
|
expect(result).toBeDate(expectedInstant);
|