@malloydata/malloy-filter 0.0.237-dev250222025222 → 0.0.237-dev250222205057

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 (69) hide show
  1. package/dist/a_simple_parser.js +12 -9
  2. package/dist/a_simple_parser.js.map +1 -1
  3. package/dist/base_parser.d.ts +0 -2
  4. package/dist/base_parser.js.map +1 -1
  5. package/dist/boolean_parser.d.ts +2 -2
  6. package/dist/boolean_parser.js +3 -1
  7. package/dist/boolean_parser.js.map +1 -1
  8. package/dist/boolean_serializer.d.ts +4 -4
  9. package/dist/boolean_serializer.js +12 -4
  10. package/dist/boolean_serializer.js.map +1 -1
  11. package/dist/clause_types.d.ts +40 -47
  12. package/dist/date_parser.d.ts +13 -11
  13. package/dist/date_parser.js +192 -131
  14. package/dist/date_parser.js.map +1 -1
  15. package/dist/date_serializer.d.ts +6 -5
  16. package/dist/date_serializer.js +65 -77
  17. package/dist/date_serializer.js.map +1 -1
  18. package/dist/date_types.d.ts +75 -0
  19. package/dist/{filter_types.js → date_types.js} +1 -1
  20. package/dist/date_types.js.map +1 -0
  21. package/dist/generate_samples.js +162 -87
  22. package/dist/generate_samples.js.map +1 -1
  23. package/dist/number_parser.d.ts +2 -5
  24. package/dist/number_parser.js +10 -51
  25. package/dist/number_parser.js.map +1 -1
  26. package/dist/number_serializer.d.ts +4 -4
  27. package/dist/number_serializer.js +17 -14
  28. package/dist/number_serializer.js.map +1 -1
  29. package/dist/string_parser.d.ts +2 -2
  30. package/dist/string_parser.js +21 -21
  31. package/dist/string_parser.js.map +1 -1
  32. package/dist/string_serializer.d.ts +6 -5
  33. package/dist/string_serializer.js +38 -24
  34. package/dist/string_serializer.js.map +1 -1
  35. package/package.json +1 -2
  36. package/src/DEVELOPING.md +2 -5
  37. package/src/a_simple_parser.ts +12 -9
  38. package/src/base_parser.ts +0 -3
  39. package/src/boolean_parser.ts +10 -5
  40. package/src/boolean_serializer.ts +14 -7
  41. package/src/clause_types.ts +65 -108
  42. package/src/date_parser.ts +229 -192
  43. package/src/date_serializer.ts +59 -87
  44. package/src/date_types.ts +159 -0
  45. package/src/generate_samples.ts +178 -109
  46. package/src/number_parser.ts +14 -63
  47. package/src/number_serializer.ts +19 -20
  48. package/src/string_parser.ts +40 -27
  49. package/src/string_serializer.ts +58 -32
  50. package/tsconfig.json +1 -6
  51. package/dist/a_simple_serializer.d.ts +0 -1
  52. package/dist/a_simple_serializer.js +0 -31
  53. package/dist/a_simple_serializer.js.map +0 -1
  54. package/dist/base_serializer.d.ts +0 -6
  55. package/dist/base_serializer.js +0 -11
  56. package/dist/base_serializer.js.map +0 -1
  57. package/dist/filter_parser.d.ts +0 -12
  58. package/dist/filter_parser.js +0 -66
  59. package/dist/filter_parser.js.map +0 -1
  60. package/dist/filter_serializer.d.ts +0 -13
  61. package/dist/filter_serializer.js +0 -43
  62. package/dist/filter_serializer.js.map +0 -1
  63. package/dist/filter_types.d.ts +0 -10
  64. package/dist/filter_types.js.map +0 -1
  65. package/src/a_simple_serializer.ts +0 -40
  66. package/src/base_serializer.ts +0 -9
  67. package/src/filter_parser.ts +0 -68
  68. package/src/filter_serializer.ts +0 -49
  69. package/src/filter_types.ts +0 -12
