@malloydata/malloy-filter 0.0.237-dev250224203840 → 0.0.237-dev250225015031

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 (60) hide show
  1. package/SAMPLES.md +336 -116
  2. package/SERIALIZE_SAMPLES.md +268 -64
  3. package/dist/a_simple_parser.js +6 -0
  4. package/dist/a_simple_parser.js.map +1 -1
  5. package/dist/base_parser.js +6 -0
  6. package/dist/base_parser.js.map +1 -1
  7. package/dist/boolean_parser.js +28 -13
  8. package/dist/boolean_parser.js.map +1 -1
  9. package/dist/boolean_serializer.js +12 -6
  10. package/dist/boolean_serializer.js.map +1 -1
  11. package/dist/clause_types.d.ts +20 -15
  12. package/dist/clause_types.js +6 -0
  13. package/dist/clause_types.js.map +1 -1
  14. package/dist/date_parser.d.ts +1 -0
  15. package/dist/date_parser.js +174 -116
  16. package/dist/date_parser.js.map +1 -1
  17. package/dist/date_serializer.js +26 -20
  18. package/dist/date_serializer.js.map +1 -1
  19. package/dist/date_types.d.ts +21 -21
  20. package/dist/date_types.js +6 -0
  21. package/dist/date_types.js.map +1 -1
  22. package/dist/generate_samples.js +41 -26
  23. package/dist/generate_samples.js.map +1 -1
  24. package/dist/index.d.ts +10 -0
  25. package/dist/index.js +42 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/number_parser.js +43 -25
  28. package/dist/number_parser.js.map +1 -1
  29. package/dist/number_serializer.js +10 -4
  30. package/dist/number_serializer.js.map +1 -1
  31. package/dist/string_parser.d.ts +0 -1
  32. package/dist/string_parser.js +47 -79
  33. package/dist/string_parser.js.map +1 -1
  34. package/dist/string_serializer.d.ts +1 -0
  35. package/dist/string_serializer.js +49 -33
  36. package/dist/string_serializer.js.map +1 -1
  37. package/dist/token_types.js +6 -0
  38. package/dist/token_types.js.map +1 -1
  39. package/dist/tokenizer.js +9 -3
  40. package/dist/tokenizer.js.map +1 -1
  41. package/dist/tokenizer.spec.js +13 -7
  42. package/dist/tokenizer.spec.js.map +1 -1
  43. package/package.json +2 -2
  44. package/src/a_simple_parser.ts +7 -0
  45. package/src/base_parser.ts +7 -0
  46. package/src/boolean_parser.ts +30 -18
  47. package/src/boolean_serializer.ts +13 -6
  48. package/src/clause_types.ts +36 -31
  49. package/src/date_parser.ts +177 -115
  50. package/src/date_serializer.ts +27 -20
  51. package/src/date_types.ts +42 -34
  52. package/src/generate_samples.ts +42 -26
  53. package/src/index.ts +17 -0
  54. package/src/number_parser.ts +45 -26
  55. package/src/number_serializer.ts +11 -4
  56. package/src/string_parser.ts +51 -79
  57. package/src/string_serializer.ts +65 -39
  58. package/src/token_types.ts +7 -0
  59. package/src/tokenizer.spec.ts +14 -7
  60. package/src/tokenizer.ts +10 -3
@@ -5,10 +5,10 @@ export interface NumberCondition {
5
5
  values: NumberValue[];
6
6
  }
7
7
  export interface NumberNull {
8
- operator: 'NULL';
8
+ operator: 'null';
9
9
  }
10
10
  export interface NumberNotNull {
11
- operator: 'NOTNULL';
11
+ operator: 'not_null';
12
12
  }
13
13
  export type NumberRangeOperator = '<=' | '>=' | '>' | '<';
