@alanszp/relative-date 16.4.3 → 16.5.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.
Files changed (43) hide show
  1. package/README.md +168 -0
  2. package/dist/DateExpression.d.ts +74 -0
  3. package/dist/DateExpression.js +124 -0
  4. package/dist/DateExpression.js.map +1 -0
  5. package/dist/DateExpression.test.d.ts +1 -0
  6. package/dist/DateExpression.test.js +495 -0
  7. package/dist/DateExpression.test.js.map +1 -0
  8. package/dist/Modifier.d.ts +26 -0
  9. package/dist/Modifier.js +84 -0
  10. package/dist/Modifier.js.map +1 -0
  11. package/dist/Modifier.test.d.ts +1 -0
  12. package/dist/Modifier.test.js +430 -0
  13. package/dist/Modifier.test.js.map +1 -0
  14. package/dist/date-parser/AbsoluteDateParser.d.ts +5 -0
  15. package/dist/date-parser/AbsoluteDateParser.js +15 -0
  16. package/dist/date-parser/AbsoluteDateParser.js.map +1 -0
  17. package/dist/date-parser/DateParser.d.ts +4 -0
  18. package/dist/date-parser/DateParser.js +3 -0
  19. package/dist/date-parser/DateParser.js.map +1 -0
  20. package/dist/date-parser/DateParserFactory.d.ts +4 -0
  21. package/dist/date-parser/DateParserFactory.js +19 -0
  22. package/dist/date-parser/DateParserFactory.js.map +1 -0
  23. package/dist/date-parser/RelativeDateParser.d.ts +31 -0
  24. package/dist/date-parser/RelativeDateParser.js +85 -0
  25. package/dist/date-parser/RelativeDateParser.js.map +1 -0
  26. package/dist/date-parser/RelativeDateParser.test.d.ts +1 -0
  27. package/dist/date-parser/RelativeDateParser.test.js +351 -0
  28. package/dist/date-parser/RelativeDateParser.test.js.map +1 -0
  29. package/dist/errors/InvalidDateExpression.d.ts +3 -0
  30. package/dist/errors/InvalidDateExpression.js +10 -0
  31. package/dist/errors/InvalidDateExpression.js.map +1 -0
  32. package/dist/errors/InvalidModifier.d.ts +3 -0
  33. package/dist/errors/InvalidModifier.js +10 -0
  34. package/dist/errors/InvalidModifier.js.map +1 -0
  35. package/dist/index.d.ts +5 -0
  36. package/dist/index.js +11 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/relativeDateToFixed.d.ts +0 -2
  39. package/dist/relativeDateToFixed.js +7 -107
  40. package/dist/relativeDateToFixed.js.map +1 -1
  41. package/dist/relativeDateToFixed.test.js +0 -258
  42. package/dist/relativeDateToFixed.test.js.map +1 -1
  43. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modifier.js","sourceRoot":"","sources":["../src/Modifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,430 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const date_fns_1 = require("date-fns");