@@ -39,7 +39,7 @@ class DateParser extends base_parser_1.BaseParser {
39
39
  { type: 'FROM', value: 'from', ignoreCase: true },
40
40
  { type: 'FOR', value: 'for', ignoreCase: true },
41
41
  { type: 'TO', value: 'to', ignoreCase: true },
42
- { type: 'YEARORNUMBER', value: /^\d\d\d\d$/ },
42
+ { type: 'YEAR', value: /^\d\d\d\d$/ },
43
43
  { type: 'NUMBER', value: /^[\d.]+/, ignoreCase: true },
44
44
  ];
45
45
  const params = {
@@ -57,28 +57,28 @@ class DateParser extends base_parser_1.BaseParser {
57
57
  const output = [];
58
58
  this.index = 0;
59
59
  while (this.index < this.tokens.length) {
60
- if (this.matchAndMerge('LAST|UNITOFTIME', this.tokens, output) ||
61
- this.matchAndMerge('LAST|DAYOFWEEK', this.tokens, output) ||
62
- this.matchAndMerge('LAST|NUMBER|UNITOFTIME', this.tokens, output) ||
63
- this.matchAndMerge('LAST|YEARORNUMBER|UNITOFTIME', this.tokens, output) ||
64
- this.matchAndMerge('THIS|UNITOFTIME', this.tokens, output) ||
65
- this.matchAndMerge('NEXT|UNITOFTIME', this.tokens, output) ||
66
- this.matchAndMerge('NEXT|DAYOFWEEK', this.tokens, output) ||
67
- this.matchAndMerge('NEXT|NUMBER|UNITOFTIME', this.tokens, output) ||
68
- this.matchAndMerge('NEXT|YEARORNUMBER|UNITOFTIME', this.tokens, output) ||
69
- this.matchAndMerge('NUMBER|UNITOFTIME|AGO', this.tokens, output) ||
70
- this.matchAndMerge('YEARORNUMBER|UNITOFTIME|AGO', this.tokens, output) ||
71
- this.matchAndMerge('NUMBER|UNITOFTIME|FROM|NOW', this.tokens, output) ||
72
- this.matchAndMerge('YEARORNUMBER|UNITOFTIME|FROM|NOW', this.tokens, output) ||
73
- this.matchAndMerge('NUMBER|UNITOFTIME', this.tokens, output) ||
74
- this.matchAndMerge('YEARORNUMBER|UNITOFTIME', this.tokens, output) ||
75
- this.matchAndMerge('DATE|TIME', this.tokens, output) ||
76
- this.matchAndMerge('TODAY', this.tokens, output) ||
77
- this.matchAndMerge('YESTERDAY', this.tokens, output) ||
78
- this.matchAndMerge('TOMORROW', this.tokens, output) ||
79
- this.matchAndMerge('DATE', this.tokens, output) ||
80
- this.matchAndMerge('YEARORNUMBER', this.tokens, output) ||
81
- this.matchAndMerge('NOW', this.tokens, output)) {
60
+ if (this.matchAndMerge('LAST|UNITOFTIME', output) ||
61
+ this.matchAndMerge('LAST|DAYOFWEEK', output) ||
62
+ this.matchAndMerge('LAST|NUMBER|UNITOFTIME', output) ||
63
+ this.matchAndMerge('LAST|YEAR|UNITOFTIME', output) ||
64
+ this.matchAndMerge('THIS|UNITOFTIME', output) ||
65
+ this.matchAndMerge('NEXT|UNITOFTIME', output) ||
66
+ this.matchAndMerge('NEXT|DAYOFWEEK', output) ||
67
+ this.matchAndMerge('NEXT|NUMBER|UNITOFTIME', output) ||
68
+ this.matchAndMerge('NEXT|YEAR|UNITOFTIME', output) ||
69
+ this.matchAndMerge('NUMBER|UNITOFTIME|AGO', output) ||
70
+ this.matchAndMerge('YEAR|UNITOFTIME|AGO', output) ||
71
+ this.matchAndMerge('NUMBER|UNITOFTIME|FROM|NOW', output) ||
72
+ this.matchAndMerge('YEAR|UNITOFTIME|FROM|NOW', output) ||
73
+ this.matchAndMerge('NUMBER|UNITOFTIME', output) ||
74
+ this.matchAndMerge('YEAR|UNITOFTIME', output) ||
75
+ this.matchAndMerge('DATE|TIME', output) ||
76
+ this.matchAndMerge('TODAY', output) ||
77
+ this.matchAndMerge('YESTERDAY', output) ||
78
+ this.matchAndMerge('TOMORROW', output) ||
79
+ this.matchAndMerge('DATE', output) ||
80
+ this.matchAndMerge('YEAR', output) ||
81
+ this.matchAndMerge('NOW', output)) {
82
82
  continue;
83
83
  }
84
84
  else {
@@ -88,12 +88,12 @@ class DateParser extends base_parser_1.BaseParser {
88
88
  }
89
89
  return output;
90
90
  }
91
- matchAndMerge(types, tokens, output) {
91
+ matchAndMerge(types, output) {
92
92
  const idx = this.index;
93
- const matchedTokens = tokenizer_1.Tokenizer.matchTypes(types, tokens, idx);
93
+ const matchedTokens = tokenizer_1.Tokenizer.matchTypes(types, this.tokens, idx);
94
94
  if (matchedTokens) {
95
95
  output.push({
96
- type: 'MOMENT:' + types,
96
+ type: 'MERGE:' + types,
97
97
  value: '',
98
98
  values: matchedTokens,
99
99
  startIndex: matchedTokens[0].startIndex,
@@ -136,12 +136,13 @@ class DateParser extends base_parser_1.BaseParser {
136
136
  this.index++;
137
137
  }
138
138
  }
139
- else if (this.handleMoment(prefix, clauses)) {
139
+ else if (this.handleMerged(prefix, clauses)) {
140
140
  prefix = undefined;
141
141
  }
142
142
  else {
143
143
  errors.push({
144
- message: 'Invalid token ' + token.value,
144
+ message: 'Invalid token ' + token.value ||
145
+ (token.values ? token.values.join(' ') : ''),
145
146
  startIndex: token.startIndex,
146
147
  endIndex: token.endIndex,
147
148
  });
@@ -151,116 +152,154 @@ class DateParser extends base_parser_1.BaseParser {
151
152
  }
152
153
  return { clauses, errors };
153
154
  }
154
- // LAST|DAYOFWEEK
155
- static createMomentInterval(prefix, tokens) {
156
- const operator = tokens[0]
157
- .type;
158
- const unit = tokens[1].value;
159
- const moment = { operator, unit };
160
- if (prefix) {
161
- moment.prefix = prefix;
155
+ static createMomentClause(prefix, moment) {
156
+ if (!prefix) {
157
+ return { operator: 'ON', moment }; // DateOnClause
162
158
  }
163
- return moment;
164
- }
165
- // LAST|NUMBER|UNITOFTIME
166
- static createMomentNumberInterval(prefix, tokens) {
167
- const type0 = tokens[0].type;
168
- const operator = type0 === 'LAST' ? 'LASTN' : 'NEXTN';
169
- const value = tokens[1].value;
170
- const unit = tokens[2].value;
171
- const moment = { operator, value, unit };
172
- if (prefix) {
173
- moment.prefix = prefix;
159
+ else if (prefix === 'BEFORE') {
160
+ return { operator: 'BEFORE', moment }; // DateBeforeClause
161
+ }
162
+ else {
163
+ return { operator: 'AFTER', moment }; // DateAfterClause
174
164
  }
175
- return moment;
176
165
  }
177
- // NUMBER|UNITOFTIME|AGO
178
- static createMomentNumberIntervalAgo(prefix, tokens) {
179
- const operator = 'AGO';
180
- const value = tokens[0].value;
166
+ // (BEFORE|AFTER) LAST|DAYOFWEEK
167
+ static createIntervalMoment(prefix, tokens) {
168
+ const kind = tokens[0]
169
+ .type;
181
170
  const unit = tokens[1].value;
182
- const moment = { operator, value, unit };
183
- if (prefix) {
184
- moment.prefix = prefix;
185
- }
186
- return moment;
171
+ const moment = { type: 'INTERVAL', kind, unit };
172
+ return DateParser.createMomentClause(prefix, moment);
187
173
  }
174
+ // NUMBER|UNITOFTIME|AGO
188
175
  // NUMBER|UNITOFTIME|FROM|NOW
189
- static createMomentNumberIntervalFromNow(prefix, tokens) {
190
- const operator = 'FROMNOW';
191
- const value = tokens[0].value;
176
+ static createOffsetMoment(prefix, tokens) {
177
+ const amount = Number(tokens[0].value);
192
178
  const unit = tokens[1].value;
193
- const moment = { operator, value, unit };
194
- if (prefix) {
195
- moment.prefix = prefix;
179
+ const direction = tokens[2].type === 'AGO' ? 'AGO' : 'FROMNOW';
180
+ if (!DateParser.isValidNumber(amount)) {
181
+ return undefined;
196
182
  }
197
- return moment;
183
+ const moment = {
184
+ type: 'OFFSET_FROM_NOW',
185
+ direction,
186
+ amount,
187
+ unit,
188
+ };
189
+ return DateParser.createMomentClause(prefix, moment);
198
190
  }
199
- // NUMBER|UNITOFTIME
200
- static createMomentNumberUnit(prefix, tokens) {
201
- const operator = 'TIMEBLOCK';
202
- const value = tokens[0].value;
191
+ // (LAST|NEXT)|NUMBER|UNITOFTIME
192
+ static createSpanMoment(prefix, tokens) {
193
+ const amount = Number(tokens[0].value);
203
194
  const unit = tokens[1].value;
204
- const moment = { operator, value, unit };
195
+ const direction = tokens[2].type === 'LAST' ? 'LAST' : 'NEXT';
196
+ if (!DateParser.isValidNumber(amount)) {
197
+ return undefined;
198
+ }
199
+ const moment = { type: 'SPAN_FROM_NOW', direction, amount, unit };
200
+ return DateParser.createMomentClause(prefix, moment);
201
+ }
202
+ // (NUMBER|YEAR)|UNITOFTIME
203
+ static createDateDuration(prefix, tokens) {
205
204
  if (prefix) {
206
- moment.prefix = prefix;
205
+ return undefined; // before 7 hours is ambiguous, not allowed.
206
+ }
207
+ const operator = 'DURATION';
208
+ const amount = Number(tokens[0].value);
209
+ const unit = tokens[1].value;
210
+ if (!DateParser.isValidNumber(amount)) {
211
+ return undefined;
207
212
  }
208
- return moment;
213
+ const clause = { operator, duration: { amount, unit } };
214
+ return clause;
209
215
  }
210
- // DATE DATE|TIME
211
- static createMomentNumber(prefix, tokens) {
212
- const operator = tokens.length === 2 ? 'DATETIME' : 'DATE';
213
- const moment = { operator, date: tokens[0].value };
216
+ // (BEFORE|AFTER) DATE DATE|TIME
217
+ static createAbsoluteMoment(prefix, tokens) {
218
+ let unit = 'YEAR';
219
+ let date = tokens[0].value;
214
220
  if (tokens.length === 2) {
215
- moment.time = tokens[1].value;
221
+ const timeStr = tokens[1].value;
222
+ date += ' ' + timeStr;
223
+ if (timeStr.length > 5)
224
+ unit = 'SECOND';
225
+ else
226
+ unit = 'MINUTE';
216
227
  }
217
- if (prefix) {
218
- moment.prefix = prefix;
228
+ else if (date.length > 7) {
229
+ unit = 'DAY';
230
+ }
231
+ else if (date.length > 4) {
232
+ unit = 'MONTH';
219
233
  }
220
- return moment;
234
+ const moment = { type: 'ABSOLUTE', date, unit };
235
+ return DateParser.createMomentClause(prefix, moment);
221
236
  }
222
237
  // NOW YESTERDAY TODAY TOMORROW
223
- static createMomentNow(prefix, tokens) {
224
- const operator = tokens[0]
225
- .type;
226
- const moment = { operator };
227
- if (prefix) {
228
- moment.prefix = prefix;
238
+ static createNamedMoment(prefix, tokens) {
239
+ let momentName = 'NOW';
240
+ switch (tokens[0].type) {
241
+ case 'TODAY':
242
+ momentName = 'TODAY';
243
+ break;
244
+ case 'YESTERDAY':
245
+ momentName = 'YESTERDAY';
246
+ break;
247
+ case 'TOMORROW':
248
+ momentName = 'TOMORROW';
249
+ break;
250
+ }
251
+ const moment = { type: 'NAMED', name: momentName };
252
+ return DateParser.createMomentClause(prefix, moment);
253
+ }
254
+ static isValidNumber(value) {
255
+ return Number.isNaN(value) === false;
256
+ }
257
+ static createDurationFromMerged(token) {
258
+ if (!token.values || token.values.length !== 2) {
259
+ return undefined;
260
+ }
261
+ if (token.type === 'MERGE:NUMBER|UNITOFTIME' ||
262
+ token.type === 'MERGE:YEAR|UNITOFTIME') {
263
+ const value = Number(token.values[0].value);
264
+ if (!DateParser.isValidNumber(value)) {
265
+ return undefined;
266
+ }
267
+ const unit = token.values[1].value;
268
+ return { amount: value, unit: unit };
229
269
  }
230
- return moment;
270
+ return undefined;
231
271
  }
232
- static createMomentFromToken(prefix, token) {
272
+ static createClauseFromMerged(prefix, token) {
233
273
  const tokens = token.values || [];
234
274
  switch (token.type) {
235
- case 'MOMENT:LAST|UNITOFTIME':
236
- case 'MOMENT:LAST|DAYOFWEEK':
237
- case 'MOMENT:THIS|UNITOFTIME':
238
- case 'MOMENT:NEXT|UNITOFTIME':
239
- case 'MOMENT:NEXT|DAYOFWEEK':
240
- return this.createMomentInterval(prefix, tokens);
241
- case 'MOMENT:LAST|NUMBER|UNITOFTIME':
242
- case 'MOMENT:LAST|YEARORNUMBER|UNITOFTIME':
243
- case 'MOMENT:NEXT|NUMBER|UNITOFTIME':
244
- case 'MOMENT:NEXT|YEARORNUMBER|UNITOFTIME':
245
- return this.createMomentNumberInterval(prefix, tokens);
246
- case 'MOMENT:NUMBER|UNITOFTIME|AGO':
247
- case 'MOMENT:YEARORNUMBER|UNITOFTIME|AGO':
248
- return this.createMomentNumberIntervalAgo(prefix, tokens);
249
- case 'MOMENT:NUMBER|UNITOFTIME|FROM|NOW':
250
- case 'MOMENT:YEARORNUMBER|UNITOFTIME|FROM|NOW':
251
- return this.createMomentNumberIntervalFromNow(prefix, tokens);
252
- case 'MOMENT:NUMBER|UNITOFTIME':
253
- case 'MOMENT:YEARORNUMBER|UNITOFTIME':
254
- return this.createMomentNumberUnit(prefix, tokens);
255
- case 'MOMENT:DATE|TIME':
256
- case 'MOMENT:DATE':
257
- case 'MOMENT:YEARORNUMBER':
258
- return this.createMomentNumber(prefix, tokens);
259
- case 'MOMENT:NOW':
260
- case 'MOMENT:TODAY':
261
- case 'MOMENT:YESTERDAY':
262
- case 'MOMENT:TOMORROW':
263
- return this.createMomentNow(prefix, tokens);
275
+ case 'MERGE:LAST|UNITOFTIME':
276
+ case 'MERGE:LAST|DAYOFWEEK':
277
+ case 'MERGE:THIS|UNITOFTIME':
278
+ case 'MERGE:NEXT|UNITOFTIME':
279
+ case 'MERGE:NEXT|DAYOFWEEK':
280
+ return this.createIntervalMoment(prefix, tokens);
281
+ case 'MERGE:LAST|NUMBER|UNITOFTIME':
282
+ case 'MERGE:LAST|YEAR|UNITOFTIME':
283
+ case 'MERGE:NEXT|NUMBER|UNITOFTIME':
284
+ case 'MERGE:NEXT|YEAR|UNITOFTIME':
285
+ return this.createSpanMoment(prefix, tokens);
286
+ case 'MERGE:NUMBER|UNITOFTIME|AGO':
287
+ case 'MERGE:YEAR|UNITOFTIME|AGO':
288
+ case 'MERGE:NUMBER|UNITOFTIME|FROM|NOW':
289
+ case 'MERGE:YEAR|UNITOFTIME|FROM|NOW':
290
+ return this.createOffsetMoment(prefix, tokens);
291
+ case 'MERGE:NUMBER|UNITOFTIME':
292
+ case 'MERGE:YEAR|UNITOFTIME':
293
+ return this.createDateDuration(prefix, tokens);
294
+ case 'MERGE:DATE|TIME':
295
+ case 'MERGE:DATE':
296
+ case 'MERGE:YEAR':
297
+ return this.createAbsoluteMoment(prefix, tokens);
298
+ case 'MERGE:NOW':
299
+ case 'MERGE:TODAY':
300
+ case 'MERGE:YESTERDAY':
301
+ case 'MERGE:TOMORROW':
302
+ return this.createNamedMoment(prefix, tokens);
264
303
  default:
265
304
  return undefined;
266
305
  }
@@ -274,31 +313,50 @@ class DateParser extends base_parser_1.BaseParser {
274
313
  : this.tokens[position].type.startsWith(value);
275
314
  }
276
315
  handleRange(clauses) {
277
- if (this.isMatchingToken(this.index, 'MOMENT', false) &&
316
+ if (this.isMatchingToken(this.index, 'MERGE', false) &&
278
317
  (this.isMatchingToken(this.index + 1, 'TO', true) ||
279
318
  this.isMatchingToken(this.index + 1, 'FOR', true)) &&
280
- this.isMatchingToken(this.index + 2, 'MOMENT', false)) {
281
- const startMoment = DateParser.createMomentFromToken(undefined, this.tokens[this.index]);
282
- const endMoment = DateParser.createMomentFromToken(undefined, this.tokens[this.index + 2]);
283
- const operator = this.tokens[this.index + 1].type;
319
+ this.isMatchingToken(this.index + 2, 'MERGE', false)) {
320
+ const startToken = this.tokens[this.index];
321
+ const operator = this.tokens[this.index + 1].type; // TO | FOR
322
+ const endToken = this.tokens[this.index + 2];
323
+ const startClause = DateParser.createClauseFromMerged(undefined, startToken);
284
324
  this.index += 3;
285
- if (startMoment === undefined || endMoment === undefined) {
325
+ if (startClause === undefined || !('moment' in startClause)) {
286
326
  return false;
287
327
  }
288
- const dateRange = {
289
- start: startMoment,
290
- operator,
291
- end: endMoment,
292
- };
293
- clauses.push(dateRange);
328
+ if (operator === 'TO') {
329
+ const endClause = DateParser.createClauseFromMerged(undefined, endToken);
330
+ if (endClause === undefined || !('moment' in endClause)) {
331
+ return false;
332
+ }
333
+ const clause = {
334
+ operator: 'TO_RANGE',
335
+ from: startClause.moment,
336
+ to: endClause.moment,
337
+ };
338
+ clauses.push(clause);
339
+ }
340
+ else {
341
+ const endDuration = DateParser.createDurationFromMerged(endToken);
342
+ if (endDuration === undefined) {
343
+ return false;
344
+ }
345
+ const clause = {
346
+ operator: 'FOR_RANGE',
347
+ from: startClause.moment,
348
+ duration: endDuration,
349
+ };
350
+ clauses.push(clause);
351
+ }
294
352
  return true;
295
353
  }
296
354
  return false;
297
355
  }
298
- handleMoment(prefix, clauses) {
356
+ handleMerged(prefix, clauses) {
299
357
  const token = this.getNext();
300
- if (token.type.startsWith('MOMENT')) {
301
- const clause = DateParser.createMomentFromToken(prefix, token);
358
+ if (token.type.startsWith('MERGE')) {
359
+ const clause = DateParser.createClauseFromMerged(prefix, token);
302
360
  this.index++;
303
361
  if (clause === undefined) {
304
362
  return false;
@@ -306,6 +364,9 @@ class DateParser extends base_parser_1.BaseParser {
306
364
  clauses.push(clause);
307
365
  return true;
308
366
  }
367
+ else if (token.type === 'NULL' || token.type === 'NOTNULL') {
368
+ clauses.push({ operator: token.type });
369
+ }
309
370
  return false;
310
371
  }
311
372
  }
@@ -1 +1 @@
1
- {"version":3,"file":"date_parser.js","sourceRoot":"","sources":["../src/date_parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"date_parser.js","sourceRoot":"","sources":["../src/date_parser.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
- import { Clause } from './clause_types';
2
- import { BaseSerializer } from './base_serializer';
3
- export declare class DateSerializer extends BaseSerializer {
4
- constructor(clauses: Clause[]);
1
+ import { DateClause } from './date_types';
2
+ export declare class DateSerializer {
3
+ private clauses;
4
+ constructor(clauses: DateClause[]);
5
5
  serialize(): string;
6
6
  private static dateMomentToString;
7
- private static dateRangeToString;
7
+ private static goDateBetweenClause;
8
+ private static goDateForClause;
8
9
  private static clauseToString;
9
10
  private static clausesToString;
10
11
  }
@@ -1,97 +1,85 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DateSerializer = void 0;
4
- const base_serializer_1 = require("./base_serializer");
5
- class DateSerializer extends base_serializer_1.BaseSerializer {
4
+ class DateSerializer {
6
5
  constructor(clauses) {
7
- super(clauses);
6
+ this.clauses = clauses;
7
+ this.clauses = clauses;
8
8
  }
9
9
  serialize() {
10
10
  const result = DateSerializer.clausesToString(this.clauses);
11
11
  return result.trim().replace(/,$/, '');
12
12
  }
13
- static dateMomentToString(operator, clause) {
14
- if (operator === 'NOW' ||
15
- operator === 'TODAY' ||
16
- operator === 'YESTERDAY' ||
17
- operator === 'TOMORROW') {
18
- const custom = clause;
19
- return custom.prefix ? custom.prefix + ' ' + operator : operator;
20
- }
21
- else if (operator === 'LAST' ||
22
- operator === 'THIS' ||
23
- operator === 'NEXT') {
24
- const custom = clause;
25
- let value = custom.operator + ' ' + custom.unit;
26
- if (custom.prefix) {
27
- value = custom.prefix + ' ' + value;
28
- }
29
- return value;
30
- }
31
- else if (operator === 'LASTN' || operator === 'NEXTN') {
32
- const custom = clause;
33
- operator = operator.substring(0, 4); // Strip "N"
34
- let value = operator + ' ' + custom.value + ' ' + custom.unit;
35
- if (custom.prefix) {
36
- value = custom.prefix + ' ' + value;
37
- }
38
- return value;
39
- }
40
- else if (operator === 'AGO' || operator === 'FROMNOW') {
41
- const custom = clause;
42
- if (operator === 'FROMNOW')
43
- operator = 'FROM NOW';
44
- let value = custom.value + ' ' + custom.unit + ' ' + operator;
45
- if (custom.prefix) {
46
- value = custom.prefix + ' ' + value;
47
- }
48
- return value;
49
- }
50
- else if (operator === 'TIMEBLOCK') {
51
- const custom = clause;
52
- let value = custom.value + ' ' + custom.unit;
53
- if (custom.prefix) {
54
- value = custom.prefix + ' ' + value;
55
- }
56
- return value;
57
- }
58
- else if (operator === 'DATE' || operator === 'DATETIME') {
59
- const custom = clause;
60
- let value = custom.date;
61
- if (custom.time) {
62
- value = value + ' ' + custom.time;
63
- }
64
- if (custom.prefix) {
65
- value = custom.prefix + ' ' + value;
66
- }
67
- return value;
68
- }
69
- return '';
13
+ static dateMomentToString(moment) {
14
+ if (moment.type === 'ABSOLUTE') {
15
+ return moment.date;
16
+ }
17
+ else if (moment.type === 'INTERVAL') {
18
+ return moment.kind + ' ' + moment.unit;
19
+ }
20
+ else if (moment.type === 'NAMED') {
21
+ return moment.name;
22
+ }
23
+ else if (moment.type === 'OFFSET_FROM_NOW') {
24
+ const direction = moment.direction === 'FROMNOW' ? 'FROM NOW' : 'AGO';
25
+ return moment.amount + ' ' + moment.unit + ' ' + direction;
26
+ }
27
+ else if (moment.type === 'SPAN_FROM_NOW') {
28
+ return moment.direction + ' ' + moment.amount + ' ' + moment.unit;
29
+ }
30
+ else {
31
+ throw new Error('moment type not recognized ' + JSON.stringify(moment));
32
+ }
70
33
  }
71
- static dateRangeToString(operator, clause) {
72
- return (DateSerializer.dateMomentToString(clause.start.operator, clause.start) +
73
- ' ' +
74
- clause.operator +
34
+ static goDateBetweenClause(clause) {
35
+ return (DateSerializer.dateMomentToString(clause.from) +
36
+ ' TO ' +
37
+ DateSerializer.dateMomentToString(clause.to));
38
+ }
39
+ static goDateForClause(clause) {
40
+ return (DateSerializer.dateMomentToString(clause.from) +
41
+ ' FOR ' +
42
+ clause.duration.amount +
75
43
  ' ' +
76
- DateSerializer.dateMomentToString(clause.end.operator, clause.end));
44
+ clause.duration.unit);
77
45
  }
78
- static clauseToString(operator, clause) {
79
- if (operator === 'TO' || operator === 'FOR') {
80
- const custom = clause;
81
- return DateSerializer.dateRangeToString(operator, custom);
46
+ static clauseToString(clause) {
47
+ if (!('operator' in clause)) {
48
+ throw new Error('Invalid date clause ' + JSON.stringify(clause));
49
+ }
50
+ if (clause.operator === 'TO_RANGE') {
51
+ return DateSerializer.goDateBetweenClause(clause);
52
+ }
53
+ else if (clause.operator === 'FOR_RANGE') {
54
+ return DateSerializer.goDateForClause(clause);
55
+ }
56
+ else if (clause.operator === 'BEFORE') {
57
+ return 'BEFORE ' + DateSerializer.dateMomentToString(clause.moment);
58
+ }
59
+ else if (clause.operator === 'AFTER') {
60
+ return 'AFTER ' + DateSerializer.dateMomentToString(clause.moment);
61
+ }
62
+ else if (clause.operator === 'ON') {
63
+ return DateSerializer.dateMomentToString(clause.moment);
64
+ }
65
+ else if (clause.operator === 'NULL') {
66
+ return 'NULL';
67
+ }
68
+ else if (clause.operator === 'NOTNULL') {
69
+ return '-NULL';
70
+ }
71
+ else if (clause.operator === 'DURATION') {
72
+ return clause.duration.amount + ' ' + clause.duration.unit;
73
+ }
74
+ else {
75
+ throw new Error('Clause type not recognized ' + JSON.stringify(clause));
82
76
  }
83
- return DateSerializer.dateMomentToString(operator, clause);
84
77
  }
85
78
  static clausesToString(clauses) {
86
79
  let result = '';
87
80
  for (const clause of clauses) {
88
- if ('operator' in clause) {
89
- result += DateSerializer.clauseToString(clause.operator, clause);
90
- result += ', ';
91
- }
92
- else {
93
- throw new Error('Invalid date clause ' + JSON.stringify(clause));
94
- }
81
+ result += DateSerializer.clauseToString(clause);
82
+ result += ', ';
95
83
  }
96
84
  return result;
97
85
  }