chrono-node 2.2.7 → 2.3.3
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/README.md +25 -9
- package/benchmark/benchmark.js +4 -0
- package/dist/bundle.js +5047 -0
- package/dist/chrono.d.ts +7 -6
- package/dist/chrono.js +6 -5
- package/dist/common/casualReferences.d.ts +6 -6
- package/dist/common/casualReferences.js +16 -15
- package/dist/common/refiners/ForwardDateRefiner.js +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/locales/de/constants.js +1 -1
- package/dist/locales/de/parsers/DECasualDateParser.js +2 -2
- package/dist/locales/en/constants.d.ts +1 -1
- package/dist/locales/en/constants.js +5 -5
- package/dist/locales/en/parsers/ENCasualDateParser.js +5 -5
- package/dist/locales/en/parsers/ENCasualTimeParser.js +1 -1
- package/dist/locales/en/parsers/ENMonthNameLittleEndianParser.js +6 -8
- package/dist/locales/en/parsers/ENRelativeDateFormatParser.js +3 -3
- package/dist/locales/en/parsers/ENTimeUnitAgoFormatParser.js +3 -3
- package/dist/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js +1 -1
- package/dist/locales/en/parsers/ENTimeUnitLaterFormatParser.js +2 -2
- package/dist/locales/en/parsers/ENTimeUnitWithinFormatParser.js +1 -1
- package/dist/locales/fr/constants.js +1 -1
- package/dist/locales/fr/parsers/FRCasualDateParser.js +4 -4
- package/dist/locales/fr/parsers/FRTimeUnitAgoFormatParser.js +1 -1
- package/dist/locales/fr/parsers/FRTimeUnitRelativeFormatParser.js +1 -1
- package/dist/locales/fr/parsers/FRTimeUnitWithinFormatParser.js +1 -1
- package/dist/locales/ja/parsers/JPCasualDateParser.js +3 -3
- package/dist/locales/nl/constants.js +8 -5
- package/dist/locales/nl/index.js +12 -3
- package/dist/locales/nl/parsers/NLCasualDateParser.js +4 -4
- package/dist/locales/nl/parsers/NLRelativeDateFormatParser.d.ts +7 -0
- package/dist/locales/nl/parsers/NLRelativeDateFormatParser.js +57 -0
- package/dist/locales/nl/parsers/NLTimeExpressionParser.d.ts +1 -0
- package/dist/locales/nl/parsers/NLTimeExpressionParser.js +3 -0
- package/dist/locales/nl/parsers/NLTimeUnitAgoFormatParser.d.ts +9 -0
- package/dist/locales/nl/parsers/NLTimeUnitAgoFormatParser.js +23 -0
- package/dist/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.d.ts +7 -0
- package/dist/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.js +25 -0
- package/dist/locales/nl/parsers/NLTimeUnitLaterFormatParser.d.ts +9 -0
- package/dist/locales/nl/parsers/NLTimeUnitLaterFormatParser.js +22 -0
- package/dist/locales/nl/parsers/NLTimeUnitWithinFormatParser.js +1 -1
- package/dist/locales/pt/parsers/PTCasualDateParser.js +4 -4
- package/dist/main.js +1078 -0
- package/dist/results.d.ts +12 -5
- package/dist/results.js +40 -17
- package/dist/timezone.d.ts +194 -0
- package/dist/timezone.js +207 -0
- package/dist/utils/dayjs.js +0 -2
- package/dist/utils/pattern.js +1 -1
- package/package.json +3 -3
- package/src/chrono.ts +21 -8
- package/src/common/casualReferences.ts +17 -18
- package/src/common/refiners/ForwardDateRefiner.ts +1 -1
- package/src/index.ts +19 -3
- package/src/locales/de/constants.ts +1 -1
- package/src/locales/de/parsers/DECasualDateParser.ts +2 -2
- package/src/locales/en/constants.ts +5 -5
- package/src/locales/en/parsers/ENCasualDateParser.ts +5 -5
- package/src/locales/en/parsers/ENCasualTimeParser.ts +1 -1
- package/src/locales/en/parsers/ENMonthNameLittleEndianParser.ts +9 -10
- package/src/locales/en/parsers/ENRelativeDateFormatParser.ts +3 -3
- package/src/locales/en/parsers/ENTimeUnitAgoFormatParser.ts +3 -4
- package/src/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.ts +1 -1
- package/src/locales/en/parsers/ENTimeUnitLaterFormatParser.ts +2 -2
- package/src/locales/en/parsers/ENTimeUnitWithinFormatParser.ts +1 -1
- package/src/locales/fr/constants.ts +1 -1
- package/src/locales/fr/parsers/FRCasualDateParser.ts +4 -4
- package/src/locales/fr/parsers/FRTimeUnitAgoFormatParser.ts +1 -1
- package/src/locales/fr/parsers/FRTimeUnitRelativeFormatParser.ts +1 -1
- package/src/locales/fr/parsers/FRTimeUnitWithinFormatParser.ts +1 -1
- package/src/locales/ja/parsers/JPCasualDateParser.ts +3 -3
- package/src/locales/nl/constants.ts +11 -5
- package/src/locales/nl/index.ts +12 -3
- package/src/locales/nl/parsers/NLCasualDateParser.ts +4 -4
- package/src/locales/nl/parsers/NLRelativeDateFormatParser.ts +70 -0
- package/src/locales/nl/parsers/NLTimeExpressionParser.ts +4 -0
- package/src/locales/nl/parsers/NLTimeUnitAgoFormatParser.ts +26 -0
- package/src/locales/nl/parsers/NLTimeUnitCasualRelativeFormatParser.ts +27 -0
- package/src/locales/nl/parsers/NLTimeUnitLaterFormatParser.ts +27 -0
- package/src/locales/nl/parsers/NLTimeUnitWithinFormatParser.ts +1 -1
- package/src/locales/pt/parsers/PTCasualDateParser.ts +4 -4
- package/src/results.ts +52 -18
- package/src/timezone.ts +205 -0
- package/src/utils/dayjs.ts +0 -2
- package/src/utils/pattern.ts +1 -1
- package/test/en/en_month_name_little_endian.test.ts +10 -0
- package/test/en/en_relative.test.ts +30 -0
- package/test/en/en_slash.test.ts +11 -0
- package/test/en/en_timezone_exp.test.ts +7 -4
- package/test/en/en_weekday.test.ts +69 -25
- package/test/en/negative_cases.test.ts +2 -0
- package/test/nl/nl_relative.test.ts +212 -0
- package/test/nl/nl_time_units_ago.test.ts +243 -0
- package/test/nl/nl_time_units_casual_relative.test.ts +130 -0
- package/test/nl/nl_time_units_later.test.ts +250 -0
- package/test/result.test.ts +32 -13
- package/test/system_timezone.test.ts +100 -0
- package/test/test_util.ts +10 -7
package/dist/results.d.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import { Component, ParsedComponents, ParsedResult } from "./index";
|
|
1
|
+
import { Component, ParsedComponents, ParsedResult, ParsingReference } from "./index";
|
|
2
2
|
import dayjs, { OpUnitType, QUnitType } from "dayjs";
|
|
3
|
+
export declare class ReferenceWithTimezone {
|
|
4
|
+
readonly instant: Date;
|
|
5
|
+
readonly timezoneOffset?: number;
|
|
6
|
+
constructor(input?: ParsingReference | Date);
|
|
7
|
+
}
|
|
3
8
|
export declare class ParsingComponents implements ParsedComponents {
|
|
4
9
|
private knownValues;
|
|
5
10
|
private impliedValues;
|
|
6
|
-
|
|
11
|
+
private reference;
|
|
12
|
+
constructor(reference: ReferenceWithTimezone, knownComponents?: {
|
|
7
13
|
[c in Component]?: number;
|
|
8
14
|
});
|
|
9
15
|
get(component: Component): number | null;
|
|
@@ -22,8 +28,8 @@ export declare class ParsingComponents implements ParsedComponents {
|
|
|
22
28
|
dayjs(): dayjs.Dayjs;
|
|
23
29
|
date(): Date;
|
|
24
30
|
private dateWithoutTimezoneAdjustment;
|
|
25
|
-
private
|
|
26
|
-
static
|
|
31
|
+
private getSystemTimezoneAdjustmentMinute;
|
|
32
|
+
static createRelativeFromReference(reference: ReferenceWithTimezone, fragments: {
|
|
27
33
|
[c in OpUnitType | QUnitType]?: number;
|
|
28
34
|
}): ParsingComponents;
|
|
29
35
|
}
|
|
@@ -31,9 +37,10 @@ export declare class ParsingResult implements ParsedResult {
|
|
|
31
37
|
refDate: Date;
|
|
32
38
|
index: number;
|
|
33
39
|
text: string;
|
|
40
|
+
reference: ReferenceWithTimezone;
|
|
34
41
|
start: ParsingComponents;
|
|
35
42
|
end?: ParsingComponents;
|
|
36
|
-
constructor(
|
|
43
|
+
constructor(reference: ReferenceWithTimezone, index: number, text: string, start?: ParsingComponents, end?: ParsingComponents);
|
|
37
44
|
clone(): ParsingResult;
|
|
38
45
|
date(): Date;
|
|
39
46
|
toString(): string;
|
package/dist/results.js
CHANGED
|
@@ -3,13 +3,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ParsingResult = exports.ParsingComponents = void 0;
|
|
6
|
+
exports.ParsingResult = exports.ParsingComponents = exports.ReferenceWithTimezone = void 0;
|
|
7
7
|
const quarterOfYear_1 = __importDefault(require("dayjs/plugin/quarterOfYear"));
|
|
8
8
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
9
9
|
const dayjs_2 = require("./utils/dayjs");
|
|
10
|
+
const timezone_1 = require("./timezone");
|
|
10
11
|
dayjs_1.default.extend(quarterOfYear_1.default);
|
|
12
|
+
class ReferenceWithTimezone {
|
|
13
|
+
constructor(input) {
|
|
14
|
+
var _a;
|
|
15
|
+
input = input !== null && input !== void 0 ? input : new Date();
|
|
16
|
+
if (input instanceof Date) {
|
|
17
|
+
this.instant = input;
|
|
18
|
+
this.timezoneOffset = -input.getTimezoneOffset();
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.instant = (_a = input.instant) !== null && _a !== void 0 ? _a : new Date();
|
|
22
|
+
this.timezoneOffset = timezone_1.toTimezoneOffset(input.timezone);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.ReferenceWithTimezone = ReferenceWithTimezone;
|
|
11
27
|
class ParsingComponents {
|
|
12
|
-
constructor(
|
|
28
|
+
constructor(reference, knownComponents) {
|
|
29
|
+
this.reference = reference;
|
|
13
30
|
this.knownValues = {};
|
|
14
31
|
this.impliedValues = {};
|
|
15
32
|
if (knownComponents) {
|
|
@@ -17,7 +34,7 @@ class ParsingComponents {
|
|
|
17
34
|
this.knownValues[key] = knownComponents[key];
|
|
18
35
|
}
|
|
19
36
|
}
|
|
20
|
-
const refDayJs = dayjs_1.default(
|
|
37
|
+
const refDayJs = dayjs_1.default(reference.instant);
|
|
21
38
|
this.imply("day", refDayJs.date());
|
|
22
39
|
this.imply("month", refDayJs.month() + 1);
|
|
23
40
|
this.imply("year", refDayJs.year());
|
|
@@ -58,7 +75,7 @@ class ParsingComponents {
|
|
|
58
75
|
delete this.impliedValues[component];
|
|
59
76
|
}
|
|
60
77
|
clone() {
|
|
61
|
-
const component = new ParsingComponents(
|
|
78
|
+
const component = new ParsingComponents(this.reference);
|
|
62
79
|
component.knownValues = {};
|
|
63
80
|
component.impliedValues = {};
|
|
64
81
|
for (const key in this.knownValues) {
|
|
@@ -82,7 +99,7 @@ class ParsingComponents {
|
|
|
82
99
|
return this.isCertain("day") && this.isCertain("month") && !this.isCertain("year");
|
|
83
100
|
}
|
|
84
101
|
isValidDate() {
|
|
85
|
-
const date = this.
|
|
102
|
+
const date = this.dateWithoutTimezoneAdjustment();
|
|
86
103
|
if (date.getFullYear() !== this.get("year"))
|
|
87
104
|
return false;
|
|
88
105
|
if (date.getMonth() !== this.get("month") - 1)
|
|
@@ -103,32 +120,37 @@ class ParsingComponents {
|
|
|
103
120
|
}
|
|
104
121
|
date() {
|
|
105
122
|
const date = this.dateWithoutTimezoneAdjustment();
|
|
106
|
-
return new Date(date.getTime() + this.
|
|
123
|
+
return new Date(date.getTime() + this.getSystemTimezoneAdjustmentMinute() * 60000);
|
|
107
124
|
}
|
|
108
125
|
dateWithoutTimezoneAdjustment() {
|
|
109
126
|
const date = new Date(this.get("year"), this.get("month") - 1, this.get("day"), this.get("hour"), this.get("minute"), this.get("second"), this.get("millisecond"));
|
|
110
127
|
date.setFullYear(this.get("year"));
|
|
111
128
|
return date;
|
|
112
129
|
}
|
|
113
|
-
|
|
130
|
+
getSystemTimezoneAdjustmentMinute() {
|
|
114
131
|
var _a;
|
|
115
|
-
|
|
116
|
-
const
|
|
117
|
-
const targetTimezoneOffset = (_a = this.get("timezoneOffset")) !== null && _a !== void 0 ? _a : currentTimezoneOffset;
|
|
132
|
+
const currentTimezoneOffset = -new Date().getTimezoneOffset();
|
|
133
|
+
const targetTimezoneOffset = (_a = this.get("timezoneOffset")) !== null && _a !== void 0 ? _a : this.reference.timezoneOffset;
|
|
118
134
|
return currentTimezoneOffset - targetTimezoneOffset;
|
|
119
135
|
}
|
|
120
|
-
static
|
|
121
|
-
let date = dayjs_1.default(
|
|
136
|
+
static createRelativeFromReference(reference, fragments) {
|
|
137
|
+
let date = dayjs_1.default(reference.instant);
|
|
122
138
|
for (const key in fragments) {
|
|
123
139
|
date = date.add(fragments[key], key);
|
|
124
140
|
}
|
|
125
|
-
const components = new ParsingComponents(
|
|
141
|
+
const components = new ParsingComponents(reference);
|
|
126
142
|
if (fragments["hour"] || fragments["minute"] || fragments["second"]) {
|
|
127
143
|
dayjs_2.assignSimilarTime(components, date);
|
|
128
144
|
dayjs_2.assignSimilarDate(components, date);
|
|
145
|
+
if (reference.timezoneOffset !== null) {
|
|
146
|
+
components.assign("timezoneOffset", -reference.instant.getTimezoneOffset());
|
|
147
|
+
}
|
|
129
148
|
}
|
|
130
149
|
else {
|
|
131
150
|
dayjs_2.implySimilarTime(components, date);
|
|
151
|
+
if (reference.timezoneOffset !== null) {
|
|
152
|
+
components.imply("timezoneOffset", -reference.instant.getTimezoneOffset());
|
|
153
|
+
}
|
|
132
154
|
if (fragments["d"]) {
|
|
133
155
|
components.assign("day", date.date());
|
|
134
156
|
components.assign("month", date.month() + 1);
|
|
@@ -159,15 +181,16 @@ class ParsingComponents {
|
|
|
159
181
|
}
|
|
160
182
|
exports.ParsingComponents = ParsingComponents;
|
|
161
183
|
class ParsingResult {
|
|
162
|
-
constructor(
|
|
163
|
-
this.
|
|
184
|
+
constructor(reference, index, text, start, end) {
|
|
185
|
+
this.reference = reference;
|
|
186
|
+
this.refDate = reference.instant;
|
|
164
187
|
this.index = index;
|
|
165
188
|
this.text = text;
|
|
166
|
-
this.start = start || new ParsingComponents(
|
|
189
|
+
this.start = start || new ParsingComponents(reference);
|
|
167
190
|
this.end = end;
|
|
168
191
|
}
|
|
169
192
|
clone() {
|
|
170
|
-
const result = new ParsingResult(this.
|
|
193
|
+
const result = new ParsingResult(this.reference, this.index, this.text);
|
|
171
194
|
result.start = this.start ? this.start.clone() : null;
|
|
172
195
|
result.end = this.end ? this.end.clone() : null;
|
|
173
196
|
return result;
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
export declare const TIMEZONE_ABBR_MAP: {
|
|
2
|
+
ACDT: number;
|
|
3
|
+
ACST: number;
|
|
4
|
+
ADT: number;
|
|
5
|
+
AEDT: number;
|
|
6
|
+
AEST: number;
|
|
7
|
+
AFT: number;
|
|
8
|
+
AKDT: number;
|
|
9
|
+
AKST: number;
|
|
10
|
+
ALMT: number;
|
|
11
|
+
AMST: number;
|
|
12
|
+
AMT: number;
|
|
13
|
+
ANAST: number;
|
|
14
|
+
ANAT: number;
|
|
15
|
+
AQTT: number;
|
|
16
|
+
ART: number;
|
|
17
|
+
AST: number;
|
|
18
|
+
AWDT: number;
|
|
19
|
+
AWST: number;
|
|
20
|
+
AZOST: number;
|
|
21
|
+
AZOT: number;
|
|
22
|
+
AZST: number;
|
|
23
|
+
AZT: number;
|
|
24
|
+
BNT: number;
|
|
25
|
+
BOT: number;
|
|
26
|
+
BRST: number;
|
|
27
|
+
BRT: number;
|
|
28
|
+
BST: number;
|
|
29
|
+
BTT: number;
|
|
30
|
+
CAST: number;
|
|
31
|
+
CAT: number;
|
|
32
|
+
CCT: number;
|
|
33
|
+
CDT: number;
|
|
34
|
+
CEST: number;
|
|
35
|
+
CET: number;
|
|
36
|
+
CHADT: number;
|
|
37
|
+
CHAST: number;
|
|
38
|
+
CKT: number;
|
|
39
|
+
CLST: number;
|
|
40
|
+
CLT: number;
|
|
41
|
+
COT: number;
|
|
42
|
+
CST: number;
|
|
43
|
+
CVT: number;
|
|
44
|
+
CXT: number;
|
|
45
|
+
ChST: number;
|
|
46
|
+
DAVT: number;
|
|
47
|
+
EASST: number;
|
|
48
|
+
EAST: number;
|
|
49
|
+
EAT: number;
|
|
50
|
+
ECT: number;
|
|
51
|
+
EDT: number;
|
|
52
|
+
EEST: number;
|
|
53
|
+
EET: number;
|
|
54
|
+
EGST: number;
|
|
55
|
+
EGT: number;
|
|
56
|
+
EST: number;
|
|
57
|
+
ET: number;
|
|
58
|
+
FJST: number;
|
|
59
|
+
FJT: number;
|
|
60
|
+
FKST: number;
|
|
61
|
+
FKT: number;
|
|
62
|
+
FNT: number;
|
|
63
|
+
GALT: number;
|
|
64
|
+
GAMT: number;
|
|
65
|
+
GET: number;
|
|
66
|
+
GFT: number;
|
|
67
|
+
GILT: number;
|
|
68
|
+
GMT: number;
|
|
69
|
+
GST: number;
|
|
70
|
+
GYT: number;
|
|
71
|
+
HAA: number;
|
|
72
|
+
HAC: number;
|
|
73
|
+
HADT: number;
|
|
74
|
+
HAE: number;
|
|
75
|
+
HAP: number;
|
|
76
|
+
HAR: number;
|
|
77
|
+
HAST: number;
|
|
78
|
+
HAT: number;
|
|
79
|
+
HAY: number;
|
|
80
|
+
HKT: number;
|
|
81
|
+
HLV: number;
|
|
82
|
+
HNA: number;
|
|
83
|
+
HNC: number;
|
|
84
|
+
HNE: number;
|
|
85
|
+
HNP: number;
|
|
86
|
+
HNR: number;
|
|
87
|
+
HNT: number;
|
|
88
|
+
HNY: number;
|
|
89
|
+
HOVT: number;
|
|
90
|
+
ICT: number;
|
|
91
|
+
IDT: number;
|
|
92
|
+
IOT: number;
|
|
93
|
+
IRDT: number;
|
|
94
|
+
IRKST: number;
|
|
95
|
+
IRKT: number;
|
|
96
|
+
IRST: number;
|
|
97
|
+
IST: number;
|
|
98
|
+
JST: number;
|
|
99
|
+
KGT: number;
|
|
100
|
+
KRAST: number;
|
|
101
|
+
KRAT: number;
|
|
102
|
+
KST: number;
|
|
103
|
+
KUYT: number;
|
|
104
|
+
LHDT: number;
|
|
105
|
+
LHST: number;
|
|
106
|
+
LINT: number;
|
|
107
|
+
MAGST: number;
|
|
108
|
+
MAGT: number;
|
|
109
|
+
MART: number;
|
|
110
|
+
MAWT: number;
|
|
111
|
+
MDT: number;
|
|
112
|
+
MESZ: number;
|
|
113
|
+
MEZ: number;
|
|
114
|
+
MHT: number;
|
|
115
|
+
MMT: number;
|
|
116
|
+
MSD: number;
|
|
117
|
+
MSK: number;
|
|
118
|
+
MST: number;
|
|
119
|
+
MUT: number;
|
|
120
|
+
MVT: number;
|
|
121
|
+
MYT: number;
|
|
122
|
+
NCT: number;
|
|
123
|
+
NDT: number;
|
|
124
|
+
NFT: number;
|
|
125
|
+
NOVST: number;
|
|
126
|
+
NOVT: number;
|
|
127
|
+
NPT: number;
|
|
128
|
+
NST: number;
|
|
129
|
+
NUT: number;
|
|
130
|
+
NZDT: number;
|
|
131
|
+
NZST: number;
|
|
132
|
+
OMSST: number;
|
|
133
|
+
OMST: number;
|
|
134
|
+
PDT: number;
|
|
135
|
+
PET: number;
|
|
136
|
+
PETST: number;
|
|
137
|
+
PETT: number;
|
|
138
|
+
PGT: number;
|
|
139
|
+
PHOT: number;
|
|
140
|
+
PHT: number;
|
|
141
|
+
PKT: number;
|
|
142
|
+
PMDT: number;
|
|
143
|
+
PMST: number;
|
|
144
|
+
PONT: number;
|
|
145
|
+
PST: number;
|
|
146
|
+
PT: number;
|
|
147
|
+
PWT: number;
|
|
148
|
+
PYST: number;
|
|
149
|
+
PYT: number;
|
|
150
|
+
RET: number;
|
|
151
|
+
SAMT: number;
|
|
152
|
+
SAST: number;
|
|
153
|
+
SBT: number;
|
|
154
|
+
SCT: number;
|
|
155
|
+
SGT: number;
|
|
156
|
+
SRT: number;
|
|
157
|
+
SST: number;
|
|
158
|
+
TAHT: number;
|
|
159
|
+
TFT: number;
|
|
160
|
+
TJT: number;
|
|
161
|
+
TKT: number;
|
|
162
|
+
TLT: number;
|
|
163
|
+
TMT: number;
|
|
164
|
+
TVT: number;
|
|
165
|
+
ULAT: number;
|
|
166
|
+
UTC: number;
|
|
167
|
+
UYST: number;
|
|
168
|
+
UYT: number;
|
|
169
|
+
UZT: number;
|
|
170
|
+
VET: number;
|
|
171
|
+
VLAST: number;
|
|
172
|
+
VLAT: number;
|
|
173
|
+
VUT: number;
|
|
174
|
+
WAST: number;
|
|
175
|
+
WAT: number;
|
|
176
|
+
WEST: number;
|
|
177
|
+
WESZ: number;
|
|
178
|
+
WET: number;
|
|
179
|
+
WEZ: number;
|
|
180
|
+
WFT: number;
|
|
181
|
+
WGST: number;
|
|
182
|
+
WGT: number;
|
|
183
|
+
WIB: number;
|
|
184
|
+
WIT: number;
|
|
185
|
+
WITA: number;
|
|
186
|
+
WST: number;
|
|
187
|
+
WT: number;
|
|
188
|
+
YAKST: number;
|
|
189
|
+
YAKT: number;
|
|
190
|
+
YAPT: number;
|
|
191
|
+
YEKST: number;
|
|
192
|
+
YEKT: number;
|
|
193
|
+
};
|
|
194
|
+
export declare function toTimezoneOffset(timezoneInput: string | number): number | null;
|
package/dist/timezone.js
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toTimezoneOffset = exports.TIMEZONE_ABBR_MAP = void 0;
|
|
4
|
+
exports.TIMEZONE_ABBR_MAP = {
|
|
5
|
+
ACDT: 630,
|
|
6
|
+
ACST: 570,
|
|
7
|
+
ADT: -180,
|
|
8
|
+
AEDT: 660,
|
|
9
|
+
AEST: 600,
|
|
10
|
+
AFT: 270,
|
|
11
|
+
AKDT: -480,
|
|
12
|
+
AKST: -540,
|
|
13
|
+
ALMT: 360,
|
|
14
|
+
AMST: -180,
|
|
15
|
+
AMT: -240,
|
|
16
|
+
ANAST: 720,
|
|
17
|
+
ANAT: 720,
|
|
18
|
+
AQTT: 300,
|
|
19
|
+
ART: -180,
|
|
20
|
+
AST: -240,
|
|
21
|
+
AWDT: 540,
|
|
22
|
+
AWST: 480,
|
|
23
|
+
AZOST: 0,
|
|
24
|
+
AZOT: -60,
|
|
25
|
+
AZST: 300,
|
|
26
|
+
AZT: 240,
|
|
27
|
+
BNT: 480,
|
|
28
|
+
BOT: -240,
|
|
29
|
+
BRST: -120,
|
|
30
|
+
BRT: -180,
|
|
31
|
+
BST: 60,
|
|
32
|
+
BTT: 360,
|
|
33
|
+
CAST: 480,
|
|
34
|
+
CAT: 120,
|
|
35
|
+
CCT: 390,
|
|
36
|
+
CDT: -300,
|
|
37
|
+
CEST: 120,
|
|
38
|
+
CET: 60,
|
|
39
|
+
CHADT: 825,
|
|
40
|
+
CHAST: 765,
|
|
41
|
+
CKT: -600,
|
|
42
|
+
CLST: -180,
|
|
43
|
+
CLT: -240,
|
|
44
|
+
COT: -300,
|
|
45
|
+
CST: -360,
|
|
46
|
+
CVT: -60,
|
|
47
|
+
CXT: 420,
|
|
48
|
+
ChST: 600,
|
|
49
|
+
DAVT: 420,
|
|
50
|
+
EASST: -300,
|
|
51
|
+
EAST: -360,
|
|
52
|
+
EAT: 180,
|
|
53
|
+
ECT: -300,
|
|
54
|
+
EDT: -240,
|
|
55
|
+
EEST: 180,
|
|
56
|
+
EET: 120,
|
|
57
|
+
EGST: 0,
|
|
58
|
+
EGT: -60,
|
|
59
|
+
EST: -300,
|
|
60
|
+
ET: -300,
|
|
61
|
+
FJST: 780,
|
|
62
|
+
FJT: 720,
|
|
63
|
+
FKST: -180,
|
|
64
|
+
FKT: -240,
|
|
65
|
+
FNT: -120,
|
|
66
|
+
GALT: -360,
|
|
67
|
+
GAMT: -540,
|
|
68
|
+
GET: 240,
|
|
69
|
+
GFT: -180,
|
|
70
|
+
GILT: 720,
|
|
71
|
+
GMT: 0,
|
|
72
|
+
GST: 240,
|
|
73
|
+
GYT: -240,
|
|
74
|
+
HAA: -180,
|
|
75
|
+
HAC: -300,
|
|
76
|
+
HADT: -540,
|
|
77
|
+
HAE: -240,
|
|
78
|
+
HAP: -420,
|
|
79
|
+
HAR: -360,
|
|
80
|
+
HAST: -600,
|
|
81
|
+
HAT: -90,
|
|
82
|
+
HAY: -480,
|
|
83
|
+
HKT: 480,
|
|
84
|
+
HLV: -210,
|
|
85
|
+
HNA: -240,
|
|
86
|
+
HNC: -360,
|
|
87
|
+
HNE: -300,
|
|
88
|
+
HNP: -480,
|
|
89
|
+
HNR: -420,
|
|
90
|
+
HNT: -150,
|
|
91
|
+
HNY: -540,
|
|
92
|
+
HOVT: 420,
|
|
93
|
+
ICT: 420,
|
|
94
|
+
IDT: 180,
|
|
95
|
+
IOT: 360,
|
|
96
|
+
IRDT: 270,
|
|
97
|
+
IRKST: 540,
|
|
98
|
+
IRKT: 540,
|
|
99
|
+
IRST: 210,
|
|
100
|
+
IST: 330,
|
|
101
|
+
JST: 540,
|
|
102
|
+
KGT: 360,
|
|
103
|
+
KRAST: 480,
|
|
104
|
+
KRAT: 480,
|
|
105
|
+
KST: 540,
|
|
106
|
+
KUYT: 240,
|
|
107
|
+
LHDT: 660,
|
|
108
|
+
LHST: 630,
|
|
109
|
+
LINT: 840,
|
|
110
|
+
MAGST: 720,
|
|
111
|
+
MAGT: 720,
|
|
112
|
+
MART: -510,
|
|
113
|
+
MAWT: 300,
|
|
114
|
+
MDT: -360,
|
|
115
|
+
MESZ: 120,
|
|
116
|
+
MEZ: 60,
|
|
117
|
+
MHT: 720,
|
|
118
|
+
MMT: 390,
|
|
119
|
+
MSD: 240,
|
|
120
|
+
MSK: 240,
|
|
121
|
+
MST: -420,
|
|
122
|
+
MUT: 240,
|
|
123
|
+
MVT: 300,
|
|
124
|
+
MYT: 480,
|
|
125
|
+
NCT: 660,
|
|
126
|
+
NDT: -90,
|
|
127
|
+
NFT: 690,
|
|
128
|
+
NOVST: 420,
|
|
129
|
+
NOVT: 360,
|
|
130
|
+
NPT: 345,
|
|
131
|
+
NST: -150,
|
|
132
|
+
NUT: -660,
|
|
133
|
+
NZDT: 780,
|
|
134
|
+
NZST: 720,
|
|
135
|
+
OMSST: 420,
|
|
136
|
+
OMST: 420,
|
|
137
|
+
PDT: -420,
|
|
138
|
+
PET: -300,
|
|
139
|
+
PETST: 720,
|
|
140
|
+
PETT: 720,
|
|
141
|
+
PGT: 600,
|
|
142
|
+
PHOT: 780,
|
|
143
|
+
PHT: 480,
|
|
144
|
+
PKT: 300,
|
|
145
|
+
PMDT: -120,
|
|
146
|
+
PMST: -180,
|
|
147
|
+
PONT: 660,
|
|
148
|
+
PST: -480,
|
|
149
|
+
PT: -480,
|
|
150
|
+
PWT: 540,
|
|
151
|
+
PYST: -180,
|
|
152
|
+
PYT: -240,
|
|
153
|
+
RET: 240,
|
|
154
|
+
SAMT: 240,
|
|
155
|
+
SAST: 120,
|
|
156
|
+
SBT: 660,
|
|
157
|
+
SCT: 240,
|
|
158
|
+
SGT: 480,
|
|
159
|
+
SRT: -180,
|
|
160
|
+
SST: -660,
|
|
161
|
+
TAHT: -600,
|
|
162
|
+
TFT: 300,
|
|
163
|
+
TJT: 300,
|
|
164
|
+
TKT: 780,
|
|
165
|
+
TLT: 540,
|
|
166
|
+
TMT: 300,
|
|
167
|
+
TVT: 720,
|
|
168
|
+
ULAT: 480,
|
|
169
|
+
UTC: 0,
|
|
170
|
+
UYST: -120,
|
|
171
|
+
UYT: -180,
|
|
172
|
+
UZT: 300,
|
|
173
|
+
VET: -210,
|
|
174
|
+
VLAST: 660,
|
|
175
|
+
VLAT: 660,
|
|
176
|
+
VUT: 660,
|
|
177
|
+
WAST: 120,
|
|
178
|
+
WAT: 60,
|
|
179
|
+
WEST: 60,
|
|
180
|
+
WESZ: 60,
|
|
181
|
+
WET: 0,
|
|
182
|
+
WEZ: 0,
|
|
183
|
+
WFT: 720,
|
|
184
|
+
WGST: -120,
|
|
185
|
+
WGT: -180,
|
|
186
|
+
WIB: 420,
|
|
187
|
+
WIT: 540,
|
|
188
|
+
WITA: 480,
|
|
189
|
+
WST: 780,
|
|
190
|
+
WT: 0,
|
|
191
|
+
YAKST: 600,
|
|
192
|
+
YAKT: 600,
|
|
193
|
+
YAPT: 600,
|
|
194
|
+
YEKST: 360,
|
|
195
|
+
YEKT: 360,
|
|
196
|
+
};
|
|
197
|
+
function toTimezoneOffset(timezoneInput) {
|
|
198
|
+
var _a;
|
|
199
|
+
if (timezoneInput === null) {
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
if (typeof timezoneInput === "number") {
|
|
203
|
+
return timezoneInput;
|
|
204
|
+
}
|
|
205
|
+
return (_a = exports.TIMEZONE_ABBR_MAP[timezoneInput]) !== null && _a !== void 0 ? _a : 0;
|
|
206
|
+
}
|
|
207
|
+
exports.toTimezoneOffset = toTimezoneOffset;
|
package/dist/utils/dayjs.js
CHANGED
|
@@ -18,7 +18,6 @@ function assignSimilarTime(component, targetDayJs) {
|
|
|
18
18
|
component.assign("minute", targetDayJs.minute());
|
|
19
19
|
component.assign("second", targetDayJs.second());
|
|
20
20
|
component.assign("millisecond", targetDayJs.millisecond());
|
|
21
|
-
component.assign("timezoneOffset", targetDayJs.utcOffset());
|
|
22
21
|
}
|
|
23
22
|
exports.assignSimilarTime = assignSimilarTime;
|
|
24
23
|
function implySimilarTime(component, targetDayJs) {
|
|
@@ -26,6 +25,5 @@ function implySimilarTime(component, targetDayJs) {
|
|
|
26
25
|
component.imply("minute", targetDayJs.minute());
|
|
27
26
|
component.imply("second", targetDayJs.second());
|
|
28
27
|
component.imply("millisecond", targetDayJs.millisecond());
|
|
29
|
-
component.imply("timezoneOffset", targetDayJs.utcOffset());
|
|
30
28
|
}
|
|
31
29
|
exports.implySimilarTime = implySimilarTime;
|
package/dist/utils/pattern.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.matchAnyPattern = exports.extractTerms = exports.repeatedTimeunitPattern = void 0;
|
|
4
4
|
function repeatedTimeunitPattern(prefix, singleTimeunitPattern) {
|
|
5
5
|
const singleTimeunitPatternNoCapture = singleTimeunitPattern.replace(/\((?!\?)/g, "(?:");
|
|
6
|
-
return `${prefix}${singleTimeunitPatternNoCapture}\\s
|
|
6
|
+
return `${prefix}${singleTimeunitPatternNoCapture}\\s{0,5}(?:,?\\s{0,5}${singleTimeunitPatternNoCapture}){0,10}`;
|
|
7
7
|
}
|
|
8
8
|
exports.repeatedTimeunitPattern = repeatedTimeunitPattern;
|
|
9
9
|
function extractTerms(dictionary) {
|
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"preset": "ts-jest"
|
|
16
16
|
},
|
|
17
17
|
"license": "MIT",
|
|
18
|
-
"version": "2.
|
|
18
|
+
"version": "2.3.3",
|
|
19
19
|
"directories": {
|
|
20
20
|
"source": "./src",
|
|
21
21
|
"test": "./test"
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"jest": "^26.1.0",
|
|
34
34
|
"prettier": "^2.0.5",
|
|
35
35
|
"ts-jest": "^26.1.1",
|
|
36
|
-
"typedoc": "^0.20.
|
|
37
|
-
"typescript": "
|
|
36
|
+
"typedoc": "^0.20.36",
|
|
37
|
+
"typescript": "~4.2.4"
|
|
38
38
|
},
|
|
39
39
|
"husky": {
|
|
40
40
|
"hooks": {
|
package/src/chrono.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ParsingComponents, ParsingResult } from "./results";
|
|
2
|
-
import { Component, ParsedResult, ParsingOption } from "./index";
|
|
1
|
+
import { ReferenceWithTimezone, ParsingComponents, ParsingResult } from "./results";
|
|
2
|
+
import { Component, ParsedResult, ParsingOption, ParsingReference } from "./index";
|
|
3
3
|
import { AsyncDebugBlock, DebugHandler } from "./debugging";
|
|
4
4
|
import { createCasualConfiguration } from "./locales/en";
|
|
5
5
|
|
|
@@ -68,13 +68,13 @@ export class Chrono {
|
|
|
68
68
|
* A shortcut for calling {@Link parse | parse() } then transform the result into Javascript's Date object
|
|
69
69
|
* @return Date object created from the first parse result
|
|
70
70
|
*/
|
|
71
|
-
parseDate(text: string, referenceDate?: Date, option?: ParsingOption): Date | null {
|
|
71
|
+
parseDate(text: string, referenceDate?: ParsingReference | Date, option?: ParsingOption): Date | null {
|
|
72
72
|
const results = this.parse(text, referenceDate, option);
|
|
73
73
|
return results.length > 0 ? results[0].start.date() : null;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
parse(text: string, referenceDate?: Date, option?: ParsingOption): ParsedResult[] {
|
|
77
|
-
const context = new ParsingContext(text, referenceDate
|
|
76
|
+
parse(text: string, referenceDate?: ParsingReference | Date, option?: ParsingOption): ParsedResult[] {
|
|
77
|
+
const context = new ParsingContext(text, referenceDate, option);
|
|
78
78
|
|
|
79
79
|
let results = [];
|
|
80
80
|
this.parsers.forEach((parser) => {
|
|
@@ -136,14 +136,27 @@ export class Chrono {
|
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
export class ParsingContext implements DebugHandler {
|
|
139
|
-
|
|
139
|
+
readonly text: string;
|
|
140
|
+
readonly option: ParsingOption;
|
|
141
|
+
readonly reference: ReferenceWithTimezone;
|
|
142
|
+
|
|
143
|
+
// Deprecated. Use reference.instant instead.
|
|
144
|
+
readonly refDate: Date;
|
|
145
|
+
|
|
146
|
+
constructor(text: string, refDate?: ParsingReference | Date, option?: ParsingOption) {
|
|
147
|
+
this.text = text;
|
|
148
|
+
this.reference = new ReferenceWithTimezone(refDate);
|
|
149
|
+
this.option = option ?? {};
|
|
150
|
+
|
|
151
|
+
this.refDate = this.reference.instant;
|
|
152
|
+
}
|
|
140
153
|
|
|
141
154
|
createParsingComponents(components?: { [c in Component]?: number } | ParsingComponents): ParsingComponents {
|
|
142
155
|
if (components instanceof ParsingComponents) {
|
|
143
156
|
return components;
|
|
144
157
|
}
|
|
145
158
|
|
|
146
|
-
return new ParsingComponents(this.
|
|
159
|
+
return new ParsingComponents(this.reference, components);
|
|
147
160
|
}
|
|
148
161
|
|
|
149
162
|
createParsingResult(
|
|
@@ -157,7 +170,7 @@ export class ParsingContext implements DebugHandler {
|
|
|
157
170
|
const start = startComponents ? this.createParsingComponents(startComponents) : null;
|
|
158
171
|
const end = endComponents ? this.createParsingComponents(endComponents) : null;
|
|
159
172
|
|
|
160
|
-
return new ParsingResult(this.
|
|
173
|
+
return new ParsingResult(this.reference, index, text, start, end);
|
|
161
174
|
}
|
|
162
175
|
|
|
163
176
|
debug(block: AsyncDebugBlock): void {
|