timelang 0.3.0 → 0.3.1
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 +1 -0
- package/dist/index.cjs +1 -2309
- package/dist/index.js +1 -2268
- package/package.json +1 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,2268 +1 @@
|
|
|
1
|
-
// src/parser.ts
|
|
2
|
-
import nearley from "nearley";
|
|
3
|
-
|
|
4
|
-
// src/lexer.ts
|
|
5
|
-
import moo from "moo";
|
|
6
|
-
var lexer = moo.compile({
|
|
7
|
-
// Whitespace - capture for potential preservation
|
|
8
|
-
ws: /[ \t]+/,
|
|
9
|
-
newline: { match: /\r?\n/, lineBreaks: true },
|
|
10
|
-
// Time patterns (must come before numbers to match correctly)
|
|
11
|
-
time: /(?:0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?/,
|
|
12
|
-
// Compact month-day pattern: "July10", "Jan15" (month immediately followed by day number)
|
|
13
|
-
monthDayCompact: {
|
|
14
|
-
match: /(?:[Jj]anuary|[Ff]ebruary|[Mm]arch|[Aa]pril|[Mm]ay|[Jj]une|[Jj]uly|[Aa]ugust|[Ss]eptember|[Oo]ctober|[Nn]ovember|[Dd]ecember|[Jj]an|[Ff]eb|[Mm]ar|[Aa]pr|[Jj]un|[Jj]ul|[Aa]ug|[Ss]ep|[Ss]ept|[Oo]ct|[Nn]ov|[Dd]ec)(?:3[01]|[12]?[0-9])/,
|
|
15
|
-
value: (s) => s.toLowerCase()
|
|
16
|
-
},
|
|
17
|
-
// Quarter notation: Q1, Q2, Q3, Q4 (case insensitive via alternation)
|
|
18
|
-
quarter: { match: /[Qq][1-4]/, value: (s) => s.toUpperCase() },
|
|
19
|
-
// Half notation: H1, H2 (case insensitive via alternation)
|
|
20
|
-
half: { match: /[Hh][1-2]/, value: (s) => s.toUpperCase() },
|
|
21
|
-
// Ordinal numbers: 1st, 2nd, 3rd, 4th-31st (case insensitive suffixes)
|
|
22
|
-
ordinal: {
|
|
23
|
-
match: /(?:3[01]|[12]?[0-9])(?:[Ss][Tt]|[Nn][Dd]|[Rr][Dd]|[Tt][Hh])/,
|
|
24
|
-
value: (s) => s.toLowerCase()
|
|
25
|
-
},
|
|
26
|
-
// Decimal numbers (must come before integer)
|
|
27
|
-
decimal: /\d+\.\d+/,
|
|
28
|
-
// Abbreviated duration units: 1w, 3d, 2h, 30m (minutes), 5s, 1y, 6mo (months)
|
|
29
|
-
// 'm' = minutes, 'mo' = months
|
|
30
|
-
abbreviatedDuration: {
|
|
31
|
-
match: /\d+(?:mo|w|d|h|m|s|y)\b/,
|
|
32
|
-
value: (s) => s.toLowerCase()
|
|
33
|
-
},
|
|
34
|
-
// Integer numbers
|
|
35
|
-
integer: /\d+/,
|
|
36
|
-
// AM/PM (must come before general keywords)
|
|
37
|
-
ampm: { match: /[Aa][Mm]|[Pp][Mm]/, value: (s) => s.toLowerCase() },
|
|
38
|
-
// Keywords - match words and normalize to lowercase
|
|
39
|
-
// Using a regex to match any word, then checking against known keywords
|
|
40
|
-
// The transform function in moo.keywords makes matching case-insensitive
|
|
41
|
-
word: {
|
|
42
|
-
match: /[a-zA-Z][a-zA-Z0-9#]*/,
|
|
43
|
-
type: moo.keywords({
|
|
44
|
-
// Time words - each gets its own type for grammar disambiguation
|
|
45
|
-
kw_today: ["today"],
|
|
46
|
-
kw_tomorrow: ["tomorrow"],
|
|
47
|
-
kw_yesterday: ["yesterday"],
|
|
48
|
-
kw_now: ["now"],
|
|
49
|
-
kw_noon: ["noon"],
|
|
50
|
-
kw_midnight: ["midnight"],
|
|
51
|
-
// Relative modifiers - each gets its own type for grammar disambiguation
|
|
52
|
-
kw_next: ["next"],
|
|
53
|
-
kw_last: ["last"],
|
|
54
|
-
kw_this: ["this"],
|
|
55
|
-
kw_previous: ["previous"],
|
|
56
|
-
kw_coming: ["coming"],
|
|
57
|
-
kw_upcoming: ["upcoming"],
|
|
58
|
-
kw_past: ["past"],
|
|
59
|
-
// Period modifiers - each gets its own type for grammar disambiguation
|
|
60
|
-
kw_early: ["early"],
|
|
61
|
-
kw_mid: ["mid"],
|
|
62
|
-
kw_late: ["late"],
|
|
63
|
-
kw_beginning: ["beginning"],
|
|
64
|
-
kw_middle: ["middle"],
|
|
65
|
-
kw_end: ["end"],
|
|
66
|
-
kw_start: ["start"],
|
|
67
|
-
// Periods/units - must come BEFORE ordinalWord so ordinalWord 'second' wins over unit 'second'
|
|
68
|
-
unit: [
|
|
69
|
-
"day",
|
|
70
|
-
"days",
|
|
71
|
-
"week",
|
|
72
|
-
"weeks",
|
|
73
|
-
"month",
|
|
74
|
-
"months",
|
|
75
|
-
"year",
|
|
76
|
-
"years",
|
|
77
|
-
"quarter",
|
|
78
|
-
"quarters",
|
|
79
|
-
"hour",
|
|
80
|
-
"hours",
|
|
81
|
-
"minute",
|
|
82
|
-
"minutes",
|
|
83
|
-
"second",
|
|
84
|
-
"seconds",
|
|
85
|
-
"hr",
|
|
86
|
-
"hrs",
|
|
87
|
-
"min",
|
|
88
|
-
"mins",
|
|
89
|
-
"sec",
|
|
90
|
-
"secs",
|
|
91
|
-
"wk",
|
|
92
|
-
"wks",
|
|
93
|
-
"mo",
|
|
94
|
-
"mos",
|
|
95
|
-
"yr",
|
|
96
|
-
"yrs"
|
|
97
|
-
],
|
|
98
|
-
// Half word
|
|
99
|
-
halfWord: ["half"],
|
|
100
|
-
// Connectors - each gets its own type for grammar disambiguation
|
|
101
|
-
kw_to: ["to"],
|
|
102
|
-
kw_from: ["from"],
|
|
103
|
-
kw_until: ["until", "til", "till"],
|
|
104
|
-
kw_through: ["through"],
|
|
105
|
-
kw_between: ["between"],
|
|
106
|
-
kw_and: ["and"],
|
|
107
|
-
kw_for: ["for"],
|
|
108
|
-
kw_in: ["in"],
|
|
109
|
-
kw_on: ["on"],
|
|
110
|
-
kw_at: ["at"],
|
|
111
|
-
kw_of: ["of"],
|
|
112
|
-
kw_the: ["the"],
|
|
113
|
-
kw_within: ["within"],
|
|
114
|
-
kw_over: ["over"],
|
|
115
|
-
kw_during: ["during"],
|
|
116
|
-
kw_starting: ["starting"],
|
|
117
|
-
kw_by: ["by"],
|
|
118
|
-
kw_before: ["before"],
|
|
119
|
-
kw_after: ["after"],
|
|
120
|
-
kw_around: ["around"],
|
|
121
|
-
kw_about: ["about"],
|
|
122
|
-
kw_roughly: ["roughly"],
|
|
123
|
-
kw_approximately: ["approximately"],
|
|
124
|
-
kw_sometime: ["sometime"],
|
|
125
|
-
// Ordinal words - 'second' is handled separately since it's also a unit
|
|
126
|
-
ordinalWord: [
|
|
127
|
-
"first",
|
|
128
|
-
"third",
|
|
129
|
-
"fourth",
|
|
130
|
-
"fifth",
|
|
131
|
-
"sixth",
|
|
132
|
-
"seventh",
|
|
133
|
-
"eighth",
|
|
134
|
-
"ninth",
|
|
135
|
-
"tenth",
|
|
136
|
-
"eleventh",
|
|
137
|
-
"twelfth",
|
|
138
|
-
"thirteenth",
|
|
139
|
-
"fourteenth",
|
|
140
|
-
"fifteenth",
|
|
141
|
-
"sixteenth",
|
|
142
|
-
"seventeenth",
|
|
143
|
-
"eighteenth",
|
|
144
|
-
"nineteenth",
|
|
145
|
-
"twentieth",
|
|
146
|
-
"twenty-first",
|
|
147
|
-
"twenty-second",
|
|
148
|
-
"twenty-third",
|
|
149
|
-
"twenty-fourth",
|
|
150
|
-
"twenty-fifth",
|
|
151
|
-
"twenty-sixth",
|
|
152
|
-
"twenty-seventh",
|
|
153
|
-
"twenty-eighth",
|
|
154
|
-
"twenty-ninth",
|
|
155
|
-
"thirtieth",
|
|
156
|
-
"thirty-first"
|
|
157
|
-
],
|
|
158
|
-
// Seasons
|
|
159
|
-
season: ["spring", "summer", "fall", "autumn", "winter"],
|
|
160
|
-
// Word numbers
|
|
161
|
-
wordNumber: [
|
|
162
|
-
"one",
|
|
163
|
-
"two",
|
|
164
|
-
"three",
|
|
165
|
-
"four",
|
|
166
|
-
"five",
|
|
167
|
-
"six",
|
|
168
|
-
"seven",
|
|
169
|
-
"eight",
|
|
170
|
-
"nine",
|
|
171
|
-
"ten",
|
|
172
|
-
"eleven",
|
|
173
|
-
"twelve",
|
|
174
|
-
"thirteen",
|
|
175
|
-
"fourteen",
|
|
176
|
-
"fifteen",
|
|
177
|
-
"sixteen",
|
|
178
|
-
"seventeen",
|
|
179
|
-
"eighteen",
|
|
180
|
-
"nineteen",
|
|
181
|
-
"twenty",
|
|
182
|
-
"a",
|
|
183
|
-
"an",
|
|
184
|
-
"couple"
|
|
185
|
-
],
|
|
186
|
-
// Months - full names
|
|
187
|
-
month: [
|
|
188
|
-
"january",
|
|
189
|
-
"february",
|
|
190
|
-
"march",
|
|
191
|
-
"april",
|
|
192
|
-
"may",
|
|
193
|
-
"june",
|
|
194
|
-
"july",
|
|
195
|
-
"august",
|
|
196
|
-
"september",
|
|
197
|
-
"october",
|
|
198
|
-
"november",
|
|
199
|
-
"december",
|
|
200
|
-
"jan",
|
|
201
|
-
"feb",
|
|
202
|
-
"mar",
|
|
203
|
-
"apr",
|
|
204
|
-
"jun",
|
|
205
|
-
"jul",
|
|
206
|
-
"aug",
|
|
207
|
-
"sep",
|
|
208
|
-
"sept",
|
|
209
|
-
"oct",
|
|
210
|
-
"nov",
|
|
211
|
-
"dec"
|
|
212
|
-
],
|
|
213
|
-
// Weekdays
|
|
214
|
-
weekday: [
|
|
215
|
-
"monday",
|
|
216
|
-
"tuesday",
|
|
217
|
-
"wednesday",
|
|
218
|
-
"thursday",
|
|
219
|
-
"friday",
|
|
220
|
-
"saturday",
|
|
221
|
-
"sunday",
|
|
222
|
-
"mon",
|
|
223
|
-
"tue",
|
|
224
|
-
"tues",
|
|
225
|
-
"wed",
|
|
226
|
-
"thu",
|
|
227
|
-
"thur",
|
|
228
|
-
"thurs",
|
|
229
|
-
"fri",
|
|
230
|
-
"sat",
|
|
231
|
-
"sun"
|
|
232
|
-
],
|
|
233
|
-
// Ago keyword for relative dates
|
|
234
|
-
kw_ago: ["ago"],
|
|
235
|
-
// Weekend and night keywords
|
|
236
|
-
kw_weekend: ["weekend"],
|
|
237
|
-
kw_tonight: ["tonight"],
|
|
238
|
-
kw_night: ["night"],
|
|
239
|
-
kw_fortnight: ["fortnight", "fortnights"],
|
|
240
|
-
// Other keywords
|
|
241
|
-
otherKeyword: ["fiscal", "fy", "daily", "weekly", "monthly", "yearly", "annually", "hence", "later", "earlier"],
|
|
242
|
-
// Business keywords
|
|
243
|
-
kw_business: ["business"],
|
|
244
|
-
// EOD/COB keywords
|
|
245
|
-
kw_eod: ["eod"],
|
|
246
|
-
kw_cob: ["cob"],
|
|
247
|
-
kw_close: ["close"]
|
|
248
|
-
})
|
|
249
|
-
// Keywords are matched against lowercase input
|
|
250
|
-
},
|
|
251
|
-
// Punctuation and separators
|
|
252
|
-
lparen: "(",
|
|
253
|
-
rparen: ")",
|
|
254
|
-
lbracket: "[",
|
|
255
|
-
rbracket: "]",
|
|
256
|
-
colon: ":",
|
|
257
|
-
semicolon: ";",
|
|
258
|
-
comma: ",",
|
|
259
|
-
dash: /[-–—]/,
|
|
260
|
-
// Regular dash, en-dash, em-dash
|
|
261
|
-
slash: "/",
|
|
262
|
-
// Any other single character
|
|
263
|
-
other: /./
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
// src/grammar.ts
|
|
267
|
-
var first = (d) => d[0];
|
|
268
|
-
var nuller = () => null;
|
|
269
|
-
var makeDate = (data) => ({
|
|
270
|
-
nodeType: "date",
|
|
271
|
-
value: "",
|
|
272
|
-
...data
|
|
273
|
-
});
|
|
274
|
-
var makeDuration = (value, unit2) => ({
|
|
275
|
-
nodeType: "duration",
|
|
276
|
-
value,
|
|
277
|
-
unit: normalizeUnit(unit2)
|
|
278
|
-
});
|
|
279
|
-
var makeSpan = (start, duration, end) => ({
|
|
280
|
-
nodeType: "span",
|
|
281
|
-
start,
|
|
282
|
-
duration,
|
|
283
|
-
end
|
|
284
|
-
});
|
|
285
|
-
var makeRange = (start, end) => ({
|
|
286
|
-
nodeType: "range",
|
|
287
|
-
start,
|
|
288
|
-
end
|
|
289
|
-
});
|
|
290
|
-
var makeFuzzy = (data) => ({
|
|
291
|
-
nodeType: "fuzzy",
|
|
292
|
-
period: "",
|
|
293
|
-
...data
|
|
294
|
-
});
|
|
295
|
-
var makeRelative = (direction, duration) => ({
|
|
296
|
-
nodeType: "relative",
|
|
297
|
-
direction,
|
|
298
|
-
duration
|
|
299
|
-
});
|
|
300
|
-
var makeRelativeDate = (direction, duration, baseDate, time2) => ({
|
|
301
|
-
nodeType: "relativeDate",
|
|
302
|
-
direction,
|
|
303
|
-
duration,
|
|
304
|
-
baseDate,
|
|
305
|
-
time: time2
|
|
306
|
-
});
|
|
307
|
-
var makeTitled = (title, expression, titleStart, titleEnd) => ({
|
|
308
|
-
nodeType: "titled",
|
|
309
|
-
title: title.trim(),
|
|
310
|
-
titleStart,
|
|
311
|
-
titleEnd,
|
|
312
|
-
expression
|
|
313
|
-
});
|
|
314
|
-
function normalizeUnit(unit2) {
|
|
315
|
-
const u = unit2.toLowerCase();
|
|
316
|
-
if (["day", "days", "d"].includes(u)) return "day";
|
|
317
|
-
if (["week", "weeks", "wk", "wks", "w"].includes(u)) return "week";
|
|
318
|
-
if (["month", "months", "mo", "mos"].includes(u)) return "month";
|
|
319
|
-
if (["year", "years", "yr", "yrs", "y"].includes(u)) return "year";
|
|
320
|
-
if (["hour", "hours", "hr", "hrs", "h"].includes(u)) return "hour";
|
|
321
|
-
if (["minute", "minutes", "min", "mins"].includes(u)) return "minute";
|
|
322
|
-
if (["second", "seconds", "sec", "secs", "s"].includes(u)) return "second";
|
|
323
|
-
if (["quarter", "quarters"].includes(u)) return "quarter";
|
|
324
|
-
return u;
|
|
325
|
-
}
|
|
326
|
-
function parseWordNumber(word2) {
|
|
327
|
-
const map = {
|
|
328
|
-
"a": 1,
|
|
329
|
-
"an": 1,
|
|
330
|
-
"one": 1,
|
|
331
|
-
"two": 2,
|
|
332
|
-
"three": 3,
|
|
333
|
-
"four": 4,
|
|
334
|
-
"five": 5,
|
|
335
|
-
"six": 6,
|
|
336
|
-
"seven": 7,
|
|
337
|
-
"eight": 8,
|
|
338
|
-
"nine": 9,
|
|
339
|
-
"ten": 10,
|
|
340
|
-
"eleven": 11,
|
|
341
|
-
"twelve": 12,
|
|
342
|
-
"thirteen": 13,
|
|
343
|
-
"fourteen": 14,
|
|
344
|
-
"fifteen": 15,
|
|
345
|
-
"sixteen": 16,
|
|
346
|
-
"seventeen": 17,
|
|
347
|
-
"eighteen": 18,
|
|
348
|
-
"nineteen": 19,
|
|
349
|
-
"twenty": 20,
|
|
350
|
-
"couple": 2
|
|
351
|
-
};
|
|
352
|
-
return map[word2.toLowerCase()] ?? 1;
|
|
353
|
-
}
|
|
354
|
-
function parseOrdinal(ord) {
|
|
355
|
-
const match = ord.match(/^(\d+)/);
|
|
356
|
-
return match ? parseInt(match[1], 10) : parseOrdinalWord(ord);
|
|
357
|
-
}
|
|
358
|
-
function parseOrdinalWord(word2) {
|
|
359
|
-
const map = {
|
|
360
|
-
"first": 1,
|
|
361
|
-
"second": 2,
|
|
362
|
-
"third": 3,
|
|
363
|
-
"fourth": 4,
|
|
364
|
-
"fifth": 5,
|
|
365
|
-
"sixth": 6,
|
|
366
|
-
"seventh": 7,
|
|
367
|
-
"eighth": 8,
|
|
368
|
-
"ninth": 9,
|
|
369
|
-
"tenth": 10,
|
|
370
|
-
"eleventh": 11,
|
|
371
|
-
"twelfth": 12,
|
|
372
|
-
"thirteenth": 13,
|
|
373
|
-
"fourteenth": 14,
|
|
374
|
-
"fifteenth": 15,
|
|
375
|
-
"sixteenth": 16,
|
|
376
|
-
"seventeenth": 17,
|
|
377
|
-
"eighteenth": 18,
|
|
378
|
-
"nineteenth": 19,
|
|
379
|
-
"twentieth": 20,
|
|
380
|
-
"twenty-first": 21,
|
|
381
|
-
"twenty-second": 22,
|
|
382
|
-
"twenty-third": 23,
|
|
383
|
-
"twenty-fourth": 24,
|
|
384
|
-
"twenty-fifth": 25,
|
|
385
|
-
"twenty-sixth": 26,
|
|
386
|
-
"twenty-seventh": 27,
|
|
387
|
-
"twenty-eighth": 28,
|
|
388
|
-
"twenty-ninth": 29,
|
|
389
|
-
"thirtieth": 30,
|
|
390
|
-
"thirty-first": 31
|
|
391
|
-
};
|
|
392
|
-
return map[word2.toLowerCase()] ?? 1;
|
|
393
|
-
}
|
|
394
|
-
function parseMonth(month2) {
|
|
395
|
-
const map = {
|
|
396
|
-
"january": 1,
|
|
397
|
-
"jan": 1,
|
|
398
|
-
"february": 2,
|
|
399
|
-
"feb": 2,
|
|
400
|
-
"march": 3,
|
|
401
|
-
"mar": 3,
|
|
402
|
-
"april": 4,
|
|
403
|
-
"apr": 4,
|
|
404
|
-
"may": 5,
|
|
405
|
-
"june": 6,
|
|
406
|
-
"jun": 6,
|
|
407
|
-
"july": 7,
|
|
408
|
-
"jul": 7,
|
|
409
|
-
"august": 8,
|
|
410
|
-
"aug": 8,
|
|
411
|
-
"september": 9,
|
|
412
|
-
"sep": 9,
|
|
413
|
-
"sept": 9,
|
|
414
|
-
"october": 10,
|
|
415
|
-
"oct": 10,
|
|
416
|
-
"november": 11,
|
|
417
|
-
"nov": 11,
|
|
418
|
-
"december": 12,
|
|
419
|
-
"dec": 12
|
|
420
|
-
};
|
|
421
|
-
return map[month2.toLowerCase()] ?? 1;
|
|
422
|
-
}
|
|
423
|
-
function parseMonthDayCompact(input) {
|
|
424
|
-
const lower = input.toLowerCase();
|
|
425
|
-
const monthNames = [
|
|
426
|
-
"january",
|
|
427
|
-
"february",
|
|
428
|
-
"march",
|
|
429
|
-
"april",
|
|
430
|
-
"may",
|
|
431
|
-
"june",
|
|
432
|
-
"july",
|
|
433
|
-
"august",
|
|
434
|
-
"september",
|
|
435
|
-
"october",
|
|
436
|
-
"november",
|
|
437
|
-
"december",
|
|
438
|
-
"jan",
|
|
439
|
-
"feb",
|
|
440
|
-
"mar",
|
|
441
|
-
"apr",
|
|
442
|
-
"jun",
|
|
443
|
-
"jul",
|
|
444
|
-
"aug",
|
|
445
|
-
"sep",
|
|
446
|
-
"sept",
|
|
447
|
-
"oct",
|
|
448
|
-
"nov",
|
|
449
|
-
"dec"
|
|
450
|
-
];
|
|
451
|
-
for (const name of monthNames) {
|
|
452
|
-
if (lower.startsWith(name)) {
|
|
453
|
-
const dayStr = lower.slice(name.length);
|
|
454
|
-
return { month: parseMonth(name), day: parseInt(dayStr, 10) };
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
return { month: 1, day: 1 };
|
|
458
|
-
}
|
|
459
|
-
function parseQuarter(q) {
|
|
460
|
-
const match = q.match(/[qQ]([1-4])/);
|
|
461
|
-
return match ? parseInt(match[1], 10) : 1;
|
|
462
|
-
}
|
|
463
|
-
function parseHalf(h) {
|
|
464
|
-
const match = h.match(/[hH]([1-2])/);
|
|
465
|
-
return match ? parseInt(match[1], 10) : 1;
|
|
466
|
-
}
|
|
467
|
-
var grammar = {
|
|
468
|
-
Lexer: lexer,
|
|
469
|
-
ParserRules: [
|
|
470
|
-
{ "name": "main", "symbols": ["titledExpression"], "postprocess": first },
|
|
471
|
-
{ "name": "main", "symbols": ["expression"], "postprocess": first },
|
|
472
|
-
{ "name": "titledExpression", "symbols": ["titleTextSimple", "_", lexer.has("dash") ? { type: "dash" } : dash, "_", "expression"], "postprocess": (d) => makeTitled(d[0].text, d[4], d[0].start, d[0].end) },
|
|
473
|
-
{ "name": "titledExpression", "symbols": ["titleText", lexer.has("colon") ? { type: "colon" } : colon, "_", "expression"], "postprocess": (d) => makeTitled(d[0].text, d[3], d[0].start, d[0].end) },
|
|
474
|
-
{ "name": "titledExpression", "symbols": ["titleText", "_", lexer.has("lparen") ? { type: "lparen" } : lparen, "expression", lexer.has("rparen") ? { type: "rparen" } : rparen], "postprocess": (d) => makeTitled(d[0].text, d[3], d[0].start, d[0].end) },
|
|
475
|
-
{ "name": "titledExpression", "symbols": ["titleText", "_", lexer.has("lbracket") ? { type: "lbracket" } : lbracket, "expression", lexer.has("rbracket") ? { type: "rbracket" } : rbracket], "postprocess": (d) => makeTitled(d[0].text, d[3], d[0].start, d[0].end) },
|
|
476
|
-
{ "name": "titledExpression", "symbols": ["titleText", "_", "onConnector", "_", "expression"], "postprocess": (d) => makeTitled(d[0].text, d[4], d[0].start, d[0].end) },
|
|
477
|
-
{ "name": "titledExpression", "symbols": ["titleText", "_", "atConnector", "_", "expression"], "postprocess": (d) => makeTitled(d[0].text, d[4], d[0].start, d[0].end) },
|
|
478
|
-
{ "name": "titledExpression", "symbols": ["titleText", "_", "inConnector", "_", "expression"], "postprocess": (d) => makeTitled(d[0].text, d[4], d[0].start, d[0].end) },
|
|
479
|
-
{ "name": "titledExpression", "symbols": ["titleText", "_", "forConnector", "_", "expression"], "postprocess": (d) => makeTitled(d[0].text, d[4], d[0].start, d[0].end) },
|
|
480
|
-
{ "name": "titledExpression", "symbols": ["titleText", "_", "fromConnector", "_", "expression"], "postprocess": (d) => makeTitled(d[0].text, d[4], d[0].start, d[0].end) },
|
|
481
|
-
{ "name": "titledExpression", "symbols": ["titleText", "_", "duringConnector", "_", "expression"], "postprocess": (d) => makeTitled(d[0].text, d[4], d[0].start, d[0].end) },
|
|
482
|
-
{ "name": "titledExpression", "symbols": ["titleText", "_", "startingConnector", "_", "expression"], "postprocess": (d) => makeTitled(d[0].text, d[4], d[0].start, d[0].end) },
|
|
483
|
-
{ "name": "titledExpression", "symbols": ["titleText", "_", "byConnector", "_", "expression"], "postprocess": (d) => makeTitled(d[0].text, d[4], d[0].start, d[0].end) },
|
|
484
|
-
{ "name": "titledExpression", "symbols": ["titleText", "_", lexer.has("dash") ? { type: "dash" } : dash, "_", "byConnector", "_", "expression"], "postprocess": (d) => makeTitled(d[0].text, d[6], d[0].start, d[0].end) },
|
|
485
|
-
{ "name": "titledExpression", "symbols": ["expression", "_", "postTitle"], "postprocess": (d) => makeTitled(d[2].text, d[0], d[2].start, d[2].end) },
|
|
486
|
-
{ "name": "postTitle", "symbols": [lexer.has("word") ? { type: "word" } : word], "postprocess": (d) => ({ text: d[0].value, start: d[0].offset, end: d[0].offset + d[0].text.length }) },
|
|
487
|
-
{ "name": "postTitle", "symbols": ["postTitle", "_", lexer.has("word") ? { type: "word" } : word], "postprocess": (d) => ({ text: d[0].text + " " + d[2].value, start: d[0].start, end: d[2].offset + d[2].text.length }) },
|
|
488
|
-
{ "name": "titleText", "symbols": ["titleWord"], "postprocess": (d) => ({ text: d[0].text, start: d[0].start, end: d[0].end }) },
|
|
489
|
-
{ "name": "titleText", "symbols": ["versionNumber"], "postprocess": (d) => d[0] },
|
|
490
|
-
{ "name": "titleText", "symbols": ["hyphenatedWord"], "postprocess": (d) => d[0] },
|
|
491
|
-
{ "name": "titleText", "symbols": ["titleText", "_", "titleWord"], "postprocess": (d) => ({ text: d[0].text + " " + d[2].text, start: d[0].start, end: d[2].end }) },
|
|
492
|
-
{ "name": "titleText", "symbols": ["titleText", "_", "versionNumber"], "postprocess": (d) => ({ text: d[0].text + " " + d[2].text, start: d[0].start, end: d[2].end }) },
|
|
493
|
-
{ "name": "titleText", "symbols": ["titleText", "_", "hyphenatedWord"], "postprocess": (d) => ({ text: d[0].text + " " + d[2].text, start: d[0].start, end: d[2].end }) },
|
|
494
|
-
{ "name": "titleText", "symbols": ["titleText", "_", lexer.has("dash") ? { type: "dash" } : dash, "_", "titleWord"], "postprocess": (d) => ({ text: d[0].text + " - " + d[4].text, start: d[0].start, end: d[4].end }) },
|
|
495
|
-
{ "name": "titleText", "symbols": ["titleText", "_", lexer.has("dash") ? { type: "dash" } : dash, "_", "versionNumber"], "postprocess": (d) => ({ text: d[0].text + " - " + d[4].text, start: d[0].start, end: d[4].end }) },
|
|
496
|
-
{ "name": "titleWord", "symbols": [lexer.has("word") ? { type: "word" } : word], "postprocess": (d) => ({ text: d[0].value, start: d[0].offset, end: d[0].offset + d[0].text.length }) },
|
|
497
|
-
{ "name": "titleWord", "symbols": [lexer.has("wordNumber") ? { type: "wordNumber" } : wordNumber], "postprocess": (d) => ({ text: d[0].value, start: d[0].offset, end: d[0].offset + d[0].text.length }) },
|
|
498
|
-
{ "name": "titleWord", "symbols": [lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d) => ({ text: d[0].value, start: d[0].offset, end: d[0].offset + d[0].text.length }) },
|
|
499
|
-
{ "name": "titleWord", "symbols": [lexer.has("otherKeyword") ? { type: "otherKeyword" } : otherKeyword], "postprocess": (d) => ({ text: d[0].value, start: d[0].offset, end: d[0].offset + d[0].text.length }) },
|
|
500
|
-
{ "name": "titleWord", "symbols": [lexer.has("decimal") ? { type: "decimal" } : decimal], "postprocess": (d) => ({ text: d[0].value, start: d[0].offset, end: d[0].offset + d[0].text.length }) },
|
|
501
|
-
{ "name": "titleWord", "symbols": [lexer.has("quarter") ? { type: "quarter" } : quarter], "postprocess": (d) => ({ text: d[0].value, start: d[0].offset, end: d[0].offset + d[0].text.length }) },
|
|
502
|
-
{ "name": "titleWord", "symbols": [lexer.has("half") ? { type: "half" } : half], "postprocess": (d) => ({ text: d[0].value, start: d[0].offset, end: d[0].offset + d[0].text.length }) },
|
|
503
|
-
{ "name": "titleWord", "symbols": [lexer.has("lparen") ? { type: "lparen" } : lparen, "titleText", lexer.has("rparen") ? { type: "rparen" } : rparen], "postprocess": (d) => ({ text: "(" + d[1].text + ")", start: d[0].offset, end: d[2].offset + 1 }) },
|
|
504
|
-
{ "name": "titleWord", "symbols": [lexer.has("lbracket") ? { type: "lbracket" } : lbracket, "titleText", lexer.has("rbracket") ? { type: "rbracket" } : rbracket], "postprocess": (d) => ({ text: "[" + d[1].text + "]", start: d[0].offset, end: d[2].offset + 1 }) },
|
|
505
|
-
{ "name": "titleWord", "symbols": [lexer.has("slash") ? { type: "slash" } : slash], "postprocess": (d) => ({ text: "/", start: d[0].offset, end: d[0].offset + 1 }) },
|
|
506
|
-
{ "name": "titleWord", "symbols": [lexer.has("colon") ? { type: "colon" } : colon], "postprocess": (d) => ({ text: ":", start: d[0].offset, end: d[0].offset + 1 }) },
|
|
507
|
-
{ "name": "titleWord", "symbols": ["hashNumber"], "postprocess": (d) => d[0] },
|
|
508
|
-
{ "name": "hyphenatedWord", "symbols": [lexer.has("word") ? { type: "word" } : word, lexer.has("dash") ? { type: "dash" } : dash, lexer.has("word") ? { type: "word" } : word], "postprocess": (d) => ({ text: d[0].value + "-" + d[2].value, start: d[0].offset, end: d[2].offset + d[2].text.length }) },
|
|
509
|
-
{ "name": "hyphenatedWord", "symbols": [lexer.has("word") ? { type: "word" } : word, lexer.has("dash") ? { type: "dash" } : dash, lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d) => ({ text: d[0].value + "-" + d[2].value, start: d[0].offset, end: d[2].offset + d[2].text.length }) },
|
|
510
|
-
{ "name": "hashNumber", "symbols": [lexer.has("other") ? { type: "other" } : other, lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d, _, reject) => {
|
|
511
|
-
if (d[0].value !== "#") return reject;
|
|
512
|
-
return { text: "#" + d[1].value, start: d[0].offset, end: d[1].offset + d[1].text.length };
|
|
513
|
-
} },
|
|
514
|
-
{ "name": "versionNumber", "symbols": [lexer.has("word") ? { type: "word" } : word, lexer.has("other") ? { type: "other" } : other, lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d, _, reject) => {
|
|
515
|
-
if (d[1].value !== ".") return reject;
|
|
516
|
-
return { text: d[0].value + "." + d[2].value, start: d[0].offset, end: d[2].offset + d[2].text.length };
|
|
517
|
-
} },
|
|
518
|
-
{ "name": "versionNumber", "symbols": [lexer.has("word") ? { type: "word" } : word, lexer.has("other") ? { type: "other" } : other, lexer.has("integer") ? { type: "integer" } : integer, lexer.has("other") ? { type: "other" } : other, lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d, _, reject) => {
|
|
519
|
-
if (d[1].value !== "." || d[3].value !== ".") return reject;
|
|
520
|
-
return { text: d[0].value + "." + d[2].value + "." + d[4].value, start: d[0].offset, end: d[4].offset + d[4].text.length };
|
|
521
|
-
} },
|
|
522
|
-
{ "name": "versionNumber", "symbols": [lexer.has("word") ? { type: "word" } : word, lexer.has("other") ? { type: "other" } : other, lexer.has("integer") ? { type: "integer" } : integer, lexer.has("other") ? { type: "other" } : other, lexer.has("integer") ? { type: "integer" } : integer, lexer.has("other") ? { type: "other" } : other, lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d, _, reject) => {
|
|
523
|
-
if (d[1].value !== "." || d[3].value !== "." || d[5].value !== ".") return reject;
|
|
524
|
-
return { text: d[0].value + "." + d[2].value + "." + d[4].value + "." + d[6].value, start: d[0].offset, end: d[6].offset + d[6].text.length };
|
|
525
|
-
} },
|
|
526
|
-
{ "name": "versionNumber", "symbols": [lexer.has("word") ? { type: "word" } : word, lexer.has("other") ? { type: "other" } : other, lexer.has("decimal") ? { type: "decimal" } : decimal], "postprocess": (d, _, reject) => {
|
|
527
|
-
if (d[1].value !== ".") return reject;
|
|
528
|
-
return { text: d[0].value + "." + d[2].value, start: d[0].offset, end: d[2].offset + d[2].text.length };
|
|
529
|
-
} },
|
|
530
|
-
{ "name": "versionNumber", "symbols": [lexer.has("decimal") ? { type: "decimal" } : decimal], "postprocess": (d) => ({ text: d[0].value, start: d[0].offset, end: d[0].offset + d[0].text.length }) },
|
|
531
|
-
{ "name": "titleTextSimple", "symbols": ["titleWord"], "postprocess": (d) => d[0] },
|
|
532
|
-
{ "name": "titleTextSimple", "symbols": ["hyphenatedWord"], "postprocess": (d) => d[0] },
|
|
533
|
-
{ "name": "titleTextSimple", "symbols": ["versionNumber"], "postprocess": (d) => d[0] },
|
|
534
|
-
{ "name": "titleTextSimple", "symbols": ["titleTextSimple", "_", "titleWord"], "postprocess": (d) => ({ text: d[0].text + " " + d[2].text, start: d[0].start, end: d[2].end }) },
|
|
535
|
-
{ "name": "titleTextSimple", "symbols": ["titleTextSimple", "_", "hyphenatedWord"], "postprocess": (d) => ({ text: d[0].text + " " + d[2].text, start: d[0].start, end: d[2].end }) },
|
|
536
|
-
{ "name": "titleTextSimple", "symbols": ["titleTextSimple", "_", "versionNumber"], "postprocess": (d) => ({ text: d[0].text + " " + d[2].text, start: d[0].start, end: d[2].end }) },
|
|
537
|
-
{ "name": "titleTextSimple", "symbols": ["titleTextSimple", lexer.has("slash") ? { type: "slash" } : slash, "titleWord"], "postprocess": (d) => ({ text: d[0].text + "/" + d[2].text, start: d[0].start, end: d[2].end }) },
|
|
538
|
-
{ "name": "titleTextSimple", "symbols": ["titleTextSimple", lexer.has("colon") ? { type: "colon" } : colon, "_", "titleWord"], "postprocess": (d) => ({ text: d[0].text + ": " + d[3].text, start: d[0].start, end: d[3].end }) },
|
|
539
|
-
{ "name": "expression", "symbols": ["range"], "postprocess": first },
|
|
540
|
-
{ "name": "expression", "symbols": ["span"], "postprocess": first },
|
|
541
|
-
{ "name": "expression", "symbols": ["relative"], "postprocess": first },
|
|
542
|
-
{ "name": "expression", "symbols": ["relativeDate"], "postprocess": first },
|
|
543
|
-
{ "name": "expression", "symbols": ["lastDayOfMonthExpr"], "postprocess": first },
|
|
544
|
-
{ "name": "expression", "symbols": ["date"], "postprocess": first },
|
|
545
|
-
{ "name": "expression", "symbols": ["fuzzy"], "postprocess": first },
|
|
546
|
-
{ "name": "expression", "symbols": ["forDuration"], "postprocess": first },
|
|
547
|
-
{ "name": "expression", "symbols": ["duration"], "postprocess": first },
|
|
548
|
-
{ "name": "lastDayOfMonthExpr", "symbols": ["lastRelative", "_", "dayUnit", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeDate({ month: d[6], lastDayOfMonth: true }) },
|
|
549
|
-
{ "name": "lastDayOfMonthExpr", "symbols": ["lastRelative", "_", "dayUnit", "_", "ofConnector", "_", "theConnector", "_", "monthUnit"], "postprocess": (d) => makeDate({ lastDayOfMonth: true, monthFromRef: true }) },
|
|
550
|
-
{ "name": "forDuration", "symbols": ["forConnector", "_", "duration"], "postprocess": (d) => d[2] },
|
|
551
|
-
{ "name": "range", "symbols": ["date", "_", "toConnector", "_", "date"], "postprocess": (d) => makeRange(d[0], d[4]) },
|
|
552
|
-
{ "name": "range", "symbols": ["fromConnector", "_", "date", "_", "toConnector", "_", "date"], "postprocess": (d) => makeRange(d[2], d[6]) },
|
|
553
|
-
{ "name": "range", "symbols": ["date", "_", lexer.has("dash") ? { type: "dash" } : dash, "_", "date"], "postprocess": (d) => makeRange(d[0], d[4]) },
|
|
554
|
-
{ "name": "range", "symbols": [lexer.has("monthDayCompact") ? { type: "monthDayCompact" } : monthDayCompact, lexer.has("dash") ? { type: "dash" } : dash, lexer.has("monthDayCompact") ? { type: "monthDayCompact" } : monthDayCompact], "postprocess": (d) => {
|
|
555
|
-
const start = parseMonthDayCompact(d[0].value);
|
|
556
|
-
const end = parseMonthDayCompact(d[2].value);
|
|
557
|
-
return makeRange(makeDate({ month: start.month, day: start.day }), makeDate({ month: end.month, day: end.day }));
|
|
558
|
-
} },
|
|
559
|
-
{ "name": "range", "symbols": [lexer.has("monthDayCompact") ? { type: "monthDayCompact" } : monthDayCompact, "_", lexer.has("dash") ? { type: "dash" } : dash, "_", "date"], "postprocess": (d) => {
|
|
560
|
-
const start = parseMonthDayCompact(d[0].value);
|
|
561
|
-
return makeRange(makeDate({ month: start.month, day: start.day }), d[4]);
|
|
562
|
-
} },
|
|
563
|
-
{ "name": "range", "symbols": ["date", "_", lexer.has("dash") ? { type: "dash" } : dash, "_", lexer.has("monthDayCompact") ? { type: "monthDayCompact" } : monthDayCompact], "postprocess": (d) => {
|
|
564
|
-
const end = parseMonthDayCompact(d[4].value);
|
|
565
|
-
return makeRange(d[0], makeDate({ month: end.month, day: end.day }));
|
|
566
|
-
} },
|
|
567
|
-
{ "name": "range", "symbols": ["specialDay", "_", "time", "_", "toConnector", "_", "time"], "postprocess": (d) => makeRange(makeDate({ special: d[0], time: d[2] }), makeDate({ special: d[0], time: d[6] })) },
|
|
568
|
-
{ "name": "range", "symbols": ["monthDay", "_", "time", "_", "toConnector", "_", "time"], "postprocess": (d) => makeRange({ ...d[0], time: d[2] }, { ...d[0], time: d[6] }) },
|
|
569
|
-
{ "name": "range", "symbols": ["weekday", "_", "time", "_", "toConnector", "_", "time"], "postprocess": (d) => makeRange(makeDate({ weekday: d[0], time: d[2] }), makeDate({ weekday: d[0], time: d[6] })) },
|
|
570
|
-
{ "name": "range", "symbols": ["month", "_", "dayNumber", lexer.has("dash") ? { type: "dash" } : dash, "dayNumber"], "postprocess": (d) => makeRange(makeDate({ month: d[0], day: d[2] }), makeDate({ month: d[0], day: d[4] })) },
|
|
571
|
-
{ "name": "range", "symbols": ["dayNumber", lexer.has("dash") ? { type: "dash" } : dash, "dayNumber", "_", "month"], "postprocess": (d) => makeRange(makeDate({ month: d[4], day: d[0] }), makeDate({ month: d[4], day: d[2] })) },
|
|
572
|
-
{ "name": "range", "symbols": ["betweenConnector", "_", "date", "_", "andConnector", "_", "date"], "postprocess": (d) => makeRange(d[2], d[6]) },
|
|
573
|
-
{ "name": "range", "symbols": ["date", "_", "throughConnector", "_", "date"], "postprocess": (d) => makeRange(d[0], d[4]) },
|
|
574
|
-
{ "name": "range", "symbols": ["date", "_", "untilConnector", "_", "date"], "postprocess": (d) => makeRange(d[0], d[4]) },
|
|
575
|
-
{ "name": "range", "symbols": ["untilConnector", "_", "date"], "postprocess": (d) => makeRange(makeDate({ special: "today" }), d[2]) },
|
|
576
|
-
{ "name": "range", "symbols": ["untilConnector", "_", "fuzzy"], "postprocess": (d) => makeRange(makeDate({ special: "today" }), d[2]) },
|
|
577
|
-
{ "name": "range", "symbols": ["fuzzy", "_", "toConnector", "_", "fuzzy"], "postprocess": (d) => makeRange(d[0], d[4]) },
|
|
578
|
-
{ "name": "range", "symbols": ["fromConnector", "_", "fuzzy", "_", "toConnector", "_", "fuzzy"], "postprocess": (d) => makeRange(d[2], d[6]) },
|
|
579
|
-
{ "name": "range", "symbols": ["betweenConnector", "_", "fuzzy", "_", "andConnector", "_", "fuzzy"], "postprocess": (d) => makeRange(d[2], d[6]) },
|
|
580
|
-
{ "name": "range", "symbols": ["fromConnector", "_", "date", "_", "untilConnector", "_", "date"], "postprocess": (d) => makeRange(d[2], d[6]) },
|
|
581
|
-
{ "name": "range", "symbols": ["fromConnector", "_", "specialDay", "_", "untilConnector", "_", "date"], "postprocess": (d) => makeRange(makeDate({ special: d[2] }), d[6]) },
|
|
582
|
-
{ "name": "span", "symbols": ["date", "_", "forConnector", "_", "duration"], "postprocess": (d) => makeSpan(d[0], d[4]) },
|
|
583
|
-
{ "name": "span", "symbols": ["fuzzy", "_", "forConnector", "_", "duration"], "postprocess": (d) => makeSpan(d[0], d[4]) },
|
|
584
|
-
{ "name": "span", "symbols": ["inConnector", "_", "fuzzy", "_", "forConnector", "_", "duration"], "postprocess": (d) => makeSpan(d[2], d[6]) },
|
|
585
|
-
{ "name": "span", "symbols": ["inConnector", "_", "date", "_", "forConnector", "_", "duration"], "postprocess": (d) => makeSpan(d[2], d[6]) },
|
|
586
|
-
{ "name": "span", "symbols": ["inConnector", "_", "monthForSpan", "_", "forConnector", "_", "duration"], "postprocess": (d) => makeSpan(d[2], d[6]) },
|
|
587
|
-
{ "name": "span", "symbols": ["startingConnector", "_", "date", "_", "forConnector", "_", "duration"], "postprocess": (d) => makeSpan(d[2], d[6]) },
|
|
588
|
-
{ "name": "span", "symbols": ["beginningConnector", "_", "date", "_", "forConnector", "_", "duration"], "postprocess": (d) => makeSpan(d[2], d[6]) },
|
|
589
|
-
{ "name": "span", "symbols": ["startingConnector", "_", "date"], "postprocess": (d) => makeSpan(d[2]) },
|
|
590
|
-
{ "name": "span", "symbols": ["date", "_", "startingConnector", "_", "date"], "postprocess": (d) => makeSpan(d[4], d[0]) },
|
|
591
|
-
{ "name": "span", "symbols": ["duration", "_", "startingConnector", "_", "date"], "postprocess": (d) => makeSpan(d[4], d[0]) },
|
|
592
|
-
{ "name": "span", "symbols": ["duration", "_", "fromConnector", "_", "date"], "postprocess": (d) => makeSpan(d[4], d[0]) },
|
|
593
|
-
{ "name": "span", "symbols": ["duration", "_", "inConnector", "_", "fuzzy"], "postprocess": (d) => makeSpan(d[4], d[0]) },
|
|
594
|
-
{ "name": "span", "symbols": ["duration", "_", "inConnector", "_", "theConnector", "_", "fuzzy"], "postprocess": (d) => makeSpan(d[6], d[0]) },
|
|
595
|
-
{ "name": "monthForSpan", "symbols": ["month"], "postprocess": (d) => makeFuzzy({ period: "month", month: d[0] }) },
|
|
596
|
-
{ "name": "relative", "symbols": ["lastRelative", "_", "number", "_", "unit"], "postprocess": (d) => makeRelative("past", makeDuration(d[2], d[4])) },
|
|
597
|
-
{ "name": "relative", "symbols": ["pastRelative", "_", "number", "_", "unit"], "postprocess": (d) => makeRelative("past", makeDuration(d[2], d[4])) },
|
|
598
|
-
{ "name": "relative", "symbols": ["previousRelative", "_", "number", "_", "unit"], "postprocess": (d) => makeRelative("past", makeDuration(d[2], d[4])) },
|
|
599
|
-
{ "name": "relative", "symbols": ["nextRelative", "_", "number", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(d[2], d[4])) },
|
|
600
|
-
{ "name": "relative", "symbols": ["comingRelative", "_", "number", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(d[2], d[4])) },
|
|
601
|
-
{ "name": "relative", "symbols": ["upcomingRelative", "_", "number", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(d[2], d[4])) },
|
|
602
|
-
{ "name": "relative", "symbols": ["withinConnector", "_", "duration"], "postprocess": (d) => makeRelative("future", d[2]) },
|
|
603
|
-
{ "name": "relative", "symbols": ["withinConnector", "_", "theConnector", "_", "nextRelative", "_", "duration"], "postprocess": (d) => makeRelative("future", d[6]) },
|
|
604
|
-
{ "name": "relative", "symbols": ["withinConnector", "_", "theConnector", "_", "lastRelative", "_", "duration"], "postprocess": (d) => makeRelative("past", d[6]) },
|
|
605
|
-
{ "name": "relative", "symbols": ["withinConnector", "_", "theConnector", "_", "pastRelative", "_", "duration"], "postprocess": (d) => makeRelative("past", d[6]) },
|
|
606
|
-
{ "name": "relative", "symbols": ["overConnector", "_", "theConnector", "_", "nextRelative", "_", "duration"], "postprocess": (d) => makeRelative("future", d[6]) },
|
|
607
|
-
{ "name": "relative", "symbols": ["overConnector", "_", "theConnector", "_", "lastRelative", "_", "duration"], "postprocess": (d) => makeRelative("past", d[6]) },
|
|
608
|
-
{ "name": "relative", "symbols": ["overConnector", "_", "theConnector", "_", "pastRelative", "_", "duration"], "postprocess": (d) => makeRelative("past", d[6]) },
|
|
609
|
-
{ "name": "relative", "symbols": ["overConnector", "_", "theConnector", "_", "comingRelative", "_", "duration"], "postprocess": (d) => makeRelative("future", d[6]) },
|
|
610
|
-
{ "name": "relative", "symbols": ["inConnector", "_", "theConnector", "_", "lastRelative", "_", "duration"], "postprocess": (d) => makeRelative("past", d[6]) },
|
|
611
|
-
{ "name": "relative", "symbols": ["inConnector", "_", "theConnector", "_", "nextRelative", "_", "duration"], "postprocess": (d) => makeRelative("future", d[6]) },
|
|
612
|
-
{ "name": "relative", "symbols": ["inConnector", "_", "theConnector", "_", "pastRelative", "_", "duration"], "postprocess": (d) => makeRelative("past", d[6]) },
|
|
613
|
-
{ "name": "relative", "symbols": ["inConnector", "_", "theConnector", "_", "comingRelative", "_", "duration"], "postprocess": (d) => makeRelative("future", d[6]) },
|
|
614
|
-
{ "name": "relative", "symbols": ["lastRelative", "_", "wordNumber", "_", "unit"], "postprocess": (d) => makeRelative("past", makeDuration(parseWordNumber(d[2]), d[4])) },
|
|
615
|
-
{ "name": "relative", "symbols": ["nextRelative", "_", "wordNumber", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(parseWordNumber(d[2]), d[4])) },
|
|
616
|
-
{ "name": "relative", "symbols": ["pastRelative", "_", "wordNumber", "_", "unit"], "postprocess": (d) => makeRelative("past", makeDuration(parseWordNumber(d[2]), d[4])) },
|
|
617
|
-
{ "name": "relative", "symbols": ["previousRelative", "_", "wordNumber", "_", "unit"], "postprocess": (d) => makeRelative("past", makeDuration(parseWordNumber(d[2]), d[4])) },
|
|
618
|
-
{ "name": "relative", "symbols": ["comingRelative", "_", "wordNumber", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(parseWordNumber(d[2]), d[4])) },
|
|
619
|
-
{ "name": "relative", "symbols": ["upcomingRelative", "_", "wordNumber", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(parseWordNumber(d[2]), d[4])) },
|
|
620
|
-
{ "name": "relative", "symbols": ["pastRelative", "_", "unit"], "postprocess": (d) => makeRelative("past", makeDuration(1, d[2])) },
|
|
621
|
-
{ "name": "relative", "symbols": ["previousRelative", "_", "unit"], "postprocess": (d) => makeRelative("past", makeDuration(1, d[2])) },
|
|
622
|
-
{ "name": "relative", "symbols": ["upcomingRelative", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(1, d[2])) },
|
|
623
|
-
{ "name": "relative", "symbols": ["withinConnector", "_", "theConnector", "_", "nextRelative", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(1, d[6])) },
|
|
624
|
-
{ "name": "relative", "symbols": ["withinConnector", "_", "theConnector", "_", "pastRelative", "_", "unit"], "postprocess": (d) => makeRelative("past", makeDuration(1, d[6])) },
|
|
625
|
-
{ "name": "relative", "symbols": ["overConnector", "_", "theConnector", "_", "lastRelative", "_", "unit"], "postprocess": (d) => makeRelative("past", makeDuration(1, d[6])) },
|
|
626
|
-
{ "name": "relative", "symbols": ["overConnector", "_", "theConnector", "_", "comingRelative", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(1, d[6])) },
|
|
627
|
-
{ "name": "relative", "symbols": ["overConnector", "_", "theConnector", "_", "upcomingRelative", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(1, d[6])) },
|
|
628
|
-
{ "name": "relative", "symbols": ["inConnector", "_", "theConnector", "_", "pastRelative", "_", "unit"], "postprocess": (d) => makeRelative("past", makeDuration(1, d[6])) },
|
|
629
|
-
{ "name": "relative", "symbols": ["inConnector", "_", "theConnector", "_", "comingRelative", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(1, d[6])) },
|
|
630
|
-
{ "name": "relative", "symbols": ["inConnector", "_", "theConnector", "_", "upcomingRelative", "_", "unit"], "postprocess": (d) => makeRelative("future", makeDuration(1, d[6])) },
|
|
631
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "agoConnector"], "postprocess": (d) => makeRelativeDate("past", d[0]) },
|
|
632
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "agoConnector", "_", "atConnector", "_", "time"], "postprocess": (d) => makeRelativeDate("past", d[0], void 0, d[6]) },
|
|
633
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "agoConnector", "_", "atConnector", "_", "timeWord"], "postprocess": (d) => makeRelativeDate("past", d[0], void 0, { special: d[6] }) },
|
|
634
|
-
{ "name": "relativeDate", "symbols": ["inConnector", "_", "duration"], "postprocess": (d) => makeRelativeDate("future", d[2]) },
|
|
635
|
-
{ "name": "relativeDate", "symbols": ["inConnector", "_", "duration", "_", "atConnector", "_", "time"], "postprocess": (d) => makeRelativeDate("future", d[2], void 0, d[6]) },
|
|
636
|
-
{ "name": "relativeDate", "symbols": ["inConnector", "_", "duration", "_", "atConnector", "_", "timeWord"], "postprocess": (d) => makeRelativeDate("future", d[2], void 0, { special: d[6] }) },
|
|
637
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "fromConnector", "_", "now"], "postprocess": (d) => makeRelativeDate("future", d[0]) },
|
|
638
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "fromConnector", "_", "now", "_", "atConnector", "_", "time"], "postprocess": (d) => makeRelativeDate("future", d[0], void 0, d[8]) },
|
|
639
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "fromConnector", "_", "now", "_", "atConnector", "_", "timeWord"], "postprocess": (d) => makeRelativeDate("future", d[0], void 0, { special: d[8] }) },
|
|
640
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "fromConnector", "_", "today"], "postprocess": (d) => makeRelativeDate("future", d[0], makeDate({ special: "today" })) },
|
|
641
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "fromConnector", "_", "today", "_", "atConnector", "_", "time"], "postprocess": (d) => makeRelativeDate("future", d[0], makeDate({ special: "today" }), d[8]) },
|
|
642
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "fromConnector", "_", "tomorrow"], "postprocess": (d) => makeRelativeDate("future", d[0], makeDate({ special: "tomorrow" })) },
|
|
643
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "fromConnector", "_", "tomorrow", "_", "atConnector", "_", "time"], "postprocess": (d) => makeRelativeDate("future", d[0], makeDate({ special: "tomorrow" }), d[8]) },
|
|
644
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "fromConnector", "_", "yesterday"], "postprocess": (d) => makeRelativeDate("future", d[0], makeDate({ special: "yesterday" })) },
|
|
645
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "henceConnector"], "postprocess": (d) => makeRelativeDate("future", d[0]) },
|
|
646
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "laterConnector"], "postprocess": (d) => makeRelativeDate("future", d[0]) },
|
|
647
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "beforeConnector", "_", "date"], "postprocess": (d) => makeRelativeDate("past", d[0], d[4]) },
|
|
648
|
-
{ "name": "relativeDate", "symbols": ["duration", "_", "afterConnector", "_", "date"], "postprocess": (d) => makeRelativeDate("future", d[0], d[4]) },
|
|
649
|
-
{ "name": "relativeDate", "symbols": ["theConnector", "_", "dayUnit", "_", "beforeConnector", "_", "date"], "postprocess": (d) => makeRelativeDate("past", makeDuration(1, "day"), d[6]) },
|
|
650
|
-
{ "name": "relativeDate", "symbols": ["theConnector", "_", "dayUnit", "_", "afterConnector", "_", "date"], "postprocess": (d) => makeRelativeDate("future", makeDuration(1, "day"), d[6]) },
|
|
651
|
-
{ "name": "relativeDate", "symbols": ["dayUnit", "_", "beforeConnector", "_", "date"], "postprocess": (d) => makeRelativeDate("past", makeDuration(1, "day"), d[4]) },
|
|
652
|
-
{ "name": "relativeDate", "symbols": ["dayUnit", "_", "afterConnector", "_", "date"], "postprocess": (d) => makeRelativeDate("future", makeDuration(1, "day"), d[4]) },
|
|
653
|
-
{ "name": "relativeDate", "symbols": ["wordNumber", "_", "unit", "_", "beforeConnector", "_", "date"], "postprocess": (d) => makeRelativeDate("past", makeDuration(parseWordNumber(d[0]), d[2]), d[6]) },
|
|
654
|
-
{ "name": "relativeDate", "symbols": ["wordNumber", "_", "unit", "_", "afterConnector", "_", "date"], "postprocess": (d) => makeRelativeDate("future", makeDuration(parseWordNumber(d[0]), d[2]), d[6]) },
|
|
655
|
-
{ "name": "relativeDate", "symbols": ["nextRelative", "_", "businessKeyword", "_", "dayOrDaysUnit"], "postprocess": (d) => makeRelativeDate("future", makeDuration(1, "businessDay")) },
|
|
656
|
-
{ "name": "relativeDate", "symbols": ["inConnector", "_", "number", "_", "businessKeyword", "_", "dayOrDaysUnit"], "postprocess": (d) => makeRelativeDate("future", makeDuration(d[2], "businessDay")) },
|
|
657
|
-
{ "name": "relativeDate", "symbols": ["inConnector", "_", "wordNumber", "_", "businessKeyword", "_", "dayOrDaysUnit"], "postprocess": (d) => makeRelativeDate("future", makeDuration(parseWordNumber(d[2]), "businessDay")) },
|
|
658
|
-
{ "name": "relativeDate", "symbols": ["number", "_", "businessKeyword", "_", "dayOrDaysUnit", "_", "agoConnector"], "postprocess": (d) => makeRelativeDate("past", makeDuration(d[0], "businessDay")) },
|
|
659
|
-
{ "name": "relativeDate", "symbols": ["wordNumber", "_", "businessKeyword", "_", "dayOrDaysUnit", "_", "agoConnector"], "postprocess": (d) => makeRelativeDate("past", makeDuration(parseWordNumber(d[0]), "businessDay")) },
|
|
660
|
-
{ "name": "relativeDate", "symbols": ["wordNumber", "_", "fortnightKeyword", "_", "fromConnector", "_", "now"], "postprocess": (d) => makeRelativeDate("future", makeDuration(parseWordNumber(d[0]) * 2, "week")) },
|
|
661
|
-
{ "name": "relativeDate", "symbols": ["number", "_", "fortnightKeyword", "_", "fromConnector", "_", "now"], "postprocess": (d) => makeRelativeDate("future", makeDuration(d[0] * 2, "week")) },
|
|
662
|
-
{ "name": "relativeDate", "symbols": ["fortnightKeyword", "_", "fromConnector", "_", "now"], "postprocess": (d) => makeRelativeDate("future", makeDuration(2, "week")) },
|
|
663
|
-
{ "name": "relativeDate", "symbols": ["inConnector", "_", "wordNumber", "_", "fortnightKeyword"], "postprocess": (d) => makeRelativeDate("future", makeDuration(parseWordNumber(d[2]) * 2, "week")) },
|
|
664
|
-
{ "name": "relativeDate", "symbols": ["inConnector", "_", "number", "_", "fortnightKeyword"], "postprocess": (d) => makeRelativeDate("future", makeDuration(d[2] * 2, "week")) },
|
|
665
|
-
{ "name": "relativeDate", "symbols": ["inConnector", "_", "fortnightKeyword"], "postprocess": (d) => makeRelativeDate("future", makeDuration(2, "week")) },
|
|
666
|
-
{ "name": "relativeDate", "symbols": ["wordNumber", "_", "fortnightKeyword", "_", "agoConnector"], "postprocess": (d) => makeRelativeDate("past", makeDuration(parseWordNumber(d[0]) * 2, "week")) },
|
|
667
|
-
{ "name": "relativeDate", "symbols": ["number", "_", "fortnightKeyword", "_", "agoConnector"], "postprocess": (d) => makeRelativeDate("past", makeDuration(d[0] * 2, "week")) },
|
|
668
|
-
{ "name": "relativeDate", "symbols": ["fortnightKeyword", "_", "agoConnector"], "postprocess": (d) => makeRelativeDate("past", makeDuration(2, "week")) },
|
|
669
|
-
{ "name": "fuzzy", "symbols": ["quarter"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseQuarter(d[0].value) }) },
|
|
670
|
-
{ "name": "fuzzy", "symbols": ["quarter", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseQuarter(d[0].value), year: d[2] }) },
|
|
671
|
-
{ "name": "fuzzy", "symbols": ["half"], "postprocess": (d) => makeFuzzy({ period: "half", half: parseHalf(d[0].value) }) },
|
|
672
|
-
{ "name": "fuzzy", "symbols": ["half", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "half", half: parseHalf(d[0].value), year: d[2] }) },
|
|
673
|
-
{ "name": "fuzzy", "symbols": ["earlyModifier", "_", "month"], "postprocess": (d) => makeFuzzy({ period: "month", month: d[2], modifier: "early" }) },
|
|
674
|
-
{ "name": "fuzzy", "symbols": ["midModifier", "_", "month"], "postprocess": (d) => makeFuzzy({ period: "month", month: d[2], modifier: "mid" }) },
|
|
675
|
-
{ "name": "fuzzy", "symbols": ["lateModifier", "_", "month"], "postprocess": (d) => makeFuzzy({ period: "month", month: d[2], modifier: "late" }) },
|
|
676
|
-
{ "name": "fuzzy", "symbols": ["earlyModifier", "_", "quarter"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseQuarter(d[2].value), modifier: "early" }) },
|
|
677
|
-
{ "name": "fuzzy", "symbols": ["midModifier", "_", "quarter"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseQuarter(d[2].value), modifier: "mid" }) },
|
|
678
|
-
{ "name": "fuzzy", "symbols": ["lateModifier", "_", "quarter"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseQuarter(d[2].value), modifier: "late" }) },
|
|
679
|
-
{ "name": "fuzzy", "symbols": ["earlyModifier", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "year", year: d[2], modifier: "early" }) },
|
|
680
|
-
{ "name": "fuzzy", "symbols": ["midModifier", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "year", year: d[2], modifier: "mid" }) },
|
|
681
|
-
{ "name": "fuzzy", "symbols": ["lateModifier", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "year", year: d[2], modifier: "late" }) },
|
|
682
|
-
{ "name": "fuzzy", "symbols": ["earlyModifier", "_", "yearUnit"], "postprocess": (d) => makeFuzzy({ period: "year", modifier: "early" }) },
|
|
683
|
-
{ "name": "fuzzy", "symbols": ["midModifier", "_", "yearUnit"], "postprocess": (d) => makeFuzzy({ period: "year", modifier: "mid" }) },
|
|
684
|
-
{ "name": "fuzzy", "symbols": ["lateModifier", "_", "yearUnit"], "postprocess": (d) => makeFuzzy({ period: "year", modifier: "late" }) },
|
|
685
|
-
{ "name": "fuzzy", "symbols": ["endConnector", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeFuzzy({ period: "month", month: d[4], modifier: "end" }) },
|
|
686
|
-
{ "name": "fuzzy", "symbols": ["endConnector", "_", "ofConnector", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "year", year: d[4], modifier: "end" }) },
|
|
687
|
-
{ "name": "fuzzy", "symbols": ["endConnector", "_", "ofConnector", "_", "quarter"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseQuarter(d[4].value), modifier: "end" }) },
|
|
688
|
-
{ "name": "fuzzy", "symbols": ["startConnector", "_", "ofConnector", "_", "quarter"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseQuarter(d[4].value), modifier: "start" }) },
|
|
689
|
-
{ "name": "fuzzy", "symbols": ["beginningConnector", "_", "ofConnector", "_", "quarter"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseQuarter(d[4].value), modifier: "beginning" }) },
|
|
690
|
-
{ "name": "fuzzy", "symbols": ["middleConnector", "_", "ofConnector", "_", "quarter"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseQuarter(d[4].value), modifier: "middle" }) },
|
|
691
|
-
{ "name": "fuzzy", "symbols": ["endConnector", "_", "ofConnector", "_", "theConnector", "_", "month"], "postprocess": (d) => makeFuzzy({ period: "month", month: d[6], modifier: "end" }) },
|
|
692
|
-
{ "name": "fuzzy", "symbols": ["endConnector", "_", "ofConnector", "_", "theConnector", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[6], modifier: "end" }) },
|
|
693
|
-
{ "name": "fuzzy", "symbols": ["endConnector", "_", "ofConnector", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "end" }) },
|
|
694
|
-
{ "name": "fuzzy", "symbols": ["beginningConnector", "_", "ofConnector", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "beginning" }) },
|
|
695
|
-
{ "name": "fuzzy", "symbols": ["startConnector", "_", "ofConnector", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "start" }) },
|
|
696
|
-
{ "name": "fuzzy", "symbols": ["middleConnector", "_", "ofConnector", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "middle" }) },
|
|
697
|
-
{ "name": "fuzzy", "symbols": ["beginningConnector", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeFuzzy({ period: "month", month: d[4], modifier: "beginning" }) },
|
|
698
|
-
{ "name": "fuzzy", "symbols": ["beginningConnector", "_", "ofConnector", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "year", year: d[4], modifier: "beginning" }) },
|
|
699
|
-
{ "name": "fuzzy", "symbols": ["startConnector", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeFuzzy({ period: "month", month: d[4], modifier: "start" }) },
|
|
700
|
-
{ "name": "fuzzy", "symbols": ["startConnector", "_", "ofConnector", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "year", year: d[4], modifier: "start" }) },
|
|
701
|
-
{ "name": "fuzzy", "symbols": ["middleConnector", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeFuzzy({ period: "month", month: d[4], modifier: "middle" }) },
|
|
702
|
-
{ "name": "fuzzy", "symbols": ["middleConnector", "_", "ofConnector", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "year", year: d[4], modifier: "middle" }) },
|
|
703
|
-
{ "name": "fuzzy", "symbols": ["season"], "postprocess": (d) => makeFuzzy({ period: "season", season: d[0] }) },
|
|
704
|
-
{ "name": "fuzzy", "symbols": ["season", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "season", season: d[0], year: d[2] }) },
|
|
705
|
-
{ "name": "fuzzy", "symbols": ["earlyModifier", "_", "season"], "postprocess": (d) => makeFuzzy({ period: "season", season: d[2], modifier: "early" }) },
|
|
706
|
-
{ "name": "fuzzy", "symbols": ["midModifier", "_", "season"], "postprocess": (d) => makeFuzzy({ period: "season", season: d[2], modifier: "mid" }) },
|
|
707
|
-
{ "name": "fuzzy", "symbols": ["lateModifier", "_", "season"], "postprocess": (d) => makeFuzzy({ period: "season", season: d[2], modifier: "late" }) },
|
|
708
|
-
{ "name": "fuzzy", "symbols": ["nextRelative", "_", "season"], "postprocess": (d) => makeFuzzy({ period: "season", season: d[2], relative: "next" }) },
|
|
709
|
-
{ "name": "fuzzy", "symbols": ["lastRelative", "_", "season"], "postprocess": (d) => makeFuzzy({ period: "season", season: d[2], relative: "last" }) },
|
|
710
|
-
{ "name": "fuzzy", "symbols": ["thisRelative", "_", "season"], "postprocess": (d) => makeFuzzy({ period: "season", season: d[2], relative: "this" }) },
|
|
711
|
-
{ "name": "fuzzy", "symbols": ["ordinalWord", "_", "quarter", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseOrdinalWord(d[0]), year: d[4] }) },
|
|
712
|
-
{ "name": "fuzzy", "symbols": ["ordinalWord", "_", "quarter"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseOrdinalWord(d[0]) }) },
|
|
713
|
-
{ "name": "fuzzy", "symbols": ["ordinalWord", "_", "half", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "half", half: parseOrdinalWord(d[0]), year: d[4] }) },
|
|
714
|
-
{ "name": "fuzzy", "symbols": ["ordinalWord", "_", "half"], "postprocess": (d) => makeFuzzy({ period: "half", half: parseOrdinalWord(d[0]) }) },
|
|
715
|
-
{ "name": "fuzzy", "symbols": ["aroundConnector", "_", "date"], "postprocess": (d) => makeFuzzy({ ...d[2], period: "around" }) },
|
|
716
|
-
{ "name": "fuzzy", "symbols": ["aboutConnector", "_", "date"], "postprocess": (d) => makeFuzzy({ ...d[2], period: "around" }) },
|
|
717
|
-
{ "name": "fuzzy", "symbols": ["roughlyConnector", "_", "date"], "postprocess": (d) => makeFuzzy({ ...d[2], period: "around" }) },
|
|
718
|
-
{ "name": "fuzzy", "symbols": ["approximatelyConnector", "_", "date"], "postprocess": (d) => makeFuzzy({ ...d[2], period: "around" }) },
|
|
719
|
-
{ "name": "fuzzy", "symbols": ["aroundConnector", "_", "fuzzy"], "postprocess": (d) => d[2] },
|
|
720
|
-
{ "name": "fuzzy", "symbols": ["aboutConnector", "_", "fuzzy"], "postprocess": (d) => d[2] },
|
|
721
|
-
{ "name": "fuzzy", "symbols": ["roughlyConnector", "_", "fuzzy"], "postprocess": (d) => d[2] },
|
|
722
|
-
{ "name": "fuzzy", "symbols": ["approximatelyConnector", "_", "fuzzy"], "postprocess": (d) => d[2] },
|
|
723
|
-
{ "name": "fuzzy", "symbols": ["sometimeConnector", "_", "inConnector", "_", "fuzzy"], "postprocess": (d) => d[4] },
|
|
724
|
-
{ "name": "fuzzy", "symbols": ["sometimeConnector", "_", "inConnector", "_", "month"], "postprocess": (d) => makeFuzzy({ period: "month", month: d[4] }) },
|
|
725
|
-
{ "name": "fuzzy", "symbols": ["sometimeConnector", "_", "nextRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], relative: "next" }) },
|
|
726
|
-
{ "name": "fuzzy", "symbols": ["sometimeConnector", "_", "lastRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], relative: "last" }) },
|
|
727
|
-
{ "name": "fuzzy", "symbols": ["sometimeConnector", "_", "thisRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], relative: "this" }) },
|
|
728
|
-
{ "name": "fuzzy", "symbols": ["theConnector", "_", "lastRelative", "_", "unit", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeFuzzy({ period: "month", month: d[8], modifier: "late" }) },
|
|
729
|
-
{ "name": "fuzzy", "symbols": ["theConnector", "_", "ordinalWord", "_", "unit", "_", "ofConnector", "_", "month"], "postprocess": (d, _, reject) => {
|
|
730
|
-
const ord = d[2].toLowerCase();
|
|
731
|
-
if (ord === "first") return makeFuzzy({ period: "month", month: d[8], modifier: "early" });
|
|
732
|
-
return reject;
|
|
733
|
-
} },
|
|
734
|
-
{ "name": "fuzzy", "symbols": ["ordinalWord", "_", "quarterUnit"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseOrdinalWord(d[0]) }) },
|
|
735
|
-
{ "name": "fuzzy", "symbols": ["ordinal", "_", "quarterUnit"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseOrdinal(d[0]) }) },
|
|
736
|
-
{ "name": "fuzzy", "symbols": ["ordinalWord", "_", "quarterUnit", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseOrdinalWord(d[0]), year: d[4] }) },
|
|
737
|
-
{ "name": "fuzzy", "symbols": ["ordinalWord", "_", "quarterUnit", "_", "ofConnector", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseOrdinalWord(d[0]), year: d[6] }) },
|
|
738
|
-
{ "name": "fuzzy", "symbols": ["quarter", "_", "ofConnector", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "quarter", quarter: parseQuarter(d[0].value), year: d[4] }) },
|
|
739
|
-
{ "name": "fuzzy", "symbols": ["ordinalWord", "_", "halfWord", "_", "ofConnector", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "half", half: parseOrdinalWord(d[0]), year: d[6] }) },
|
|
740
|
-
{ "name": "fuzzy", "symbols": ["earlyModifier", "_", "nextRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "early", relative: "next" }) },
|
|
741
|
-
{ "name": "fuzzy", "symbols": ["midModifier", "_", "nextRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "mid", relative: "next" }) },
|
|
742
|
-
{ "name": "fuzzy", "symbols": ["lateModifier", "_", "nextRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "late", relative: "next" }) },
|
|
743
|
-
{ "name": "fuzzy", "symbols": ["earlyModifier", "_", "lastRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "early", relative: "last" }) },
|
|
744
|
-
{ "name": "fuzzy", "symbols": ["midModifier", "_", "lastRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "mid", relative: "last" }) },
|
|
745
|
-
{ "name": "fuzzy", "symbols": ["lateModifier", "_", "lastRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "late", relative: "last" }) },
|
|
746
|
-
{ "name": "fuzzy", "symbols": ["earlyModifier", "_", "thisRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "early", relative: "this" }) },
|
|
747
|
-
{ "name": "fuzzy", "symbols": ["midModifier", "_", "thisRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "mid", relative: "this" }) },
|
|
748
|
-
{ "name": "fuzzy", "symbols": ["lateModifier", "_", "thisRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "late", relative: "this" }) },
|
|
749
|
-
{ "name": "fuzzy", "symbols": ["beginningConnector", "_", "ofConnector", "_", "theConnector", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[6], modifier: "beginning" }) },
|
|
750
|
-
{ "name": "fuzzy", "symbols": ["middleConnector", "_", "ofConnector", "_", "theConnector", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[6], modifier: "middle" }) },
|
|
751
|
-
{ "name": "fuzzy", "symbols": ["lastRelative", "_", "unit", "_", "ofConnector", "_", "month"], "postprocess": (d, _, reject) => {
|
|
752
|
-
if (d[2].toLowerCase() === "day" || d[2].toLowerCase() === "days") return reject;
|
|
753
|
-
return makeFuzzy({ period: "month", month: d[6], modifier: "late" });
|
|
754
|
-
} },
|
|
755
|
-
{ "name": "fuzzy", "symbols": ["ordinalWord", "_", "unit", "_", "ofConnector", "_", "month"], "postprocess": (d, _, reject) => {
|
|
756
|
-
if (d[2].toLowerCase() === "day" || d[2].toLowerCase() === "days") return reject;
|
|
757
|
-
return makeFuzzy({ period: "month", month: d[6], modifier: parseOrdinalWord(d[0]) <= 2 ? "early" : parseOrdinalWord(d[0]) >= 4 ? "late" : "mid" });
|
|
758
|
-
} },
|
|
759
|
-
{ "name": "fuzzy", "symbols": ["weekendKeyword"], "postprocess": (d) => makeFuzzy({ period: "weekend", relative: "this" }) },
|
|
760
|
-
{ "name": "fuzzy", "symbols": ["theConnector", "_", "weekendKeyword"], "postprocess": (d) => makeFuzzy({ period: "weekend", relative: "this" }) },
|
|
761
|
-
{ "name": "fuzzy", "symbols": ["thisRelative", "_", "weekendKeyword"], "postprocess": (d) => makeFuzzy({ period: "weekend", relative: "this" }) },
|
|
762
|
-
{ "name": "fuzzy", "symbols": ["nextRelative", "_", "weekendKeyword"], "postprocess": (d) => makeFuzzy({ period: "weekend", relative: "next" }) },
|
|
763
|
-
{ "name": "fuzzy", "symbols": ["lastRelative", "_", "weekendKeyword"], "postprocess": (d) => makeFuzzy({ period: "weekend", relative: "last" }) },
|
|
764
|
-
{ "name": "fuzzy", "symbols": ["tonightKeyword"], "postprocess": (d) => makeFuzzy({ period: "tonight" }) },
|
|
765
|
-
{ "name": "fuzzy", "symbols": ["nightKeyword"], "postprocess": (d) => makeFuzzy({ period: "night" }) },
|
|
766
|
-
{ "name": "fuzzy", "symbols": ["lastRelative", "_", "nightKeyword"], "postprocess": (d) => makeFuzzy({ period: "night", relative: "last" }) },
|
|
767
|
-
{ "name": "fuzzy", "symbols": ["tomorrow", "_", "nightKeyword"], "postprocess": (d) => makeFuzzy({ period: "night", relative: "tomorrow" }) },
|
|
768
|
-
{ "name": "fuzzy", "symbols": ["weekday", "_", "nightKeyword"], "postprocess": (d) => makeFuzzy({ period: "night", weekday: d[0] }) },
|
|
769
|
-
{ "name": "fuzzy", "symbols": ["laterKeyword", "_", "today"], "postprocess": (d) => makeFuzzy({ period: "day", modifier: "later" }) },
|
|
770
|
-
{ "name": "fuzzy", "symbols": ["earlierKeyword", "_", "today"], "postprocess": (d) => makeFuzzy({ period: "day", modifier: "earlier" }) },
|
|
771
|
-
{ "name": "fuzzy", "symbols": ["laterKeyword", "_", "thisRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "later", relative: "this" }) },
|
|
772
|
-
{ "name": "fuzzy", "symbols": ["earlierKeyword", "_", "thisRelative", "_", "unit"], "postprocess": (d) => makeFuzzy({ period: d[4], modifier: "earlier", relative: "this" }) },
|
|
773
|
-
{ "name": "fuzzy", "symbols": ["weekKeyword", "_", "number"], "postprocess": (d) => makeFuzzy({ period: "weekNumber", weekNumber: d[2] }) },
|
|
774
|
-
{ "name": "fuzzy", "symbols": ["weekKeyword", "_", "number", "_", "year"], "postprocess": (d) => makeFuzzy({ period: "weekNumber", weekNumber: d[2], year: d[4] }) },
|
|
775
|
-
{ "name": "fuzzy", "symbols": ["theConnector", "_", "weekKeyword", "_", "ofConnector", "_", "date"], "postprocess": (d) => makeFuzzy({ period: "weekOf", baseDate: d[6] }) },
|
|
776
|
-
{ "name": "duration", "symbols": ["number", "_", "unit"], "postprocess": (d) => makeDuration(d[0], d[2]) },
|
|
777
|
-
{ "name": "duration", "symbols": ["wordNumber", "_", "unit"], "postprocess": (d) => makeDuration(parseWordNumber(d[0]), d[2]) },
|
|
778
|
-
{ "name": "duration", "symbols": ["abbreviatedDuration"], "postprocess": (d) => d[0] },
|
|
779
|
-
{ "name": "duration", "symbols": ["halfWord", "_", "wordNumber", "_", "unit"], "postprocess": (d) => {
|
|
780
|
-
const word2 = d[2].toLowerCase();
|
|
781
|
-
if (word2 === "a" || word2 === "an") {
|
|
782
|
-
return makeDuration(0.5, d[4]);
|
|
783
|
-
}
|
|
784
|
-
return makeDuration(parseWordNumber(d[2]) + 0.5, d[4]);
|
|
785
|
-
} },
|
|
786
|
-
{ "name": "duration", "symbols": ["number", "_", "andConnector", "_", "halfWord", "_", "unit"], "postprocess": (d) => makeDuration(d[0] + 0.5, d[6]) },
|
|
787
|
-
{ "name": "duration", "symbols": ["wordNumber", "_", "andConnector", "_", "halfWord", "_", "unit"], "postprocess": (d) => makeDuration(parseWordNumber(d[0]) + 0.5, d[6]) },
|
|
788
|
-
{ "name": "duration", "symbols": ["wordNumber", "_", "andConnector", "_", "wordNumber", "_", "halfWord", "_", "unit"], "postprocess": (d) => makeDuration(parseWordNumber(d[0]) + 0.5, d[8]) },
|
|
789
|
-
{ "name": "duration", "symbols": ["wordNumber", "_", "unit", "_", "andConnector", "_", "wordNumber", "_", "halfWord"], "postprocess": (d) => makeDuration(parseWordNumber(d[0]) + 0.5, d[2]) },
|
|
790
|
-
{ "name": "duration", "symbols": ["halfWord", "_", "unit"], "postprocess": (d) => makeDuration(0.5, d[2]) },
|
|
791
|
-
{ "name": "duration", "symbols": ["duration", "_", "andConnector", "_", "duration"], "postprocess": (d) => ({ ...d[0], combined: [d[0], d[4]] }) },
|
|
792
|
-
{ "name": "duration", "symbols": ["duration", "_", lexer.has("comma") ? { type: "comma" } : comma, "_", "duration"], "postprocess": (d) => ({ ...d[0], combined: [d[0], d[4]] }) },
|
|
793
|
-
{ "name": "duration", "symbols": ["duration", "_", lexer.has("comma") ? { type: "comma" } : comma, "_", "andConnector", "_", "duration"], "postprocess": (d) => ({ ...d[0], combined: [d[0], d[6]] }) },
|
|
794
|
-
{ "name": "duration", "symbols": ["duration", "_", "duration"], "postprocess": (d) => ({ ...d[0], combined: [d[0], d[2]] }) },
|
|
795
|
-
{ "name": "abbreviatedDuration", "symbols": [lexer.has("abbreviatedDuration") ? { type: "abbreviatedDuration" } : abbreviatedDuration], "postprocess": (d) => {
|
|
796
|
-
const match = d[0].value.match(/^(\d+)(mo|w|d|h|m|s|y)$/);
|
|
797
|
-
if (!match) return null;
|
|
798
|
-
const value = parseInt(match[1], 10);
|
|
799
|
-
const unitMap = { w: "week", d: "day", h: "hour", m: "minute", mo: "month", s: "second", y: "year" };
|
|
800
|
-
return makeDuration(value, unitMap[match[2]]);
|
|
801
|
-
} },
|
|
802
|
-
{ "name": "date", "symbols": ["specialDay"], "postprocess": (d) => makeDate({ special: d[0] }) },
|
|
803
|
-
{ "name": "date", "symbols": ["ordinalWeekdayOfMonth"], "postprocess": first },
|
|
804
|
-
{ "name": "date", "symbols": ["relativeWeekday"], "postprocess": first },
|
|
805
|
-
{ "name": "date", "symbols": ["weekday"], "postprocess": (d) => makeDate({ weekday: d[0] }) },
|
|
806
|
-
{ "name": "date", "symbols": ["monthDayYear"], "postprocess": first },
|
|
807
|
-
{ "name": "date", "symbols": ["monthDay"], "postprocess": first },
|
|
808
|
-
{ "name": "date", "symbols": ["monthDayCompact"], "postprocess": first },
|
|
809
|
-
{ "name": "date", "symbols": ["monthYear"], "postprocess": first },
|
|
810
|
-
{ "name": "date", "symbols": ["dateFormat"], "postprocess": first },
|
|
811
|
-
{ "name": "date", "symbols": ["relativePeriod"], "postprocess": first },
|
|
812
|
-
{ "name": "date", "symbols": ["complexDate"], "postprocess": first },
|
|
813
|
-
{ "name": "date", "symbols": ["dateWithTime"], "postprocess": first },
|
|
814
|
-
{ "name": "date", "symbols": ["relativeMonth"], "postprocess": first },
|
|
815
|
-
{ "name": "date", "symbols": ["monthOnly"], "postprocess": first },
|
|
816
|
-
{ "name": "date", "symbols": ["yearOnly"], "postprocess": first },
|
|
817
|
-
{ "name": "date", "symbols": ["timeOnly"], "postprocess": first },
|
|
818
|
-
{ "name": "date", "symbols": ["dayOnly"], "postprocess": first },
|
|
819
|
-
{ "name": "date", "symbols": ["eodCobDate"], "postprocess": first },
|
|
820
|
-
{ "name": "monthDayCompact", "symbols": [lexer.has("monthDayCompact") ? { type: "monthDayCompact" } : monthDayCompact], "postprocess": (d) => {
|
|
821
|
-
const parsed = parseMonthDayCompact(d[0].value);
|
|
822
|
-
return makeDate({ month: parsed.month, day: parsed.day });
|
|
823
|
-
} },
|
|
824
|
-
{ "name": "monthOnly", "symbols": ["month"], "postprocess": (d) => makeDate({ month: d[0], day: 1, monthOnly: true }) },
|
|
825
|
-
{ "name": "relativeMonth", "symbols": ["nextRelative", "_", "month"], "postprocess": (d) => makeDate({ month: d[2], day: 1, monthOnly: true, relativeMonth: "next" }) },
|
|
826
|
-
{ "name": "relativeMonth", "symbols": ["lastRelative", "_", "month"], "postprocess": (d) => makeDate({ month: d[2], day: 1, monthOnly: true, relativeMonth: "last" }) },
|
|
827
|
-
{ "name": "relativeMonth", "symbols": ["thisRelative", "_", "month"], "postprocess": (d) => makeDate({ month: d[2], day: 1, monthOnly: true, relativeMonth: "this" }) },
|
|
828
|
-
{ "name": "monthYear", "symbols": ["month", "_", "year"], "postprocess": (d) => makeDate({ month: d[0], year: d[2], day: 1, monthOnly: true }) },
|
|
829
|
-
{ "name": "yearOnly", "symbols": ["year"], "postprocess": (d, _, reject) => {
|
|
830
|
-
const year = d[0];
|
|
831
|
-
if (year < 1900 || year > 2100) return reject;
|
|
832
|
-
return makeDate({ year, month: 1, day: 1, yearOnly: true });
|
|
833
|
-
} },
|
|
834
|
-
{ "name": "timeOnly", "symbols": ["time"], "postprocess": (d) => makeDate({ time: d[0], timeOnly: true }) },
|
|
835
|
-
{ "name": "timeOnly", "symbols": ["timeWord"], "postprocess": (d) => makeDate({ time: { special: d[0] }, timeOnly: true }) },
|
|
836
|
-
{ "name": "dayOnly", "symbols": ["theConnector", "_", "dayNumber"], "postprocess": (d) => makeDate({ day: d[2], dayOnly: true }) },
|
|
837
|
-
{ "name": "dayOnly", "symbols": ["onConnector", "_", "theConnector", "_", "dayNumber"], "postprocess": (d) => makeDate({ day: d[4], dayOnly: true }) },
|
|
838
|
-
{ "name": "eodCobDate", "symbols": ["eodKeyword"], "postprocess": (d) => makeDate({ special: "today", time: { hour: 23, minute: 59 } }) },
|
|
839
|
-
{ "name": "eodCobDate", "symbols": ["cobKeyword"], "postprocess": (d) => makeDate({ special: "today", time: { hour: 17, minute: 0 } }) },
|
|
840
|
-
{ "name": "eodCobDate", "symbols": ["eodKeyword", "_", "weekday"], "postprocess": (d) => makeDate({ weekday: d[2], time: { hour: 23, minute: 59 } }) },
|
|
841
|
-
{ "name": "eodCobDate", "symbols": ["cobKeyword", "_", "weekday"], "postprocess": (d) => makeDate({ weekday: d[2], time: { hour: 17, minute: 0 } }) },
|
|
842
|
-
{ "name": "eodCobDate", "symbols": ["eodKeyword", "_", "specialDay"], "postprocess": (d) => makeDate({ special: d[2], time: { hour: 23, minute: 59 } }) },
|
|
843
|
-
{ "name": "eodCobDate", "symbols": ["cobKeyword", "_", "specialDay"], "postprocess": (d) => makeDate({ special: d[2], time: { hour: 17, minute: 0 } }) },
|
|
844
|
-
{ "name": "eodCobDate", "symbols": ["endConnector", "_", "ofConnector", "_", "dayUnit", "_", "specialDay"], "postprocess": (d) => makeDate({ special: d[6], time: { hour: 23, minute: 59 } }) },
|
|
845
|
-
{ "name": "eodCobDate", "symbols": ["closeKeyword", "_", "ofConnector", "_", "businessKeyword", "_", "weekday"], "postprocess": (d) => makeDate({ weekday: d[6], time: { hour: 17, minute: 0 } }) },
|
|
846
|
-
{ "name": "eodCobDate", "symbols": ["closeKeyword", "_", "ofConnector", "_", "businessKeyword", "_", "specialDay"], "postprocess": (d) => makeDate({ special: d[6], time: { hour: 17, minute: 0 } }) },
|
|
847
|
-
{ "name": "specialDay", "symbols": ["today"], "postprocess": (d) => "today" },
|
|
848
|
-
{ "name": "specialDay", "symbols": ["tomorrow"], "postprocess": (d) => "tomorrow" },
|
|
849
|
-
{ "name": "specialDay", "symbols": ["yesterday"], "postprocess": (d) => "yesterday" },
|
|
850
|
-
{ "name": "specialDay", "symbols": ["now"], "postprocess": (d) => "now" },
|
|
851
|
-
{ "name": "specialDay", "symbols": ["theConnector", "_", "dayUnit", "_", "afterConnector", "_", "tomorrow"], "postprocess": (d) => "dayAfterTomorrow" },
|
|
852
|
-
{ "name": "specialDay", "symbols": ["dayUnit", "_", "afterConnector", "_", "tomorrow"], "postprocess": (d) => "dayAfterTomorrow" },
|
|
853
|
-
{ "name": "specialDay", "symbols": ["theConnector", "_", "dayUnit", "_", "beforeConnector", "_", "yesterday"], "postprocess": (d) => "dayBeforeYesterday" },
|
|
854
|
-
{ "name": "specialDay", "symbols": ["dayUnit", "_", "beforeConnector", "_", "yesterday"], "postprocess": (d) => "dayBeforeYesterday" },
|
|
855
|
-
{ "name": "dayUnit", "symbols": [lexer.has("unit") ? { type: "unit" } : unit], "postprocess": (d, _, reject) => d[0].value === "day" ? d[0] : reject },
|
|
856
|
-
{ "name": "dayOrDaysUnit", "symbols": [lexer.has("unit") ? { type: "unit" } : unit], "postprocess": (d, _, reject) => d[0].value === "day" || d[0].value === "days" ? d[0] : reject },
|
|
857
|
-
{ "name": "relativeWeekday", "symbols": ["nextRelative", "_", "weekday"], "postprocess": (d) => makeDate({ weekday: d[2], relative: "next" }) },
|
|
858
|
-
{ "name": "relativeWeekday", "symbols": ["lastRelative", "_", "weekday"], "postprocess": (d) => makeDate({ weekday: d[2], relative: "last" }) },
|
|
859
|
-
{ "name": "relativeWeekday", "symbols": ["thisRelative", "_", "weekday"], "postprocess": (d) => makeDate({ weekday: d[2], relative: "this" }) },
|
|
860
|
-
{ "name": "relativeWeekday", "symbols": ["comingRelative", "_", "weekday"], "postprocess": (d) => makeDate({ weekday: d[2], relative: "next" }) },
|
|
861
|
-
{ "name": "relativeWeekday", "symbols": ["previousRelative", "_", "weekday"], "postprocess": (d) => makeDate({ weekday: d[2], relative: "last" }) },
|
|
862
|
-
{ "name": "relativePeriod", "symbols": ["nextRelative", "_", "unit"], "postprocess": (d) => makeDate({ relative: "next", period: d[2] }) },
|
|
863
|
-
{ "name": "relativePeriod", "symbols": ["lastRelative", "_", "unit"], "postprocess": (d) => makeDate({ relative: "last", period: d[2] }) },
|
|
864
|
-
{ "name": "relativePeriod", "symbols": ["thisRelative", "_", "unit"], "postprocess": (d) => makeDate({ relative: "this", period: d[2] }) },
|
|
865
|
-
{ "name": "monthDay", "symbols": ["month", "_", "dayNumber"], "postprocess": (d) => makeDate({ month: d[0], day: d[2] }) },
|
|
866
|
-
{ "name": "monthDay", "symbols": ["dayNumber", "_", "month"], "postprocess": (d) => makeDate({ month: d[2], day: d[0] }) },
|
|
867
|
-
{ "name": "monthDay", "symbols": ["dayNumber", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeDate({ month: d[4], day: d[0] }) },
|
|
868
|
-
{ "name": "monthDay", "symbols": ["theConnector", "_", "dayNumber", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeDate({ month: d[6], day: d[2] }) },
|
|
869
|
-
{ "name": "monthDay", "symbols": ["month", "_", "ordinalWord"], "postprocess": (d) => makeDate({ month: d[0], day: parseOrdinalWord(d[2]) }) },
|
|
870
|
-
{ "name": "monthDay", "symbols": ["month", "_", "theConnector", "_", "dayNumber"], "postprocess": (d) => makeDate({ month: d[0], day: d[4] }) },
|
|
871
|
-
{ "name": "ordinalWeekdayOfMonth", "symbols": ["ordinalWord", "_", "weekday", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeDate({ ordinalWeekday: parseOrdinalWord(d[0]), weekday: d[2], month: d[6] }) },
|
|
872
|
-
{ "name": "ordinalWeekdayOfMonth", "symbols": ["lastRelative", "_", "weekday", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeDate({ ordinalWeekday: -1, weekday: d[2], month: d[6] }) },
|
|
873
|
-
{ "name": "ordinalWeekdayOfMonth", "symbols": ["ordinalWord", "_", "weekday", "_", "ofConnector", "_", "theConnector", "_", "monthUnit"], "postprocess": (d) => makeDate({ ordinalWeekday: parseOrdinalWord(d[0]), weekday: d[2], monthFromRef: true }) },
|
|
874
|
-
{ "name": "ordinalWeekdayOfMonth", "symbols": ["lastRelative", "_", "weekday", "_", "ofConnector", "_", "theConnector", "_", "monthUnit"], "postprocess": (d) => makeDate({ ordinalWeekday: -1, weekday: d[2], monthFromRef: true }) },
|
|
875
|
-
{ "name": "ordinalWeekdayOfMonth", "symbols": ["ordinalWord", "_", "dayUnit", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeDate({ month: d[6], day: parseOrdinalWord(d[0]) }) },
|
|
876
|
-
{ "name": "ordinalWeekdayOfMonth", "symbols": ["lastRelative", "_", "dayUnit", "_", "ofConnector", "_", "month"], "postprocess": (d) => makeDate({ month: d[6], day: -1, lastDayOfMonth: true }) },
|
|
877
|
-
{ "name": "ordinalWeekdayOfMonth", "symbols": ["lastRelative", "_", "dayUnit", "_", "ofConnector", "_", "theConnector", "_", "monthUnit"], "postprocess": (d) => makeDate({ lastDayOfMonth: true, monthFromRef: true }) },
|
|
878
|
-
{ "name": "ordinalWeekdayOfMonth", "symbols": ["ordinalWord", "_", "dayUnit", "_", "ofConnector", "_", "nextRelative", "_", "monthUnit"], "postprocess": (d) => makeDate({ ordinalWeekday: parseOrdinalWord(d[0]), dayOfMonth: true, nextMonth: true }) },
|
|
879
|
-
{ "name": "monthDayYear", "symbols": ["monthDay", "_", "year"], "postprocess": (d) => ({ ...d[0], year: d[2] }) },
|
|
880
|
-
{ "name": "monthDayYear", "symbols": ["monthDay", lexer.has("comma") ? { type: "comma" } : comma, "_", "year"], "postprocess": (d) => ({ ...d[0], year: d[3] }) },
|
|
881
|
-
{ "name": "dateFormat", "symbols": [lexer.has("integer") ? { type: "integer" } : integer, lexer.has("dash") ? { type: "dash" } : dash, lexer.has("integer") ? { type: "integer" } : integer, lexer.has("dash") ? { type: "dash" } : dash, lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d) => {
|
|
882
|
-
const parts = [parseInt(d[0].value, 10), parseInt(d[2].value, 10), parseInt(d[4].value, 10)];
|
|
883
|
-
if (parts[0] > 1e3) {
|
|
884
|
-
return makeDate({ year: parts[0], month: parts[1], day: parts[2] });
|
|
885
|
-
}
|
|
886
|
-
return makeDate({ formatParts: parts, separator: "-" });
|
|
887
|
-
} },
|
|
888
|
-
{ "name": "dateFormat", "symbols": [lexer.has("integer") ? { type: "integer" } : integer, lexer.has("slash") ? { type: "slash" } : slash, lexer.has("integer") ? { type: "integer" } : integer, lexer.has("slash") ? { type: "slash" } : slash, lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d) => {
|
|
889
|
-
const parts = [parseInt(d[0].value, 10), parseInt(d[2].value, 10), parseInt(d[4].value, 10)];
|
|
890
|
-
if (parts[0] > 1e3) {
|
|
891
|
-
return makeDate({ year: parts[0], month: parts[1], day: parts[2] });
|
|
892
|
-
}
|
|
893
|
-
return makeDate({ formatParts: parts, separator: "/" });
|
|
894
|
-
} },
|
|
895
|
-
{ "name": "dateWithTime", "symbols": ["date", "_", "atConnector", "_", "time"], "postprocess": (d) => ({ ...d[0], time: d[4] }) },
|
|
896
|
-
{ "name": "dateWithTime", "symbols": ["date", "_", "atConnector", "_", "timeWord"], "postprocess": (d) => ({ ...d[0], time: { special: d[4] } }) },
|
|
897
|
-
{ "name": "dateWithTime", "symbols": ["time", "_", "date"], "postprocess": (d) => ({ ...d[2], time: d[0] }) },
|
|
898
|
-
{ "name": "dateWithTime", "symbols": ["timeWord", "_", "date"], "postprocess": (d) => ({ ...d[2], time: { special: d[0] } }) },
|
|
899
|
-
{ "name": "dateWithTime", "symbols": ["date", "_", "time"], "postprocess": (d) => ({ ...d[0], time: d[2] }) },
|
|
900
|
-
{ "name": "dateWithTime", "symbols": ["timeWord", "_", "onConnector", "_", "date"], "postprocess": (d) => ({ ...d[4], time: { special: d[0] } }) },
|
|
901
|
-
{ "name": "dateWithTime", "symbols": ["timeWord", "_", "onConnector", "_", "weekday"], "postprocess": (d) => makeDate({ weekday: d[4], time: { special: d[0] } }) },
|
|
902
|
-
{ "name": "dateWithTime", "symbols": ["midnight", "_", "tonightKeyword"], "postprocess": (d) => makeDate({ special: "tonight", time: { special: "midnight" } }) },
|
|
903
|
-
{ "name": "complexDate", "symbols": ["nextRelative", "_", "unit", "_", "weekday", "_", "time"], "postprocess": (d) => makeDate({ relative: "next", period: d[2], weekday: d[4], time: d[6] }) },
|
|
904
|
-
{ "name": "complexDate", "symbols": ["nextRelative", "_", "unit", "_", "weekday"], "postprocess": (d) => makeDate({ relative: "next", period: d[2], weekday: d[4] }) },
|
|
905
|
-
{ "name": "complexDate", "symbols": ["lastRelative", "_", "unit", "_", "weekday", "_", "time"], "postprocess": (d) => makeDate({ relative: "last", period: d[2], weekday: d[4], time: d[6] }) },
|
|
906
|
-
{ "name": "complexDate", "symbols": ["lastRelative", "_", "unit", "_", "weekday"], "postprocess": (d) => makeDate({ relative: "last", period: d[2], weekday: d[4] }) },
|
|
907
|
-
{ "name": "complexDate", "symbols": ["thisRelative", "_", "unit", "_", "weekday", "_", "time"], "postprocess": (d) => makeDate({ relative: "this", period: d[2], weekday: d[4], time: d[6] }) },
|
|
908
|
-
{ "name": "complexDate", "symbols": ["thisRelative", "_", "unit", "_", "weekday"], "postprocess": (d) => makeDate({ relative: "this", period: d[2], weekday: d[4] }) },
|
|
909
|
-
{ "name": "time", "symbols": [lexer.has("time") ? { type: "time" } : time], "postprocess": (d) => {
|
|
910
|
-
const parts = d[0].value.split(":");
|
|
911
|
-
return { hour: parseInt(parts[0], 10), minute: parseInt(parts[1], 10) };
|
|
912
|
-
} },
|
|
913
|
-
{ "name": "time", "symbols": [lexer.has("time") ? { type: "time" } : time, "_", lexer.has("ampm") ? { type: "ampm" } : ampm], "postprocess": (d) => {
|
|
914
|
-
const parts = d[0].value.split(":");
|
|
915
|
-
let hour = parseInt(parts[0], 10);
|
|
916
|
-
if (d[2].value === "pm" && hour !== 12) hour += 12;
|
|
917
|
-
if (d[2].value === "am" && hour === 12) hour = 0;
|
|
918
|
-
return { hour, minute: parseInt(parts[1], 10) };
|
|
919
|
-
} },
|
|
920
|
-
{ "name": "time", "symbols": [lexer.has("time") ? { type: "time" } : time, lexer.has("ampm") ? { type: "ampm" } : ampm], "postprocess": (d) => {
|
|
921
|
-
const parts = d[0].value.split(":");
|
|
922
|
-
let hour = parseInt(parts[0], 10);
|
|
923
|
-
if (d[1].value === "pm" && hour !== 12) hour += 12;
|
|
924
|
-
if (d[1].value === "am" && hour === 12) hour = 0;
|
|
925
|
-
return { hour, minute: parseInt(parts[1], 10) };
|
|
926
|
-
} },
|
|
927
|
-
{ "name": "time", "symbols": [lexer.has("integer") ? { type: "integer" } : integer, "_", lexer.has("ampm") ? { type: "ampm" } : ampm], "postprocess": (d) => {
|
|
928
|
-
let hour = parseInt(d[0].value, 10);
|
|
929
|
-
if (d[2].value === "pm" && hour !== 12) hour += 12;
|
|
930
|
-
if (d[2].value === "am" && hour === 12) hour = 0;
|
|
931
|
-
return { hour, minute: 0 };
|
|
932
|
-
} },
|
|
933
|
-
{ "name": "time", "symbols": [lexer.has("integer") ? { type: "integer" } : integer, lexer.has("ampm") ? { type: "ampm" } : ampm], "postprocess": (d) => {
|
|
934
|
-
let hour = parseInt(d[0].value, 10);
|
|
935
|
-
if (d[1].value === "pm" && hour !== 12) hour += 12;
|
|
936
|
-
if (d[1].value === "am" && hour === 12) hour = 0;
|
|
937
|
-
return { hour, minute: 0 };
|
|
938
|
-
} },
|
|
939
|
-
{ "name": "time", "symbols": ["quarterKeyword", "_", "pastConnector", "_", "hourNumber"], "postprocess": (d) => ({ hour: d[4], minute: 15 }) },
|
|
940
|
-
{ "name": "time", "symbols": ["quarterKeyword", "_", "pastConnector", "_", "hourNumber", lexer.has("ampm") ? { type: "ampm" } : ampm], "postprocess": (d) => {
|
|
941
|
-
let hour = d[4];
|
|
942
|
-
if (d[5].value === "pm" && hour !== 12) hour += 12;
|
|
943
|
-
if (d[5].value === "am" && hour === 12) hour = 0;
|
|
944
|
-
return { hour, minute: 15 };
|
|
945
|
-
} },
|
|
946
|
-
{ "name": "time", "symbols": ["halfWord", "_", "pastConnector", "_", "hourNumber"], "postprocess": (d) => ({ hour: d[4], minute: 30 }) },
|
|
947
|
-
{ "name": "time", "symbols": ["halfWord", "_", "pastConnector", "_", "hourNumber", lexer.has("ampm") ? { type: "ampm" } : ampm], "postprocess": (d) => {
|
|
948
|
-
let hour = d[4];
|
|
949
|
-
if (d[5].value === "pm" && hour !== 12) hour += 12;
|
|
950
|
-
if (d[5].value === "am" && hour === 12) hour = 0;
|
|
951
|
-
return { hour, minute: 30 };
|
|
952
|
-
} },
|
|
953
|
-
{ "name": "time", "symbols": ["quarterKeyword", "_", "toConnector", "_", "hourNumber"], "postprocess": (d) => ({ hour: d[4] - 1, minute: 45 }) },
|
|
954
|
-
{ "name": "time", "symbols": ["quarterKeyword", "_", "toConnector", "_", "hourNumber", lexer.has("ampm") ? { type: "ampm" } : ampm], "postprocess": (d) => {
|
|
955
|
-
let hour = d[4];
|
|
956
|
-
if (d[5].value === "pm" && hour !== 12) hour += 12;
|
|
957
|
-
if (d[5].value === "am" && hour === 12) hour = 0;
|
|
958
|
-
return { hour: hour - 1, minute: 45 };
|
|
959
|
-
} },
|
|
960
|
-
{ "name": "time", "symbols": ["number", "_", "pastConnector", "_", "hourNumber"], "postprocess": (d) => ({ hour: d[4], minute: d[0] }) },
|
|
961
|
-
{ "name": "time", "symbols": ["number", "_", "pastConnector", "_", "hourNumber", lexer.has("ampm") ? { type: "ampm" } : ampm], "postprocess": (d) => {
|
|
962
|
-
let hour = d[4];
|
|
963
|
-
if (d[5].value === "pm" && hour !== 12) hour += 12;
|
|
964
|
-
if (d[5].value === "am" && hour === 12) hour = 0;
|
|
965
|
-
return { hour, minute: d[0] };
|
|
966
|
-
} },
|
|
967
|
-
{ "name": "time", "symbols": ["number", "_", "toConnector", "_", "hourNumber"], "postprocess": (d) => ({ hour: d[4] - 1, minute: 60 - d[0] }) },
|
|
968
|
-
{ "name": "time", "symbols": ["number", "_", "toConnector", "_", "hourNumber", lexer.has("ampm") ? { type: "ampm" } : ampm], "postprocess": (d) => {
|
|
969
|
-
let hour = d[4];
|
|
970
|
-
if (d[5].value === "pm" && hour !== 12) hour += 12;
|
|
971
|
-
if (d[5].value === "am" && hour === 12) hour = 0;
|
|
972
|
-
return { hour: hour - 1, minute: 60 - d[0] };
|
|
973
|
-
} },
|
|
974
|
-
{ "name": "time", "symbols": ["number", "_", "toConnector", "_", "noon"], "postprocess": (d) => ({ hour: 11, minute: 60 - d[0] }) },
|
|
975
|
-
{ "name": "time", "symbols": ["number", "_", "toConnector", "_", "midnight"], "postprocess": (d) => ({ hour: 23, minute: 60 - d[0] }) },
|
|
976
|
-
{ "name": "time", "symbols": ["quarterKeyword", "_", "toConnector", "_", "noon"], "postprocess": (d) => ({ hour: 11, minute: 45 }) },
|
|
977
|
-
{ "name": "time", "symbols": ["quarterKeyword", "_", "toConnector", "_", "midnight"], "postprocess": (d) => ({ hour: 23, minute: 45 }) },
|
|
978
|
-
{ "name": "timeWord", "symbols": ["noon"], "postprocess": (d) => "noon" },
|
|
979
|
-
{ "name": "timeWord", "symbols": ["midnight"], "postprocess": (d) => "midnight" },
|
|
980
|
-
{ "name": "number", "symbols": [lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d) => parseInt(d[0].value, 10) },
|
|
981
|
-
{ "name": "number", "symbols": [lexer.has("decimal") ? { type: "decimal" } : decimal], "postprocess": (d) => parseFloat(d[0].value) },
|
|
982
|
-
{ "name": "year", "symbols": [lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d, _, reject) => {
|
|
983
|
-
const val = parseInt(d[0].value, 10);
|
|
984
|
-
if (val >= 1900 && val <= 2100) return val;
|
|
985
|
-
return reject;
|
|
986
|
-
} },
|
|
987
|
-
{ "name": "dayNumber", "symbols": [lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d, _, reject) => {
|
|
988
|
-
const val = parseInt(d[0].value, 10);
|
|
989
|
-
if (val < 1 || val > 31) return reject;
|
|
990
|
-
return val;
|
|
991
|
-
} },
|
|
992
|
-
{ "name": "dayNumber", "symbols": [lexer.has("ordinal") ? { type: "ordinal" } : ordinal], "postprocess": (d) => parseOrdinal(d[0].value) },
|
|
993
|
-
{ "name": "month", "symbols": [lexer.has("month") ? { type: "month" } : month], "postprocess": (d) => parseMonth(d[0].value) },
|
|
994
|
-
{ "name": "weekday", "symbols": [lexer.has("weekday") ? { type: "weekday" } : weekday], "postprocess": (d) => d[0].value },
|
|
995
|
-
{ "name": "quarter", "symbols": [lexer.has("quarter") ? { type: "quarter" } : quarter], "postprocess": first },
|
|
996
|
-
{ "name": "half", "symbols": [lexer.has("half") ? { type: "half" } : half], "postprocess": first },
|
|
997
|
-
{ "name": "season", "symbols": [lexer.has("season") ? { type: "season" } : season], "postprocess": (d) => d[0].value },
|
|
998
|
-
{ "name": "unit", "symbols": [lexer.has("unit") ? { type: "unit" } : unit], "postprocess": (d) => d[0].value },
|
|
999
|
-
{ "name": "quarterUnit", "symbols": [lexer.has("unit") ? { type: "unit" } : unit], "postprocess": (d, _, reject) => {
|
|
1000
|
-
const val = d[0].value.toLowerCase();
|
|
1001
|
-
if (val === "quarter" || val === "quarters") return val;
|
|
1002
|
-
return reject;
|
|
1003
|
-
} },
|
|
1004
|
-
{ "name": "halfUnit", "symbols": [lexer.has("unit") ? { type: "unit" } : unit], "postprocess": (d, _, reject) => {
|
|
1005
|
-
const val = d[0].value.toLowerCase();
|
|
1006
|
-
if (val === "half") return val;
|
|
1007
|
-
return reject;
|
|
1008
|
-
} },
|
|
1009
|
-
{ "name": "yearUnit", "symbols": [lexer.has("unit") ? { type: "unit" } : unit], "postprocess": (d, _, reject) => {
|
|
1010
|
-
const val = d[0].value.toLowerCase();
|
|
1011
|
-
if (val === "year" || val === "years" || val === "yr" || val === "yrs") return val;
|
|
1012
|
-
return reject;
|
|
1013
|
-
} },
|
|
1014
|
-
{ "name": "monthUnit", "symbols": [lexer.has("unit") ? { type: "unit" } : unit], "postprocess": (d, _, reject) => {
|
|
1015
|
-
const val = d[0].value.toLowerCase();
|
|
1016
|
-
if (val === "month" || val === "months" || val === "mo" || val === "mos") return val;
|
|
1017
|
-
return reject;
|
|
1018
|
-
} },
|
|
1019
|
-
{ "name": "wordNumber", "symbols": [lexer.has("wordNumber") ? { type: "wordNumber" } : wordNumber], "postprocess": (d) => d[0].value },
|
|
1020
|
-
{ "name": "ordinalWord", "symbols": [lexer.has("ordinalWord") ? { type: "ordinalWord" } : ordinalWord], "postprocess": (d) => d[0].value },
|
|
1021
|
-
{ "name": "ordinalWord", "symbols": [lexer.has("unit") ? { type: "unit" } : unit], "postprocess": (d, _, reject) => {
|
|
1022
|
-
if (d[0].value === "second") return "second";
|
|
1023
|
-
return reject;
|
|
1024
|
-
} },
|
|
1025
|
-
{ "name": "ordinal", "symbols": [lexer.has("ordinal") ? { type: "ordinal" } : ordinal], "postprocess": (d) => d[0].value },
|
|
1026
|
-
{ "name": "halfWord", "symbols": [lexer.has("halfWord") ? { type: "halfWord" } : halfWord], "postprocess": (d) => d[0].value },
|
|
1027
|
-
{ "name": "toConnector", "symbols": [lexer.has("kw_to") ? { type: "kw_to" } : kw_to], "postprocess": first },
|
|
1028
|
-
{ "name": "fromConnector", "symbols": [lexer.has("kw_from") ? { type: "kw_from" } : kw_from], "postprocess": first },
|
|
1029
|
-
{ "name": "forConnector", "symbols": [lexer.has("kw_for") ? { type: "kw_for" } : kw_for], "postprocess": first },
|
|
1030
|
-
{ "name": "inConnector", "symbols": [lexer.has("kw_in") ? { type: "kw_in" } : kw_in], "postprocess": first },
|
|
1031
|
-
{ "name": "onConnector", "symbols": [lexer.has("kw_on") ? { type: "kw_on" } : kw_on], "postprocess": first },
|
|
1032
|
-
{ "name": "atConnector", "symbols": [lexer.has("kw_at") ? { type: "kw_at" } : kw_at], "postprocess": first },
|
|
1033
|
-
{ "name": "ofConnector", "symbols": [lexer.has("kw_of") ? { type: "kw_of" } : kw_of], "postprocess": first },
|
|
1034
|
-
{ "name": "theConnector", "symbols": [lexer.has("kw_the") ? { type: "kw_the" } : kw_the], "postprocess": first },
|
|
1035
|
-
{ "name": "andConnector", "symbols": [lexer.has("kw_and") ? { type: "kw_and" } : kw_and], "postprocess": first },
|
|
1036
|
-
{ "name": "betweenConnector", "symbols": [lexer.has("kw_between") ? { type: "kw_between" } : kw_between], "postprocess": first },
|
|
1037
|
-
{ "name": "throughConnector", "symbols": [lexer.has("kw_through") ? { type: "kw_through" } : kw_through], "postprocess": first },
|
|
1038
|
-
{ "name": "untilConnector", "symbols": [lexer.has("kw_until") ? { type: "kw_until" } : kw_until], "postprocess": first },
|
|
1039
|
-
{ "name": "withinConnector", "symbols": [lexer.has("kw_within") ? { type: "kw_within" } : kw_within], "postprocess": first },
|
|
1040
|
-
{ "name": "overConnector", "symbols": [lexer.has("kw_over") ? { type: "kw_over" } : kw_over], "postprocess": first },
|
|
1041
|
-
{ "name": "duringConnector", "symbols": [lexer.has("kw_during") ? { type: "kw_during" } : kw_during], "postprocess": first },
|
|
1042
|
-
{ "name": "startingConnector", "symbols": [lexer.has("kw_starting") ? { type: "kw_starting" } : kw_starting], "postprocess": first },
|
|
1043
|
-
{ "name": "byConnector", "symbols": [lexer.has("kw_by") ? { type: "kw_by" } : kw_by], "postprocess": first },
|
|
1044
|
-
{ "name": "aroundConnector", "symbols": [lexer.has("kw_around") ? { type: "kw_around" } : kw_around], "postprocess": first },
|
|
1045
|
-
{ "name": "aboutConnector", "symbols": [lexer.has("kw_about") ? { type: "kw_about" } : kw_about], "postprocess": first },
|
|
1046
|
-
{ "name": "roughlyConnector", "symbols": [lexer.has("kw_roughly") ? { type: "kw_roughly" } : kw_roughly], "postprocess": first },
|
|
1047
|
-
{ "name": "approximatelyConnector", "symbols": [lexer.has("kw_approximately") ? { type: "kw_approximately" } : kw_approximately], "postprocess": first },
|
|
1048
|
-
{ "name": "sometimeConnector", "symbols": [lexer.has("kw_sometime") ? { type: "kw_sometime" } : kw_sometime], "postprocess": first },
|
|
1049
|
-
{ "name": "afterConnector", "symbols": [lexer.has("kw_after") ? { type: "kw_after" } : kw_after], "postprocess": first },
|
|
1050
|
-
{ "name": "beforeConnector", "symbols": [lexer.has("kw_before") ? { type: "kw_before" } : kw_before], "postprocess": first },
|
|
1051
|
-
{ "name": "endConnector", "symbols": [lexer.has("kw_end") ? { type: "kw_end" } : kw_end], "postprocess": first },
|
|
1052
|
-
{ "name": "beginningConnector", "symbols": [lexer.has("kw_beginning") ? { type: "kw_beginning" } : kw_beginning], "postprocess": first },
|
|
1053
|
-
{ "name": "startConnector", "symbols": [lexer.has("kw_start") ? { type: "kw_start" } : kw_start], "postprocess": first },
|
|
1054
|
-
{ "name": "middleConnector", "symbols": [lexer.has("kw_middle") ? { type: "kw_middle" } : kw_middle], "postprocess": first },
|
|
1055
|
-
{ "name": "agoConnector", "symbols": [lexer.has("kw_ago") ? { type: "kw_ago" } : kw_ago], "postprocess": first },
|
|
1056
|
-
{ "name": "henceConnector", "symbols": [lexer.has("otherKeyword") ? { type: "otherKeyword" } : otherKeyword], "postprocess": (d, _, reject) => d[0].value === "hence" ? d[0] : reject },
|
|
1057
|
-
{ "name": "laterConnector", "symbols": [lexer.has("otherKeyword") ? { type: "otherKeyword" } : otherKeyword], "postprocess": (d, _, reject) => d[0].value === "later" ? d[0] : reject },
|
|
1058
|
-
{ "name": "earlyModifier", "symbols": [lexer.has("kw_early") ? { type: "kw_early" } : kw_early], "postprocess": first },
|
|
1059
|
-
{ "name": "midModifier", "symbols": [lexer.has("kw_mid") ? { type: "kw_mid" } : kw_mid], "postprocess": first },
|
|
1060
|
-
{ "name": "lateModifier", "symbols": [lexer.has("kw_late") ? { type: "kw_late" } : kw_late], "postprocess": first },
|
|
1061
|
-
{ "name": "nextRelative", "symbols": [lexer.has("kw_next") ? { type: "kw_next" } : kw_next], "postprocess": first },
|
|
1062
|
-
{ "name": "lastRelative", "symbols": [lexer.has("kw_last") ? { type: "kw_last" } : kw_last], "postprocess": first },
|
|
1063
|
-
{ "name": "thisRelative", "symbols": [lexer.has("kw_this") ? { type: "kw_this" } : kw_this], "postprocess": first },
|
|
1064
|
-
{ "name": "previousRelative", "symbols": [lexer.has("kw_previous") ? { type: "kw_previous" } : kw_previous], "postprocess": first },
|
|
1065
|
-
{ "name": "comingRelative", "symbols": [lexer.has("kw_coming") ? { type: "kw_coming" } : kw_coming], "postprocess": first },
|
|
1066
|
-
{ "name": "upcomingRelative", "symbols": [lexer.has("kw_upcoming") ? { type: "kw_upcoming" } : kw_upcoming], "postprocess": first },
|
|
1067
|
-
{ "name": "pastRelative", "symbols": [lexer.has("kw_past") ? { type: "kw_past" } : kw_past], "postprocess": first },
|
|
1068
|
-
{ "name": "today", "symbols": [lexer.has("kw_today") ? { type: "kw_today" } : kw_today], "postprocess": first },
|
|
1069
|
-
{ "name": "tomorrow", "symbols": [lexer.has("kw_tomorrow") ? { type: "kw_tomorrow" } : kw_tomorrow], "postprocess": first },
|
|
1070
|
-
{ "name": "yesterday", "symbols": [lexer.has("kw_yesterday") ? { type: "kw_yesterday" } : kw_yesterday], "postprocess": first },
|
|
1071
|
-
{ "name": "now", "symbols": [lexer.has("kw_now") ? { type: "kw_now" } : kw_now], "postprocess": first },
|
|
1072
|
-
{ "name": "noon", "symbols": [lexer.has("kw_noon") ? { type: "kw_noon" } : kw_noon], "postprocess": first },
|
|
1073
|
-
{ "name": "midnight", "symbols": [lexer.has("kw_midnight") ? { type: "kw_midnight" } : kw_midnight], "postprocess": first },
|
|
1074
|
-
{ "name": "quarterKeyword", "symbols": [lexer.has("unit") ? { type: "unit" } : unit], "postprocess": (d, _, reject) => d[0].value === "quarter" ? d[0] : reject },
|
|
1075
|
-
{ "name": "hourNumber", "symbols": [lexer.has("integer") ? { type: "integer" } : integer], "postprocess": (d, _, reject) => {
|
|
1076
|
-
const val = parseInt(d[0].value, 10);
|
|
1077
|
-
if (val < 1 || val > 12) return reject;
|
|
1078
|
-
return val;
|
|
1079
|
-
} },
|
|
1080
|
-
{ "name": "pastConnector", "symbols": [lexer.has("kw_past") ? { type: "kw_past" } : kw_past], "postprocess": first },
|
|
1081
|
-
{ "name": "weekendKeyword", "symbols": [lexer.has("kw_weekend") ? { type: "kw_weekend" } : kw_weekend], "postprocess": first },
|
|
1082
|
-
{ "name": "tonightKeyword", "symbols": [lexer.has("kw_tonight") ? { type: "kw_tonight" } : kw_tonight], "postprocess": first },
|
|
1083
|
-
{ "name": "nightKeyword", "symbols": [lexer.has("kw_night") ? { type: "kw_night" } : kw_night], "postprocess": first },
|
|
1084
|
-
{ "name": "fortnightKeyword", "symbols": [lexer.has("kw_fortnight") ? { type: "kw_fortnight" } : kw_fortnight], "postprocess": first },
|
|
1085
|
-
{ "name": "laterKeyword", "symbols": [lexer.has("otherKeyword") ? { type: "otherKeyword" } : otherKeyword], "postprocess": (d, _, reject) => d[0].value === "later" ? d[0] : reject },
|
|
1086
|
-
{ "name": "earlierKeyword", "symbols": [lexer.has("otherKeyword") ? { type: "otherKeyword" } : otherKeyword], "postprocess": (d, _, reject) => d[0].value === "earlier" ? d[0] : reject },
|
|
1087
|
-
{ "name": "weekKeyword", "symbols": [lexer.has("unit") ? { type: "unit" } : unit], "postprocess": (d, _, reject) => {
|
|
1088
|
-
const val = d[0].value.toLowerCase();
|
|
1089
|
-
if (val === "week" || val === "weeks") return d[0];
|
|
1090
|
-
return reject;
|
|
1091
|
-
} },
|
|
1092
|
-
{ "name": "businessKeyword", "symbols": [lexer.has("kw_business") ? { type: "kw_business" } : kw_business], "postprocess": first },
|
|
1093
|
-
{ "name": "eodKeyword", "symbols": [lexer.has("kw_eod") ? { type: "kw_eod" } : kw_eod], "postprocess": first },
|
|
1094
|
-
{ "name": "cobKeyword", "symbols": [lexer.has("kw_cob") ? { type: "kw_cob" } : kw_cob], "postprocess": first },
|
|
1095
|
-
{ "name": "closeKeyword", "symbols": [lexer.has("kw_close") ? { type: "kw_close" } : kw_close], "postprocess": first },
|
|
1096
|
-
{ "name": "_$ebnf$1", "symbols": [] },
|
|
1097
|
-
{ "name": "_$ebnf$1", "symbols": ["_$ebnf$1", lexer.has("ws") ? { type: "ws" } : ws], "postprocess": (d) => d[0].concat([d[1]]) },
|
|
1098
|
-
{ "name": "_", "symbols": ["_$ebnf$1"], "postprocess": nuller }
|
|
1099
|
-
],
|
|
1100
|
-
ParserStart: "main"
|
|
1101
|
-
};
|
|
1102
|
-
var grammar_default = grammar;
|
|
1103
|
-
|
|
1104
|
-
// src/utils/weekday.ts
|
|
1105
|
-
function getNextWeekday(weekday2, referenceDate) {
|
|
1106
|
-
const result = new Date(
|
|
1107
|
-
Date.UTC(
|
|
1108
|
-
referenceDate.getUTCFullYear(),
|
|
1109
|
-
referenceDate.getUTCMonth(),
|
|
1110
|
-
referenceDate.getUTCDate()
|
|
1111
|
-
)
|
|
1112
|
-
);
|
|
1113
|
-
const currentDay = result.getUTCDay();
|
|
1114
|
-
let daysToAdd = weekday2 - currentDay;
|
|
1115
|
-
if (daysToAdd <= 0) {
|
|
1116
|
-
daysToAdd += 7;
|
|
1117
|
-
}
|
|
1118
|
-
result.setUTCDate(result.getUTCDate() + daysToAdd);
|
|
1119
|
-
return result;
|
|
1120
|
-
}
|
|
1121
|
-
function getLastWeekday(weekday2, referenceDate) {
|
|
1122
|
-
const result = new Date(
|
|
1123
|
-
Date.UTC(
|
|
1124
|
-
referenceDate.getUTCFullYear(),
|
|
1125
|
-
referenceDate.getUTCMonth(),
|
|
1126
|
-
referenceDate.getUTCDate()
|
|
1127
|
-
)
|
|
1128
|
-
);
|
|
1129
|
-
const currentDay = result.getUTCDay();
|
|
1130
|
-
let daysToSubtract = currentDay - weekday2;
|
|
1131
|
-
if (daysToSubtract <= 0) {
|
|
1132
|
-
daysToSubtract += 7;
|
|
1133
|
-
}
|
|
1134
|
-
result.setUTCDate(result.getUTCDate() - daysToSubtract);
|
|
1135
|
-
return result;
|
|
1136
|
-
}
|
|
1137
|
-
function getThisWeekday(weekday2, referenceDate, weekStartsOn) {
|
|
1138
|
-
const result = new Date(
|
|
1139
|
-
Date.UTC(
|
|
1140
|
-
referenceDate.getUTCFullYear(),
|
|
1141
|
-
referenceDate.getUTCMonth(),
|
|
1142
|
-
referenceDate.getUTCDate()
|
|
1143
|
-
)
|
|
1144
|
-
);
|
|
1145
|
-
const currentDay = result.getUTCDay();
|
|
1146
|
-
const weekStart = weekStartsOn === "monday" ? 1 : 0;
|
|
1147
|
-
let daysSinceWeekStart = currentDay - weekStart;
|
|
1148
|
-
if (daysSinceWeekStart < 0) {
|
|
1149
|
-
daysSinceWeekStart += 7;
|
|
1150
|
-
}
|
|
1151
|
-
let daysToTarget = weekday2 - weekStart;
|
|
1152
|
-
if (daysToTarget < 0) {
|
|
1153
|
-
daysToTarget += 7;
|
|
1154
|
-
}
|
|
1155
|
-
const daysToMove = daysToTarget - daysSinceWeekStart;
|
|
1156
|
-
result.setUTCDate(result.getUTCDate() + daysToMove);
|
|
1157
|
-
return result;
|
|
1158
|
-
}
|
|
1159
|
-
|
|
1160
|
-
// src/utils/constants.ts
|
|
1161
|
-
var MS_PER_SECOND = 1e3;
|
|
1162
|
-
var MS_PER_MINUTE = 60 * MS_PER_SECOND;
|
|
1163
|
-
var MS_PER_HOUR = 60 * MS_PER_MINUTE;
|
|
1164
|
-
var MS_PER_DAY = 24 * MS_PER_HOUR;
|
|
1165
|
-
var MS_PER_WEEK = 7 * MS_PER_DAY;
|
|
1166
|
-
var MS_PER_MONTH = 30 * MS_PER_DAY;
|
|
1167
|
-
var MS_PER_YEAR = 365 * MS_PER_DAY;
|
|
1168
|
-
var WEEKDAY_MAP = {
|
|
1169
|
-
sunday: 0,
|
|
1170
|
-
sun: 0,
|
|
1171
|
-
monday: 1,
|
|
1172
|
-
mon: 1,
|
|
1173
|
-
tuesday: 2,
|
|
1174
|
-
tue: 2,
|
|
1175
|
-
tues: 2,
|
|
1176
|
-
wednesday: 3,
|
|
1177
|
-
wed: 3,
|
|
1178
|
-
thursday: 4,
|
|
1179
|
-
thu: 4,
|
|
1180
|
-
thur: 4,
|
|
1181
|
-
thurs: 4,
|
|
1182
|
-
friday: 5,
|
|
1183
|
-
fri: 5,
|
|
1184
|
-
saturday: 6,
|
|
1185
|
-
sat: 6
|
|
1186
|
-
};
|
|
1187
|
-
var FISCAL_START_MONTH = {
|
|
1188
|
-
january: 0,
|
|
1189
|
-
april: 3,
|
|
1190
|
-
july: 6,
|
|
1191
|
-
october: 9
|
|
1192
|
-
};
|
|
1193
|
-
|
|
1194
|
-
// src/converters/date.ts
|
|
1195
|
-
function applyTime(date, time2) {
|
|
1196
|
-
if (time2.special === "noon") {
|
|
1197
|
-
date.setUTCHours(12, 0, 0, 0);
|
|
1198
|
-
} else if (time2.special === "midnight") {
|
|
1199
|
-
date.setUTCHours(0, 0, 0, 0);
|
|
1200
|
-
} else if (time2.hour !== void 0) {
|
|
1201
|
-
date.setUTCHours(time2.hour, time2.minute ?? 0, 0, 0);
|
|
1202
|
-
}
|
|
1203
|
-
}
|
|
1204
|
-
function convertSpecialDay(node, opts) {
|
|
1205
|
-
const ref = opts.referenceDate;
|
|
1206
|
-
let date;
|
|
1207
|
-
switch (node.special) {
|
|
1208
|
-
case "today":
|
|
1209
|
-
date = new Date(
|
|
1210
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), ref.getUTCDate())
|
|
1211
|
-
);
|
|
1212
|
-
break;
|
|
1213
|
-
case "tomorrow":
|
|
1214
|
-
date = new Date(
|
|
1215
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), ref.getUTCDate() + 1)
|
|
1216
|
-
);
|
|
1217
|
-
break;
|
|
1218
|
-
case "yesterday":
|
|
1219
|
-
date = new Date(
|
|
1220
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), ref.getUTCDate() - 1)
|
|
1221
|
-
);
|
|
1222
|
-
break;
|
|
1223
|
-
case "now":
|
|
1224
|
-
date = new Date(ref);
|
|
1225
|
-
break;
|
|
1226
|
-
case "dayAfterTomorrow":
|
|
1227
|
-
date = new Date(
|
|
1228
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), ref.getUTCDate() + 2)
|
|
1229
|
-
);
|
|
1230
|
-
break;
|
|
1231
|
-
case "dayBeforeYesterday":
|
|
1232
|
-
date = new Date(
|
|
1233
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), ref.getUTCDate() - 2)
|
|
1234
|
-
);
|
|
1235
|
-
break;
|
|
1236
|
-
default:
|
|
1237
|
-
date = new Date(ref);
|
|
1238
|
-
}
|
|
1239
|
-
if (node.time) {
|
|
1240
|
-
applyTime(date, node.time);
|
|
1241
|
-
}
|
|
1242
|
-
return date;
|
|
1243
|
-
}
|
|
1244
|
-
function convertTimeOnly(node, opts) {
|
|
1245
|
-
const ref = opts.referenceDate;
|
|
1246
|
-
const date = new Date(
|
|
1247
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), ref.getUTCDate())
|
|
1248
|
-
);
|
|
1249
|
-
if (node.time) {
|
|
1250
|
-
applyTime(date, node.time);
|
|
1251
|
-
}
|
|
1252
|
-
return date;
|
|
1253
|
-
}
|
|
1254
|
-
function convertWeekday(node, opts) {
|
|
1255
|
-
const ref = opts.referenceDate;
|
|
1256
|
-
const weekdayNum = WEEKDAY_MAP[node.weekday.toLowerCase()] ?? 0;
|
|
1257
|
-
let date;
|
|
1258
|
-
if (node.period && node.period.toLowerCase() === "week") {
|
|
1259
|
-
let weekRef;
|
|
1260
|
-
switch (node.relative) {
|
|
1261
|
-
case "next":
|
|
1262
|
-
weekRef = new Date(
|
|
1263
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), ref.getUTCDate() + 7)
|
|
1264
|
-
);
|
|
1265
|
-
break;
|
|
1266
|
-
case "last":
|
|
1267
|
-
weekRef = new Date(
|
|
1268
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), ref.getUTCDate() - 7)
|
|
1269
|
-
);
|
|
1270
|
-
break;
|
|
1271
|
-
default:
|
|
1272
|
-
weekRef = ref;
|
|
1273
|
-
}
|
|
1274
|
-
date = getThisWeekday(weekdayNum, weekRef, opts.weekStartsOn);
|
|
1275
|
-
} else {
|
|
1276
|
-
switch (node.relative) {
|
|
1277
|
-
case "next":
|
|
1278
|
-
date = getNextWeekday(weekdayNum, ref);
|
|
1279
|
-
break;
|
|
1280
|
-
case "last":
|
|
1281
|
-
date = getLastWeekday(weekdayNum, ref);
|
|
1282
|
-
break;
|
|
1283
|
-
case "this":
|
|
1284
|
-
date = getThisWeekday(weekdayNum, ref, opts.weekStartsOn);
|
|
1285
|
-
break;
|
|
1286
|
-
default:
|
|
1287
|
-
date = getNextWeekday(weekdayNum, ref);
|
|
1288
|
-
}
|
|
1289
|
-
}
|
|
1290
|
-
if (node.time) {
|
|
1291
|
-
applyTime(date, node.time);
|
|
1292
|
-
}
|
|
1293
|
-
return date;
|
|
1294
|
-
}
|
|
1295
|
-
function convertDateFormat(node, opts) {
|
|
1296
|
-
const ref = opts.referenceDate;
|
|
1297
|
-
const parts = node.formatParts;
|
|
1298
|
-
if (parts.length < 3 || parts[0] === void 0 || parts[1] === void 0 || parts[2] === void 0) {
|
|
1299
|
-
return ref;
|
|
1300
|
-
}
|
|
1301
|
-
const [p0, p1, p2] = parts;
|
|
1302
|
-
let year, month2, day;
|
|
1303
|
-
if (p2 > 1e3) {
|
|
1304
|
-
if (opts.dateFormat === "intl") {
|
|
1305
|
-
day = p0;
|
|
1306
|
-
month2 = p1;
|
|
1307
|
-
year = p2;
|
|
1308
|
-
} else {
|
|
1309
|
-
if (p0 > 12 && p1 <= 12) {
|
|
1310
|
-
day = p0;
|
|
1311
|
-
month2 = p1;
|
|
1312
|
-
year = p2;
|
|
1313
|
-
} else {
|
|
1314
|
-
month2 = p0;
|
|
1315
|
-
day = p1;
|
|
1316
|
-
year = p2;
|
|
1317
|
-
}
|
|
1318
|
-
}
|
|
1319
|
-
} else {
|
|
1320
|
-
month2 = p0;
|
|
1321
|
-
day = p1;
|
|
1322
|
-
year = p2 < 100 ? p2 > 50 ? 1900 + p2 : 2e3 + p2 : p2;
|
|
1323
|
-
}
|
|
1324
|
-
return new Date(Date.UTC(year, month2 - 1, day));
|
|
1325
|
-
}
|
|
1326
|
-
function convertMonthDay(node, opts) {
|
|
1327
|
-
const ref = opts.referenceDate;
|
|
1328
|
-
let year = node.year ?? ref.getUTCFullYear();
|
|
1329
|
-
const month2 = typeof node.month === "number" ? node.month - 1 : 0;
|
|
1330
|
-
if (node.relativeMonth) {
|
|
1331
|
-
const currentMonth = ref.getUTCMonth();
|
|
1332
|
-
if (node.relativeMonth === "last") {
|
|
1333
|
-
if (month2 >= currentMonth) {
|
|
1334
|
-
year--;
|
|
1335
|
-
}
|
|
1336
|
-
} else if (node.relativeMonth === "next") {
|
|
1337
|
-
if (month2 <= currentMonth) {
|
|
1338
|
-
year++;
|
|
1339
|
-
}
|
|
1340
|
-
}
|
|
1341
|
-
} else if (node.year === void 0 && month2 < ref.getUTCMonth()) {
|
|
1342
|
-
year++;
|
|
1343
|
-
}
|
|
1344
|
-
const date = new Date(Date.UTC(year, month2, node.day));
|
|
1345
|
-
if (date.getUTCMonth() !== month2 || date.getUTCDate() !== node.day) {
|
|
1346
|
-
throw new Error("Invalid date");
|
|
1347
|
-
}
|
|
1348
|
-
if (node.time) {
|
|
1349
|
-
applyTime(date, node.time);
|
|
1350
|
-
}
|
|
1351
|
-
return date;
|
|
1352
|
-
}
|
|
1353
|
-
function convertOrdinalWeekdayOfMonth(node, opts) {
|
|
1354
|
-
const ref = opts.referenceDate;
|
|
1355
|
-
const ordinal2 = node.ordinalWeekday;
|
|
1356
|
-
const weekdayName = node.weekday.toLowerCase();
|
|
1357
|
-
const weekdayNum = WEEKDAY_MAP[weekdayName] ?? 0;
|
|
1358
|
-
let month2;
|
|
1359
|
-
let year;
|
|
1360
|
-
if (node.monthFromRef) {
|
|
1361
|
-
month2 = ref.getUTCMonth();
|
|
1362
|
-
year = ref.getUTCFullYear();
|
|
1363
|
-
} else if (node.nextMonth) {
|
|
1364
|
-
month2 = ref.getUTCMonth() + 1;
|
|
1365
|
-
year = ref.getUTCFullYear();
|
|
1366
|
-
if (month2 > 11) {
|
|
1367
|
-
month2 = 0;
|
|
1368
|
-
year++;
|
|
1369
|
-
}
|
|
1370
|
-
} else {
|
|
1371
|
-
month2 = typeof node.month === "number" ? node.month - 1 : ref.getUTCMonth();
|
|
1372
|
-
year = ref.getUTCFullYear();
|
|
1373
|
-
if (month2 < ref.getUTCMonth()) {
|
|
1374
|
-
year++;
|
|
1375
|
-
}
|
|
1376
|
-
}
|
|
1377
|
-
if (ordinal2 === -1) {
|
|
1378
|
-
const lastDay2 = new Date(Date.UTC(year, month2 + 1, 0));
|
|
1379
|
-
let day2 = lastDay2.getUTCDate();
|
|
1380
|
-
let date2 = new Date(Date.UTC(year, month2, day2));
|
|
1381
|
-
while (date2.getUTCDay() !== weekdayNum) {
|
|
1382
|
-
day2--;
|
|
1383
|
-
date2 = new Date(Date.UTC(year, month2, day2));
|
|
1384
|
-
}
|
|
1385
|
-
return date2;
|
|
1386
|
-
}
|
|
1387
|
-
let count = 0;
|
|
1388
|
-
for (let day2 = 1; day2 <= 31; day2++) {
|
|
1389
|
-
const date2 = new Date(Date.UTC(year, month2, day2));
|
|
1390
|
-
if (date2.getUTCMonth() !== month2) {
|
|
1391
|
-
break;
|
|
1392
|
-
}
|
|
1393
|
-
if (date2.getUTCDay() === weekdayNum) {
|
|
1394
|
-
count++;
|
|
1395
|
-
if (count === ordinal2) {
|
|
1396
|
-
return date2;
|
|
1397
|
-
}
|
|
1398
|
-
}
|
|
1399
|
-
}
|
|
1400
|
-
const lastDay = new Date(Date.UTC(year, month2 + 1, 0));
|
|
1401
|
-
let day = lastDay.getUTCDate();
|
|
1402
|
-
let date = new Date(Date.UTC(year, month2, day));
|
|
1403
|
-
while (date.getUTCDay() !== weekdayNum) {
|
|
1404
|
-
day--;
|
|
1405
|
-
date = new Date(Date.UTC(year, month2, day));
|
|
1406
|
-
}
|
|
1407
|
-
return date;
|
|
1408
|
-
}
|
|
1409
|
-
function convertLastDayOfMonth(node, opts) {
|
|
1410
|
-
const ref = opts.referenceDate;
|
|
1411
|
-
let month2;
|
|
1412
|
-
let year;
|
|
1413
|
-
if (node.monthFromRef) {
|
|
1414
|
-
month2 = ref.getUTCMonth();
|
|
1415
|
-
year = ref.getUTCFullYear();
|
|
1416
|
-
} else if (node.nextMonth) {
|
|
1417
|
-
month2 = ref.getUTCMonth() + 1;
|
|
1418
|
-
year = ref.getUTCFullYear();
|
|
1419
|
-
if (month2 > 11) {
|
|
1420
|
-
month2 = 0;
|
|
1421
|
-
year++;
|
|
1422
|
-
}
|
|
1423
|
-
} else {
|
|
1424
|
-
month2 = typeof node.month === "number" ? node.month - 1 : ref.getUTCMonth();
|
|
1425
|
-
year = ref.getUTCFullYear();
|
|
1426
|
-
if (month2 < ref.getUTCMonth()) {
|
|
1427
|
-
year++;
|
|
1428
|
-
}
|
|
1429
|
-
}
|
|
1430
|
-
return new Date(Date.UTC(year, month2 + 1, 0));
|
|
1431
|
-
}
|
|
1432
|
-
function convertDayOnly(node, opts) {
|
|
1433
|
-
const ref = opts.referenceDate;
|
|
1434
|
-
const day = node.day;
|
|
1435
|
-
const refDay = ref.getUTCDate();
|
|
1436
|
-
const refMonth = ref.getUTCMonth();
|
|
1437
|
-
const refYear = ref.getUTCFullYear();
|
|
1438
|
-
let month2 = refMonth;
|
|
1439
|
-
let year = refYear;
|
|
1440
|
-
if (day < refDay) {
|
|
1441
|
-
month2 = refMonth + 1;
|
|
1442
|
-
if (month2 > 11) {
|
|
1443
|
-
month2 = 0;
|
|
1444
|
-
year++;
|
|
1445
|
-
}
|
|
1446
|
-
}
|
|
1447
|
-
let date = new Date(Date.UTC(year, month2, day));
|
|
1448
|
-
while (date.getUTCDate() !== day) {
|
|
1449
|
-
month2++;
|
|
1450
|
-
if (month2 > 11) {
|
|
1451
|
-
month2 = 0;
|
|
1452
|
-
year++;
|
|
1453
|
-
}
|
|
1454
|
-
date = new Date(Date.UTC(year, month2, day));
|
|
1455
|
-
}
|
|
1456
|
-
if (node.time) {
|
|
1457
|
-
applyTime(date, node.time);
|
|
1458
|
-
}
|
|
1459
|
-
return date;
|
|
1460
|
-
}
|
|
1461
|
-
function convertRelativePeriod(node, opts) {
|
|
1462
|
-
const ref = opts.referenceDate;
|
|
1463
|
-
const period = node.period.toLowerCase();
|
|
1464
|
-
switch (period) {
|
|
1465
|
-
case "day": {
|
|
1466
|
-
const start = new Date(
|
|
1467
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), ref.getUTCDate())
|
|
1468
|
-
);
|
|
1469
|
-
if (node.relative === "next") {
|
|
1470
|
-
start.setUTCDate(start.getUTCDate() + 1);
|
|
1471
|
-
} else if (node.relative === "last") {
|
|
1472
|
-
start.setUTCDate(start.getUTCDate() - 1);
|
|
1473
|
-
}
|
|
1474
|
-
return start;
|
|
1475
|
-
}
|
|
1476
|
-
case "week": {
|
|
1477
|
-
const start = new Date(
|
|
1478
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), ref.getUTCDate())
|
|
1479
|
-
);
|
|
1480
|
-
const weekStart = opts.weekStartsOn === "monday" ? 1 : 0;
|
|
1481
|
-
const currentDay = start.getUTCDay();
|
|
1482
|
-
const daysFromStart = (currentDay - weekStart + 7) % 7;
|
|
1483
|
-
start.setUTCDate(start.getUTCDate() - daysFromStart);
|
|
1484
|
-
if (node.relative === "next") {
|
|
1485
|
-
start.setUTCDate(start.getUTCDate() + 7);
|
|
1486
|
-
} else if (node.relative === "last") {
|
|
1487
|
-
start.setUTCDate(start.getUTCDate() - 7);
|
|
1488
|
-
}
|
|
1489
|
-
return start;
|
|
1490
|
-
}
|
|
1491
|
-
case "month":
|
|
1492
|
-
if (node.relative === "next") {
|
|
1493
|
-
return new Date(
|
|
1494
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth() + 1, 1)
|
|
1495
|
-
);
|
|
1496
|
-
} else if (node.relative === "last") {
|
|
1497
|
-
return new Date(
|
|
1498
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth() - 1, 1)
|
|
1499
|
-
);
|
|
1500
|
-
}
|
|
1501
|
-
return new Date(Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), 1));
|
|
1502
|
-
case "year":
|
|
1503
|
-
if (node.relative === "next") {
|
|
1504
|
-
return new Date(Date.UTC(ref.getUTCFullYear() + 1, 0, 1));
|
|
1505
|
-
} else if (node.relative === "last") {
|
|
1506
|
-
return new Date(Date.UTC(ref.getUTCFullYear() - 1, 0, 1));
|
|
1507
|
-
}
|
|
1508
|
-
return new Date(Date.UTC(ref.getUTCFullYear(), 0, 1));
|
|
1509
|
-
default:
|
|
1510
|
-
return new Date(ref);
|
|
1511
|
-
}
|
|
1512
|
-
}
|
|
1513
|
-
function convertDateNode(node, opts) {
|
|
1514
|
-
if (node.special) {
|
|
1515
|
-
return convertSpecialDay(node, opts);
|
|
1516
|
-
}
|
|
1517
|
-
if (node.timeOnly && node.time) {
|
|
1518
|
-
return convertTimeOnly(node, opts);
|
|
1519
|
-
}
|
|
1520
|
-
if (node.ordinalWeekday !== void 0 && node.weekday !== void 0) {
|
|
1521
|
-
return convertOrdinalWeekdayOfMonth(node, opts);
|
|
1522
|
-
}
|
|
1523
|
-
if (node.weekday) {
|
|
1524
|
-
return convertWeekday(node, opts);
|
|
1525
|
-
}
|
|
1526
|
-
if (node.formatParts) {
|
|
1527
|
-
return convertDateFormat(node, opts);
|
|
1528
|
-
}
|
|
1529
|
-
if (node.month !== void 0 && node.day !== void 0) {
|
|
1530
|
-
return convertMonthDay(node, opts);
|
|
1531
|
-
}
|
|
1532
|
-
if (node.dayOnly && node.day !== void 0) {
|
|
1533
|
-
return convertDayOnly(node, opts);
|
|
1534
|
-
}
|
|
1535
|
-
if (node.lastDayOfMonth) {
|
|
1536
|
-
return convertLastDayOfMonth(node, opts);
|
|
1537
|
-
}
|
|
1538
|
-
if (node.dayOfMonth && node.nextMonth) {
|
|
1539
|
-
const ref = opts.referenceDate;
|
|
1540
|
-
let month2 = ref.getUTCMonth() + 1;
|
|
1541
|
-
let year = ref.getUTCFullYear();
|
|
1542
|
-
if (month2 > 11) {
|
|
1543
|
-
month2 = 0;
|
|
1544
|
-
year++;
|
|
1545
|
-
}
|
|
1546
|
-
const day = node.ordinalWeekday || 1;
|
|
1547
|
-
return new Date(Date.UTC(year, month2, day));
|
|
1548
|
-
}
|
|
1549
|
-
if (node.relative && node.period) {
|
|
1550
|
-
return convertRelativePeriod(node, opts);
|
|
1551
|
-
}
|
|
1552
|
-
return new Date(opts.referenceDate);
|
|
1553
|
-
}
|
|
1554
|
-
|
|
1555
|
-
// src/converters/duration.ts
|
|
1556
|
-
function durationToMs(value, unit2) {
|
|
1557
|
-
switch (unit2) {
|
|
1558
|
-
case "second":
|
|
1559
|
-
return value * MS_PER_SECOND;
|
|
1560
|
-
case "minute":
|
|
1561
|
-
return value * MS_PER_MINUTE;
|
|
1562
|
-
case "hour":
|
|
1563
|
-
return value * MS_PER_HOUR;
|
|
1564
|
-
case "day":
|
|
1565
|
-
return value * MS_PER_DAY;
|
|
1566
|
-
case "week":
|
|
1567
|
-
return value * MS_PER_WEEK;
|
|
1568
|
-
case "month":
|
|
1569
|
-
return value * MS_PER_MONTH;
|
|
1570
|
-
case "year":
|
|
1571
|
-
return value * MS_PER_YEAR;
|
|
1572
|
-
default:
|
|
1573
|
-
return 0;
|
|
1574
|
-
}
|
|
1575
|
-
}
|
|
1576
|
-
function convertDurationNode(node, parentHasHours = false) {
|
|
1577
|
-
if (node.combined && Array.isArray(node.combined)) {
|
|
1578
|
-
const hasHours = node.combined.some(
|
|
1579
|
-
(d) => d.unit === "hour"
|
|
1580
|
-
);
|
|
1581
|
-
return node.combined.reduce(
|
|
1582
|
-
(total, d) => total + convertDurationNode(d, hasHours),
|
|
1583
|
-
0
|
|
1584
|
-
);
|
|
1585
|
-
}
|
|
1586
|
-
let unit2 = node.unit;
|
|
1587
|
-
if (parentHasHours && unit2 === "month") {
|
|
1588
|
-
unit2 = "minute";
|
|
1589
|
-
}
|
|
1590
|
-
return durationToMs(node.value, unit2);
|
|
1591
|
-
}
|
|
1592
|
-
|
|
1593
|
-
// src/utils/calendar.ts
|
|
1594
|
-
function getQuarterDates(quarter2, year, fiscalYearStart) {
|
|
1595
|
-
const fiscalStartMonth = FISCAL_START_MONTH[fiscalYearStart] ?? 0;
|
|
1596
|
-
const quarterStartMonth = (fiscalStartMonth + (quarter2 - 1) * 3) % 12;
|
|
1597
|
-
let startYear = year;
|
|
1598
|
-
if (quarterStartMonth < fiscalStartMonth) {
|
|
1599
|
-
startYear++;
|
|
1600
|
-
}
|
|
1601
|
-
const start = new Date(Date.UTC(startYear, quarterStartMonth, 1));
|
|
1602
|
-
const endMonth = (quarterStartMonth + 3) % 12;
|
|
1603
|
-
let endYear = startYear;
|
|
1604
|
-
if (endMonth < quarterStartMonth) {
|
|
1605
|
-
endYear++;
|
|
1606
|
-
}
|
|
1607
|
-
const end = new Date(Date.UTC(endYear, endMonth, 0));
|
|
1608
|
-
return { start, end };
|
|
1609
|
-
}
|
|
1610
|
-
function getHalfDates(half2, year, fiscalYearStart) {
|
|
1611
|
-
const fiscalStartMonth = FISCAL_START_MONTH[fiscalYearStart] ?? 0;
|
|
1612
|
-
const halfStartMonth = (fiscalStartMonth + (half2 - 1) * 6) % 12;
|
|
1613
|
-
let startYear = year;
|
|
1614
|
-
if (halfStartMonth < fiscalStartMonth) {
|
|
1615
|
-
startYear++;
|
|
1616
|
-
}
|
|
1617
|
-
const start = new Date(Date.UTC(startYear, halfStartMonth, 1));
|
|
1618
|
-
const endMonth = (halfStartMonth + 6) % 12;
|
|
1619
|
-
let endYear = startYear;
|
|
1620
|
-
if (endMonth <= halfStartMonth) {
|
|
1621
|
-
endYear++;
|
|
1622
|
-
}
|
|
1623
|
-
const end = new Date(Date.UTC(endYear, endMonth, 0));
|
|
1624
|
-
return { start, end };
|
|
1625
|
-
}
|
|
1626
|
-
function getSeasonDates(season2, year) {
|
|
1627
|
-
switch (season2) {
|
|
1628
|
-
case "spring":
|
|
1629
|
-
return {
|
|
1630
|
-
start: new Date(Date.UTC(year, 2, 20)),
|
|
1631
|
-
end: new Date(Date.UTC(year, 5, 20))
|
|
1632
|
-
};
|
|
1633
|
-
case "summer":
|
|
1634
|
-
return {
|
|
1635
|
-
start: new Date(Date.UTC(year, 5, 21)),
|
|
1636
|
-
end: new Date(Date.UTC(year, 8, 22))
|
|
1637
|
-
};
|
|
1638
|
-
case "fall":
|
|
1639
|
-
case "autumn":
|
|
1640
|
-
return {
|
|
1641
|
-
start: new Date(Date.UTC(year, 8, 23)),
|
|
1642
|
-
end: new Date(Date.UTC(year, 11, 20))
|
|
1643
|
-
};
|
|
1644
|
-
case "winter":
|
|
1645
|
-
return {
|
|
1646
|
-
start: new Date(Date.UTC(year, 11, 21)),
|
|
1647
|
-
end: new Date(Date.UTC(year + 1, 2, 19))
|
|
1648
|
-
};
|
|
1649
|
-
default:
|
|
1650
|
-
return {
|
|
1651
|
-
start: new Date(Date.UTC(year, 0, 1)),
|
|
1652
|
-
end: new Date(Date.UTC(year, 11, 31))
|
|
1653
|
-
};
|
|
1654
|
-
}
|
|
1655
|
-
}
|
|
1656
|
-
function getModifiedPeriod(start, end, modifier) {
|
|
1657
|
-
const duration = end.getTime() - start.getTime();
|
|
1658
|
-
const third = duration / 3;
|
|
1659
|
-
const half2 = duration / 2;
|
|
1660
|
-
switch (modifier) {
|
|
1661
|
-
case "early":
|
|
1662
|
-
return {
|
|
1663
|
-
start,
|
|
1664
|
-
end: new Date(start.getTime() + third)
|
|
1665
|
-
};
|
|
1666
|
-
case "mid":
|
|
1667
|
-
case "middle":
|
|
1668
|
-
return {
|
|
1669
|
-
start: new Date(start.getTime() + third),
|
|
1670
|
-
end: new Date(start.getTime() + 2 * third)
|
|
1671
|
-
};
|
|
1672
|
-
case "late":
|
|
1673
|
-
return {
|
|
1674
|
-
start: new Date(start.getTime() + 2 * third),
|
|
1675
|
-
end
|
|
1676
|
-
};
|
|
1677
|
-
case "first":
|
|
1678
|
-
return {
|
|
1679
|
-
start,
|
|
1680
|
-
end: new Date(start.getTime() + half2)
|
|
1681
|
-
};
|
|
1682
|
-
case "second":
|
|
1683
|
-
return {
|
|
1684
|
-
start: new Date(start.getTime() + half2),
|
|
1685
|
-
end
|
|
1686
|
-
};
|
|
1687
|
-
default:
|
|
1688
|
-
return { start, end };
|
|
1689
|
-
}
|
|
1690
|
-
}
|
|
1691
|
-
|
|
1692
|
-
// src/converters/fuzzy.ts
|
|
1693
|
-
function getWeekendDates(ref, relative, opts) {
|
|
1694
|
-
const currentDay = ref.getUTCDay();
|
|
1695
|
-
const saturdayOffset = (6 - currentDay + 7) % 7;
|
|
1696
|
-
let saturday = new Date(
|
|
1697
|
-
Date.UTC(
|
|
1698
|
-
ref.getUTCFullYear(),
|
|
1699
|
-
ref.getUTCMonth(),
|
|
1700
|
-
ref.getUTCDate() + saturdayOffset
|
|
1701
|
-
)
|
|
1702
|
-
);
|
|
1703
|
-
if (relative === "next") {
|
|
1704
|
-
saturday = new Date(saturday.getTime() + MS_PER_WEEK);
|
|
1705
|
-
} else if (relative === "last") {
|
|
1706
|
-
if (currentDay === 6 || currentDay === 0) {
|
|
1707
|
-
saturday = new Date(saturday.getTime() - MS_PER_WEEK);
|
|
1708
|
-
}
|
|
1709
|
-
saturday = new Date(saturday.getTime() - MS_PER_WEEK);
|
|
1710
|
-
}
|
|
1711
|
-
const sunday = new Date(saturday.getTime() + MS_PER_DAY);
|
|
1712
|
-
const sundayEnd = new Date(
|
|
1713
|
-
Date.UTC(
|
|
1714
|
-
sunday.getUTCFullYear(),
|
|
1715
|
-
sunday.getUTCMonth(),
|
|
1716
|
-
sunday.getUTCDate(),
|
|
1717
|
-
23,
|
|
1718
|
-
59
|
|
1719
|
-
)
|
|
1720
|
-
);
|
|
1721
|
-
return { start: saturday, end: sundayEnd };
|
|
1722
|
-
}
|
|
1723
|
-
function getNightDates(ref, relative, weekday2) {
|
|
1724
|
-
let baseDate = new Date(ref);
|
|
1725
|
-
if (relative === "last") {
|
|
1726
|
-
baseDate = new Date(
|
|
1727
|
-
Date.UTC(
|
|
1728
|
-
ref.getUTCFullYear(),
|
|
1729
|
-
ref.getUTCMonth(),
|
|
1730
|
-
ref.getUTCDate() - 1
|
|
1731
|
-
)
|
|
1732
|
-
);
|
|
1733
|
-
} else if (relative === "tomorrow") {
|
|
1734
|
-
baseDate = new Date(
|
|
1735
|
-
Date.UTC(
|
|
1736
|
-
ref.getUTCFullYear(),
|
|
1737
|
-
ref.getUTCMonth(),
|
|
1738
|
-
ref.getUTCDate() + 1
|
|
1739
|
-
)
|
|
1740
|
-
);
|
|
1741
|
-
} else if (weekday2) {
|
|
1742
|
-
const targetDay = WEEKDAY_MAP[weekday2.toLowerCase()];
|
|
1743
|
-
if (targetDay !== void 0) {
|
|
1744
|
-
const currentDay = ref.getUTCDay();
|
|
1745
|
-
let daysToAdd = (targetDay - currentDay + 7) % 7;
|
|
1746
|
-
if (daysToAdd === 0) {
|
|
1747
|
-
daysToAdd = 7;
|
|
1748
|
-
}
|
|
1749
|
-
baseDate = new Date(
|
|
1750
|
-
Date.UTC(
|
|
1751
|
-
ref.getUTCFullYear(),
|
|
1752
|
-
ref.getUTCMonth(),
|
|
1753
|
-
ref.getUTCDate() + daysToAdd
|
|
1754
|
-
)
|
|
1755
|
-
);
|
|
1756
|
-
}
|
|
1757
|
-
}
|
|
1758
|
-
const start = new Date(
|
|
1759
|
-
Date.UTC(
|
|
1760
|
-
baseDate.getUTCFullYear(),
|
|
1761
|
-
baseDate.getUTCMonth(),
|
|
1762
|
-
baseDate.getUTCDate(),
|
|
1763
|
-
18,
|
|
1764
|
-
0
|
|
1765
|
-
)
|
|
1766
|
-
);
|
|
1767
|
-
const end = new Date(
|
|
1768
|
-
Date.UTC(
|
|
1769
|
-
baseDate.getUTCFullYear(),
|
|
1770
|
-
baseDate.getUTCMonth(),
|
|
1771
|
-
baseDate.getUTCDate(),
|
|
1772
|
-
23,
|
|
1773
|
-
59
|
|
1774
|
-
)
|
|
1775
|
-
);
|
|
1776
|
-
return { start, end };
|
|
1777
|
-
}
|
|
1778
|
-
function getBasePeriodDates(node, opts, year) {
|
|
1779
|
-
const ref = opts.referenceDate;
|
|
1780
|
-
if (node.period === "weekend") {
|
|
1781
|
-
return getWeekendDates(ref, node.relative || "this", opts);
|
|
1782
|
-
}
|
|
1783
|
-
if (node.period === "tonight") {
|
|
1784
|
-
return getNightDates(ref, void 0, void 0);
|
|
1785
|
-
}
|
|
1786
|
-
if (node.period === "night") {
|
|
1787
|
-
return getNightDates(ref, node.relative, node.weekday);
|
|
1788
|
-
}
|
|
1789
|
-
if (node.period === "fortnight") {
|
|
1790
|
-
const count = node.count || 1;
|
|
1791
|
-
const relative = node.relative;
|
|
1792
|
-
const twoWeeks = 14 * MS_PER_DAY;
|
|
1793
|
-
if (relative === "last") {
|
|
1794
|
-
const end2 = new Date(ref);
|
|
1795
|
-
const start2 = new Date(ref.getTime() - twoWeeks);
|
|
1796
|
-
return { start: start2, end: end2 };
|
|
1797
|
-
}
|
|
1798
|
-
const start = new Date(ref);
|
|
1799
|
-
const end = new Date(ref.getTime() + count * twoWeeks);
|
|
1800
|
-
return { start, end };
|
|
1801
|
-
}
|
|
1802
|
-
if (node.period === "quarter" && node.quarter) {
|
|
1803
|
-
return getQuarterDates(
|
|
1804
|
-
node.quarter,
|
|
1805
|
-
year,
|
|
1806
|
-
opts.fiscalYearStart
|
|
1807
|
-
);
|
|
1808
|
-
}
|
|
1809
|
-
if (node.period === "half" && node.half) {
|
|
1810
|
-
return getHalfDates(node.half, year, opts.fiscalYearStart);
|
|
1811
|
-
}
|
|
1812
|
-
if (node.period === "season" && node.season) {
|
|
1813
|
-
return getSeasonDates(node.season, year);
|
|
1814
|
-
}
|
|
1815
|
-
if (node.period === "month" && node.month !== void 0) {
|
|
1816
|
-
const month2 = typeof node.month === "number" ? node.month - 1 : 0;
|
|
1817
|
-
const start = new Date(Date.UTC(year, month2, 1));
|
|
1818
|
-
const end = new Date(Date.UTC(year, month2 + 1, 0));
|
|
1819
|
-
return { start, end };
|
|
1820
|
-
}
|
|
1821
|
-
if (node.period === "month") {
|
|
1822
|
-
const month2 = ref.getUTCMonth();
|
|
1823
|
-
const start = new Date(Date.UTC(year, month2, 1));
|
|
1824
|
-
const end = new Date(Date.UTC(year, month2 + 1, 0));
|
|
1825
|
-
return { start, end };
|
|
1826
|
-
}
|
|
1827
|
-
if (node.period === "week") {
|
|
1828
|
-
const weekStart = opts.weekStartsOn === "monday" ? 1 : 0;
|
|
1829
|
-
const currentDay = ref.getUTCDay();
|
|
1830
|
-
const daysFromStart = (currentDay - weekStart + 7) % 7;
|
|
1831
|
-
const start = new Date(
|
|
1832
|
-
Date.UTC(
|
|
1833
|
-
ref.getUTCFullYear(),
|
|
1834
|
-
ref.getUTCMonth(),
|
|
1835
|
-
ref.getUTCDate() - daysFromStart
|
|
1836
|
-
)
|
|
1837
|
-
);
|
|
1838
|
-
const end = new Date(start.getTime() + 6 * MS_PER_DAY);
|
|
1839
|
-
return { start, end };
|
|
1840
|
-
}
|
|
1841
|
-
if (node.period === "weekNumber" && node.weekNumber !== void 0) {
|
|
1842
|
-
const weekNum = node.weekNumber;
|
|
1843
|
-
const targetYear = node.year ?? ref.getUTCFullYear();
|
|
1844
|
-
const weekStart = opts.weekStartsOn === "monday" ? 1 : 0;
|
|
1845
|
-
const jan1 = new Date(Date.UTC(targetYear, 0, 1));
|
|
1846
|
-
const jan1Day = jan1.getUTCDay();
|
|
1847
|
-
const daysToFirstWeekStart = (weekStart - jan1Day + 7) % 7;
|
|
1848
|
-
const firstWeekStart = new Date(jan1.getTime() + daysToFirstWeekStart * MS_PER_DAY);
|
|
1849
|
-
const start = new Date(firstWeekStart.getTime() + (weekNum - 1) * MS_PER_WEEK);
|
|
1850
|
-
const end = new Date(start.getTime() + 6 * MS_PER_DAY);
|
|
1851
|
-
return { start, end };
|
|
1852
|
-
}
|
|
1853
|
-
if (node.period === "weekOf" && node.baseDate) {
|
|
1854
|
-
const baseDate = node.baseDate;
|
|
1855
|
-
let targetDate;
|
|
1856
|
-
if (baseDate.month !== void 0 && baseDate.day !== void 0) {
|
|
1857
|
-
const month2 = typeof baseDate.month === "number" ? baseDate.month - 1 : 0;
|
|
1858
|
-
const day = baseDate.day;
|
|
1859
|
-
const targetYear = baseDate.year ?? ref.getUTCFullYear();
|
|
1860
|
-
targetDate = new Date(Date.UTC(targetYear, month2, day));
|
|
1861
|
-
} else {
|
|
1862
|
-
targetDate = ref;
|
|
1863
|
-
}
|
|
1864
|
-
const weekStart = opts.weekStartsOn === "monday" ? 1 : 0;
|
|
1865
|
-
const currentDay = targetDate.getUTCDay();
|
|
1866
|
-
const daysFromStart = (currentDay - weekStart + 7) % 7;
|
|
1867
|
-
const start = new Date(
|
|
1868
|
-
Date.UTC(
|
|
1869
|
-
targetDate.getUTCFullYear(),
|
|
1870
|
-
targetDate.getUTCMonth(),
|
|
1871
|
-
targetDate.getUTCDate() - daysFromStart
|
|
1872
|
-
)
|
|
1873
|
-
);
|
|
1874
|
-
const end = new Date(start.getTime() + 6 * MS_PER_DAY);
|
|
1875
|
-
return { start, end };
|
|
1876
|
-
}
|
|
1877
|
-
if (node.period === "day") {
|
|
1878
|
-
const start = new Date(
|
|
1879
|
-
Date.UTC(ref.getUTCFullYear(), ref.getUTCMonth(), ref.getUTCDate())
|
|
1880
|
-
);
|
|
1881
|
-
const end = new Date(
|
|
1882
|
-
Date.UTC(
|
|
1883
|
-
ref.getUTCFullYear(),
|
|
1884
|
-
ref.getUTCMonth(),
|
|
1885
|
-
ref.getUTCDate(),
|
|
1886
|
-
23,
|
|
1887
|
-
59,
|
|
1888
|
-
59,
|
|
1889
|
-
999
|
|
1890
|
-
)
|
|
1891
|
-
);
|
|
1892
|
-
return { start, end };
|
|
1893
|
-
}
|
|
1894
|
-
if (node.period === "year") {
|
|
1895
|
-
const start = new Date(Date.UTC(year, 0, 1));
|
|
1896
|
-
const end = new Date(Date.UTC(year, 11, 31));
|
|
1897
|
-
return { start, end };
|
|
1898
|
-
}
|
|
1899
|
-
return {
|
|
1900
|
-
start: new Date(Date.UTC(year, 0, 1)),
|
|
1901
|
-
end: new Date(Date.UTC(year, 11, 31))
|
|
1902
|
-
};
|
|
1903
|
-
}
|
|
1904
|
-
function convertFuzzyNodeWithoutModifier(node, opts) {
|
|
1905
|
-
const ref = opts.referenceDate;
|
|
1906
|
-
const year = node.year ?? ref.getUTCFullYear();
|
|
1907
|
-
return getBasePeriodDates(node, opts, year);
|
|
1908
|
-
}
|
|
1909
|
-
function convertFuzzyNode(node, opts) {
|
|
1910
|
-
const ref = opts.referenceDate;
|
|
1911
|
-
let year = node.year ?? ref.getUTCFullYear();
|
|
1912
|
-
if (node.period === "quarter" && node.quarter && node.year === void 0) {
|
|
1913
|
-
const { end: qEnd } = getQuarterDates(
|
|
1914
|
-
node.quarter,
|
|
1915
|
-
year,
|
|
1916
|
-
opts.fiscalYearStart
|
|
1917
|
-
);
|
|
1918
|
-
if (qEnd < ref) {
|
|
1919
|
-
year++;
|
|
1920
|
-
}
|
|
1921
|
-
}
|
|
1922
|
-
const { start, end } = getBasePeriodDates(node, opts, year);
|
|
1923
|
-
if (node.modifier) {
|
|
1924
|
-
return getModifiedPeriod(start, end, node.modifier);
|
|
1925
|
-
}
|
|
1926
|
-
return { start, end };
|
|
1927
|
-
}
|
|
1928
|
-
|
|
1929
|
-
// src/parser.ts
|
|
1930
|
-
function getDefaultOptions(options) {
|
|
1931
|
-
return {
|
|
1932
|
-
referenceDate: options?.referenceDate ?? /* @__PURE__ */ new Date(),
|
|
1933
|
-
fiscalYearStart: options?.fiscalYearStart ?? "january",
|
|
1934
|
-
weekStartsOn: options?.weekStartsOn ?? "sunday",
|
|
1935
|
-
dateFormat: options?.dateFormat ?? "intl"
|
|
1936
|
-
};
|
|
1937
|
-
}
|
|
1938
|
-
function convertASTToResult(ast, opts, originalInput) {
|
|
1939
|
-
if (!ast || !ast.nodeType) {
|
|
1940
|
-
return null;
|
|
1941
|
-
}
|
|
1942
|
-
let title = null;
|
|
1943
|
-
let expression = ast;
|
|
1944
|
-
if (ast.nodeType === "titled") {
|
|
1945
|
-
if (originalInput && ast.titleStart !== void 0 && ast.titleEnd !== void 0) {
|
|
1946
|
-
title = originalInput.slice(ast.titleStart, ast.titleEnd).trim();
|
|
1947
|
-
} else {
|
|
1948
|
-
title = ast.title;
|
|
1949
|
-
}
|
|
1950
|
-
expression = ast.expression;
|
|
1951
|
-
}
|
|
1952
|
-
switch (expression.nodeType) {
|
|
1953
|
-
case "date": {
|
|
1954
|
-
const date = convertDateNode(expression, opts);
|
|
1955
|
-
return { type: "date", date, title };
|
|
1956
|
-
}
|
|
1957
|
-
case "duration": {
|
|
1958
|
-
const duration = convertDurationNode(expression);
|
|
1959
|
-
return { type: "duration", duration, title };
|
|
1960
|
-
}
|
|
1961
|
-
case "span": {
|
|
1962
|
-
let start;
|
|
1963
|
-
const startNode = expression.start;
|
|
1964
|
-
if (startNode.nodeType === "date") {
|
|
1965
|
-
start = convertDateNode(startNode, opts);
|
|
1966
|
-
} else if (startNode.nodeType === "fuzzy") {
|
|
1967
|
-
const fuzzy = convertFuzzyNode(startNode, opts);
|
|
1968
|
-
start = fuzzy.start;
|
|
1969
|
-
} else {
|
|
1970
|
-
start = new Date(opts.referenceDate);
|
|
1971
|
-
}
|
|
1972
|
-
let duration = 0;
|
|
1973
|
-
if (expression.duration) {
|
|
1974
|
-
duration = convertDurationNode(expression.duration);
|
|
1975
|
-
}
|
|
1976
|
-
const end = new Date(start.getTime() + duration);
|
|
1977
|
-
return { type: "span", start, end, duration, title };
|
|
1978
|
-
}
|
|
1979
|
-
case "range": {
|
|
1980
|
-
let start;
|
|
1981
|
-
let end;
|
|
1982
|
-
const startNode = expression.start;
|
|
1983
|
-
const endNode = expression.end;
|
|
1984
|
-
if (startNode.nodeType === "date") {
|
|
1985
|
-
start = convertDateNode(startNode, opts);
|
|
1986
|
-
} else if (startNode.nodeType === "fuzzy") {
|
|
1987
|
-
const fuzzy = convertFuzzyNode(startNode, opts);
|
|
1988
|
-
start = fuzzy.start;
|
|
1989
|
-
} else {
|
|
1990
|
-
start = new Date(opts.referenceDate);
|
|
1991
|
-
}
|
|
1992
|
-
if (endNode.nodeType === "date") {
|
|
1993
|
-
end = convertDateNode(endNode, opts);
|
|
1994
|
-
if (endNode.monthOnly) {
|
|
1995
|
-
const month2 = typeof endNode.month === "number" ? endNode.month - 1 : 0;
|
|
1996
|
-
const year = endNode.year ?? opts.referenceDate.getUTCFullYear();
|
|
1997
|
-
end = new Date(Date.UTC(year, month2 + 1, 0));
|
|
1998
|
-
}
|
|
1999
|
-
if (endNode.yearOnly) {
|
|
2000
|
-
const year = endNode.year ?? opts.referenceDate.getUTCFullYear();
|
|
2001
|
-
end = new Date(Date.UTC(year, 11, 31));
|
|
2002
|
-
}
|
|
2003
|
-
} else if (endNode.nodeType === "fuzzy") {
|
|
2004
|
-
const fuzzy = convertFuzzyNode(endNode, opts);
|
|
2005
|
-
end = fuzzy.end;
|
|
2006
|
-
} else {
|
|
2007
|
-
end = new Date(opts.referenceDate);
|
|
2008
|
-
}
|
|
2009
|
-
if (end < start) {
|
|
2010
|
-
const isWeekdayBased = endNode.weekday !== void 0;
|
|
2011
|
-
if (isWeekdayBased) {
|
|
2012
|
-
end = new Date(end.getTime() + MS_PER_WEEK);
|
|
2013
|
-
} else {
|
|
2014
|
-
end = new Date(
|
|
2015
|
-
Date.UTC(
|
|
2016
|
-
end.getUTCFullYear() + 1,
|
|
2017
|
-
end.getUTCMonth(),
|
|
2018
|
-
end.getUTCDate(),
|
|
2019
|
-
end.getUTCHours(),
|
|
2020
|
-
end.getUTCMinutes()
|
|
2021
|
-
)
|
|
2022
|
-
);
|
|
2023
|
-
}
|
|
2024
|
-
}
|
|
2025
|
-
const duration = end.getTime() - start.getTime();
|
|
2026
|
-
return { type: "span", start, end, duration, title };
|
|
2027
|
-
}
|
|
2028
|
-
case "fuzzy": {
|
|
2029
|
-
const { start, end } = convertFuzzyNode(expression, opts);
|
|
2030
|
-
const mod = expression.modifier;
|
|
2031
|
-
const period = expression.period;
|
|
2032
|
-
if (mod === "start" || mod === "beginning") {
|
|
2033
|
-
const periodDates = convertFuzzyNodeWithoutModifier(expression, opts);
|
|
2034
|
-
return { type: "date", date: periodDates.start, title };
|
|
2035
|
-
}
|
|
2036
|
-
if (mod === "end") {
|
|
2037
|
-
const periodDates = convertFuzzyNodeWithoutModifier(expression, opts);
|
|
2038
|
-
return { type: "date", date: periodDates.end, title };
|
|
2039
|
-
}
|
|
2040
|
-
if (period === "weekend" || period === "night" || period === "tonight" || period === "fortnight" || period === "weekNumber" || period === "weekOf") {
|
|
2041
|
-
const duration = end.getTime() - start.getTime();
|
|
2042
|
-
return { type: "span", start, end, duration, title };
|
|
2043
|
-
}
|
|
2044
|
-
return { type: "fuzzy", start, end, approximate: true, title };
|
|
2045
|
-
}
|
|
2046
|
-
case "relative": {
|
|
2047
|
-
const duration = convertDurationNode(expression.duration);
|
|
2048
|
-
const ref = opts.referenceDate;
|
|
2049
|
-
let start;
|
|
2050
|
-
let end;
|
|
2051
|
-
if (expression.direction === "past") {
|
|
2052
|
-
end = new Date(ref);
|
|
2053
|
-
start = new Date(ref.getTime() - duration);
|
|
2054
|
-
} else {
|
|
2055
|
-
start = new Date(ref);
|
|
2056
|
-
end = new Date(ref.getTime() + duration);
|
|
2057
|
-
}
|
|
2058
|
-
return { type: "span", start, end, duration, title };
|
|
2059
|
-
}
|
|
2060
|
-
case "relativeDate": {
|
|
2061
|
-
const durationNode = expression.duration;
|
|
2062
|
-
const baseNode = expression.baseDate;
|
|
2063
|
-
const timeSpec = expression.time;
|
|
2064
|
-
let baseDate;
|
|
2065
|
-
if (baseNode) {
|
|
2066
|
-
baseDate = convertDateNode(baseNode, opts);
|
|
2067
|
-
} else {
|
|
2068
|
-
baseDate = new Date(opts.referenceDate);
|
|
2069
|
-
}
|
|
2070
|
-
const durationValue = durationNode.value;
|
|
2071
|
-
const durationUnit = durationNode.unit;
|
|
2072
|
-
const direction = expression.direction === "past" ? -1 : 1;
|
|
2073
|
-
let resultDate;
|
|
2074
|
-
if (durationUnit === "month") {
|
|
2075
|
-
resultDate = new Date(
|
|
2076
|
-
Date.UTC(
|
|
2077
|
-
baseDate.getUTCFullYear(),
|
|
2078
|
-
baseDate.getUTCMonth() + direction * durationValue,
|
|
2079
|
-
baseDate.getUTCDate(),
|
|
2080
|
-
baseDate.getUTCHours(),
|
|
2081
|
-
baseDate.getUTCMinutes()
|
|
2082
|
-
)
|
|
2083
|
-
);
|
|
2084
|
-
} else if (durationUnit === "year") {
|
|
2085
|
-
resultDate = new Date(
|
|
2086
|
-
Date.UTC(
|
|
2087
|
-
baseDate.getUTCFullYear() + direction * durationValue,
|
|
2088
|
-
baseDate.getUTCMonth(),
|
|
2089
|
-
baseDate.getUTCDate(),
|
|
2090
|
-
baseDate.getUTCHours(),
|
|
2091
|
-
baseDate.getUTCMinutes()
|
|
2092
|
-
)
|
|
2093
|
-
);
|
|
2094
|
-
} else if (durationUnit === "businessDay" || durationUnit === "businessday") {
|
|
2095
|
-
resultDate = new Date(Date.UTC(baseDate.getUTCFullYear(), baseDate.getUTCMonth(), baseDate.getUTCDate()));
|
|
2096
|
-
let daysToAdd = durationValue;
|
|
2097
|
-
while (daysToAdd > 0) {
|
|
2098
|
-
resultDate.setUTCDate(resultDate.getUTCDate() + direction);
|
|
2099
|
-
const dayOfWeek = resultDate.getUTCDay();
|
|
2100
|
-
if (dayOfWeek !== 0 && dayOfWeek !== 6) {
|
|
2101
|
-
daysToAdd--;
|
|
2102
|
-
}
|
|
2103
|
-
}
|
|
2104
|
-
} else {
|
|
2105
|
-
const durationMs = convertDurationNode(durationNode);
|
|
2106
|
-
resultDate = new Date(baseDate.getTime() + direction * durationMs);
|
|
2107
|
-
}
|
|
2108
|
-
if (timeSpec) {
|
|
2109
|
-
if ("special" in timeSpec) {
|
|
2110
|
-
if (timeSpec.special === "noon") {
|
|
2111
|
-
resultDate = new Date(
|
|
2112
|
-
Date.UTC(
|
|
2113
|
-
resultDate.getUTCFullYear(),
|
|
2114
|
-
resultDate.getUTCMonth(),
|
|
2115
|
-
resultDate.getUTCDate(),
|
|
2116
|
-
12,
|
|
2117
|
-
0
|
|
2118
|
-
)
|
|
2119
|
-
);
|
|
2120
|
-
} else if (timeSpec.special === "midnight") {
|
|
2121
|
-
resultDate = new Date(
|
|
2122
|
-
Date.UTC(
|
|
2123
|
-
resultDate.getUTCFullYear(),
|
|
2124
|
-
resultDate.getUTCMonth(),
|
|
2125
|
-
resultDate.getUTCDate(),
|
|
2126
|
-
0,
|
|
2127
|
-
0
|
|
2128
|
-
)
|
|
2129
|
-
);
|
|
2130
|
-
}
|
|
2131
|
-
} else {
|
|
2132
|
-
resultDate = new Date(
|
|
2133
|
-
Date.UTC(
|
|
2134
|
-
resultDate.getUTCFullYear(),
|
|
2135
|
-
resultDate.getUTCMonth(),
|
|
2136
|
-
resultDate.getUTCDate(),
|
|
2137
|
-
timeSpec.hour,
|
|
2138
|
-
timeSpec.minute
|
|
2139
|
-
)
|
|
2140
|
-
);
|
|
2141
|
-
}
|
|
2142
|
-
}
|
|
2143
|
-
return { type: "date", date: resultDate, title };
|
|
2144
|
-
}
|
|
2145
|
-
default:
|
|
2146
|
-
return null;
|
|
2147
|
-
}
|
|
2148
|
-
}
|
|
2149
|
-
function stripUnmatchedPunctuation(input) {
|
|
2150
|
-
let result = input;
|
|
2151
|
-
const originalPreserved = input;
|
|
2152
|
-
let openParens = (result.match(/\(/g) || []).length;
|
|
2153
|
-
let closeParens = (result.match(/\)/g) || []).length;
|
|
2154
|
-
let openBrackets = (result.match(/\[/g) || []).length;
|
|
2155
|
-
let closeBrackets = (result.match(/]/g) || []).length;
|
|
2156
|
-
while (closeParens > openParens && result.endsWith(")")) {
|
|
2157
|
-
result = result.slice(0, -1).trimEnd();
|
|
2158
|
-
closeParens--;
|
|
2159
|
-
}
|
|
2160
|
-
while (closeBrackets > openBrackets && result.endsWith("]")) {
|
|
2161
|
-
result = result.slice(0, -1).trimEnd();
|
|
2162
|
-
closeBrackets--;
|
|
2163
|
-
}
|
|
2164
|
-
openParens = (result.match(/\(/g) || []).length;
|
|
2165
|
-
closeParens = (result.match(/\)/g) || []).length;
|
|
2166
|
-
while (openParens > closeParens) {
|
|
2167
|
-
result = result.replace(/\(/, "");
|
|
2168
|
-
openParens--;
|
|
2169
|
-
}
|
|
2170
|
-
openBrackets = (result.match(/\[/g) || []).length;
|
|
2171
|
-
closeBrackets = (result.match(/]/g) || []).length;
|
|
2172
|
-
while (openBrackets > closeBrackets) {
|
|
2173
|
-
result = result.replace(/\[/, "");
|
|
2174
|
-
openBrackets--;
|
|
2175
|
-
}
|
|
2176
|
-
return {
|
|
2177
|
-
stripped: result.replace(/\s+/g, " ").trim(),
|
|
2178
|
-
originalPreserved
|
|
2179
|
-
};
|
|
2180
|
-
}
|
|
2181
|
-
function parseInternal(input, options) {
|
|
2182
|
-
if (!input || typeof input !== "string") {
|
|
2183
|
-
return null;
|
|
2184
|
-
}
|
|
2185
|
-
const trimmedInput = input.trim();
|
|
2186
|
-
const { stripped, originalPreserved } = stripUnmatchedPunctuation(trimmedInput);
|
|
2187
|
-
const normalized = stripped.toLowerCase();
|
|
2188
|
-
if (!normalized) {
|
|
2189
|
-
return null;
|
|
2190
|
-
}
|
|
2191
|
-
const opts = getDefaultOptions(options);
|
|
2192
|
-
try {
|
|
2193
|
-
const parser = new nearley.Parser(nearley.Grammar.fromCompiled(grammar_default));
|
|
2194
|
-
parser.feed(normalized);
|
|
2195
|
-
if (parser.results.length === 0) {
|
|
2196
|
-
return null;
|
|
2197
|
-
}
|
|
2198
|
-
const ast = parser.results[0];
|
|
2199
|
-
return convertASTToResult(ast, opts, originalPreserved);
|
|
2200
|
-
} catch {
|
|
2201
|
-
return null;
|
|
2202
|
-
}
|
|
2203
|
-
}
|
|
2204
|
-
function extractInternal(input, options) {
|
|
2205
|
-
if (!input || typeof input !== "string") {
|
|
2206
|
-
return [];
|
|
2207
|
-
}
|
|
2208
|
-
const segments = input.split(/[,;\n]|\s+and\s+/).map((s) => s.trim()).filter((s) => s.length > 0);
|
|
2209
|
-
const results = [];
|
|
2210
|
-
for (const segment of segments) {
|
|
2211
|
-
const result = parseInternal(segment, options);
|
|
2212
|
-
if (result) {
|
|
2213
|
-
results.push(result);
|
|
2214
|
-
}
|
|
2215
|
-
}
|
|
2216
|
-
return results;
|
|
2217
|
-
}
|
|
2218
|
-
|
|
2219
|
-
// src/index.ts
|
|
2220
|
-
function parse(input, options) {
|
|
2221
|
-
return parseInternal(input, options);
|
|
2222
|
-
}
|
|
2223
|
-
function parseDate(input, options) {
|
|
2224
|
-
const result = parse(input, options);
|
|
2225
|
-
if (!result) {
|
|
2226
|
-
return null;
|
|
2227
|
-
}
|
|
2228
|
-
if (result.type === "date") {
|
|
2229
|
-
return result.date;
|
|
2230
|
-
}
|
|
2231
|
-
if (result.type === "duration") {
|
|
2232
|
-
const ref = options?.referenceDate ?? /* @__PURE__ */ new Date();
|
|
2233
|
-
return new Date(ref.getTime() + result.duration);
|
|
2234
|
-
}
|
|
2235
|
-
if (result.type === "fuzzy") {
|
|
2236
|
-
return result.start;
|
|
2237
|
-
}
|
|
2238
|
-
return null;
|
|
2239
|
-
}
|
|
2240
|
-
function parseDuration(input, options) {
|
|
2241
|
-
const result = parse(input, options);
|
|
2242
|
-
if (result && result.type === "duration") {
|
|
2243
|
-
return result.duration;
|
|
2244
|
-
}
|
|
2245
|
-
return null;
|
|
2246
|
-
}
|
|
2247
|
-
function parseSpan(input, options) {
|
|
2248
|
-
const result = parse(input, options);
|
|
2249
|
-
if (result && (result.type === "span" || result.type === "fuzzy")) {
|
|
2250
|
-
return {
|
|
2251
|
-
start: result.start,
|
|
2252
|
-
end: result.end,
|
|
2253
|
-
duration: result.type === "span" ? result.duration : result.end.getTime() - result.start.getTime()
|
|
2254
|
-
};
|
|
2255
|
-
}
|
|
2256
|
-
return null;
|
|
2257
|
-
}
|
|
2258
|
-
function extract(input, options) {
|
|
2259
|
-
return extractInternal(input, options);
|
|
2260
|
-
}
|
|
2261
|
-
export {
|
|
2262
|
-
extract,
|
|
2263
|
-
parse,
|
|
2264
|
-
parseDate,
|
|
2265
|
-
parseDuration,
|
|
2266
|
-
parseSpan
|
|
2267
|
-
};
|
|
2268
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import te from"nearley";import j from"moo";var r=j.compile({ws:/[ \t]+/,newline:{match:/\r?\n/,lineBreaks:!0},time:/(?:0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?/,monthDayCompact:{match:/(?:[Jj]anuary|[Ff]ebruary|[Mm]arch|[Aa]pril|[Mm]ay|[Jj]une|[Jj]uly|[Aa]ugust|[Ss]eptember|[Oo]ctober|[Nn]ovember|[Dd]ecember|[Jj]an|[Ff]eb|[Mm]ar|[Aa]pr|[Jj]un|[Jj]ul|[Aa]ug|[Ss]ep|[Ss]ept|[Oo]ct|[Nn]ov|[Dd]ec)(?:3[01]|[12]?[0-9])/,value:e=>e.toLowerCase()},quarter:{match:/[Qq][1-4]/,value:e=>e.toUpperCase()},half:{match:/[Hh][1-2]/,value:e=>e.toUpperCase()},ordinal:{match:/(?:3[01]|[12]?[0-9])(?:[Ss][Tt]|[Nn][Dd]|[Rr][Dd]|[Tt][Hh])/,value:e=>e.toLowerCase()},decimal:/\d+\.\d+/,abbreviatedDuration:{match:/\d+(?:mo|w|d|h|m|s|y)\b/,value:e=>e.toLowerCase()},integer:/\d+/,ampm:{match:/[Aa][Mm]|[Pp][Mm]/,value:e=>e.toLowerCase()},word:{match:/[a-zA-Z][a-zA-Z0-9#]*/,type:j.keywords({kw_today:["today"],kw_tomorrow:["tomorrow"],kw_yesterday:["yesterday"],kw_now:["now"],kw_noon:["noon"],kw_midnight:["midnight"],kw_next:["next"],kw_last:["last"],kw_this:["this"],kw_previous:["previous"],kw_coming:["coming"],kw_upcoming:["upcoming"],kw_past:["past"],kw_early:["early"],kw_mid:["mid"],kw_late:["late"],kw_beginning:["beginning"],kw_middle:["middle"],kw_end:["end"],kw_start:["start"],unit:["day","days","week","weeks","month","months","year","years","quarter","quarters","hour","hours","minute","minutes","second","seconds","hr","hrs","min","mins","sec","secs","wk","wks","mo","mos","yr","yrs"],halfWord:["half"],kw_to:["to"],kw_from:["from"],kw_until:["until","til","till"],kw_through:["through"],kw_between:["between"],kw_and:["and"],kw_for:["for"],kw_in:["in"],kw_on:["on"],kw_at:["at"],kw_of:["of"],kw_the:["the"],kw_within:["within"],kw_over:["over"],kw_during:["during"],kw_starting:["starting"],kw_by:["by"],kw_before:["before"],kw_after:["after"],kw_around:["around"],kw_about:["about"],kw_roughly:["roughly"],kw_approximately:["approximately"],kw_sometime:["sometime"],ordinalWord:["first","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth","sixteenth","seventeenth","eighteenth","nineteenth","twentieth","twenty-first","twenty-second","twenty-third","twenty-fourth","twenty-fifth","twenty-sixth","twenty-seventh","twenty-eighth","twenty-ninth","thirtieth","thirty-first"],season:["spring","summer","fall","autumn","winter"],wordNumber:["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty","a","an","couple"],month:["january","february","march","april","may","june","july","august","september","october","november","december","jan","feb","mar","apr","jun","jul","aug","sep","sept","oct","nov","dec"],weekday:["monday","tuesday","wednesday","thursday","friday","saturday","sunday","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","sundays","mon","tue","tues","wed","thu","thur","thurs","fri","sat","sun"],kw_ago:["ago"],kw_weekend:["weekend"],kw_tonight:["tonight"],kw_night:["night"],kw_fortnight:["fortnight","fortnights"],otherKeyword:["fiscal","fy","daily","weekly","monthly","yearly","annually","hence","later","earlier"],kw_business:["business"],kw_eod:["eod"],kw_cob:["cob"],kw_close:["close"],kw_ytd:["ytd"]})},lparen:"(",rparen:")",lbracket:"[",rbracket:"]",colon:":",semicolon:";",comma:",",dash:/[-–—]/,slash:"/",other:/./});var p=e=>e[0],se=()=>null;var u=e=>({nodeType:"date",value:"",...e}),c=(e,t)=>({nodeType:"duration",value:e,unit:re(t)}),T=(e,t,o)=>({nodeType:"span",start:e,duration:t,end:o}),w=(e,t)=>({nodeType:"range",start:e,end:t}),m=e=>({nodeType:"fuzzy",period:"",...e}),_=(e,t)=>({nodeType:"relative",direction:e,duration:t}),d=(e,t,o,s)=>({nodeType:"relativeDate",direction:e,duration:t,baseDate:o,time:s}),k=(e,t,o,s)=>({nodeType:"titled",title:e.trim(),titleStart:o,titleEnd:s,expression:t});function re(e){let t=e.toLowerCase();return["day","days","d"].includes(t)?"day":["week","weeks","wk","wks","w"].includes(t)?"week":["month","months","mo","mos"].includes(t)?"month":["year","years","yr","yrs","y"].includes(t)?"year":["hour","hours","hr","hrs","h"].includes(t)?"hour":["minute","minutes","min","mins"].includes(t)?"minute":["second","seconds","sec","secs","s"].includes(t)?"second":["quarter","quarters"].includes(t)?"quarter":t}function g(e){return{a:1,an:1,one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10,eleven:11,twelve:12,thirteen:13,fourteen:14,fifteen:15,sixteen:16,seventeen:17,eighteen:18,nineteen:19,twenty:20,couple:2}[e.toLowerCase()]??1}function H(e){let t=e.match(/^(\d+)/);return t?parseInt(t[1],10):v(e)}function v(e){return{first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,twentieth:20,"twenty-first":21,"twenty-second":22,"twenty-third":23,"twenty-fourth":24,"twenty-fifth":25,"twenty-sixth":26,"twenty-seventh":27,"twenty-eighth":28,"twenty-ninth":29,thirtieth:30,"thirty-first":31}[e.toLowerCase()]??1}function B(e){return{january:1,jan:1,february:2,feb:2,march:3,mar:3,april:4,apr:4,may:5,june:6,jun:6,july:7,jul:7,august:8,aug:8,september:9,sep:9,sept:9,october:10,oct:10,november:11,nov:11,december:12,dec:12}[e.toLowerCase()]??1}function S(e){let t=e.toLowerCase(),o=["january","february","march","april","may","june","july","august","september","october","november","december","jan","feb","mar","apr","jun","jul","aug","sep","sept","oct","nov","dec"];for(let s of o)if(t.startsWith(s)){let a=t.slice(s.length);return{month:B(s),day:parseInt(a,10)}}return{month:1,day:1}}function x(e){let t=e.match(/[qQ]([1-4])/);return t?parseInt(t[1],10):1}function $(e){let t=e.match(/[hH]([1-2])/);return t?parseInt(t[1],10):1}var ae={Lexer:r,ParserRules:[{name:"main",symbols:["titledExpression"],postprocess:p},{name:"main",symbols:["expression"],postprocess:p},{name:"titledExpression",symbols:["titleTextSimple","_",r.has("dash")?{type:"dash"}:dash,"_","expression"],postprocess:e=>k(e[0].text,e[4],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText",r.has("colon")?{type:"colon"}:colon,"_","expression"],postprocess:e=>k(e[0].text,e[3],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText","_",r.has("lparen")?{type:"lparen"}:lparen,"expression",r.has("rparen")?{type:"rparen"}:rparen],postprocess:e=>k(e[0].text,e[3],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText","_",r.has("lbracket")?{type:"lbracket"}:lbracket,"expression",r.has("rbracket")?{type:"rbracket"}:rbracket],postprocess:e=>k(e[0].text,e[3],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText","_","onConnector","_","expression"],postprocess:e=>k(e[0].text,e[4],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText","_","atConnector","_","expression"],postprocess:e=>k(e[0].text,e[4],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText","_","inConnector","_","expression"],postprocess:e=>k(e[0].text,e[4],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText","_","forConnector","_","expression"],postprocess:e=>k(e[0].text,e[4],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText","_","fromConnector","_","expression"],postprocess:e=>k(e[0].text,e[4],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText","_","duringConnector","_","expression"],postprocess:e=>k(e[0].text,e[4],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText","_","startingConnector","_","expression"],postprocess:e=>k(e[0].text,e[4],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText","_","byConnector","_","expression"],postprocess:e=>k(e[0].text,e[4],e[0].start,e[0].end)},{name:"titledExpression",symbols:["titleText","_",r.has("dash")?{type:"dash"}:dash,"_","byConnector","_","expression"],postprocess:e=>k(e[0].text,e[6],e[0].start,e[0].end)},{name:"titledExpression",symbols:["expression","_","postTitle"],postprocess:e=>k(e[2].text,e[0],e[2].start,e[2].end)},{name:"postTitle",symbols:[r.has("word")?{type:"word"}:word],postprocess:e=>({text:e[0].value,start:e[0].offset,end:e[0].offset+e[0].text.length})},{name:"postTitle",symbols:["postTitle","_",r.has("word")?{type:"word"}:word],postprocess:e=>({text:e[0].text+" "+e[2].value,start:e[0].start,end:e[2].offset+e[2].text.length})},{name:"titleText",symbols:["titleWord"],postprocess:e=>({text:e[0].text,start:e[0].start,end:e[0].end})},{name:"titleText",symbols:["versionNumber"],postprocess:e=>e[0]},{name:"titleText",symbols:["hyphenatedWord"],postprocess:e=>e[0]},{name:"titleText",symbols:["titleText","_","titleWord"],postprocess:e=>({text:e[0].text+" "+e[2].text,start:e[0].start,end:e[2].end})},{name:"titleText",symbols:["titleText","_","versionNumber"],postprocess:e=>({text:e[0].text+" "+e[2].text,start:e[0].start,end:e[2].end})},{name:"titleText",symbols:["titleText","_","hyphenatedWord"],postprocess:e=>({text:e[0].text+" "+e[2].text,start:e[0].start,end:e[2].end})},{name:"titleText",symbols:["titleText","_",r.has("dash")?{type:"dash"}:dash,"_","titleWord"],postprocess:e=>({text:e[0].text+" - "+e[4].text,start:e[0].start,end:e[4].end})},{name:"titleText",symbols:["titleText","_",r.has("dash")?{type:"dash"}:dash,"_","versionNumber"],postprocess:e=>({text:e[0].text+" - "+e[4].text,start:e[0].start,end:e[4].end})},{name:"titleWord",symbols:[r.has("word")?{type:"word"}:word],postprocess:e=>({text:e[0].value,start:e[0].offset,end:e[0].offset+e[0].text.length})},{name:"titleWord",symbols:[r.has("wordNumber")?{type:"wordNumber"}:wordNumber],postprocess:e=>({text:e[0].value,start:e[0].offset,end:e[0].offset+e[0].text.length})},{name:"titleWord",symbols:[r.has("integer")?{type:"integer"}:integer],postprocess:e=>({text:e[0].value,start:e[0].offset,end:e[0].offset+e[0].text.length})},{name:"titleWord",symbols:[r.has("otherKeyword")?{type:"otherKeyword"}:otherKeyword],postprocess:e=>({text:e[0].value,start:e[0].offset,end:e[0].offset+e[0].text.length})},{name:"titleWord",symbols:[r.has("decimal")?{type:"decimal"}:decimal],postprocess:e=>({text:e[0].value,start:e[0].offset,end:e[0].offset+e[0].text.length})},{name:"titleWord",symbols:[r.has("quarter")?{type:"quarter"}:quarter],postprocess:e=>({text:e[0].value,start:e[0].offset,end:e[0].offset+e[0].text.length})},{name:"titleWord",symbols:[r.has("half")?{type:"half"}:half],postprocess:e=>({text:e[0].value,start:e[0].offset,end:e[0].offset+e[0].text.length})},{name:"titleWord",symbols:[r.has("lparen")?{type:"lparen"}:lparen,"titleText",r.has("rparen")?{type:"rparen"}:rparen],postprocess:e=>({text:"("+e[1].text+")",start:e[0].offset,end:e[2].offset+1})},{name:"titleWord",symbols:[r.has("lbracket")?{type:"lbracket"}:lbracket,"titleText",r.has("rbracket")?{type:"rbracket"}:rbracket],postprocess:e=>({text:"["+e[1].text+"]",start:e[0].offset,end:e[2].offset+1})},{name:"titleWord",symbols:[r.has("slash")?{type:"slash"}:slash],postprocess:e=>({text:"/",start:e[0].offset,end:e[0].offset+1})},{name:"titleWord",symbols:[r.has("colon")?{type:"colon"}:colon],postprocess:e=>({text:":",start:e[0].offset,end:e[0].offset+1})},{name:"titleWord",symbols:["hashNumber"],postprocess:e=>e[0]},{name:"hyphenatedWord",symbols:[r.has("word")?{type:"word"}:word,r.has("dash")?{type:"dash"}:dash,r.has("word")?{type:"word"}:word],postprocess:e=>({text:e[0].value+"-"+e[2].value,start:e[0].offset,end:e[2].offset+e[2].text.length})},{name:"hyphenatedWord",symbols:[r.has("word")?{type:"word"}:word,r.has("dash")?{type:"dash"}:dash,r.has("integer")?{type:"integer"}:integer],postprocess:e=>({text:e[0].value+"-"+e[2].value,start:e[0].offset,end:e[2].offset+e[2].text.length})},{name:"hashNumber",symbols:[r.has("other")?{type:"other"}:other,r.has("integer")?{type:"integer"}:integer],postprocess:(e,t,o)=>e[0].value!=="#"?o:{text:"#"+e[1].value,start:e[0].offset,end:e[1].offset+e[1].text.length}},{name:"versionNumber",symbols:[r.has("word")?{type:"word"}:word,r.has("other")?{type:"other"}:other,r.has("integer")?{type:"integer"}:integer],postprocess:(e,t,o)=>e[1].value!=="."?o:{text:e[0].value+"."+e[2].value,start:e[0].offset,end:e[2].offset+e[2].text.length}},{name:"versionNumber",symbols:[r.has("word")?{type:"word"}:word,r.has("other")?{type:"other"}:other,r.has("integer")?{type:"integer"}:integer,r.has("other")?{type:"other"}:other,r.has("integer")?{type:"integer"}:integer],postprocess:(e,t,o)=>e[1].value!=="."||e[3].value!=="."?o:{text:e[0].value+"."+e[2].value+"."+e[4].value,start:e[0].offset,end:e[4].offset+e[4].text.length}},{name:"versionNumber",symbols:[r.has("word")?{type:"word"}:word,r.has("other")?{type:"other"}:other,r.has("integer")?{type:"integer"}:integer,r.has("other")?{type:"other"}:other,r.has("integer")?{type:"integer"}:integer,r.has("other")?{type:"other"}:other,r.has("integer")?{type:"integer"}:integer],postprocess:(e,t,o)=>e[1].value!=="."||e[3].value!=="."||e[5].value!=="."?o:{text:e[0].value+"."+e[2].value+"."+e[4].value+"."+e[6].value,start:e[0].offset,end:e[6].offset+e[6].text.length}},{name:"versionNumber",symbols:[r.has("word")?{type:"word"}:word,r.has("other")?{type:"other"}:other,r.has("decimal")?{type:"decimal"}:decimal],postprocess:(e,t,o)=>e[1].value!=="."?o:{text:e[0].value+"."+e[2].value,start:e[0].offset,end:e[2].offset+e[2].text.length}},{name:"versionNumber",symbols:[r.has("decimal")?{type:"decimal"}:decimal],postprocess:e=>({text:e[0].value,start:e[0].offset,end:e[0].offset+e[0].text.length})},{name:"titleTextSimple",symbols:["titleWord"],postprocess:e=>e[0]},{name:"titleTextSimple",symbols:["hyphenatedWord"],postprocess:e=>e[0]},{name:"titleTextSimple",symbols:["versionNumber"],postprocess:e=>e[0]},{name:"titleTextSimple",symbols:["titleTextSimple","_","titleWord"],postprocess:e=>({text:e[0].text+" "+e[2].text,start:e[0].start,end:e[2].end})},{name:"titleTextSimple",symbols:["titleTextSimple","_","hyphenatedWord"],postprocess:e=>({text:e[0].text+" "+e[2].text,start:e[0].start,end:e[2].end})},{name:"titleTextSimple",symbols:["titleTextSimple","_","versionNumber"],postprocess:e=>({text:e[0].text+" "+e[2].text,start:e[0].start,end:e[2].end})},{name:"titleTextSimple",symbols:["titleTextSimple",r.has("slash")?{type:"slash"}:slash,"titleWord"],postprocess:e=>({text:e[0].text+"/"+e[2].text,start:e[0].start,end:e[2].end})},{name:"titleTextSimple",symbols:["titleTextSimple",r.has("colon")?{type:"colon"}:colon,"_","titleWord"],postprocess:e=>({text:e[0].text+": "+e[3].text,start:e[0].start,end:e[3].end})},{name:"expression",symbols:["range"],postprocess:p},{name:"expression",symbols:["span"],postprocess:p},{name:"expression",symbols:["relative"],postprocess:p},{name:"expression",symbols:["relativeDate"],postprocess:p},{name:"expression",symbols:["lastDayOfMonthExpr"],postprocess:p},{name:"expression",symbols:["date"],postprocess:p},{name:"expression",symbols:["fuzzy"],postprocess:p},{name:"expression",symbols:["forDuration"],postprocess:p},{name:"expression",symbols:["duration"],postprocess:p},{name:"lastDayOfMonthExpr",symbols:["lastRelative","_","dayUnit","_","ofConnector","_","month"],postprocess:e=>u({month:e[6],lastDayOfMonth:!0})},{name:"lastDayOfMonthExpr",symbols:["lastRelative","_","dayUnit","_","ofConnector","_","theConnector","_","monthUnit"],postprocess:e=>u({lastDayOfMonth:!0,monthFromRef:!0})},{name:"forDuration",symbols:["forConnector","_","duration"],postprocess:e=>e[2]},{name:"range",symbols:["date","_","toConnector","_","date"],postprocess:e=>w(e[0],e[4])},{name:"range",symbols:["fromConnector","_","date","_","toConnector","_","date"],postprocess:e=>w(e[2],e[6])},{name:"range",symbols:["date","_",r.has("dash")?{type:"dash"}:dash,"_","date"],postprocess:e=>w(e[0],e[4])},{name:"range",symbols:[r.has("monthDayCompact")?{type:"monthDayCompact"}:monthDayCompact,r.has("dash")?{type:"dash"}:dash,r.has("monthDayCompact")?{type:"monthDayCompact"}:monthDayCompact],postprocess:e=>{let t=S(e[0].value),o=S(e[2].value);return w(u({month:t.month,day:t.day}),u({month:o.month,day:o.day}))}},{name:"range",symbols:[r.has("monthDayCompact")?{type:"monthDayCompact"}:monthDayCompact,"_",r.has("dash")?{type:"dash"}:dash,"_","date"],postprocess:e=>{let t=S(e[0].value);return w(u({month:t.month,day:t.day}),e[4])}},{name:"range",symbols:["date","_",r.has("dash")?{type:"dash"}:dash,"_",r.has("monthDayCompact")?{type:"monthDayCompact"}:monthDayCompact],postprocess:e=>{let t=S(e[4].value);return w(e[0],u({month:t.month,day:t.day}))}},{name:"range",symbols:["specialDay","_","time","_","toConnector","_","time"],postprocess:e=>w(u({special:e[0],time:e[2]}),u({special:e[0],time:e[6]}))},{name:"range",symbols:["monthDay","_","time","_","toConnector","_","time"],postprocess:e=>w({...e[0],time:e[2]},{...e[0],time:e[6]})},{name:"range",symbols:["weekday","_","time","_","toConnector","_","time"],postprocess:e=>w(u({weekday:e[0],time:e[2]}),u({weekday:e[0],time:e[6]}))},{name:"range",symbols:["month","_","dayNumber",r.has("dash")?{type:"dash"}:dash,"dayNumber"],postprocess:e=>w(u({month:e[0],day:e[2]}),u({month:e[0],day:e[4]}))},{name:"range",symbols:["dayNumber",r.has("dash")?{type:"dash"}:dash,"dayNumber","_","month"],postprocess:e=>w(u({month:e[4],day:e[0]}),u({month:e[4],day:e[2]}))},{name:"range",symbols:["betweenConnector","_","date","_","andConnector","_","date"],postprocess:e=>w(e[2],e[6])},{name:"range",symbols:["date","_","throughConnector","_","date"],postprocess:e=>w(e[0],e[4])},{name:"range",symbols:["date","_","untilConnector","_","date"],postprocess:e=>w(e[0],e[4])},{name:"range",symbols:["untilConnector","_","date"],postprocess:e=>w(u({special:"today"}),e[2])},{name:"range",symbols:["untilConnector","_","fuzzy"],postprocess:e=>w(u({special:"today"}),e[2])},{name:"range",symbols:["fuzzy","_","toConnector","_","fuzzy"],postprocess:e=>w(e[0],e[4])},{name:"range",symbols:["fromConnector","_","fuzzy","_","toConnector","_","fuzzy"],postprocess:e=>w(e[2],e[6])},{name:"range",symbols:["betweenConnector","_","fuzzy","_","andConnector","_","fuzzy"],postprocess:e=>w(e[2],e[6])},{name:"range",symbols:["fromConnector","_","date","_","untilConnector","_","date"],postprocess:e=>w(e[2],e[6])},{name:"range",symbols:["fromConnector","_","specialDay","_","untilConnector","_","date"],postprocess:e=>w(u({special:e[2]}),e[6])},{name:"span",symbols:["date","_","forConnector","_","duration"],postprocess:e=>T(e[0],e[4])},{name:"span",symbols:["fuzzy","_","forConnector","_","duration"],postprocess:e=>T(e[0],e[4])},{name:"span",symbols:["inConnector","_","fuzzy","_","forConnector","_","duration"],postprocess:e=>T(e[2],e[6])},{name:"span",symbols:["inConnector","_","date","_","forConnector","_","duration"],postprocess:e=>T(e[2],e[6])},{name:"span",symbols:["inConnector","_","monthForSpan","_","forConnector","_","duration"],postprocess:e=>T(e[2],e[6])},{name:"span",symbols:["startingConnector","_","date","_","forConnector","_","duration"],postprocess:e=>T(e[2],e[6])},{name:"span",symbols:["beginningConnector","_","date","_","forConnector","_","duration"],postprocess:e=>T(e[2],e[6])},{name:"span",symbols:["startingConnector","_","date"],postprocess:e=>T(e[2])},{name:"span",symbols:["date","_","startingConnector","_","date"],postprocess:e=>T(e[4],e[0])},{name:"span",symbols:["duration","_","startingConnector","_","date"],postprocess:e=>T(e[4],e[0])},{name:"span",symbols:["duration","_","fromConnector","_","date"],postprocess:e=>T(e[4],e[0])},{name:"span",symbols:["duration","_","inConnector","_","fuzzy"],postprocess:e=>T(e[4],e[0])},{name:"span",symbols:["duration","_","inConnector","_","theConnector","_","fuzzy"],postprocess:e=>T(e[6],e[0])},{name:"monthForSpan",symbols:["month"],postprocess:e=>m({period:"month",month:e[0]})},{name:"relative",symbols:["lastRelative","_","number","_","unit"],postprocess:e=>_("past",c(e[2],e[4]))},{name:"relative",symbols:["pastRelative","_","number","_","unit"],postprocess:e=>_("past",c(e[2],e[4]))},{name:"relative",symbols:["previousRelative","_","number","_","unit"],postprocess:e=>_("past",c(e[2],e[4]))},{name:"relative",symbols:["nextRelative","_","number","_","unit"],postprocess:e=>_("future",c(e[2],e[4]))},{name:"relative",symbols:["comingRelative","_","number","_","unit"],postprocess:e=>_("future",c(e[2],e[4]))},{name:"relative",symbols:["upcomingRelative","_","number","_","unit"],postprocess:e=>_("future",c(e[2],e[4]))},{name:"relative",symbols:["withinConnector","_","duration"],postprocess:e=>_("future",e[2])},{name:"relative",symbols:["withinConnector","_","theConnector","_","nextRelative","_","duration"],postprocess:e=>_("future",e[6])},{name:"relative",symbols:["withinConnector","_","theConnector","_","lastRelative","_","duration"],postprocess:e=>_("past",e[6])},{name:"relative",symbols:["withinConnector","_","theConnector","_","pastRelative","_","duration"],postprocess:e=>_("past",e[6])},{name:"relative",symbols:["overConnector","_","theConnector","_","nextRelative","_","duration"],postprocess:e=>_("future",e[6])},{name:"relative",symbols:["overConnector","_","theConnector","_","lastRelative","_","duration"],postprocess:e=>_("past",e[6])},{name:"relative",symbols:["overConnector","_","theConnector","_","pastRelative","_","duration"],postprocess:e=>_("past",e[6])},{name:"relative",symbols:["overConnector","_","theConnector","_","comingRelative","_","duration"],postprocess:e=>_("future",e[6])},{name:"relative",symbols:["inConnector","_","theConnector","_","lastRelative","_","duration"],postprocess:e=>_("past",e[6])},{name:"relative",symbols:["inConnector","_","theConnector","_","nextRelative","_","duration"],postprocess:e=>_("future",e[6])},{name:"relative",symbols:["inConnector","_","theConnector","_","pastRelative","_","duration"],postprocess:e=>_("past",e[6])},{name:"relative",symbols:["inConnector","_","theConnector","_","comingRelative","_","duration"],postprocess:e=>_("future",e[6])},{name:"relative",symbols:["lastRelative","_","wordNumber","_","unit"],postprocess:e=>_("past",c(g(e[2]),e[4]))},{name:"relative",symbols:["nextRelative","_","wordNumber","_","unit"],postprocess:e=>_("future",c(g(e[2]),e[4]))},{name:"relative",symbols:["pastRelative","_","wordNumber","_","unit"],postprocess:e=>_("past",c(g(e[2]),e[4]))},{name:"relative",symbols:["previousRelative","_","wordNumber","_","unit"],postprocess:e=>_("past",c(g(e[2]),e[4]))},{name:"relative",symbols:["comingRelative","_","wordNumber","_","unit"],postprocess:e=>_("future",c(g(e[2]),e[4]))},{name:"relative",symbols:["upcomingRelative","_","wordNumber","_","unit"],postprocess:e=>_("future",c(g(e[2]),e[4]))},{name:"relative",symbols:["pastRelative","_","unit"],postprocess:e=>_("past",c(1,e[2]))},{name:"relative",symbols:["previousRelative","_","unit"],postprocess:e=>_("past",c(1,e[2]))},{name:"relative",symbols:["upcomingRelative","_","unit"],postprocess:e=>_("future",c(1,e[2]))},{name:"relative",symbols:["withinConnector","_","theConnector","_","nextRelative","_","unit"],postprocess:e=>_("future",c(1,e[6]))},{name:"relative",symbols:["withinConnector","_","theConnector","_","pastRelative","_","unit"],postprocess:e=>_("past",c(1,e[6]))},{name:"relative",symbols:["overConnector","_","theConnector","_","lastRelative","_","unit"],postprocess:e=>_("past",c(1,e[6]))},{name:"relative",symbols:["overConnector","_","theConnector","_","comingRelative","_","unit"],postprocess:e=>_("future",c(1,e[6]))},{name:"relative",symbols:["overConnector","_","theConnector","_","upcomingRelative","_","unit"],postprocess:e=>_("future",c(1,e[6]))},{name:"relative",symbols:["inConnector","_","theConnector","_","pastRelative","_","unit"],postprocess:e=>_("past",c(1,e[6]))},{name:"relative",symbols:["inConnector","_","theConnector","_","comingRelative","_","unit"],postprocess:e=>_("future",c(1,e[6]))},{name:"relative",symbols:["inConnector","_","theConnector","_","upcomingRelative","_","unit"],postprocess:e=>_("future",c(1,e[6]))},{name:"relativeDate",symbols:["duration","_","agoConnector"],postprocess:e=>d("past",e[0])},{name:"relativeDate",symbols:["duration","_","agoConnector","_","atConnector","_","time"],postprocess:e=>d("past",e[0],void 0,e[6])},{name:"relativeDate",symbols:["duration","_","agoConnector","_","atConnector","_","timeWord"],postprocess:e=>d("past",e[0],void 0,{special:e[6]})},{name:"relativeDate",symbols:["inConnector","_","duration"],postprocess:e=>d("future",e[2])},{name:"relativeDate",symbols:["inConnector","_","duration","_","atConnector","_","time"],postprocess:e=>d("future",e[2],void 0,e[6])},{name:"relativeDate",symbols:["inConnector","_","duration","_","atConnector","_","timeWord"],postprocess:e=>d("future",e[2],void 0,{special:e[6]})},{name:"relativeDate",symbols:["duration","_","fromConnector","_","now"],postprocess:e=>d("future",e[0])},{name:"relativeDate",symbols:["duration","_","fromConnector","_","now","_","atConnector","_","time"],postprocess:e=>d("future",e[0],void 0,e[8])},{name:"relativeDate",symbols:["duration","_","fromConnector","_","now","_","atConnector","_","timeWord"],postprocess:e=>d("future",e[0],void 0,{special:e[8]})},{name:"relativeDate",symbols:["duration","_","fromConnector","_","today"],postprocess:e=>d("future",e[0],u({special:"today"}))},{name:"relativeDate",symbols:["duration","_","fromConnector","_","today","_","atConnector","_","time"],postprocess:e=>d("future",e[0],u({special:"today"}),e[8])},{name:"relativeDate",symbols:["duration","_","fromConnector","_","tomorrow"],postprocess:e=>d("future",e[0],u({special:"tomorrow"}))},{name:"relativeDate",symbols:["duration","_","fromConnector","_","tomorrow","_","atConnector","_","time"],postprocess:e=>d("future",e[0],u({special:"tomorrow"}),e[8])},{name:"relativeDate",symbols:["duration","_","fromConnector","_","yesterday"],postprocess:e=>d("future",e[0],u({special:"yesterday"}))},{name:"relativeDate",symbols:["duration","_","henceConnector"],postprocess:e=>d("future",e[0])},{name:"relativeDate",symbols:["duration","_","laterConnector"],postprocess:e=>d("future",e[0])},{name:"relativeDate",symbols:["duration","_","beforeConnector","_","date"],postprocess:e=>d("past",e[0],e[4])},{name:"relativeDate",symbols:["duration","_","afterConnector","_","date"],postprocess:e=>d("future",e[0],e[4])},{name:"relativeDate",symbols:["theConnector","_","dayUnit","_","beforeConnector","_","date"],postprocess:e=>d("past",c(1,"day"),e[6])},{name:"relativeDate",symbols:["theConnector","_","dayUnit","_","afterConnector","_","date"],postprocess:e=>d("future",c(1,"day"),e[6])},{name:"relativeDate",symbols:["dayUnit","_","beforeConnector","_","date"],postprocess:e=>d("past",c(1,"day"),e[4])},{name:"relativeDate",symbols:["dayUnit","_","afterConnector","_","date"],postprocess:e=>d("future",c(1,"day"),e[4])},{name:"relativeDate",symbols:["wordNumber","_","unit","_","beforeConnector","_","date"],postprocess:e=>d("past",c(g(e[0]),e[2]),e[6])},{name:"relativeDate",symbols:["wordNumber","_","unit","_","afterConnector","_","date"],postprocess:e=>d("future",c(g(e[0]),e[2]),e[6])},{name:"relativeDate",symbols:["nextRelative","_","businessKeyword","_","dayOrDaysUnit"],postprocess:e=>d("future",c(1,"businessDay"))},{name:"relativeDate",symbols:["inConnector","_","number","_","businessKeyword","_","dayOrDaysUnit"],postprocess:e=>d("future",c(e[2],"businessDay"))},{name:"relativeDate",symbols:["inConnector","_","wordNumber","_","businessKeyword","_","dayOrDaysUnit"],postprocess:e=>d("future",c(g(e[2]),"businessDay"))},{name:"relativeDate",symbols:["number","_","businessKeyword","_","dayOrDaysUnit","_","agoConnector"],postprocess:e=>d("past",c(e[0],"businessDay"))},{name:"relativeDate",symbols:["wordNumber","_","businessKeyword","_","dayOrDaysUnit","_","agoConnector"],postprocess:e=>d("past",c(g(e[0]),"businessDay"))},{name:"relativeDate",symbols:["wordNumber","_","fortnightKeyword","_","fromConnector","_","now"],postprocess:e=>d("future",c(g(e[0])*2,"week"))},{name:"relativeDate",symbols:["number","_","fortnightKeyword","_","fromConnector","_","now"],postprocess:e=>d("future",c(e[0]*2,"week"))},{name:"relativeDate",symbols:["fortnightKeyword","_","fromConnector","_","now"],postprocess:e=>d("future",c(2,"week"))},{name:"relativeDate",symbols:["inConnector","_","wordNumber","_","fortnightKeyword"],postprocess:e=>d("future",c(g(e[2])*2,"week"))},{name:"relativeDate",symbols:["inConnector","_","number","_","fortnightKeyword"],postprocess:e=>d("future",c(e[2]*2,"week"))},{name:"relativeDate",symbols:["inConnector","_","fortnightKeyword"],postprocess:e=>d("future",c(2,"week"))},{name:"relativeDate",symbols:["wordNumber","_","fortnightKeyword","_","agoConnector"],postprocess:e=>d("past",c(g(e[0])*2,"week"))},{name:"relativeDate",symbols:["number","_","fortnightKeyword","_","agoConnector"],postprocess:e=>d("past",c(e[0]*2,"week"))},{name:"relativeDate",symbols:["fortnightKeyword","_","agoConnector"],postprocess:e=>d("past",c(2,"week"))},{name:"relativeDate",symbols:["number","_","weekday","_","fromConnector","_","now"],postprocess:e=>({...d("future",c(e[0],"weekdayOccurrence")),weekday:e[2]})},{name:"relativeDate",symbols:["wordNumber","_","weekday","_","fromConnector","_","now"],postprocess:e=>({...d("future",c(g(e[0]),"weekdayOccurrence")),weekday:e[2]})},{name:"relativeDate",symbols:["number","_","weekday","_","agoConnector"],postprocess:e=>({...d("past",c(e[0],"weekdayOccurrence")),weekday:e[2]})},{name:"relativeDate",symbols:["wordNumber","_","weekday","_","agoConnector"],postprocess:e=>({...d("past",c(g(e[0]),"weekdayOccurrence")),weekday:e[2]})},{name:"fuzzy",symbols:["quarter"],postprocess:e=>m({period:"quarter",quarter:x(e[0].value)})},{name:"fuzzy",symbols:["quarter","_","year"],postprocess:e=>m({period:"quarter",quarter:x(e[0].value),year:e[2]})},{name:"fuzzy",symbols:["half"],postprocess:e=>m({period:"half",half:$(e[0].value)})},{name:"fuzzy",symbols:["half","_","year"],postprocess:e=>m({period:"half",half:$(e[0].value),year:e[2]})},{name:"fuzzy",symbols:["earlyModifier","_","month"],postprocess:e=>m({period:"month",month:e[2],modifier:"early"})},{name:"fuzzy",symbols:["midModifier","_","month"],postprocess:e=>m({period:"month",month:e[2],modifier:"mid"})},{name:"fuzzy",symbols:["lateModifier","_","month"],postprocess:e=>m({period:"month",month:e[2],modifier:"late"})},{name:"fuzzy",symbols:["earlyModifier","_","quarter"],postprocess:e=>m({period:"quarter",quarter:x(e[2].value),modifier:"early"})},{name:"fuzzy",symbols:["midModifier","_","quarter"],postprocess:e=>m({period:"quarter",quarter:x(e[2].value),modifier:"mid"})},{name:"fuzzy",symbols:["lateModifier","_","quarter"],postprocess:e=>m({period:"quarter",quarter:x(e[2].value),modifier:"late"})},{name:"fuzzy",symbols:["earlyModifier","_","year"],postprocess:e=>m({period:"year",year:e[2],modifier:"early"})},{name:"fuzzy",symbols:["midModifier","_","year"],postprocess:e=>m({period:"year",year:e[2],modifier:"mid"})},{name:"fuzzy",symbols:["lateModifier","_","year"],postprocess:e=>m({period:"year",year:e[2],modifier:"late"})},{name:"fuzzy",symbols:["earlyModifier","_","yearUnit"],postprocess:e=>m({period:"year",modifier:"early"})},{name:"fuzzy",symbols:["midModifier","_","yearUnit"],postprocess:e=>m({period:"year",modifier:"mid"})},{name:"fuzzy",symbols:["lateModifier","_","yearUnit"],postprocess:e=>m({period:"year",modifier:"late"})},{name:"fuzzy",symbols:["endConnector","_","ofConnector","_","month"],postprocess:e=>m({period:"month",month:e[4],modifier:"end"})},{name:"fuzzy",symbols:["endConnector","_","ofConnector","_","year"],postprocess:e=>m({period:"year",year:e[4],modifier:"end"})},{name:"fuzzy",symbols:["endConnector","_","ofConnector","_","quarter"],postprocess:e=>m({period:"quarter",quarter:x(e[4].value),modifier:"end"})},{name:"fuzzy",symbols:["startConnector","_","ofConnector","_","quarter"],postprocess:e=>m({period:"quarter",quarter:x(e[4].value),modifier:"start"})},{name:"fuzzy",symbols:["beginningConnector","_","ofConnector","_","quarter"],postprocess:e=>m({period:"quarter",quarter:x(e[4].value),modifier:"beginning"})},{name:"fuzzy",symbols:["middleConnector","_","ofConnector","_","quarter"],postprocess:e=>m({period:"quarter",quarter:x(e[4].value),modifier:"middle"})},{name:"fuzzy",symbols:["endConnector","_","ofConnector","_","theConnector","_","month"],postprocess:e=>m({period:"month",month:e[6],modifier:"end"})},{name:"fuzzy",symbols:["endConnector","_","ofConnector","_","theConnector","_","unit"],postprocess:e=>m({period:e[6],modifier:"end"})},{name:"fuzzy",symbols:["endConnector","_","ofConnector","_","unit"],postprocess:e=>m({period:e[4],modifier:"end"})},{name:"fuzzy",symbols:["beginningConnector","_","ofConnector","_","unit"],postprocess:e=>m({period:e[4],modifier:"beginning"})},{name:"fuzzy",symbols:["startConnector","_","ofConnector","_","unit"],postprocess:e=>m({period:e[4],modifier:"start"})},{name:"fuzzy",symbols:["middleConnector","_","ofConnector","_","unit"],postprocess:e=>m({period:e[4],modifier:"middle"})},{name:"fuzzy",symbols:["endConnector","_","ofConnector","_","nextRelative","_","unit"],postprocess:e=>m({period:e[6],modifier:"end",relative:"next"})},{name:"fuzzy",symbols:["endConnector","_","ofConnector","_","lastRelative","_","unit"],postprocess:e=>m({period:e[6],modifier:"end",relative:"last"})},{name:"fuzzy",symbols:["startConnector","_","ofConnector","_","nextRelative","_","unit"],postprocess:e=>m({period:e[6],modifier:"start",relative:"next"})},{name:"fuzzy",symbols:["startConnector","_","ofConnector","_","lastRelative","_","unit"],postprocess:e=>m({period:e[6],modifier:"start",relative:"last"})},{name:"fuzzy",symbols:["beginningConnector","_","ofConnector","_","nextRelative","_","unit"],postprocess:e=>m({period:e[6],modifier:"beginning",relative:"next"})},{name:"fuzzy",symbols:["beginningConnector","_","ofConnector","_","lastRelative","_","unit"],postprocess:e=>m({period:e[6],modifier:"beginning",relative:"last"})},{name:"fuzzy",symbols:["beginningConnector","_","ofConnector","_","month"],postprocess:e=>m({period:"month",month:e[4],modifier:"beginning"})},{name:"fuzzy",symbols:["beginningConnector","_","ofConnector","_","year"],postprocess:e=>m({period:"year",year:e[4],modifier:"beginning"})},{name:"fuzzy",symbols:["startConnector","_","ofConnector","_","month"],postprocess:e=>m({period:"month",month:e[4],modifier:"start"})},{name:"fuzzy",symbols:["startConnector","_","ofConnector","_","year"],postprocess:e=>m({period:"year",year:e[4],modifier:"start"})},{name:"fuzzy",symbols:["middleConnector","_","ofConnector","_","month"],postprocess:e=>m({period:"month",month:e[4],modifier:"middle"})},{name:"fuzzy",symbols:["middleConnector","_","ofConnector","_","year"],postprocess:e=>m({period:"year",year:e[4],modifier:"middle"})},{name:"fuzzy",symbols:["season"],postprocess:e=>m({period:"season",season:e[0]})},{name:"fuzzy",symbols:["season","_","year"],postprocess:e=>m({period:"season",season:e[0],year:e[2]})},{name:"fuzzy",symbols:["earlyModifier","_","season"],postprocess:e=>m({period:"season",season:e[2],modifier:"early"})},{name:"fuzzy",symbols:["midModifier","_","season"],postprocess:e=>m({period:"season",season:e[2],modifier:"mid"})},{name:"fuzzy",symbols:["lateModifier","_","season"],postprocess:e=>m({period:"season",season:e[2],modifier:"late"})},{name:"fuzzy",symbols:["nextRelative","_","season"],postprocess:e=>m({period:"season",season:e[2],relative:"next"})},{name:"fuzzy",symbols:["lastRelative","_","season"],postprocess:e=>m({period:"season",season:e[2],relative:"last"})},{name:"fuzzy",symbols:["thisRelative","_","season"],postprocess:e=>m({period:"season",season:e[2],relative:"this"})},{name:"fuzzy",symbols:["ordinalWord","_","quarter","_","year"],postprocess:e=>m({period:"quarter",quarter:v(e[0]),year:e[4]})},{name:"fuzzy",symbols:["ordinalWord","_","quarter"],postprocess:e=>m({period:"quarter",quarter:v(e[0])})},{name:"fuzzy",symbols:["ordinalWord","_","half","_","year"],postprocess:e=>m({period:"half",half:v(e[0]),year:e[4]})},{name:"fuzzy",symbols:["ordinalWord","_","half"],postprocess:e=>m({period:"half",half:v(e[0])})},{name:"fuzzy",symbols:["aroundConnector","_","date"],postprocess:e=>m({...e[2],period:"around"})},{name:"fuzzy",symbols:["aboutConnector","_","date"],postprocess:e=>m({...e[2],period:"around"})},{name:"fuzzy",symbols:["roughlyConnector","_","date"],postprocess:e=>m({...e[2],period:"around"})},{name:"fuzzy",symbols:["approximatelyConnector","_","date"],postprocess:e=>m({...e[2],period:"around"})},{name:"fuzzy",symbols:["aroundConnector","_","fuzzy"],postprocess:e=>e[2]},{name:"fuzzy",symbols:["aboutConnector","_","fuzzy"],postprocess:e=>e[2]},{name:"fuzzy",symbols:["roughlyConnector","_","fuzzy"],postprocess:e=>e[2]},{name:"fuzzy",symbols:["approximatelyConnector","_","fuzzy"],postprocess:e=>e[2]},{name:"fuzzy",symbols:["sometimeConnector","_","inConnector","_","fuzzy"],postprocess:e=>e[4]},{name:"fuzzy",symbols:["sometimeConnector","_","inConnector","_","month"],postprocess:e=>m({period:"month",month:e[4]})},{name:"fuzzy",symbols:["sometimeConnector","_","nextRelative","_","unit"],postprocess:e=>m({period:e[4],relative:"next"})},{name:"fuzzy",symbols:["sometimeConnector","_","lastRelative","_","unit"],postprocess:e=>m({period:e[4],relative:"last"})},{name:"fuzzy",symbols:["sometimeConnector","_","thisRelative","_","unit"],postprocess:e=>m({period:e[4],relative:"this"})},{name:"fuzzy",symbols:["theConnector","_","lastRelative","_","unit","_","ofConnector","_","month"],postprocess:e=>m({period:"month",month:e[8],modifier:"late"})},{name:"fuzzy",symbols:["theConnector","_","ordinalWord","_","unit","_","ofConnector","_","month"],postprocess:(e,t,o)=>e[2].toLowerCase()==="first"?m({period:"month",month:e[8],modifier:"early"}):o},{name:"fuzzy",symbols:["ordinalWord","_","quarterUnit"],postprocess:e=>m({period:"quarter",quarter:v(e[0])})},{name:"fuzzy",symbols:["ordinal","_","quarterUnit"],postprocess:e=>m({period:"quarter",quarter:H(e[0])})},{name:"fuzzy",symbols:["ordinalWord","_","quarterUnit","_","year"],postprocess:e=>m({period:"quarter",quarter:v(e[0]),year:e[4]})},{name:"fuzzy",symbols:["ordinalWord","_","quarterUnit","_","ofConnector","_","year"],postprocess:e=>m({period:"quarter",quarter:v(e[0]),year:e[6]})},{name:"fuzzy",symbols:["quarter","_","ofConnector","_","year"],postprocess:e=>m({period:"quarter",quarter:x(e[0].value),year:e[4]})},{name:"fuzzy",symbols:["ordinalWord","_","halfWord","_","ofConnector","_","year"],postprocess:e=>m({period:"half",half:v(e[0]),year:e[6]})},{name:"fuzzy",symbols:["earlyModifier","_","nextRelative","_","unit"],postprocess:e=>m({period:e[4],modifier:"early",relative:"next"})},{name:"fuzzy",symbols:["midModifier","_","nextRelative","_","unit"],postprocess:e=>m({period:e[4],modifier:"mid",relative:"next"})},{name:"fuzzy",symbols:["lateModifier","_","nextRelative","_","unit"],postprocess:e=>m({period:e[4],modifier:"late",relative:"next"})},{name:"fuzzy",symbols:["earlyModifier","_","lastRelative","_","unit"],postprocess:e=>m({period:e[4],modifier:"early",relative:"last"})},{name:"fuzzy",symbols:["midModifier","_","lastRelative","_","unit"],postprocess:e=>m({period:e[4],modifier:"mid",relative:"last"})},{name:"fuzzy",symbols:["lateModifier","_","lastRelative","_","unit"],postprocess:e=>m({period:e[4],modifier:"late",relative:"last"})},{name:"fuzzy",symbols:["earlyModifier","_","thisRelative","_","unit"],postprocess:e=>m({period:e[4],modifier:"early",relative:"this"})},{name:"fuzzy",symbols:["midModifier","_","thisRelative","_","unit"],postprocess:e=>m({period:e[4],modifier:"mid",relative:"this"})},{name:"fuzzy",symbols:["lateModifier","_","thisRelative","_","unit"],postprocess:e=>m({period:e[4],modifier:"late",relative:"this"})},{name:"fuzzy",symbols:["beginningConnector","_","ofConnector","_","theConnector","_","unit"],postprocess:e=>m({period:e[6],modifier:"beginning"})},{name:"fuzzy",symbols:["middleConnector","_","ofConnector","_","theConnector","_","unit"],postprocess:e=>m({period:e[6],modifier:"middle"})},{name:"fuzzy",symbols:["lastRelative","_","unit","_","ofConnector","_","month"],postprocess:(e,t,o)=>e[2].toLowerCase()==="day"||e[2].toLowerCase()==="days"?o:m({period:"month",month:e[6],modifier:"late"})},{name:"fuzzy",symbols:["ordinalWord","_","unit","_","ofConnector","_","month"],postprocess:(e,t,o)=>e[2].toLowerCase()==="day"||e[2].toLowerCase()==="days"?o:m({period:"month",month:e[6],modifier:v(e[0])<=2?"early":v(e[0])>=4?"late":"mid"})},{name:"fuzzy",symbols:["weekendKeyword"],postprocess:e=>m({period:"weekend",relative:"this"})},{name:"fuzzy",symbols:["theConnector","_","weekendKeyword"],postprocess:e=>m({period:"weekend",relative:"this"})},{name:"fuzzy",symbols:["thisRelative","_","weekendKeyword"],postprocess:e=>m({period:"weekend",relative:"this"})},{name:"fuzzy",symbols:["nextRelative","_","weekendKeyword"],postprocess:e=>m({period:"weekend",relative:"next"})},{name:"fuzzy",symbols:["lastRelative","_","weekendKeyword"],postprocess:e=>m({period:"weekend",relative:"last"})},{name:"fuzzy",symbols:["tonightKeyword"],postprocess:e=>m({period:"tonight"})},{name:"fuzzy",symbols:["nightKeyword"],postprocess:e=>m({period:"night"})},{name:"fuzzy",symbols:["lastRelative","_","nightKeyword"],postprocess:e=>m({period:"night",relative:"last"})},{name:"fuzzy",symbols:["tomorrow","_","nightKeyword"],postprocess:e=>m({period:"night",relative:"tomorrow"})},{name:"fuzzy",symbols:["weekday","_","nightKeyword"],postprocess:e=>m({period:"night",weekday:e[0]})},{name:"fuzzy",symbols:["laterKeyword","_","today"],postprocess:e=>m({period:"day",modifier:"later"})},{name:"fuzzy",symbols:["earlierKeyword","_","today"],postprocess:e=>m({period:"day",modifier:"earlier"})},{name:"fuzzy",symbols:["laterKeyword","_","thisRelative","_","unit"],postprocess:e=>m({period:e[4],modifier:"later",relative:"this"})},{name:"fuzzy",symbols:["earlierKeyword","_","thisRelative","_","unit"],postprocess:e=>m({period:e[4],modifier:"earlier",relative:"this"})},{name:"fuzzy",symbols:["weekKeyword","_","number"],postprocess:e=>m({period:"weekNumber",weekNumber:e[2]})},{name:"fuzzy",symbols:["weekKeyword","_","number","_","year"],postprocess:e=>m({period:"weekNumber",weekNumber:e[2],year:e[4]})},{name:"fuzzy",symbols:["theConnector","_","weekKeyword","_","ofConnector","_","date"],postprocess:e=>m({period:"weekOf",baseDate:e[6]})},{name:"fuzzy",symbols:["ordinalWord","_","weekKeyword","_","ofConnector","_","month"],postprocess:e=>m({period:"weekOfMonth",week:v(e[0]),month:e[6]})},{name:"fuzzy",symbols:[r.has("kw_ytd")?{type:"kw_ytd"}:kw_ytd],postprocess:e=>m({period:"ytd"})},{name:"duration",symbols:["number","_","unit"],postprocess:e=>c(e[0],e[2])},{name:"duration",symbols:["wordNumber","_","unit"],postprocess:e=>c(g(e[0]),e[2])},{name:"duration",symbols:["abbreviatedDuration"],postprocess:e=>e[0]},{name:"duration",symbols:["halfWord","_","wordNumber","_","unit"],postprocess:e=>{let t=e[2].toLowerCase();return c(t==="a"||t==="an"?.5:g(e[2])+.5,e[4])}},{name:"duration",symbols:["number","_","andConnector","_","halfWord","_","unit"],postprocess:e=>c(e[0]+.5,e[6])},{name:"duration",symbols:["wordNumber","_","andConnector","_","halfWord","_","unit"],postprocess:e=>c(g(e[0])+.5,e[6])},{name:"duration",symbols:["wordNumber","_","andConnector","_","wordNumber","_","halfWord","_","unit"],postprocess:e=>c(g(e[0])+.5,e[8])},{name:"duration",symbols:["wordNumber","_","unit","_","andConnector","_","wordNumber","_","halfWord"],postprocess:e=>c(g(e[0])+.5,e[2])},{name:"duration",symbols:["halfWord","_","unit"],postprocess:e=>c(.5,e[2])},{name:"duration",symbols:["duration","_","andConnector","_","duration"],postprocess:e=>({...e[0],combined:[e[0],e[4]]})},{name:"duration",symbols:["duration","_",r.has("comma")?{type:"comma"}:comma,"_","duration"],postprocess:e=>({...e[0],combined:[e[0],e[4]]})},{name:"duration",symbols:["duration","_",r.has("comma")?{type:"comma"}:comma,"_","andConnector","_","duration"],postprocess:e=>({...e[0],combined:[e[0],e[6]]})},{name:"duration",symbols:["duration","_","duration"],postprocess:e=>({...e[0],combined:[e[0],e[2]]})},{name:"duration",symbols:["aroundConnector","_","duration"],postprocess:e=>({...e[2],approximate:!0})},{name:"duration",symbols:["aboutConnector","_","duration"],postprocess:e=>({...e[2],approximate:!0})},{name:"abbreviatedDuration",symbols:[r.has("abbreviatedDuration")?{type:"abbreviatedDuration"}:abbreviatedDuration],postprocess:e=>{let t=e[0].value.match(/^(\d+)(mo|w|d|h|m|s|y)$/);if(!t)return null;let o=parseInt(t[1],10);return c(o,{w:"week",d:"day",h:"hour",m:"minute",mo:"month",s:"second",y:"year"}[t[2]])}},{name:"date",symbols:["specialDay"],postprocess:e=>u({special:e[0]})},{name:"date",symbols:["ordinalWeekdayOfMonth"],postprocess:p},{name:"date",symbols:["relativeWeekday"],postprocess:p},{name:"date",symbols:["weekday"],postprocess:e=>u({weekday:e[0]})},{name:"date",symbols:["monthDayYear"],postprocess:p},{name:"date",symbols:["monthDay"],postprocess:p},{name:"date",symbols:["monthDayCompact"],postprocess:p},{name:"date",symbols:["monthYear"],postprocess:p},{name:"date",symbols:["dateFormat"],postprocess:p},{name:"date",symbols:["relativePeriod"],postprocess:p},{name:"date",symbols:["complexDate"],postprocess:p},{name:"date",symbols:["dateWithTime"],postprocess:p},{name:"date",symbols:["relativeMonth"],postprocess:p},{name:"date",symbols:["monthOnly"],postprocess:p},{name:"date",symbols:["yearOnly"],postprocess:p},{name:"date",symbols:["timeOnly"],postprocess:p},{name:"date",symbols:["dayOnly"],postprocess:p},{name:"date",symbols:["eodCobDate"],postprocess:p},{name:"monthDayCompact",symbols:[r.has("monthDayCompact")?{type:"monthDayCompact"}:monthDayCompact],postprocess:e=>{let t=S(e[0].value);return u({month:t.month,day:t.day})}},{name:"monthOnly",symbols:["month"],postprocess:e=>u({month:e[0],day:1,monthOnly:!0})},{name:"relativeMonth",symbols:["nextRelative","_","month"],postprocess:e=>u({month:e[2],day:1,monthOnly:!0,relativeMonth:"next"})},{name:"relativeMonth",symbols:["lastRelative","_","month"],postprocess:e=>u({month:e[2],day:1,monthOnly:!0,relativeMonth:"last"})},{name:"relativeMonth",symbols:["thisRelative","_","month"],postprocess:e=>u({month:e[2],day:1,monthOnly:!0,relativeMonth:"this"})},{name:"monthYear",symbols:["month","_","year"],postprocess:e=>u({month:e[0],year:e[2],day:1,monthOnly:!0})},{name:"yearOnly",symbols:["year"],postprocess:(e,t,o)=>{let s=e[0];return s<1900||s>2100?o:u({year:s,month:1,day:1,yearOnly:!0})}},{name:"timeOnly",symbols:["time"],postprocess:e=>u({time:e[0],timeOnly:!0})},{name:"timeOnly",symbols:["timeWord"],postprocess:e=>u({time:{special:e[0]},timeOnly:!0})},{name:"dayOnly",symbols:["theConnector","_","dayNumber"],postprocess:e=>u({day:e[2],dayOnly:!0})},{name:"dayOnly",symbols:["onConnector","_","theConnector","_","dayNumber"],postprocess:e=>u({day:e[4],dayOnly:!0})},{name:"eodCobDate",symbols:["eodKeyword"],postprocess:e=>u({special:"today",time:{hour:23,minute:59}})},{name:"eodCobDate",symbols:["cobKeyword"],postprocess:e=>u({special:"today",time:{hour:17,minute:0}})},{name:"eodCobDate",symbols:["eodKeyword","_","weekday"],postprocess:e=>u({weekday:e[2],time:{hour:23,minute:59}})},{name:"eodCobDate",symbols:["cobKeyword","_","weekday"],postprocess:e=>u({weekday:e[2],time:{hour:17,minute:0}})},{name:"eodCobDate",symbols:["eodKeyword","_","specialDay"],postprocess:e=>u({special:e[2],time:{hour:23,minute:59}})},{name:"eodCobDate",symbols:["cobKeyword","_","specialDay"],postprocess:e=>u({special:e[2],time:{hour:17,minute:0}})},{name:"eodCobDate",symbols:["endConnector","_","ofConnector","_","dayUnit","_","specialDay"],postprocess:e=>u({special:e[6],time:{hour:23,minute:59}})},{name:"eodCobDate",symbols:["closeKeyword","_","ofConnector","_","businessKeyword","_","weekday"],postprocess:e=>u({weekday:e[6],time:{hour:17,minute:0}})},{name:"eodCobDate",symbols:["closeKeyword","_","ofConnector","_","businessKeyword","_","specialDay"],postprocess:e=>u({special:e[6],time:{hour:17,minute:0}})},{name:"specialDay",symbols:["today"],postprocess:e=>"today"},{name:"specialDay",symbols:["tomorrow"],postprocess:e=>"tomorrow"},{name:"specialDay",symbols:["yesterday"],postprocess:e=>"yesterday"},{name:"specialDay",symbols:["now"],postprocess:e=>"now"},{name:"specialDay",symbols:["theConnector","_","dayUnit","_","afterConnector","_","tomorrow"],postprocess:e=>"dayAfterTomorrow"},{name:"specialDay",symbols:["dayUnit","_","afterConnector","_","tomorrow"],postprocess:e=>"dayAfterTomorrow"},{name:"specialDay",symbols:["theConnector","_","dayUnit","_","beforeConnector","_","yesterday"],postprocess:e=>"dayBeforeYesterday"},{name:"specialDay",symbols:["dayUnit","_","beforeConnector","_","yesterday"],postprocess:e=>"dayBeforeYesterday"},{name:"dayUnit",symbols:[r.has("unit")?{type:"unit"}:unit],postprocess:(e,t,o)=>e[0].value==="day"?e[0]:o},{name:"dayOrDaysUnit",symbols:[r.has("unit")?{type:"unit"}:unit],postprocess:(e,t,o)=>e[0].value==="day"||e[0].value==="days"?e[0]:o},{name:"relativeWeekday",symbols:["nextRelative","_","weekday"],postprocess:e=>u({weekday:e[2],relative:"next"})},{name:"relativeWeekday",symbols:["lastRelative","_","weekday"],postprocess:e=>u({weekday:e[2],relative:"last"})},{name:"relativeWeekday",symbols:["thisRelative","_","weekday"],postprocess:e=>u({weekday:e[2],relative:"this"})},{name:"relativeWeekday",symbols:["comingRelative","_","weekday"],postprocess:e=>u({weekday:e[2],relative:"next"})},{name:"relativeWeekday",symbols:["previousRelative","_","weekday"],postprocess:e=>u({weekday:e[2],relative:"last"})},{name:"relativePeriod",symbols:["nextRelative","_","unit"],postprocess:e=>u({relative:"next",period:e[2]})},{name:"relativePeriod",symbols:["lastRelative","_","unit"],postprocess:e=>u({relative:"last",period:e[2]})},{name:"relativePeriod",symbols:["thisRelative","_","unit"],postprocess:e=>u({relative:"this",period:e[2]})},{name:"monthDay",symbols:["month","_","dayNumber"],postprocess:e=>u({month:e[0],day:e[2]})},{name:"monthDay",symbols:["dayNumber","_","month"],postprocess:e=>u({month:e[2],day:e[0]})},{name:"monthDay",symbols:["dayNumber","_","ofConnector","_","month"],postprocess:e=>u({month:e[4],day:e[0]})},{name:"monthDay",symbols:["theConnector","_","dayNumber","_","ofConnector","_","month"],postprocess:e=>u({month:e[6],day:e[2]})},{name:"monthDay",symbols:["month","_","ordinalWord"],postprocess:e=>u({month:e[0],day:v(e[2])})},{name:"monthDay",symbols:["month","_","theConnector","_","dayNumber"],postprocess:e=>u({month:e[0],day:e[4]})},{name:"ordinalWeekdayOfMonth",symbols:["ordinalWord","_","weekday","_","ofConnector","_","month"],postprocess:e=>u({ordinalWeekday:v(e[0]),weekday:e[2],month:e[6]})},{name:"ordinalWeekdayOfMonth",symbols:["lastRelative","_","weekday","_","ofConnector","_","month"],postprocess:e=>u({ordinalWeekday:-1,weekday:e[2],month:e[6]})},{name:"ordinalWeekdayOfMonth",symbols:["ordinalWord","_","weekday","_","ofConnector","_","theConnector","_","monthUnit"],postprocess:e=>u({ordinalWeekday:v(e[0]),weekday:e[2],monthFromRef:!0})},{name:"ordinalWeekdayOfMonth",symbols:["lastRelative","_","weekday","_","ofConnector","_","theConnector","_","monthUnit"],postprocess:e=>u({ordinalWeekday:-1,weekday:e[2],monthFromRef:!0})},{name:"ordinalWeekdayOfMonth",symbols:["ordinalWord","_","dayUnit","_","ofConnector","_","month"],postprocess:e=>u({month:e[6],day:v(e[0])})},{name:"ordinalWeekdayOfMonth",symbols:["lastRelative","_","dayUnit","_","ofConnector","_","month"],postprocess:e=>u({month:e[6],day:-1,lastDayOfMonth:!0})},{name:"ordinalWeekdayOfMonth",symbols:["lastRelative","_","dayUnit","_","ofConnector","_","theConnector","_","monthUnit"],postprocess:e=>u({lastDayOfMonth:!0,monthFromRef:!0})},{name:"ordinalWeekdayOfMonth",symbols:["ordinalWord","_","dayUnit","_","ofConnector","_","nextRelative","_","monthUnit"],postprocess:e=>u({ordinalWeekday:v(e[0]),dayOfMonth:!0,nextMonth:!0})},{name:"monthDayYear",symbols:["monthDay","_","year"],postprocess:e=>({...e[0],year:e[2]})},{name:"monthDayYear",symbols:["monthDay",r.has("comma")?{type:"comma"}:comma,"_","year"],postprocess:e=>({...e[0],year:e[3]})},{name:"dateFormat",symbols:[r.has("integer")?{type:"integer"}:integer,r.has("dash")?{type:"dash"}:dash,r.has("integer")?{type:"integer"}:integer,r.has("dash")?{type:"dash"}:dash,r.has("integer")?{type:"integer"}:integer],postprocess:e=>{let t=[parseInt(e[0].value,10),parseInt(e[2].value,10),parseInt(e[4].value,10)];return t[0]>1e3?u({year:t[0],month:t[1],day:t[2]}):u({formatParts:t,separator:"-"})}},{name:"dateFormat",symbols:[r.has("integer")?{type:"integer"}:integer,r.has("slash")?{type:"slash"}:slash,r.has("integer")?{type:"integer"}:integer,r.has("slash")?{type:"slash"}:slash,r.has("integer")?{type:"integer"}:integer],postprocess:e=>{let t=[parseInt(e[0].value,10),parseInt(e[2].value,10),parseInt(e[4].value,10)];return t[0]>1e3?u({year:t[0],month:t[1],day:t[2]}):u({formatParts:t,separator:"/"})}},{name:"dateWithTime",symbols:["date","_","atConnector","_","time"],postprocess:e=>({...e[0],time:e[4]})},{name:"dateWithTime",symbols:["date","_","atConnector","_","timeWord"],postprocess:e=>({...e[0],time:{special:e[4]}})},{name:"dateWithTime",symbols:["time","_","date"],postprocess:e=>({...e[2],time:e[0]})},{name:"dateWithTime",symbols:["timeWord","_","date"],postprocess:e=>({...e[2],time:{special:e[0]}})},{name:"dateWithTime",symbols:["date","_","time"],postprocess:e=>({...e[0],time:e[2]})},{name:"dateWithTime",symbols:["date","_","timeWord"],postprocess:e=>({...e[0],time:{special:e[2]}})},{name:"dateWithTime",symbols:["timeWord","_","onConnector","_","date"],postprocess:e=>({...e[4],time:{special:e[0]}})},{name:"dateWithTime",symbols:["timeWord","_","onConnector","_","weekday"],postprocess:e=>u({weekday:e[4],time:{special:e[0]}})},{name:"dateWithTime",symbols:["midnight","_","tonightKeyword"],postprocess:e=>u({special:"tonight",time:{special:"midnight"}})},{name:"complexDate",symbols:["nextRelative","_","unit","_","weekday","_","time"],postprocess:e=>u({relative:"next",period:e[2],weekday:e[4],time:e[6]})},{name:"complexDate",symbols:["nextRelative","_","unit","_","weekday"],postprocess:e=>u({relative:"next",period:e[2],weekday:e[4]})},{name:"complexDate",symbols:["lastRelative","_","unit","_","weekday","_","time"],postprocess:e=>u({relative:"last",period:e[2],weekday:e[4],time:e[6]})},{name:"complexDate",symbols:["lastRelative","_","unit","_","weekday"],postprocess:e=>u({relative:"last",period:e[2],weekday:e[4]})},{name:"complexDate",symbols:["thisRelative","_","unit","_","weekday","_","time"],postprocess:e=>u({relative:"this",period:e[2],weekday:e[4],time:e[6]})},{name:"complexDate",symbols:["thisRelative","_","unit","_","weekday"],postprocess:e=>u({relative:"this",period:e[2],weekday:e[4]})},{name:"time",symbols:[r.has("time")?{type:"time"}:time],postprocess:e=>{let t=e[0].value.split(":");return{hour:parseInt(t[0],10),minute:parseInt(t[1],10)}}},{name:"time",symbols:[r.has("time")?{type:"time"}:time,"_",r.has("ampm")?{type:"ampm"}:ampm],postprocess:e=>{let t=e[0].value.split(":"),o=parseInt(t[0],10);return e[2].value==="pm"&&o!==12&&(o+=12),e[2].value==="am"&&o===12&&(o=0),{hour:o,minute:parseInt(t[1],10)}}},{name:"time",symbols:[r.has("time")?{type:"time"}:time,r.has("ampm")?{type:"ampm"}:ampm],postprocess:e=>{let t=e[0].value.split(":"),o=parseInt(t[0],10);return e[1].value==="pm"&&o!==12&&(o+=12),e[1].value==="am"&&o===12&&(o=0),{hour:o,minute:parseInt(t[1],10)}}},{name:"time",symbols:[r.has("integer")?{type:"integer"}:integer,"_",r.has("ampm")?{type:"ampm"}:ampm],postprocess:e=>{let t=parseInt(e[0].value,10);return e[2].value==="pm"&&t!==12&&(t+=12),e[2].value==="am"&&t===12&&(t=0),{hour:t,minute:0}}},{name:"time",symbols:[r.has("integer")?{type:"integer"}:integer,r.has("ampm")?{type:"ampm"}:ampm],postprocess:e=>{let t=parseInt(e[0].value,10);return e[1].value==="pm"&&t!==12&&(t+=12),e[1].value==="am"&&t===12&&(t=0),{hour:t,minute:0}}},{name:"time",symbols:["quarterKeyword","_","pastConnector","_","hourNumber"],postprocess:e=>({hour:e[4],minute:15})},{name:"time",symbols:["quarterKeyword","_","pastConnector","_","hourNumber",r.has("ampm")?{type:"ampm"}:ampm],postprocess:e=>{let t=e[4];return e[5].value==="pm"&&t!==12&&(t+=12),e[5].value==="am"&&t===12&&(t=0),{hour:t,minute:15}}},{name:"time",symbols:["halfWord","_","pastConnector","_","hourNumber"],postprocess:e=>({hour:e[4],minute:30})},{name:"time",symbols:["halfWord","_","pastConnector","_","hourNumber",r.has("ampm")?{type:"ampm"}:ampm],postprocess:e=>{let t=e[4];return e[5].value==="pm"&&t!==12&&(t+=12),e[5].value==="am"&&t===12&&(t=0),{hour:t,minute:30}}},{name:"time",symbols:["quarterKeyword","_","toConnector","_","hourNumber"],postprocess:e=>({hour:e[4]-1,minute:45})},{name:"time",symbols:["quarterKeyword","_","toConnector","_","hourNumber",r.has("ampm")?{type:"ampm"}:ampm],postprocess:e=>{let t=e[4];return e[5].value==="pm"&&t!==12&&(t+=12),e[5].value==="am"&&t===12&&(t=0),{hour:t-1,minute:45}}},{name:"time",symbols:["number","_","pastConnector","_","hourNumber"],postprocess:e=>({hour:e[4],minute:e[0]})},{name:"time",symbols:["number","_","pastConnector","_","hourNumber",r.has("ampm")?{type:"ampm"}:ampm],postprocess:e=>{let t=e[4];return e[5].value==="pm"&&t!==12&&(t+=12),e[5].value==="am"&&t===12&&(t=0),{hour:t,minute:e[0]}}},{name:"time",symbols:["number","_","toConnector","_","hourNumber"],postprocess:e=>({hour:e[4]-1,minute:60-e[0]})},{name:"time",symbols:["number","_","toConnector","_","hourNumber",r.has("ampm")?{type:"ampm"}:ampm],postprocess:e=>{let t=e[4];return e[5].value==="pm"&&t!==12&&(t+=12),e[5].value==="am"&&t===12&&(t=0),{hour:t-1,minute:60-e[0]}}},{name:"time",symbols:["number","_","toConnector","_","noon"],postprocess:e=>({hour:11,minute:60-e[0]})},{name:"time",symbols:["number","_","toConnector","_","midnight"],postprocess:e=>({hour:23,minute:60-e[0]})},{name:"time",symbols:["quarterKeyword","_","toConnector","_","noon"],postprocess:e=>({hour:11,minute:45})},{name:"time",symbols:["quarterKeyword","_","toConnector","_","midnight"],postprocess:e=>({hour:23,minute:45})},{name:"timeWord",symbols:["noon"],postprocess:e=>"noon"},{name:"timeWord",symbols:["midnight"],postprocess:e=>"midnight"},{name:"number",symbols:[r.has("integer")?{type:"integer"}:integer],postprocess:e=>parseInt(e[0].value,10)},{name:"number",symbols:[r.has("decimal")?{type:"decimal"}:decimal],postprocess:e=>parseFloat(e[0].value)},{name:"year",symbols:[r.has("integer")?{type:"integer"}:integer],postprocess:(e,t,o)=>{let s=parseInt(e[0].value,10);return s>=1900&&s<=2100?s:o}},{name:"dayNumber",symbols:[r.has("integer")?{type:"integer"}:integer],postprocess:(e,t,o)=>{let s=parseInt(e[0].value,10);return s<1||s>31?o:s}},{name:"dayNumber",symbols:[r.has("ordinal")?{type:"ordinal"}:ordinal],postprocess:e=>H(e[0].value)},{name:"month",symbols:[r.has("month")?{type:"month"}:month],postprocess:e=>B(e[0].value)},{name:"weekday",symbols:[r.has("weekday")?{type:"weekday"}:weekday],postprocess:e=>e[0].value},{name:"quarter",symbols:[r.has("quarter")?{type:"quarter"}:quarter],postprocess:p},{name:"half",symbols:[r.has("half")?{type:"half"}:half],postprocess:p},{name:"season",symbols:[r.has("season")?{type:"season"}:season],postprocess:e=>e[0].value},{name:"unit",symbols:[r.has("unit")?{type:"unit"}:unit],postprocess:e=>e[0].value},{name:"quarterUnit",symbols:[r.has("unit")?{type:"unit"}:unit],postprocess:(e,t,o)=>{let s=e[0].value.toLowerCase();return s==="quarter"||s==="quarters"?s:o}},{name:"halfUnit",symbols:[r.has("unit")?{type:"unit"}:unit],postprocess:(e,t,o)=>{let s=e[0].value.toLowerCase();return s==="half"?s:o}},{name:"yearUnit",symbols:[r.has("unit")?{type:"unit"}:unit],postprocess:(e,t,o)=>{let s=e[0].value.toLowerCase();return s==="year"||s==="years"||s==="yr"||s==="yrs"?s:o}},{name:"monthUnit",symbols:[r.has("unit")?{type:"unit"}:unit],postprocess:(e,t,o)=>{let s=e[0].value.toLowerCase();return s==="month"||s==="months"||s==="mo"||s==="mos"?s:o}},{name:"wordNumber",symbols:[r.has("wordNumber")?{type:"wordNumber"}:wordNumber],postprocess:e=>e[0].value},{name:"ordinalWord",symbols:[r.has("ordinalWord")?{type:"ordinalWord"}:ordinalWord],postprocess:e=>e[0].value},{name:"ordinalWord",symbols:[r.has("unit")?{type:"unit"}:unit],postprocess:(e,t,o)=>e[0].value==="second"?"second":o},{name:"ordinal",symbols:[r.has("ordinal")?{type:"ordinal"}:ordinal],postprocess:e=>e[0].value},{name:"halfWord",symbols:[r.has("halfWord")?{type:"halfWord"}:halfWord],postprocess:e=>e[0].value},{name:"toConnector",symbols:[r.has("kw_to")?{type:"kw_to"}:kw_to],postprocess:p},{name:"fromConnector",symbols:[r.has("kw_from")?{type:"kw_from"}:kw_from],postprocess:p},{name:"forConnector",symbols:[r.has("kw_for")?{type:"kw_for"}:kw_for],postprocess:p},{name:"inConnector",symbols:[r.has("kw_in")?{type:"kw_in"}:kw_in],postprocess:p},{name:"onConnector",symbols:[r.has("kw_on")?{type:"kw_on"}:kw_on],postprocess:p},{name:"atConnector",symbols:[r.has("kw_at")?{type:"kw_at"}:kw_at],postprocess:p},{name:"ofConnector",symbols:[r.has("kw_of")?{type:"kw_of"}:kw_of],postprocess:p},{name:"theConnector",symbols:[r.has("kw_the")?{type:"kw_the"}:kw_the],postprocess:p},{name:"andConnector",symbols:[r.has("kw_and")?{type:"kw_and"}:kw_and],postprocess:p},{name:"betweenConnector",symbols:[r.has("kw_between")?{type:"kw_between"}:kw_between],postprocess:p},{name:"throughConnector",symbols:[r.has("kw_through")?{type:"kw_through"}:kw_through],postprocess:p},{name:"untilConnector",symbols:[r.has("kw_until")?{type:"kw_until"}:kw_until],postprocess:p},{name:"withinConnector",symbols:[r.has("kw_within")?{type:"kw_within"}:kw_within],postprocess:p},{name:"overConnector",symbols:[r.has("kw_over")?{type:"kw_over"}:kw_over],postprocess:p},{name:"duringConnector",symbols:[r.has("kw_during")?{type:"kw_during"}:kw_during],postprocess:p},{name:"startingConnector",symbols:[r.has("kw_starting")?{type:"kw_starting"}:kw_starting],postprocess:p},{name:"byConnector",symbols:[r.has("kw_by")?{type:"kw_by"}:kw_by],postprocess:p},{name:"aroundConnector",symbols:[r.has("kw_around")?{type:"kw_around"}:kw_around],postprocess:p},{name:"aboutConnector",symbols:[r.has("kw_about")?{type:"kw_about"}:kw_about],postprocess:p},{name:"roughlyConnector",symbols:[r.has("kw_roughly")?{type:"kw_roughly"}:kw_roughly],postprocess:p},{name:"approximatelyConnector",symbols:[r.has("kw_approximately")?{type:"kw_approximately"}:kw_approximately],postprocess:p},{name:"sometimeConnector",symbols:[r.has("kw_sometime")?{type:"kw_sometime"}:kw_sometime],postprocess:p},{name:"afterConnector",symbols:[r.has("kw_after")?{type:"kw_after"}:kw_after],postprocess:p},{name:"beforeConnector",symbols:[r.has("kw_before")?{type:"kw_before"}:kw_before],postprocess:p},{name:"endConnector",symbols:[r.has("kw_end")?{type:"kw_end"}:kw_end],postprocess:p},{name:"beginningConnector",symbols:[r.has("kw_beginning")?{type:"kw_beginning"}:kw_beginning],postprocess:p},{name:"startConnector",symbols:[r.has("kw_start")?{type:"kw_start"}:kw_start],postprocess:p},{name:"middleConnector",symbols:[r.has("kw_middle")?{type:"kw_middle"}:kw_middle],postprocess:p},{name:"agoConnector",symbols:[r.has("kw_ago")?{type:"kw_ago"}:kw_ago],postprocess:p},{name:"henceConnector",symbols:[r.has("otherKeyword")?{type:"otherKeyword"}:otherKeyword],postprocess:(e,t,o)=>e[0].value==="hence"?e[0]:o},{name:"laterConnector",symbols:[r.has("otherKeyword")?{type:"otherKeyword"}:otherKeyword],postprocess:(e,t,o)=>e[0].value==="later"?e[0]:o},{name:"earlyModifier",symbols:[r.has("kw_early")?{type:"kw_early"}:kw_early],postprocess:p},{name:"midModifier",symbols:[r.has("kw_mid")?{type:"kw_mid"}:kw_mid],postprocess:p},{name:"lateModifier",symbols:[r.has("kw_late")?{type:"kw_late"}:kw_late],postprocess:p},{name:"nextRelative",symbols:[r.has("kw_next")?{type:"kw_next"}:kw_next],postprocess:p},{name:"lastRelative",symbols:[r.has("kw_last")?{type:"kw_last"}:kw_last],postprocess:p},{name:"thisRelative",symbols:[r.has("kw_this")?{type:"kw_this"}:kw_this],postprocess:p},{name:"previousRelative",symbols:[r.has("kw_previous")?{type:"kw_previous"}:kw_previous],postprocess:p},{name:"comingRelative",symbols:[r.has("kw_coming")?{type:"kw_coming"}:kw_coming],postprocess:p},{name:"upcomingRelative",symbols:[r.has("kw_upcoming")?{type:"kw_upcoming"}:kw_upcoming],postprocess:p},{name:"pastRelative",symbols:[r.has("kw_past")?{type:"kw_past"}:kw_past],postprocess:p},{name:"today",symbols:[r.has("kw_today")?{type:"kw_today"}:kw_today],postprocess:p},{name:"tomorrow",symbols:[r.has("kw_tomorrow")?{type:"kw_tomorrow"}:kw_tomorrow],postprocess:p},{name:"yesterday",symbols:[r.has("kw_yesterday")?{type:"kw_yesterday"}:kw_yesterday],postprocess:p},{name:"now",symbols:[r.has("kw_now")?{type:"kw_now"}:kw_now],postprocess:p},{name:"noon",symbols:[r.has("kw_noon")?{type:"kw_noon"}:kw_noon],postprocess:p},{name:"midnight",symbols:[r.has("kw_midnight")?{type:"kw_midnight"}:kw_midnight],postprocess:p},{name:"quarterKeyword",symbols:[r.has("unit")?{type:"unit"}:unit],postprocess:(e,t,o)=>e[0].value==="quarter"?e[0]:o},{name:"hourNumber",symbols:[r.has("integer")?{type:"integer"}:integer],postprocess:(e,t,o)=>{let s=parseInt(e[0].value,10);return s<1||s>12?o:s}},{name:"pastConnector",symbols:[r.has("kw_past")?{type:"kw_past"}:kw_past],postprocess:p},{name:"weekendKeyword",symbols:[r.has("kw_weekend")?{type:"kw_weekend"}:kw_weekend],postprocess:p},{name:"tonightKeyword",symbols:[r.has("kw_tonight")?{type:"kw_tonight"}:kw_tonight],postprocess:p},{name:"nightKeyword",symbols:[r.has("kw_night")?{type:"kw_night"}:kw_night],postprocess:p},{name:"fortnightKeyword",symbols:[r.has("kw_fortnight")?{type:"kw_fortnight"}:kw_fortnight],postprocess:p},{name:"laterKeyword",symbols:[r.has("otherKeyword")?{type:"otherKeyword"}:otherKeyword],postprocess:(e,t,o)=>e[0].value==="later"?e[0]:o},{name:"earlierKeyword",symbols:[r.has("otherKeyword")?{type:"otherKeyword"}:otherKeyword],postprocess:(e,t,o)=>e[0].value==="earlier"?e[0]:o},{name:"weekKeyword",symbols:[r.has("unit")?{type:"unit"}:unit],postprocess:(e,t,o)=>{let s=e[0].value.toLowerCase();return s==="week"||s==="weeks"?e[0]:o}},{name:"businessKeyword",symbols:[r.has("kw_business")?{type:"kw_business"}:kw_business],postprocess:p},{name:"eodKeyword",symbols:[r.has("kw_eod")?{type:"kw_eod"}:kw_eod],postprocess:p},{name:"cobKeyword",symbols:[r.has("kw_cob")?{type:"kw_cob"}:kw_cob],postprocess:p},{name:"closeKeyword",symbols:[r.has("kw_close")?{type:"kw_close"}:kw_close],postprocess:p},{name:"_$ebnf$1",symbols:[]},{name:"_$ebnf$1",symbols:["_$ebnf$1",r.has("ws")?{type:"ws"}:ws],postprocess:e=>e[0].concat([e[1]])},{name:"_",symbols:["_$ebnf$1"],postprocess:se}],ParserStart:"main"},J=ae;function F(e,t){let o=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())),s=o.getUTCDay(),a=e-s;return a<=0&&(a+=7),o.setUTCDate(o.getUTCDate()+a),o}function Q(e,t){let o=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())),a=o.getUTCDay()-e;return a<=0&&(a+=7),o.setUTCDate(o.getUTCDate()-a),o}function P(e,t,o){let s=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())),a=s.getUTCDay(),n=o==="monday"?1:0,i=a-n;i<0&&(i+=7);let l=e-n;l<0&&(l+=7);let y=l-i;return s.setUTCDate(s.getUTCDate()+y),s}var W={sunday:0,sun:0,monday:1,mon:1,tuesday:2,tue:2,tues:2,wednesday:3,wed:3,thursday:4,thu:4,thur:4,thurs:4,friday:5,fri:5,saturday:6,sat:6},Y={january:0,april:3,july:6,october:9};function O(e,t){t.special==="noon"?e.setUTCHours(12,0,0,0):t.special==="midnight"?e.setUTCHours(0,0,0,0):t.hour!==void 0&&e.setUTCHours(t.hour,t.minute??0,0,0)}function ne(e,t){let o=t.referenceDate,s;switch(e.special){case"today":s=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()));break;case"tomorrow":s=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()+1));break;case"yesterday":s=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()-1));break;case"now":s=new Date(o);break;case"dayAfterTomorrow":s=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()+2));break;case"dayBeforeYesterday":s=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()-2));break;default:s=new Date(o)}return e.time&&O(s,e.time),s}function ie(e,t){let o=t.referenceDate,s=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()));return e.time&&O(s,e.time),s}function me(e,t){let o=t.referenceDate,s=W[e.weekday.toLowerCase()]??0,a;if(e.period&&e.period.toLowerCase()==="week"){let n;switch(e.relative){case"next":n=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()+7));break;case"last":n=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()-7));break;default:n=o}a=P(s,n,t.weekStartsOn)}else switch(e.relative){case"next":a=F(s,o);break;case"last":a=Q(s,o);break;case"this":a=P(s,o,t.weekStartsOn);break;default:a=F(s,o)}return e.time&&O(a,e.time),a}function le(e,t){let o=t.referenceDate,s=e.formatParts;if(s.length<3||s[0]===void 0||s[1]===void 0||s[2]===void 0)return o;let[a,n,i]=s,l,y,h;return i>1e3?t.dateFormat==="intl"||a>12&&n<=12?(h=a,y=n,l=i):(y=a,h=n,l=i):(y=a,h=n,l=i<100?i>50?1900+i:2e3+i:i),new Date(Date.UTC(l,y-1,h))}function pe(e,t){let o=t.referenceDate,s=e.year??o.getUTCFullYear(),a=typeof e.month=="number"?e.month-1:0;if(e.relativeMonth){let i=o.getUTCMonth();e.relativeMonth==="last"?a>=i&&s--:e.relativeMonth==="next"&&a<=i&&s++}else e.year===void 0&&a<o.getUTCMonth()&&s++;let n=new Date(Date.UTC(s,a,e.day));if(n.getUTCMonth()!==a||n.getUTCDate()!==e.day)throw new Error("Invalid date");return e.time&&O(n,e.time),n}function ye(e,t){let o=t.referenceDate,s=e.ordinalWeekday,a=e.weekday.toLowerCase(),n=W[a]??0,i,l;if(e.monthFromRef?(i=o.getUTCMonth(),l=o.getUTCFullYear()):e.nextMonth?(i=o.getUTCMonth()+1,l=o.getUTCFullYear(),i>11&&(i=0,l++)):(i=typeof e.month=="number"?e.month-1:o.getUTCMonth(),l=o.getUTCFullYear(),i<o.getUTCMonth()&&l++),s===-1){let D=new Date(Date.UTC(l,i+1,0)).getUTCDate(),R=new Date(Date.UTC(l,i,D));for(;R.getUTCDay()!==n;)D--,R=new Date(Date.UTC(l,i,D));return R}let y=0;for(let f=1;f<=31;f++){let D=new Date(Date.UTC(l,i,f));if(D.getUTCMonth()!==i)break;if(D.getUTCDay()===n&&(y++,y===s))return D}let b=new Date(Date.UTC(l,i+1,0)).getUTCDate(),C=new Date(Date.UTC(l,i,b));for(;C.getUTCDay()!==n;)b--,C=new Date(Date.UTC(l,i,b));return C}function ue(e,t){let o=t.referenceDate,s,a;return e.monthFromRef?(s=o.getUTCMonth(),a=o.getUTCFullYear()):e.nextMonth?(s=o.getUTCMonth()+1,a=o.getUTCFullYear(),s>11&&(s=0,a++)):(s=typeof e.month=="number"?e.month-1:o.getUTCMonth(),a=o.getUTCFullYear(),s<o.getUTCMonth()&&a++),new Date(Date.UTC(a,s+1,0))}function ce(e,t){let o=t.referenceDate,s=e.day,a=o.getUTCDate(),n=o.getUTCMonth(),i=o.getUTCFullYear(),l=n,y=i;s<a&&(l=n+1,l>11&&(l=0,y++));let h=new Date(Date.UTC(y,l,s));for(;h.getUTCDate()!==s;)l++,l>11&&(l=0,y++),h=new Date(Date.UTC(y,l,s));return e.time&&O(h,e.time),h}function de(e,t){let o=t.referenceDate;switch(e.period.toLowerCase()){case"day":{let a=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate()));return e.relative==="next"?a.setUTCDate(a.getUTCDate()+1):e.relative==="last"&&a.setUTCDate(a.getUTCDate()-1),a}case"week":{let a=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),o.getUTCDate())),n=t.weekStartsOn==="monday"?1:0,l=(a.getUTCDay()-n+7)%7;return a.setUTCDate(a.getUTCDate()-l),e.relative==="next"?a.setUTCDate(a.getUTCDate()+7):e.relative==="last"&&a.setUTCDate(a.getUTCDate()-7),a}case"month":return e.relative==="next"?new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth()+1,1)):e.relative==="last"?new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth()-1,1)):new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth(),1));case"year":return e.relative==="next"?new Date(Date.UTC(o.getUTCFullYear()+1,0,1)):e.relative==="last"?new Date(Date.UTC(o.getUTCFullYear()-1,0,1)):new Date(Date.UTC(o.getUTCFullYear(),0,1));default:return new Date(o)}}function N(e,t){if(e.special)return ne(e,t);if(e.timeOnly&&e.time)return ie(e,t);if(e.ordinalWeekday!==void 0&&e.weekday!==void 0)return ye(e,t);if(e.weekday)return me(e,t);if(e.formatParts)return le(e,t);if(e.month!==void 0&&e.day!==void 0)return pe(e,t);if(e.dayOnly&&e.day!==void 0)return ce(e,t);if(e.lastDayOfMonth)return ue(e,t);if(e.dayOfMonth&&e.nextMonth){let o=t.referenceDate,s=o.getUTCMonth()+1,a=o.getUTCFullYear();s>11&&(s=0,a++);let n=e.ordinalWeekday||1;return new Date(Date.UTC(a,s,n))}return e.relative&&e.period?de(e,t):new Date(t.referenceDate)}function ge(e,t){switch(t){case"second":return e*1e3;case"minute":return e*6e4;case"hour":return e*36e5;case"day":return e*864e5;case"week":return e*6048e5;case"month":return e*2592e6;case"year":return e*31536e6;default:return 0}}function M(e,t=!1){if(e.combined&&Array.isArray(e.combined)){let s=e.combined.some(a=>a.unit==="hour");return e.combined.reduce((a,n)=>a+M(n,s),0)}let o=e.unit;return t&&o==="month"&&(o="minute"),ge(e.value,o)}function K(e,t,o){let s=Y[o]??0,a=(s+(e-1)*3)%12,n=t;a<s&&n++;let i=new Date(Date.UTC(n,a,1)),l=(a+3)%12,y=n;l<a&&y++;let h=new Date(Date.UTC(y,l,0));return{start:i,end:h}}function G(e,t,o){let s=Y[o]??0,a=(s+(e-1)*6)%12,n=t;a<s&&n++;let i=new Date(Date.UTC(n,a,1)),l=(a+6)%12,y=n;l<=a&&y++;let h=new Date(Date.UTC(y,l,0));return{start:i,end:h}}function V(e,t){switch(e){case"spring":return{start:new Date(Date.UTC(t,2,20)),end:new Date(Date.UTC(t,5,20))};case"summer":return{start:new Date(Date.UTC(t,5,21)),end:new Date(Date.UTC(t,8,22))};case"fall":case"autumn":return{start:new Date(Date.UTC(t,8,23)),end:new Date(Date.UTC(t,11,20))};case"winter":return{start:new Date(Date.UTC(t,11,21)),end:new Date(Date.UTC(t+1,2,19))};default:return{start:new Date(Date.UTC(t,0,1)),end:new Date(Date.UTC(t,11,31))}}}function Z(e,t,o){let s=t.getTime()-e.getTime(),a=s/3,n=s/2;switch(o){case"early":return{start:e,end:new Date(e.getTime()+a)};case"mid":case"middle":return{start:new Date(e.getTime()+a),end:new Date(e.getTime()+2*a)};case"late":return{start:new Date(e.getTime()+2*a),end:t};case"first":return{start:e,end:new Date(e.getTime()+n)};case"second":return{start:new Date(e.getTime()+n),end:t};default:return{start:e,end:t}}}function Ce(e,t,o){let s=e.getUTCDay(),a=(6-s+7)%7,n=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+a));t==="next"?n=new Date(n.getTime()+6048e5):t==="last"&&((s===6||s===0)&&(n=new Date(n.getTime()-6048e5)),n=new Date(n.getTime()-6048e5));let i=new Date(n.getTime()+864e5),l=new Date(Date.UTC(i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate(),23,59));return{start:n,end:l}}function X(e,t,o){let s=new Date(e);if(t==="last")s=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()-1));else if(t==="tomorrow")s=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+1));else if(o){let i=W[o.toLowerCase()];if(i!==void 0){let l=e.getUTCDay(),y=(i-l+7)%7;y===0&&(y=7),s=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+y))}}let a=new Date(Date.UTC(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate(),18,0)),n=new Date(Date.UTC(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate(),23,59));return{start:a,end:n}}function ee(e,t,o){let s=t.referenceDate;if(e.period==="weekend")return Ce(s,e.relative||"this",t);if(e.period==="tonight")return X(s,void 0,void 0);if(e.period==="night")return X(s,e.relative,e.weekday);if(e.period==="fortnight"){let a=e.count||1,n=e.relative,i=14*864e5;if(n==="last"){let h=new Date(s);return{start:new Date(s.getTime()-i),end:h}}let l=new Date(s),y=new Date(s.getTime()+a*i);return{start:l,end:y}}if(e.period==="quarter"&&e.quarter)return K(e.quarter,o,t.fiscalYearStart);if(e.period==="half"&&e.half)return G(e.half,o,t.fiscalYearStart);if(e.period==="season"&&e.season)return V(e.season,o);if(e.period==="month"&&e.month!==void 0){let a=typeof e.month=="number"?e.month-1:0,n=new Date(Date.UTC(o,a,1)),i=new Date(Date.UTC(o,a+1,0));return{start:n,end:i}}if(e.period==="month"){let a=s.getUTCMonth(),n=new Date(Date.UTC(o,a,1)),i=new Date(Date.UTC(o,a+1,0));return{start:n,end:i}}if(e.period==="week"){let a=t.weekStartsOn==="monday"?1:0,i=(s.getUTCDay()-a+7)%7,l=new Date(Date.UTC(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate()-i)),y=new Date(l.getTime()+6*864e5);return{start:l,end:y}}if(e.period==="weekNumber"&&e.weekNumber!==void 0){let a=e.weekNumber,n=e.year??s.getUTCFullYear(),i=t.weekStartsOn==="monday"?1:0,l=new Date(Date.UTC(n,0,1)),y=l.getUTCDay(),h=(i-y+7)%7,b=new Date(l.getTime()+h*864e5),C=new Date(b.getTime()+(a-1)*6048e5),f=new Date(C.getTime()+6*864e5);return{start:C,end:f}}if(e.period==="weekOf"&&e.baseDate){let a=e.baseDate,n;if(a.month!==void 0&&a.day!==void 0){let C=typeof a.month=="number"?a.month-1:0,f=a.day,D=a.year??s.getUTCFullYear();n=new Date(Date.UTC(D,C,f))}else n=s;let i=t.weekStartsOn==="monday"?1:0,y=(n.getUTCDay()-i+7)%7,h=new Date(Date.UTC(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate()-y)),b=new Date(h.getTime()+6*864e5);return{start:h,end:b}}if(e.period==="day"){let a=new Date(Date.UTC(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate())),n=new Date(Date.UTC(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate(),23,59,59,999));return{start:a,end:n}}if(e.period==="year"){let a=new Date(Date.UTC(o,0,1)),n=new Date(Date.UTC(o,11,31));return{start:a,end:n}}if(e.period==="ytd"){let a=new Date(Date.UTC(s.getUTCFullYear(),0,1)),n=new Date(s);return{start:a,end:n}}if(e.period==="weekOfMonth"&&e.week!==void 0&&e.month!==void 0){let a=e.month-1,n=e.week,i=e.year??s.getUTCFullYear(),l=new Date(Date.UTC(i,a,1)),y=t.weekStartsOn==="monday"?1:0,h=l.getUTCDay(),b=(y-h+7)%7,C=new Date(l.getTime()+b*864e5),f=new Date(C.getTime()+(n-1)*6048e5),D=new Date(f.getTime()+6*864e5);return{start:f,end:D}}return{start:new Date(Date.UTC(o,0,1)),end:new Date(Date.UTC(o,11,31))}}function E(e,t){let o=t.referenceDate,s=e.year??o.getUTCFullYear();return ee(e,t,s)}function q(e,t){let o=t.referenceDate,s=e.year??o.getUTCFullYear();if(e.period==="quarter"&&e.quarter&&e.year===void 0){let{end:i}=K(e.quarter,s,t.fiscalYearStart);i<o&&s++}let{start:a,end:n}=ee(e,t,s);return e.modifier?Z(a,n,e.modifier):{start:a,end:n}}function De(e){return{referenceDate:e?.referenceDate??new Date,fiscalYearStart:e?.fiscalYearStart??"january",weekStartsOn:e?.weekStartsOn??"sunday",dateFormat:e?.dateFormat??"intl"}}function ve(e){return{sunday:0,sun:0,monday:1,mon:1,tuesday:2,tue:2,tues:2,wednesday:3,wed:3,thursday:4,thu:4,thur:4,thurs:4,friday:5,fri:5,saturday:6,sat:6}[e]??0}function ke(e,t,o){if(!e||!e.nodeType)return null;let s=null,a=e;switch(e.nodeType==="titled"&&(o&&e.titleStart!==void 0&&e.titleEnd!==void 0?s=o.slice(e.titleStart,e.titleEnd).trim():s=e.title,a=e.expression),a.nodeType){case"date":return{type:"date",date:N(a,t),title:s};case"duration":{let n=M(a),i=a.approximate===!0;return{type:"duration",duration:n,title:s,approximate:i}}case"span":{let n,i=a.start;i.nodeType==="date"?n=N(i,t):i.nodeType==="fuzzy"?n=q(i,t).start:n=new Date(t.referenceDate);let l=0;a.duration&&(l=M(a.duration));let y=new Date(n.getTime()+l);return{type:"span",start:n,end:y,duration:l,title:s}}case"range":{let n,i,l=a.start,y=a.end;if(l.nodeType==="date"?n=N(l,t):l.nodeType==="fuzzy"?n=q(l,t).start:n=new Date(t.referenceDate),y.nodeType==="date"){if(i=N(y,t),y.monthOnly){let b=typeof y.month=="number"?y.month-1:0,C=y.year??t.referenceDate.getUTCFullYear();i=new Date(Date.UTC(C,b+1,0))}if(y.yearOnly){let b=y.year??t.referenceDate.getUTCFullYear();i=new Date(Date.UTC(b,11,31))}}else y.nodeType==="fuzzy"?i=q(y,t).end:i=new Date(t.referenceDate);i<n&&(y.weekday!==void 0?i=new Date(i.getTime()+6048e5):i=new Date(Date.UTC(i.getUTCFullYear()+1,i.getUTCMonth(),i.getUTCDate(),i.getUTCHours(),i.getUTCMinutes())));let h=i.getTime()-n.getTime();return{type:"span",start:n,end:i,duration:h,title:s}}case"fuzzy":{let{start:n,end:i}=q(a,t),l=a.modifier,y=a.period;if(l==="start"||l==="beginning")return{type:"date",date:E(a,t).start,title:s};if(l==="end")return{type:"date",date:E(a,t).end,title:s};if(y==="weekend"||y==="night"||y==="tonight"||y==="fortnight"||y==="weekNumber"||y==="weekOf"){let h=i.getTime()-n.getTime();return{type:"span",start:n,end:i,duration:h,title:s}}return{type:"fuzzy",start:n,end:i,approximate:!0,title:s}}case"relative":{let n=M(a.duration),i=t.referenceDate,l,y;return a.direction==="past"?(y=new Date(i),l=new Date(i.getTime()-n)):(l=new Date(i),y=new Date(i.getTime()+n)),{type:"span",start:l,end:y,duration:n,title:s}}case"relativeDate":{let n=a.duration,i=a.baseDate,l=a.time,y;i?y=N(i,t):y=new Date(t.referenceDate);let h=n.value,b=n.unit,C=a.direction==="past"?-1:1,f;if(b==="month")f=new Date(Date.UTC(y.getUTCFullYear(),y.getUTCMonth()+C*h,y.getUTCDate(),y.getUTCHours(),y.getUTCMinutes()));else if(b==="year")f=new Date(Date.UTC(y.getUTCFullYear()+C*h,y.getUTCMonth(),y.getUTCDate(),y.getUTCHours(),y.getUTCMinutes()));else if(b==="businessDay"||b==="businessday"){f=new Date(Date.UTC(y.getUTCFullYear(),y.getUTCMonth(),y.getUTCDate()));let D=h;for(;D>0;){f.setUTCDate(f.getUTCDate()+C);let R=f.getUTCDay();R!==0&&R!==6&&D--}}else if(b==="weekdayoccurrence"){let D=a.weekday.toLowerCase().replace(/s$/,""),R=ve(D);f=new Date(Date.UTC(y.getUTCFullYear(),y.getUTCMonth(),y.getUTCDate()));let L=h;for(;L>0;)f.setUTCDate(f.getUTCDate()+C),f.getUTCDay()===R&&L--}else{let D=M(n);f=new Date(y.getTime()+C*D)}return l&&("special"in l?l.special==="noon"?f=new Date(Date.UTC(f.getUTCFullYear(),f.getUTCMonth(),f.getUTCDate(),12,0)):l.special==="midnight"&&(f=new Date(Date.UTC(f.getUTCFullYear(),f.getUTCMonth(),f.getUTCDate(),0,0))):f=new Date(Date.UTC(f.getUTCFullYear(),f.getUTCMonth(),f.getUTCDate(),l.hour,l.minute))),{type:"date",date:f,title:s}}default:return null}}function Te(e){let t=e,o=e,s=(t.match(/\(/g)||[]).length,a=(t.match(/\)/g)||[]).length,n=(t.match(/\[/g)||[]).length,i=(t.match(/]/g)||[]).length;for(;a>s&&t.endsWith(")");)t=t.slice(0,-1).trimEnd(),a--;for(;i>n&&t.endsWith("]");)t=t.slice(0,-1).trimEnd(),i--;for(s=(t.match(/\(/g)||[]).length,a=(t.match(/\)/g)||[]).length;s>a;)t=t.replace(/\(/,""),s--;for(n=(t.match(/\[/g)||[]).length,i=(t.match(/]/g)||[]).length;n>i;)t=t.replace(/\[/,""),n--;return{stripped:t.replace(/\s+/g," ").trim(),originalPreserved:o}}function A(e,t){if(!e||typeof e!="string")return null;let o=e.trim(),{stripped:s,originalPreserved:a}=Te(o),n=s.toLowerCase();if(!n)return null;let i=De(t);try{let l=new te.Parser(te.Grammar.fromCompiled(J));if(l.feed(n),l.results.length===0)return null;let y=l.results[0];return ke(y,i,a)}catch{return null}}function oe(e,t){if(!e||typeof e!="string")return[];let o=e.split(/[,;\n]|\s+and\s+/).map(a=>a.trim()).filter(a=>a.length>0),s=[];for(let a of o){let n=A(a,t);n&&s.push(n)}return s}function I(e,t){return A(e,t)}function Ge(e,t){let o=I(e,t);if(!o)return null;if(o.type==="date")return o.date;if(o.type==="duration"){let s=t?.referenceDate??new Date;return new Date(s.getTime()+o.duration)}return o.type==="fuzzy"?o.start:null}function Ve(e,t){let o=I(e,t);return o&&o.type==="duration"?o.duration:null}function Ze(e,t){let o=I(e,t);return o&&(o.type==="span"||o.type==="fuzzy")?{start:o.start,end:o.end,duration:o.type==="span"?o.duration:o.end.getTime()-o.start.getTime()}:null}function Xe(e,t){return oe(e,t)}export{Xe as extract,I as parse,Ge as parseDate,Ve as parseDuration,Ze as parseSpan};
|