4
+ const Modifier_1 = require("./Modifier");
5
+ describe("Modifier", () => {
6
+ describe("apply modifier to date, start of and end of", () => {
7
+ it.each([
8
+ {
9
+ name: "month",
10
+ unit: "m",
11
+ date: "2023-01-01",
12
+ start: "2023-01-01",
13
+ end: "2023-01-31",
14
+ },
15
+ {
16
+ name: "month",
17
+ unit: "m",
18
+ date: "2023-01-31",
19
+ start: "2023-01-01",
20
+ end: "2023-01-31",
21
+ },
22
+ {
23
+ name: "month",
24
+ unit: "m",
25
+ date: "2023-02-01",
26
+ start: "2023-02-01",
27
+ end: "2023-02-28",
28
+ },
29
+ {
30
+ name: "quarter",
31
+ unit: "q",
32
+ date: "2023-01-01",
33
+ start: "2023-01-01",
34
+ end: "2023-03-31",
35
+ },
36
+ {
37
+ name: "quarter",
38
+ unit: "q",
39
+ date: "2023-04-01",
40
+ start: "2023-04-01",
41
+ end: "2023-06-30",
42
+ },
43
+ {
44
+ name: "quarter",
45
+ unit: "q",
46
+ date: "2023-08-01",
47
+ start: "2023-07-01",
48
+ end: "2023-09-30",
49
+ },
50
+ {
51
+ name: "quarter",
52
+ unit: "q",
53
+ date: "2023-11-01",
54
+ start: "2023-10-01",
55
+ end: "2023-12-31",
56
+ },
57
+ {
58
+ name: "bimester",
59
+ unit: "b",
60
+ date: "2023-01-01",
61
+ start: "2023-01-01",
62
+ end: "2023-02-28",
63
+ },
64
+ {
65
+ name: "bimester",
66
+ unit: "b",
67
+ date: "2023-01-31",
68
+ start: "2023-01-01",
69
+ end: "2023-02-28",
70
+ },
71
+ {
72
+ name: "bimester",
73
+ unit: "b",
74
+ date: "2023-02-01",
75
+ start: "2023-01-01",
76
+ end: "2023-02-28",
77
+ },
78
+ {
79
+ name: "bimester",
80
+ unit: "b",
81
+ date: "2023-02-28",
82
+ start: "2023-01-01",
83
+ end: "2023-02-28",
84
+ },
85
+ {
86
+ name: "bimester",
87
+ unit: "b",
88
+ date: "2023-03-01",
89
+ start: "2023-03-01",
90
+ end: "2023-04-30",
91
+ },
92
+ {
93
+ name: "bimester",
94
+ unit: "b",
95
+ date: "2023-04-20",
96
+ start: "2023-03-01",
97
+ end: "2023-04-30",
98
+ },
99
+ {
100
+ name: "bimester",
101
+ unit: "b",
102
+ date: "2023-05-01",
103
+ start: "2023-05-01",
104
+ end: "2023-06-30",
105
+ },
106
+ {
107
+ name: "bimester",
108
+ unit: "b",
109
+ date: "2023-06-30",
110
+ start: "2023-05-01",
111
+ end: "2023-06-30",
112
+ },
113
+ {
114
+ name: "bimester",
115
+ unit: "b",
116
+ date: "2023-07-01",
117
+ start: "2023-07-01",
118
+ end: "2023-08-31",
119
+ },
120
+ {
121
+ name: "bimester",
122
+ unit: "b",
123
+ date: "2023-08-31",
124
+ start: "2023-07-01",
125
+ end: "2023-08-31",
126
+ },
127
+ {
128
+ name: "bimester",
129
+ unit: "b",
130
+ date: "2023-09-01",
131
+ start: "2023-09-01",
132
+ end: "2023-10-31",
133
+ },
134
+ {
135
+ name: "bimester",
136
+ unit: "b",
137
+ date: "2023-10-31",
138
+ start: "2023-09-01",
139
+ end: "2023-10-31",
140
+ },
141
+ {
142
+ name: "bimester",
143
+ unit: "b",
144
+ date: "2023-11-01",
145
+ start: "2023-11-01",
146
+ end: "2023-12-31",
147
+ },
148
+ {
149
+ name: "bimester",
150
+ unit: "b",
151
+ date: "2023-12-31",
152
+ start: "2023-11-01",
153
+ end: "2023-12-31",
154
+ },
155
+ {
156
+ name: "third",
157
+ unit: "t",
158
+ date: "2023-01-01",
159
+ start: "2023-01-01",
160
+ end: "2023-04-30",
161
+ },
162
+ {
163
+ name: "third",
164
+ unit: "t",
165
+ date: "2023-01-31",
166
+ start: "2023-01-01",
167
+ end: "2023-04-30",
168
+ },
169
+ {
170
+ name: "third",
171
+ unit: "t",
172
+ date: "2023-02-01",
173
+ start: "2023-01-01",
174
+ end: "2023-04-30",
175
+ },
176
+ {
177
+ name: "third",
178
+ unit: "t",
179
+ date: "2023-02-28",
180
+ start: "2023-01-01",
181
+ end: "2023-04-30",
182
+ },
183
+ {
184
+ name: "third",
185
+ unit: "t",
186
+ date: "2023-03-01",
187
+ start: "2023-01-01",
188
+ end: "2023-04-30",
189
+ },
190
+ {
191
+ name: "third",
192
+ unit: "t",
193
+ date: "2023-03-31",
194
+ start: "2023-01-01",
195
+ end: "2023-04-30",
196
+ },
197
+ {
198
+ name: "third",
199
+ unit: "t",
200
+ date: "2023-04-01",
201
+ start: "2023-01-01",
202
+ end: "2023-04-30",
203
+ },
204
+ {
205
+ name: "third",
206
+ unit: "t",
207
+ date: "2023-05-20",
208
+ start: "2023-05-01",
209
+ end: "2023-08-31",
210
+ },
211
+ {
212
+ name: "third",
213
+ unit: "t",
214
+ date: "2023-06-30",
215
+ start: "2023-05-01",
216
+ end: "2023-08-31",
217
+ },
218
+ {
219
+ name: "third",
220
+ unit: "t",
221
+ date: "2023-07-01",
222
+ start: "2023-05-01",
223
+ end: "2023-08-31",
224
+ },
225
+ {
226
+ name: "third",
227
+ unit: "t",
228
+ date: "2023-08-15",
229
+ start: "2023-05-01",
230
+ end: "2023-08-31",
231
+ },
232
+ {
233
+ name: "third",
234
+ unit: "t",
235
+ date: "2023-09-30",
236
+ start: "2023-09-01",
237
+ end: "2023-12-31",
238
+ },
239
+ {
240
+ name: "third",
241
+ unit: "t",
242
+ date: "2023-10-01",
243
+ start: "2023-09-01",
244
+ end: "2023-12-31",
245
+ },
246
+ {
247
+ name: "third",
248
+ unit: "t",
249
+ date: "2023-11-10",
250
+ start: "2023-09-01",
251
+ end: "2023-12-31",
252
+ },
253
+ {
254
+ name: "third",
255
+ unit: "t",
256
+ date: "2023-12-31",
257
+ start: "2023-09-01",
258
+ end: "2023-12-31",
259
+ },
260
+ {
261
+ name: "semester",
262
+ unit: "s",
263
+ date: "2023-01-01",
264
+ start: "2023-01-01",
265
+ end: "2023-06-30",
266
+ },
267
+ {
268
+ name: "semester",
269
+ unit: "s",
270
+ date: "2023-01-31",
271
+ start: "2023-01-01",
272
+ end: "2023-06-30",
273
+ },
274
+ {
275
+ name: "semester",
276
+ unit: "s",
277
+ date: "2023-02-01",
278
+ start: "2023-01-01",
279
+ end: "2023-06-30",
280
+ },
281
+ {
282
+ name: "semester",
283
+ unit: "s",
284
+ date: "2023-02-28",
285
+ start: "2023-01-01",
286
+ end: "2023-06-30",
287
+ },
288
+ {
289
+ name: "semester",
290
+ unit: "s",
291
+ date: "2023-03-01",
292
+ start: "2023-01-01",
293
+ end: "2023-06-30",
294
+ },
295
+ {
296
+ name: "semester",
297
+ unit: "s",
298
+ date: "2023-03-31",
299
+ start: "2023-01-01",
300
+ end: "2023-06-30",
301
+ },
302
+ {
303
+ name: "semester",
304
+ unit: "s",
305
+ date: "2023-04-01",
306
+ start: "2023-01-01",
307
+ end: "2023-06-30",
308
+ },
309
+ {
310
+ name: "semester",
311
+ unit: "s",
312
+ date: "2023-05-20",
313
+ start: "2023-01-01",
314
+ end: "2023-06-30",
315
+ },
316
+ {
317
+ name: "semester",
318
+ unit: "s",
319
+ date: "2023-06-30",
320
+ start: "2023-01-01",
321
+ end: "2023-06-30",
322
+ },
323
+ {
324
+ name: "semester",
325
+ unit: "s",
326
+ date: "2023-07-01",
327
+ start: "2023-07-01",
328
+ end: "2023-12-31",
329
+ },
330
+ {
331
+ name: "semester",
332
+ unit: "s",
333
+ date: "2023-08-15",
334
+ start: "2023-07-01",
335
+ end: "2023-12-31",
336
+ },
337
+ {
338
+ name: "semester",
339
+ unit: "s",
340
+ date: "2023-09-30",
341
+ start: "2023-07-01",
342
+ end: "2023-12-31",
343
+ },
344
+ {
345
+ name: "semester",
346
+ unit: "s",
347
+ date: "2023-10-01",
348
+ start: "2023-07-01",
349
+ end: "2023-12-31",
350
+ },
351
+ {
352
+ name: "semester",
353
+ unit: "s",
354
+ date: "2023-11-10",
355
+ start: "2023-07-01",
356
+ end: "2023-12-31",
357
+ },
358
+ {
359
+ name: "semester",
360
+ unit: "s",
361
+ date: "2023-12-31",
362
+ start: "2023-07-01",
363
+ end: "2023-12-31",
364
+ },
365
+ {
366
+ name: "year",
367
+ unit: "y",
368
+ date: "2023-05-05",
369
+ start: "2023-01-01",
370
+ end: "2023-12-31",
371
+ },
372
+ {
373
+ name: "year",
374
+ unit: "y",
375
+ date: "2023-01-01",
376
+ start: "2023-01-01",
377
+ end: "2023-12-31",
378
+ },
379
+ {
380
+ name: "year",
381
+ unit: "y",
382
+ date: "2023-12-31",
383
+ start: "2023-01-01",
384
+ end: "2023-12-31",
385
+ },
386
+ ])("for date $date the beginning of a $name should be $start and the end $end", ({ date, start, end, unit }) => {
387
+ expect({
388
+ start: Modifier_1.Modifier.startOf(unit).apply(new Date(date)),
389
+ end: Modifier_1.Modifier.endOf(unit).apply(new Date(date)),
390
+ }).toEqual({
391
+ start: (0, date_fns_1.startOfDay)(new Date(start)),
392
+ end: (0, date_fns_1.endOfDay)(new Date(end)),
393
+ });
394
+ });
395
+ describe("toString()", () => {
396
+ it.each([
397
+ ["sow", "s", "w"],
398
+ ["som", "s", "m"],
399
+ ["soq", "s", "q"],
400
+ ["soy", "s", "y"],
401
+ ["sos", "s", "s"],
402
+ ["sob", "s", "b"],
403
+ ["sot", "s", "t"],
404
+ ["eow", "e", "w"],
405
+ ["eom", "e", "m"],
406
+ ["eoq", "e", "q"],
407
+ ["eoy", "e", "y"],
408
+ ["eos", "e", "s"],
409
+ ["eob", "e", "b"],
410
+ ["eot", "e", "t"],
411
+ ])("should return %s for extreme %s and unit %s", (expected, extreme, unit) => {
412
+ const modifier = extreme === "s"
413
+ ? Modifier_1.Modifier.startOf(unit)
414
+ : Modifier_1.Modifier.endOf(unit);
415
+ expect(modifier.toString()).toBe(expected);
416
+ });
417
+ it("should work with startOf modifiers", () => {
418
+ expect(Modifier_1.Modifier.startOf("m").toString()).toBe("som");
419
+ expect(Modifier_1.Modifier.startOf("y").toString()).toBe("soy");
420
+ expect(Modifier_1.Modifier.startOf("q").toString()).toBe("soq");
421
+ });
422
+ it("should work with endOf modifiers", () => {
423
+ expect(Modifier_1.Modifier.endOf("m").toString()).toBe("eom");
424
+ expect(Modifier_1.Modifier.endOf("y").toString()).toBe("eoy");
425
+ expect(Modifier_1.Modifier.endOf("q").toString()).toBe("eoq");
426
+ });
427
+ });
428
+ });
429
+ });
430
+ //# sourceMappingURL=Modifier.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modifier.test.js","sourceRoot":"","sources":["../src/Modifier.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { DateParser } from "./DateParser";
2
+ export declare class AbsoluteDateParser implements DateParser {
3
+ toJSDate(raw: string): Date;
4
+ static isAbsoluteDate(raw: string): boolean;
5
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbsoluteDateParser = void 0;
4
+ const date_fns_1 = require("date-fns");
5
+ const DateExpression_1 = require("../DateExpression");
6
+ class AbsoluteDateParser {
7
+ toJSDate(raw) {
8
+ return (0, date_fns_1.parseISO)(raw);
9
+ }
10
+ static isAbsoluteDate(raw) {
11
+ return (0, date_fns_1.isMatch)(raw, DateExpression_1.INPUT_DATE_FORMAT) && (0, date_fns_1.isValid)((0, date_fns_1.parseISO)(raw));
12
+ }
13
+ }
14
+ exports.AbsoluteDateParser = AbsoluteDateParser;
15
+ //# sourceMappingURL=AbsoluteDateParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbsoluteDateParser.js","sourceRoot":"","sources":["../../src/date-parser/AbsoluteDateParser.ts"],"names":[],"mappings":";;;AAAA,uCAAsD;AAEtD,sDAAsD;AAEtD,MAAa,kBAAkB;IAC7B,QAAQ,CAAC,GAAW;QAClB,OAAO,IAAA,mBAAQ,EAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAW;QAC/B,OAAO,IAAA,kBAAO,EAAC,GAAG,EAAE,kCAAiB,CAAC,IAAI,IAAA,kBAAO,EAAC,IAAA,mBAAQ,EAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;CACF;AARD,gDAQC"}
@@ -0,0 +1,4 @@
1
+ export declare type AbsoluteDateString = `${string}-${string}-${string}`;
2
+ export interface DateParser {
3
+ toJSDate(raw: string): Date;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=DateParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateParser.js","sourceRoot":"","sources":["../../src/date-parser/DateParser.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { DateParser } from "./DateParser";
2
+ export declare class DateParserFactory {
3
+ static create(raw: string): DateParser;
4
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateParserFactory = void 0;
4
+ const InvalidDateExpression_1 = require("../errors/InvalidDateExpression");
5
+ const AbsoluteDateParser_1 = require("./AbsoluteDateParser");
6
+ const RelativeDateParser_1 = require("./RelativeDateParser");
7
+ class DateParserFactory {
8
+ static create(raw) {
9
+ if (RelativeDateParser_1.RelativeDateParser.isRelativeDate(raw)) {
10
+ return new RelativeDateParser_1.RelativeDateParser();
11
+ }
12
+ if (AbsoluteDateParser_1.AbsoluteDateParser.isAbsoluteDate(raw)) {
13
+ return new AbsoluteDateParser_1.AbsoluteDateParser();
14
+ }
15
+ throw new InvalidDateExpression_1.InvalidDateExpression(raw);
16
+ }
17
+ }
18
+ exports.DateParserFactory = DateParserFactory;
19
+ //# sourceMappingURL=DateParserFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateParserFactory.js","sourceRoot":"","sources":["../../src/date-parser/DateParserFactory.ts"],"names":[],"mappings":";;;AAAA,2EAAwE;AACxE,6DAA0D;AAE1D,6DAA0D;AAE1D,MAAa,iBAAiB;IAC5B,MAAM,CAAC,MAAM,CAAC,GAAW;QACvB,IAAI,uCAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC1C,OAAO,IAAI,uCAAkB,EAAE,CAAC;SACjC;QAED,IAAI,uCAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC1C,OAAO,IAAI,uCAAkB,EAAE,CAAC;SACjC;QAED,MAAM,IAAI,6CAAqB,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;CACF;AAZD,8CAYC"}
@@ -0,0 +1,31 @@
1
+ import { DateParser } from "./DateParser";
2
+ declare type Operator = "+" | "-";
3
+ declare const SINGLE_TIME_UNITS: readonly ["d", "w", "m", "q", "s", "t", "y", "b"];
4
+ declare type SingleTimeUnit = (typeof SINGLE_TIME_UNITS)[number];
5
+ declare type TimeUnit = SingleTimeUnit | "day" | "days" | "week" | "weeks" | "month" | "months" | "bimester" | "bimesters" | "quarter" | "quarters" | "semester" | "semesters" | "third" | "thirds" | "year" | "years";
6
+ declare type RelativeDate = `${Operator}${number}${TimeUnit}` | "now";
7
+ export declare enum RelativeDateUnit {
8
+ DAYS = "days",
9
+ WEEKS = "weeks",
10
+ MONTHS = "months",
11
+ YEARS = "years",
12
+ NOW = "now"
13
+ }
14
+ export declare type RelativeDateDecomposition = {
15
+ operator: Operator;
16
+ quantity: number;
17
+ unit: RelativeDateUnit;
18
+ originalQuantity: number;
19
+ originalUnit: SingleTimeUnit;
20
+ };
21
+ export declare class RelativeDateParser implements DateParser {
22
+ private static readonly RELATIVE_DATE_REGEX;
23
+ toJSDate(raw: string): Date;
24
+ decompose(raw: string): RelativeDateDecomposition;
25
+ static isRelativeDate(raw: string): raw is RelativeDate;
26
+ private static defaultRelativeDateConverter;
27
+ private static relativeDateMap;
28
+ private parseRelativeDate;
29
+ private narrowTimeUnit;
30
+ }
31
+ export {};
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.RelativeDateParser = exports.RelativeDateUnit = void 0;
5
+ const lodash_1 = require("lodash");
6
+ const date_fns_1 = require("date-fns");
7
+ const InvalidDateExpression_1 = require("../errors/InvalidDateExpression");
8
+ const SINGLE_TIME_UNITS = ["d", "w", "m", "q", "s", "t", "y", "b"];
9
+ var RelativeDateUnit;
10
+ (function (RelativeDateUnit) {
11
+ RelativeDateUnit["DAYS"] = "days";
12
+ RelativeDateUnit["WEEKS"] = "weeks";
13
+ RelativeDateUnit["MONTHS"] = "months";
14
+ RelativeDateUnit["YEARS"] = "years";
15
+ RelativeDateUnit["NOW"] = "now";
16
+ })(RelativeDateUnit = exports.RelativeDateUnit || (exports.RelativeDateUnit = {}));
17
+ const PLUS = "+";
18
+ const isSingleTimeUnit = (unit) => SINGLE_TIME_UNITS.includes(unit);
19
+ class RelativeDateParser {
20
+ toJSDate(raw) {
21
+ if (raw === RelativeDateUnit.NOW) {
22
+ return new Date();
23
+ }
24
+ return this.parseRelativeDate(raw);
25
+ }
26
+ decompose(raw) {
27
+ if (raw === RelativeDateUnit.NOW) {
28
+ return {
29
+ operator: "+",
30
+ quantity: 0,
31
+ unit: RelativeDateUnit.NOW,
32
+ originalQuantity: 0,
33
+ originalUnit: "d",
34
+ };
35
+ }
36
+ const match = raw.match(RelativeDateParser.RELATIVE_DATE_REGEX);
37
+ if (!match) {
38
+ throw new InvalidDateExpression_1.InvalidDateExpression(raw);
39
+ }
40
+ const [, operator, rawQuantity, rawTimeUnit] = match;
41
+ const narrowTimeUnit = this.narrowTimeUnit(rawTimeUnit);
42
+ const originalQuantity = Number.parseInt(rawQuantity, 10);
43
+ const { unit, quantity } = RelativeDateParser.relativeDateMap[narrowTimeUnit](originalQuantity);
44
+ return {
45
+ operator: operator,
46
+ quantity,
47
+ unit,
48
+ originalQuantity,
49
+ originalUnit: narrowTimeUnit,
50
+ };
51
+ }
52
+ static isRelativeDate(raw) {
53
+ return RelativeDateParser.RELATIVE_DATE_REGEX.test(raw);
54
+ }
55
+ static defaultRelativeDateConverter(unit) {
56
+ return (quantity) => ({ unit, quantity });
57
+ }
58
+ parseRelativeDate(raw) {
59
+ const { unit, quantity, operator } = this.decompose(raw);
60
+ const op = operator === PLUS ? date_fns_1.add : date_fns_1.sub;
61
+ return op((0, lodash_1.now)(), { [unit]: quantity });
62
+ }
63
+ narrowTimeUnit(raw) {
64
+ const firstChar = raw.charAt(0);
65
+ if (isSingleTimeUnit(firstChar)) {
66
+ return firstChar;
67
+ }
68
+ const _never = firstChar;
69
+ return _never;
70
+ }
71
+ }
72
+ exports.RelativeDateParser = RelativeDateParser;
73
+ _a = RelativeDateParser;
74
+ RelativeDateParser.RELATIVE_DATE_REGEX = /^\s*([+-])\s*(\d+)\s*(d|day|days|w|week|weeks|m|month|months|b|bimester|bimesters|q|quarter|quarters|s|semester|semesters|t|third|thirds|y|year|years)\s*$|^now\s*$/;
75
+ RelativeDateParser.relativeDateMap = {
76
+ d: _a.defaultRelativeDateConverter(RelativeDateUnit.DAYS),
77
+ w: _a.defaultRelativeDateConverter(RelativeDateUnit.WEEKS),
78
+ m: _a.defaultRelativeDateConverter(RelativeDateUnit.MONTHS),
79
+ b: (q) => ({ unit: RelativeDateUnit.MONTHS, quantity: q * 2 }),
80
+ q: (q) => ({ unit: RelativeDateUnit.MONTHS, quantity: q * 3 }),
81
+ s: (q) => ({ unit: RelativeDateUnit.MONTHS, quantity: q * 6 }),
82
+ t: (q) => ({ unit: RelativeDateUnit.MONTHS, quantity: q * 4 }),
83
+ y: _a.defaultRelativeDateConverter(RelativeDateUnit.YEARS),
84
+ };
85
+ //# sourceMappingURL=RelativeDateParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelativeDateParser.js","sourceRoot":"","sources":["../../src/date-parser/RelativeDateParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};