14
14
  export interface NumberRange {
@@ -19,45 +19,50 @@ export interface NumberRange {
19
19
  endValue: NumberValue;
20
20
  }
21
21
  export type NumberClause = NumberCondition | NumberRange | NumberNull | NumberNotNull;
22
- export type StringConditionOperator = 'starts' | 'ends' | 'contains' | 'notStarts' | 'notEnds' | 'notContains' | '~' | '=' | '!~' | '!=';
22
+ export type StringConditionOperator = 'starts' | 'ends' | 'contains' | 'not_starts' | 'not_ends' | 'not_contains' | '=' | '!=';
23
+ export type StringMatchOperator = '~' | '!~';
23
24
  export type StringValue = string;
24
25
  export interface StringCondition {
25
26
  operator: StringConditionOperator;
26
27
  values: StringValue[];
27
28
  }
29
+ export interface StringMatch {
30
+ operator: StringMatchOperator;
31
+ escaped_values: StringValue[];
32
+ }
28
33
  export interface StringNull {
29
- operator: 'NULL';
34
+ operator: 'null';
30
35
  }
31
36
  export interface StringNotNull {
32
- operator: 'NOTNULL';
37
+ operator: 'not_null';
33
38
  }
34
39
  export interface StringEmpty {
35
- operator: 'EMPTY';
40
+ operator: 'empty';
36
41
  }
37
42
  export interface StringNotEmpty {
38
- operator: 'NOTEMPTY';
43
+ operator: 'not_empty';
39
44
  }
40
- export type StringClause = StringCondition | StringNull | StringNotNull | StringEmpty | StringNotEmpty;
41
- export type BooleanOperator = 'TRUE' | 'FALSE' | 'FALSEORNULL' | 'NULL' | 'NOTNULL';
45
+ export type StringClause = StringCondition | StringMatch | StringNull | StringNotNull | StringEmpty | StringNotEmpty;
46
+ export type BooleanOperator = 'true' | 'false' | 'false_or_null' | 'null' | 'not_null';
42
47
  export interface BooleanClause {
43
48
  operator: BooleanOperator;
44
49
  }
45
- export interface FilterError {
50
+ export type FilterLogSeverity = 'error' | 'warn';
51
+ export interface FilterLog {
46
52
  message: string;
47
53
  startIndex: number;
48
54
  endIndex: number;
55
+ severity: FilterLogSeverity;
49
56
  }
50
57
  export interface BooleanParserResponse {
51
58
  clauses: BooleanClause[];
52
- errors: FilterError[];
59
+ logs: FilterLog[];
53
60
  }
54
61
  export interface NumberParserResponse {
55
62
  clauses: NumberClause[];
56
- errors: FilterError[];
63
+ logs: FilterLog[];
57
64
  }
58
- export type QuoteType = 'SINGLE' | 'DOUBLE' | 'BACKTICK' | 'TRIPLESINGLE' | 'TRIPLEDOUBLE' | 'ESCAPEDSINGLE' | 'ESCAPEDDOUBLE' | 'ESCAPEDBACKTICK';
59
65
  export interface StringParserResponse {
60
66
  clauses: StringClause[];
61
- errors: FilterError[];
62
- quotes?: QuoteType[];
67
+ logs: FilterLog[];
63
68
  }
@@ -1,3 +1,9 @@
1
1
  "use strict";
2
+ /*
3
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
2
8
  Object.defineProperty(exports, "__esModule", { value: true });
3
9
  //# sourceMappingURL=clause_types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clause_types.js","sourceRoot":"","sources":["../src/clause_types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"clause_types.js","sourceRoot":"","sources":["../src/clause_types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -5,6 +5,7 @@ export declare class DateParser extends BaseParser {
5
5
  private static readonly negatedStartRegex;
6
6
  constructor(input: string);
7
7
  private tokenize;
8
+ private mergeDateTimeTokens;
8
9
  private mergeMomentTokens;
9
10
  private matchAndMerge;
10
11
  parse(): DateParserResponse;
@@ -1,4 +1,10 @@
1
1
  "use strict";
2
+ /*
3
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
2
8
  Object.defineProperty(exports, "__esModule", { value: true });
3
9
  exports.DateParser = void 0;
4
10
  const tokenizer_1 = require("./tokenizer");
@@ -9,38 +15,49 @@ class DateParser extends base_parser_1.BaseParser {
9
15
  }
10
16
  tokenize() {
11
17
  const specialSubstrings = [{ type: ',', value: ',' }];
18
+ // Do not reorder.
12
19
  const specialWords = [
13
20
  {
14
- type: 'UNITOFTIME',
21
+ type: 'unitoftime',
15
22
  value: /^(second|minute|hour|day|week|month|quarter|year)s?$/i,
16
23
  ignoreCase: true,
17
24
  },
18
25
  {
19
- type: 'DAYOFWEEK',
26
+ type: 'dayofweek',
20
27
  value: /^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$/i,
21
28
  ignoreCase: true,
22
29
  },
23
- { type: 'DATE', value: /^\d\d\d\d-\d\d-\d\d$/ },
24
- { type: 'DATE', value: /^\d\d\d\d-\d\d$/ },
25
- { type: 'TIME', value: /^\d\d:\d\d:\d\d\.\d+$/ },
26
- { type: 'TIME', value: /^\d\d:\d\d:\d\d$/ },
27
- { type: 'TIME', value: /^\d\d:\d\d$/ },
28
- { type: 'NOTNULL', value: '-null', ignoreCase: true },
29
- { type: 'NULL', value: 'null', ignoreCase: true },
30
- { type: 'PREFIX', value: /^(before|after)/i, ignoreCase: true },
31
- { type: 'TODAY', value: 'today', ignoreCase: true },
32
- { type: 'YESTERDAY', value: 'yesterday', ignoreCase: true },
33
- { type: 'TOMORROW', value: 'tomorrow', ignoreCase: true },
34
- { type: 'NOW', value: 'now', ignoreCase: true },
35
- { type: 'THIS', value: 'this', ignoreCase: true },
36
- { type: 'LAST', value: 'last', ignoreCase: true },
37
- { type: 'NEXT', value: 'next', ignoreCase: true },
38
- { type: 'AGO', value: 'ago', ignoreCase: true },
39
- { type: 'FROM', value: 'from', ignoreCase: true },
40
- { type: 'FOR', value: 'for', ignoreCase: true },
41
- { type: 'TO', value: 'to', ignoreCase: true },
42
- { type: 'YEAR', value: /^\d\d\d\d$/ },
43
- { type: 'NUMBER', value: /^[\d.]+/, ignoreCase: true },
30
+ { type: 'date', value: /^\d{4}-\d{2}-\d{2}T\d\d$/ },
31
+ { type: 'date', value: /^\d{4}-\d{2}-\d{2}$/ },
32
+ { type: 'date', value: /^\d{4}-\d{2}$/ },
33
+ { type: 'date', value: /^\d{4}-[Qq][1234]$/ },
34
+ {
35
+ type: 'date',
36
+ value: /^\d{4}-\d{2}-\d{2}T\d\d:\d\d:\d\d\[[a-zA-Z_/]*\]$/,
37
+ },
38
+ { type: 'date', value: /^\d{4}-\d{2}-\d{2}T\d\d:\d\d:\d\d[.,]\d+$/ },
39
+ { type: 'date', value: /^\d{4}-\d{2}-\d{2}T\d\d:\d\d:\d\d$/ },
40
+ { type: 'date', value: /^\d{4}-\d{2}-\d{2}T\d\d:\d\d$/ },
41
+ { type: 'time', value: /^\d\d:\d\d:\d\d\[[a-zA-Z_/]*\]$/ },
42
+ { type: 'time', value: /^\d\d:\d\d:\d\d[.,]\d+$/ },
43
+ { type: 'time', value: /^\d\d:\d\d:\d\d$/ },
44
+ { type: 'time', value: /^\d\d:\d\d$/ },
45
+ { type: 'not_null', value: '-null', ignoreCase: true },
46
+ { type: 'null', value: 'null', ignoreCase: true },
47
+ { type: 'prefix', value: /^(before|after)/i, ignoreCase: true },
48
+ { type: 'today', value: 'today', ignoreCase: true },
49
+ { type: 'yesterday', value: 'yesterday', ignoreCase: true },
50
+ { type: 'tomorrow', value: 'tomorrow', ignoreCase: true },
51
+ { type: 'now', value: 'now', ignoreCase: true },
52
+ { type: 'this', value: 'this', ignoreCase: true },
53
+ { type: 'last', value: 'last', ignoreCase: true },
54
+ { type: 'next', value: 'next', ignoreCase: true },
55
+ { type: 'ago', value: 'ago', ignoreCase: true },
56
+ { type: 'from', value: 'from', ignoreCase: true },
57
+ { type: 'for', value: 'for', ignoreCase: true },
58
+ { type: 'to', value: 'to', ignoreCase: true },
59
+ { type: 'year', value: /^\d\d\d\d$/ },
60
+ { type: 'number', value: /^[\d.]+/, ignoreCase: true },
44
61
  ];
45
62
  const params = {
46
63
  trimWordWhitespace: true,
@@ -50,35 +67,58 @@ class DateParser extends base_parser_1.BaseParser {
50
67
  };
51
68
  const tokenizer = new tokenizer_1.Tokenizer(this.inputString, params);
52
69
  this.tokens = tokenizer.parse();
53
- // console.log('Tokens before moments ', ...this.tokens);
70
+ this.tokens = this.mergeDateTimeTokens();
54
71
  this.tokens = this.mergeMomentTokens();
55
72
  }
73
+ mergeDateTimeTokens() {
74
+ const output = [];
75
+ this.index = 0;
76
+ let previous = undefined;
77
+ while (this.index < this.tokens.length) {
78
+ const token = this.tokens[this.index];
79
+ if (previous &&
80
+ previous.type === 'date' &&
81
+ previous.value.length >= 10 &&
82
+ (token.type === 'time' ||
83
+ (token.type === 'number' && token.value.length === 2))) {
84
+ previous.value = previous.value + ' ' + token.value;
85
+ previous.endIndex = token.endIndex;
86
+ previous = undefined;
87
+ }
88
+ else {
89
+ previous = token;
90
+ output.push(token);
91
+ }
92
+ this.index++;
93
+ }
94
+ return output;
95
+ }
56
96
  mergeMomentTokens() {
57
97
  const output = [];
58
98
  this.index = 0;
59
99
  while (this.index < this.tokens.length) {
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)) {
100
+ // Do not reorder.
101
+ if (this.matchAndMerge('last|unitoftime', output) ||
102
+ this.matchAndMerge('last|dayofweek', output) ||
103
+ this.matchAndMerge('last|number|unitoftime', output) ||
104
+ this.matchAndMerge('last|year|unitoftime', output) ||
105
+ this.matchAndMerge('this|unitoftime', output) ||
106
+ this.matchAndMerge('next|unitoftime', output) ||
107
+ this.matchAndMerge('next|dayofweek', output) ||
108
+ this.matchAndMerge('next|number|unitoftime', output) ||
109
+ this.matchAndMerge('next|year|unitoftime', output) ||
110
+ this.matchAndMerge('number|unitoftime|ago', output) ||
111
+ this.matchAndMerge('year|unitoftime|ago', output) ||
112
+ this.matchAndMerge('number|unitoftime|from|now', output) ||
113
+ this.matchAndMerge('year|unitoftime|from|now', output) ||
114
+ this.matchAndMerge('number|unitoftime', output) ||
115
+ this.matchAndMerge('year|unitoftime', output) ||
116
+ this.matchAndMerge('today', output) ||
117
+ this.matchAndMerge('yesterday', output) ||
118
+ this.matchAndMerge('tomorrow', output) ||
119
+ this.matchAndMerge('date', output) ||
120
+ this.matchAndMerge('year', output) ||
121
+ this.matchAndMerge('now', output)) {
82
122
  continue;
83
123
  }
84
124
  else {
@@ -108,27 +148,37 @@ class DateParser extends base_parser_1.BaseParser {
108
148
  this.tokenize();
109
149
  let prefix = undefined;
110
150
  const clauses = [];
111
- const errors = [];
151
+ const logs = [];
112
152
  this.index = 0;
113
153
  while (this.index < this.tokens.length) {
114
154
  const token = this.getNext();
115
155
  if (token.type === ',') {
116
156
  if (prefix) {
117
- errors.push({
157
+ logs.push({
158
+ severity: 'error',
118
159
  message: 'Invalid ' + prefix,
119
160
  startIndex: token.startIndex,
120
161
  endIndex: token.endIndex,
121
162
  });
122
163
  }
164
+ else if (this.index > 0 && this.tokens[this.index - 1].type === ',') {
165
+ logs.push({
166
+ severity: 'warn',
167
+ message: 'Empty clause',
168
+ startIndex: token.startIndex,
169
+ endIndex: token.endIndex,
170
+ });
171
+ }
123
172
  this.index++;
124
173
  }
125
- else if (token.type === 'PREFIX') {
174
+ else if (token.type === 'prefix') {
126
175
  prefix = token.value;
127
176
  this.index++;
128
177
  }
129
178
  else if (this.handleRange(clauses)) {
130
179
  if (prefix) {
131
- errors.push({
180
+ logs.push({
181
+ severity: 'error',
132
182
  message: 'Invalid ' + prefix,
133
183
  startIndex: token.startIndex,
134
184
  endIndex: token.endIndex,
@@ -139,8 +189,14 @@ class DateParser extends base_parser_1.BaseParser {
139
189
  else if (this.handleMerged(prefix, clauses)) {
140
190
  prefix = undefined;
141
191
  }
192
+ else if (token.type === 'null' || token.type === 'not_null') {
193
+ prefix = undefined;
194
+ clauses.push({ operator: token.type });
195
+ this.index++;
196
+ }
142
197
  else {
143
- errors.push({
198
+ logs.push({
199
+ severity: 'error',
144
200
  message: 'Invalid token ' + token.value ||
145
201
  (token.values ? token.values.join(' ') : ''),
146
202
  startIndex: token.startIndex,
@@ -150,17 +206,17 @@ class DateParser extends base_parser_1.BaseParser {
150
206
  this.index++;
151
207
  }
152
208
  }
153
- return { clauses, errors };
209
+ return { clauses, logs };
154
210
  }
155
211
  static createMomentClause(prefix, moment) {
156
212
  if (!prefix) {
157
- return { operator: 'ON', moment }; // DateOnClause
213
+ return { operator: 'on', moment }; // DateOnClause
158
214
  }
159
- else if (prefix === 'BEFORE') {
160
- return { operator: 'BEFORE', moment }; // DateBeforeClause
215
+ else if (prefix === 'before') {
216
+ return { operator: 'before', moment }; // DateBeforeClause
161
217
  }
162
218
  else {
163
- return { operator: 'AFTER', moment }; // DateAfterClause
219
+ return { operator: 'after', moment }; // DateAfterClause
164
220
  }
165
221
  }
166
222
  // (BEFORE|AFTER) LAST|DAYOFWEEK
@@ -168,7 +224,7 @@ class DateParser extends base_parser_1.BaseParser {
168
224
  const kind = tokens[0]
169
225
  .type;
170
226
  const unit = tokens[1].value;
171
- const moment = { type: 'INTERVAL', kind, unit };
227
+ const moment = { type: 'interval', kind, unit };
172
228
  return DateParser.createMomentClause(prefix, moment);
173
229
  }
174
230
  // NUMBER|UNITOFTIME|AGO
@@ -176,12 +232,12 @@ class DateParser extends base_parser_1.BaseParser {
176
232
  static createOffsetMoment(prefix, tokens) {
177
233
  const amount = Number(tokens[0].value);
178
234
  const unit = tokens[1].value;
179
- const direction = tokens[2].type === 'AGO' ? 'AGO' : 'FROMNOW';
235
+ const direction = tokens[2].type === 'ago' ? 'ago' : 'from_now';
180
236
  if (!DateParser.isValidNumber(amount)) {
181
237
  return undefined;
182
238
  }
183
239
  const moment = {
184
- type: 'OFFSET_FROM_NOW',
240
+ type: 'offset_from_now',
185
241
  direction,
186
242
  amount,
187
243
  unit,
@@ -192,11 +248,11 @@ class DateParser extends base_parser_1.BaseParser {
192
248
  static createSpanMoment(prefix, tokens) {
193
249
  const amount = Number(tokens[0].value);
194
250
  const unit = tokens[1].value;
195
- const direction = tokens[2].type === 'LAST' ? 'LAST' : 'NEXT';
251
+ const direction = tokens[2].type === 'last' ? 'last' : 'next';
196
252
  if (!DateParser.isValidNumber(amount)) {
197
253
  return undefined;
198
254
  }
199
- const moment = { type: 'SPAN_FROM_NOW', direction, amount, unit };
255
+ const moment = { type: 'span_from_now', direction, amount, unit };
200
256
  return DateParser.createMomentClause(prefix, moment);
201
257
  }
202
258
  // (NUMBER|YEAR)|UNITOFTIME
@@ -204,7 +260,7 @@ class DateParser extends base_parser_1.BaseParser {
204
260
  if (prefix) {
205
261
  return undefined; // before 7 hours is ambiguous, not allowed.
206
262
  }
207
- const operator = 'DURATION';
263
+ const operator = 'duration';
208
264
  const amount = Number(tokens[0].value);
209
265
  const unit = tokens[1].value;
210
266
  if (!DateParser.isValidNumber(amount)) {
@@ -215,40 +271,46 @@ class DateParser extends base_parser_1.BaseParser {
215
271
  }
216
272
  // (BEFORE|AFTER) DATE DATE|TIME
217
273
  static createAbsoluteMoment(prefix, tokens) {
218
- let unit = 'YEAR';
219
- let date = tokens[0].value;
220
- if (tokens.length === 2) {
221
- const timeStr = tokens[1].value;
222
- date += ' ' + timeStr;
223
- if (timeStr.length > 5)
224
- unit = 'SECOND';
225
- else
226
- unit = 'MINUTE';
274
+ const dateStr = tokens[0].value;
275
+ const matcher = /^\d{4}-\d{2}-\d{2}[Tt ](.+)$/.exec(dateStr);
276
+ const timeStr = matcher ? matcher[1] : '';
277
+ let unit = 'year';
278
+ if (timeStr.length > 8) {
279
+ unit = 'instant';
280
+ }
281
+ else if (timeStr.length > 5) {
282
+ unit = 'second';
283
+ }
284
+ else if (timeStr.length > 2) {
285
+ unit = 'minute';
227
286
  }
228
- else if (date.length > 7) {
229
- unit = 'DAY';
287
+ else if (timeStr.length === 2) {
288
+ unit = 'hour';
230
289
  }
231
- else if (date.length > 4) {
232
- unit = 'MONTH';
290
+ else if (dateStr.length > 7) {
291
+ unit = 'day';
233
292
  }
234
- const moment = { type: 'ABSOLUTE', date, unit };
293
+ else if (dateStr.length > 4) {
294
+ unit = /[qQ]/.test(dateStr) ? 'quarter' : 'month';
295
+ }
296
+ const moment = { type: 'absolute', date: dateStr, unit };
235
297
  return DateParser.createMomentClause(prefix, moment);
236
298
  }
237
299
  // NOW YESTERDAY TODAY TOMORROW
238
300
  static createNamedMoment(prefix, tokens) {
239
- let momentName = 'NOW';
301
+ let momentName = 'now';
240
302
  switch (tokens[0].type) {
241
- case 'TODAY':
242
- momentName = 'TODAY';
303
+ case 'today':
304
+ momentName = 'today';
243
305
  break;
244
- case 'YESTERDAY':
245
- momentName = 'YESTERDAY';
306
+ case 'yesterday':
307
+ momentName = 'yesterday';
246
308
  break;
247
- case 'TOMORROW':
248
- momentName = 'TOMORROW';
309
+ case 'tomorrow':
310
+ momentName = 'tomorrow';
249
311
  break;
250
312
  }
251
- const moment = { type: 'NAMED', name: momentName };
313
+ const moment = { type: 'named', name: momentName };
252
314
  return DateParser.createMomentClause(prefix, moment);
253
315
  }
254
316
  static isValidNumber(value) {
@@ -258,8 +320,8 @@ class DateParser extends base_parser_1.BaseParser {
258
320
  if (!token.values || token.values.length !== 2) {
259
321
  return undefined;
260
322
  }
261
- if (token.type === 'MERGE:NUMBER|UNITOFTIME' ||
262
- token.type === 'MERGE:YEAR|UNITOFTIME') {
323
+ if (token.type === 'MERGE:number|unitoftime' ||
324
+ token.type === 'MERGE:year|unitoftime') {
263
325
  const value = Number(token.values[0].value);
264
326
  if (!DateParser.isValidNumber(value)) {
265
327
  return undefined;
@@ -272,33 +334,32 @@ class DateParser extends base_parser_1.BaseParser {
272
334
  static createClauseFromMerged(prefix, token) {
273
335
  const tokens = token.values || [];
274
336
  switch (token.type) {
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':
337
+ case 'MERGE:last|unitoftime':
338
+ case 'MERGE:last|dayofweek':
339
+ case 'MERGE:this|unitoftime':
340
+ case 'MERGE:next|unitoftime':
341
+ case 'MERGE:next|dayofweek':
280
342
  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':
343
+ case 'MERGE:last|number|unitoftime':
344
+ case 'MERGE:last|year|unitoftime':
345
+ case 'MERGE:next|number|unitoftime':
346
+ case 'MERGE:next|year|unitoftime':
285
347
  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':
348
+ case 'MERGE:number|unitoftime|ago':
349
+ case 'MERGE:year|unitoftime|ago':
350
+ case 'MERGE:number|unitoftime|from|now':
351
+ case 'MERGE:year|unitoftime|from|now':
290
352
  return this.createOffsetMoment(prefix, tokens);
291
- case 'MERGE:NUMBER|UNITOFTIME':
292
- case 'MERGE:YEAR|UNITOFTIME':
353
+ case 'MERGE:number|unitoftime':
354
+ case 'MERGE:year|unitoftime':
293
355
  return this.createDateDuration(prefix, tokens);
294
- case 'MERGE:DATE|TIME':
295
- case 'MERGE:DATE':
296
- case 'MERGE:YEAR':
356
+ case 'MERGE:date':
357
+ case 'MERGE:year':
297
358
  return this.createAbsoluteMoment(prefix, tokens);
298
- case 'MERGE:NOW':
299
- case 'MERGE:TODAY':
300
- case 'MERGE:YESTERDAY':
301
- case 'MERGE:TOMORROW':
359
+ case 'MERGE:now':
360
+ case 'MERGE:today':
361
+ case 'MERGE:yesterday':
362
+ case 'MERGE:tomorrow':
302
363
  return this.createNamedMoment(prefix, tokens);
303
364
  default:
304
365
  return undefined;
@@ -314,8 +375,8 @@ class DateParser extends base_parser_1.BaseParser {
314
375
  }
315
376
  handleRange(clauses) {
316
377
  if (this.isMatchingToken(this.index, 'MERGE', false) &&
317
- (this.isMatchingToken(this.index + 1, 'TO', true) ||
318
- this.isMatchingToken(this.index + 1, 'FOR', true)) &&
378
+ (this.isMatchingToken(this.index + 1, 'to', true) ||
379
+ this.isMatchingToken(this.index + 1, 'for', true)) &&
319
380
  this.isMatchingToken(this.index + 2, 'MERGE', false)) {
320
381
  const startToken = this.tokens[this.index];
321
382
  const operator = this.tokens[this.index + 1].type; // TO | FOR
@@ -325,13 +386,13 @@ class DateParser extends base_parser_1.BaseParser {
325
386
  if (startClause === undefined || !('moment' in startClause)) {
326
387
  return false;
327
388
  }
328
- if (operator === 'TO') {
389
+ if (operator === 'to') {
329
390
  const endClause = DateParser.createClauseFromMerged(undefined, endToken);
330
391
  if (endClause === undefined || !('moment' in endClause)) {
331
392
  return false;
332
393
  }
333
394
  const clause = {
334
- operator: 'TO_RANGE',
395
+ operator: 'to_range',
335
396
  from: startClause.moment,
336
397
  to: endClause.moment,
337
398
  };
@@ -343,7 +404,7 @@ class DateParser extends base_parser_1.BaseParser {
343
404
  return false;
344
405
  }
345
406
  const clause = {
346
- operator: 'FOR_RANGE',
407
+ operator: 'for_range',
347
408
  from: startClause.moment,
348
409
  duration: endDuration,
349
410
  };
@@ -364,9 +425,6 @@ class DateParser extends base_parser_1.BaseParser {
364
425
  clauses.push(clause);
365
426
  return true;
366
427
  }
367
- else if (token.type === 'NULL' || token.type === 'NOTNULL') {
368
- clauses.push({ operator: token.type });
369
- }
370
428
  return false;
371
429
  }
372
430
  }
@@ -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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"}