@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
@@ -1,7 +1,7 @@
1
- import { Clause } from './clause_types';
2
- import { BaseSerializer } from './base_serializer';
3
- export declare class NumberSerializer extends BaseSerializer {
4
- constructor(clauses: Clause[]);
1
+ import { NumberClause } from './clause_types';
2
+ export declare class NumberSerializer {
3
+ private clauses;
4
+ constructor(clauses: NumberClause[]);
5
5
  serialize(): string;
6
6
  private static numberConditionToString;
7
7
  private static getNegatedType;
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NumberSerializer = void 0;
4
- const base_serializer_1 = require("./base_serializer");
5
- class NumberSerializer extends base_serializer_1.BaseSerializer {
4
+ class NumberSerializer {
6
5
  constructor(clauses) {
7
- super(clauses);
6
+ this.clauses = clauses;
7
+ this.clauses = clauses;
8
8
  }
9
9
  serialize() {
10
10
  const result = NumberSerializer.clauseToString(this.clauses);
11
11
  return result.trim().replace(/,$/, '');
12
12
  }
13
- // NumberOperator = '<=' | '>=' | '!=' | '=' | '>' | '<';
13
+ // NumberOperator = '<=' | '>=' | '!=' | '=' | '>' | '<'
14
14
  static numberConditionToString(operator, value) {
15
- if (value === null) {
16
- return operator === '=' ? 'NULL' : '-NULL';
17
- }
18
- const operatorString = operator === '=' ? '' : operator; // Remove operator for eg "5, 7, 9"
15
+ // Remove operator for eg "5, 7, 9".
16
+ const operatorString = operator === '=' ? '' : operator;
19
17
  return operatorString + value;
20
18
  }
21
19
  static getNegatedType(operator) {
@@ -53,21 +51,26 @@ class NumberSerializer extends base_serializer_1.BaseSerializer {
53
51
  static clauseToString(clauses) {
54
52
  let result = '';
55
53
  for (const clause of clauses) {
56
- if ('operator' in clause && clause.operator === 'range') {
54
+ if (!('operator' in clause)) {
55
+ throw new Error('Invalid number clause ' + JSON.stringify(clause));
56
+ }
57
+ if (clause.operator === 'range') {
57
58
  result += NumberSerializer.rangeToString(clause);
58
59
  result += ', ';
59
60
  }
60
- else if ('operator' in clause &&
61
- NumberSerializer.isNumberOperator(clause.operator)) {
61
+ else if (clause.operator === 'NULL') {
62
+ result += 'NULL, ';
63
+ }
64
+ else if (clause.operator === 'NOTNULL') {
65
+ result += '-NULL, ';
66
+ }
67
+ else if (NumberSerializer.isNumberOperator(clause.operator)) {
62
68
  const numberClause = clause;
63
69
  for (const value of numberClause.values) {
64
70
  result += NumberSerializer.numberConditionToString(numberClause.operator, value);
65
71
  result += ', ';
66
72
  }
67
73
  }
68
- else {
69
- throw new Error('Invalid number clause ' + JSON.stringify(clause));
70
- }
71
74
  }
72
75
  return result;
73
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"number_serializer.js","sourceRoot":"","sources":["../src/number_serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number_serializer.js","sourceRoot":"","sources":["../src/number_serializer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
+ import { StringParserResponse } from './clause_types';
1
2
  import { BaseParser } from './base_parser';
2
- import { FilterParserResponse } from './filter_types';
3
3
  export declare class StringParser extends BaseParser {
4
4
  private static readonly percentRegex;
5
5
  private static readonly underscoreRegex;
@@ -9,7 +9,7 @@ export declare class StringParser extends BaseParser {
9
9
  private static readonly singleBackslashRegex;
10
10
  constructor(input: string);
11
11
  private tokenize;
12
- parse(): FilterParserResponse;
12
+ parse(): StringParserResponse;
13
13
  private static findQuotes;
14
14
  private static groupClauses;
15
15
  private static percentInMiddle;
@@ -35,20 +35,11 @@ class StringParser extends base_parser_1.BaseParser {
35
35
  if (token.type === ',') {
36
36
  this.index++;
37
37
  }
38
- else if (token.type === 'NULL') {
39
- clauses.push({ operator: '=', values: [null] });
40
- this.index++;
41
- }
42
- else if (token.type === 'EMPTY') {
43
- clauses.push({ operator: 'EMPTY', values: [null] });
44
- this.index++;
45
- }
46
- else if (token.type === 'NOTNULL') {
47
- clauses.push({ operator: '!=', values: [null] });
48
- this.index++;
49
- }
50
- else if (token.type === 'NOTEMPTY') {
51
- clauses.push({ operator: 'NOTEMPTY', values: [null] });
38
+ else if (token.type === 'NULL' ||
39
+ token.type === 'NOTNULL' ||
40
+ token.type === 'EMPTY' ||
41
+ token.type === 'NOTEMPTY') {
42
+ clauses.push({ operator: token.type });
52
43
  this.index++;
53
44
  }
54
45
  else if (this.checkSimpleWord(clauses)) {
@@ -63,7 +54,15 @@ class StringParser extends base_parser_1.BaseParser {
63
54
  this.index++;
64
55
  }
65
56
  }
66
- return { clauses: StringParser.groupClauses(clauses), errors };
57
+ const response = {
58
+ clauses: StringParser.groupClauses(clauses),
59
+ errors,
60
+ };
61
+ const quotes = StringParser.findQuotes(this.inputString);
62
+ if (quotes.length > 0) {
63
+ response.quotes = quotes;
64
+ }
65
+ return response;
67
66
  }
68
67
  static findQuotes(str) {
69
68
  const quotes = new Set();
@@ -123,12 +122,15 @@ class StringParser extends base_parser_1.BaseParser {
123
122
  let previous = clauses[0];
124
123
  const outputs = [previous];
125
124
  for (let i = 1; i < clauses.length; i++) {
126
- if (previous.operator === clauses[i].operator) {
127
- previous.values.push(...clauses[i].values);
125
+ const current = clauses[i];
126
+ if (previous.operator === current.operator &&
127
+ 'values' in previous &&
128
+ 'values' in current) {
129
+ previous.values.push(...current.values);
128
130
  }
129
131
  else {
130
- previous = clauses[i];
131
- outputs.push(previous);
132
+ previous = current;
133
+ outputs.push(current);
132
134
  }
133
135
  }
134
136
  return outputs;
@@ -182,8 +184,6 @@ class StringParser extends base_parser_1.BaseParser {
182
184
  return false;
183
185
  }
184
186
  const clause = { operator: operator, values: [word] };
185
- //const quotes: QuoteType[] = StringParser.findQuotes(word);
186
- //if (quotes.length > 0) { clause.quotes = quotes; }
187
187
  clauses.push(clause);
188
188
  return true;
189
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"string_parser.js","sourceRoot":"","sources":["../src/string_parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string_parser.js","sourceRoot":"","sources":["../src/string_parser.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
- import { Clause } from './clause_types';
2
- import { BaseSerializer } from './base_serializer';
3
- export declare class StringSerializer extends BaseSerializer {
4
- constructor(clauses: Clause[]);
1
+ import { StringClause } from './clause_types';
2
+ export declare class StringSerializer {
3
+ private clauses;
4
+ constructor(clauses: StringClause[]);
5
5
  serialize(): string;
6
6
  private static isNegated;
7
7
  private static escapeSpecialCharacters;
8
8
  private static escapeWildcardCharacters;
9
- private static stringConditionToString;
9
+ private static StringConditionWordToString;
10
+ private static StringClauseToString;
10
11
  private static clauseToString;
11
12
  }
@@ -1,18 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StringSerializer = void 0;
4
- const base_serializer_1 = require("./base_serializer");
5
- class StringSerializer extends base_serializer_1.BaseSerializer {
4
+ class StringSerializer {
6
5
  constructor(clauses) {
7
- super(clauses);
6
+ this.clauses = clauses;
7
+ this.clauses = clauses;
8
8
  }
9
9
  serialize() {
10
10
  const result = StringSerializer.clauseToString(this.clauses);
11
11
  return result.trim().replace(/,$/, '');
12
12
  }
13
13
  static isNegated(operator) {
14
- return (operator === 'NOTEMPTY' ||
15
- operator === '!~' ||
14
+ return (operator === '!~' ||
16
15
  operator === '!=' ||
17
16
  operator === 'notStarts' ||
18
17
  operator === 'notEnds' ||
@@ -24,19 +23,11 @@ class StringSerializer extends base_serializer_1.BaseSerializer {
24
23
  static escapeWildcardCharacters(input) {
25
24
  return input.replace(/[_%]/g, match => `\\${match}`);
26
25
  }
27
- // export type StringOperator = 'EMPTY' | 'NOTEMPTY' | 'starts' | 'ends' | 'contains' | 'notStarts' |
28
- // 'notEnds' | 'notContains' | '~' | '=' | '!~' | '!=';
29
- static stringConditionToString(operator, value) {
30
- if (operator === 'EMPTY') {
31
- return 'EMPTY';
32
- }
33
- else if (operator === 'NOTEMPTY') {
34
- return '-EMPTY';
35
- }
26
+ // export type StringOperator =
27
+ // | 'starts' | 'ends' | 'contains' | 'notStarts' | 'notEnds' | 'notContains'
28
+ // | '~' | '=' | '!~' | '!=';
29
+ static StringConditionWordToString(operator, value) {
36
30
  const negated = StringSerializer.isNegated(operator);
37
- if (value === null) {
38
- return negated ? '-NULL' : 'NULL';
39
- }
40
31
  if (value === 'NULL' || value === '-NULL') {
41
32
  return (negated ? '-' : '') + '\\' + value;
42
33
  }
@@ -59,15 +50,38 @@ class StringSerializer extends base_serializer_1.BaseSerializer {
59
50
  }
60
51
  return (negated ? '-' : '') + value;
61
52
  }
53
+ static StringClauseToString(operator, clause) {
54
+ if (operator === 'EMPTY') {
55
+ return 'EMPTY';
56
+ }
57
+ else if (operator === 'NOTEMPTY') {
58
+ return '-EMPTY';
59
+ }
60
+ else if (operator === 'NULL') {
61
+ return 'NULL';
62
+ }
63
+ else if (operator === 'NOTNULL') {
64
+ return '-NULL';
65
+ }
66
+ if (!('values' in clause) || clause.values.length === 0) {
67
+ return '';
68
+ }
69
+ let result = '';
70
+ const condition = clause;
71
+ for (const value of condition.values) {
72
+ const word = StringSerializer.StringConditionWordToString(condition.operator, value);
73
+ if (word) {
74
+ result += word + ', ';
75
+ }
76
+ }
77
+ return result;
78
+ }
62
79
  static clauseToString(clauses) {
63
80
  let result = '';
64
- for (const genericClause of clauses) {
65
- const clause = genericClause;
66
- for (const value of clause.values) {
67
- const word = StringSerializer.stringConditionToString(clause.operator, value);
68
- if (word) {
69
- result += word + ', ';
70
- }
81
+ for (const clause of clauses) {
82
+ const words = StringSerializer.StringClauseToString(clause.operator, clause);
83
+ if (words) {
84
+ result += words + ', ';
71
85
  }
72
86
  }
73
87
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"string_serializer.js","sourceRoot":"","sources":["../src/string_serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string_serializer.js","sourceRoot":"","sources":["../src/string_serializer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@malloydata/malloy-filter",
3
- "version": "0.0.237-dev250222025222",
3
+ "version": "0.0.237-dev250222205057",
4
4
  "license": "MIT",
5
5
  "description": "",
6
6
  "main": "dist/string_parser.js",
@@ -15,7 +15,6 @@
15
15
  "build": "tsc --build",
16
16
  "samples": "node dist/generate_samples.js",
17
17
  "asimpleparser": "node dist/a_simple_parser.js",
18
- "asimpleserializer": "node dist/a_simple_serializer.js",
19
18
  "test": "jest --runInBand",
20
19
  "test:tokenizer": "jest tokenizer.spec.ts"
21
20
  },
package/src/DEVELOPING.md CHANGED
@@ -1,14 +1,11 @@
1
1
  # Testing
2
2
 
3
- The `malloy-filter` tests use Jest. Install Jest using:
4
-
5
- ```bash
6
- npm install --save-dev jest @types/jest ts-jest
7
- ```
3
+ The `malloy-filter` tests use Jest.
8
4
 
9
5
  ## Tokenizer Testing
10
6
 
11
7
  ```bash
8
+ npm run build
12
9
  npm run test:tokenizer
13
10
  ```
14
11
 
@@ -1,22 +1,25 @@
1
- import {FilterParser} from './filter_parser';
1
+ import {BooleanParser} from './boolean_parser';
2
+ import {StringParser} from './string_parser';
3
+ import {NumberParser} from './number_parser';
4
+ import {DateParser} from './date_parser';
2
5
 
3
6
  /* eslint-disable no-console */
4
7
  function aSimpleParser() {
5
8
  let str = 'CAT,DOG';
6
- let response = new FilterParser(str, 'string').parse();
7
- console.log(str, '\n', ...response.clauses, '\n');
9
+ const stringResponse = new StringParser(str).parse();
10
+ console.log(str, '\n', ...stringResponse.clauses, '\n');
8
11
 
9
12
  str = '-5.5, 10, 2.3e7';
10
- response = new FilterParser(str, 'number').parse();
11
- console.log(str, '\n', ...response.clauses, '\n');
13
+ const numberResponse = new NumberParser(str).parse();
14
+ console.log(str, '\n', ...numberResponse.clauses, '\n');
12
15
 
13
16
  str = 'null, false';
14
- response = new FilterParser(str, 'boolean').parse();
15
- console.log(str, '\n', ...response.clauses, '\n');
17
+ const booleanResponse = new BooleanParser(str).parse();
18
+ console.log(str, '\n', ...booleanResponse.clauses, '\n');
16
19
 
17
20
  str = 'after 2025-10-05';
18
- response = new FilterParser(str, 'date').parse();
19
- console.log(str, '\n', ...response.clauses, '\n');
21
+ const dateResponse = new DateParser(str).parse();
22
+ console.log(str, '\n', ...dateResponse.clauses, '\n');
20
23
  }
21
24
 
22
25
  aSimpleParser();
@@ -1,5 +1,4 @@
1
1
  import {Token} from './token_types';
2
- import {FilterParserResponse} from './filter_types';
3
2
 
4
3
  export abstract class BaseParser {
5
4
  protected inputString: string;
@@ -16,8 +15,6 @@ export abstract class BaseParser {
16
15
  return this.tokens;
17
16
  }
18
17
 
19
- public abstract parse(): FilterParserResponse;
20
-
21
18
  protected getAt(index: number): Token {
22
19
  return this.tokens[index];
23
20
  }
@@ -1,7 +1,10 @@
1
1
  import {SpecialToken, Tokenizer, TokenizerParams} from './tokenizer';
2
- import {BooleanClause, BooleanOperator} from './clause_types';
2
+ import {
3
+ BooleanClause,
4
+ BooleanParserResponse,
5
+ FilterError,
6
+ } from './clause_types';
3
7
  import {BaseParser} from './base_parser';
4
- import {FilterParserResponse, FilterError} from './filter_types';
5
8
 
6
9
  export class BooleanParser extends BaseParser {
7
10
  constructor(input: string) {
@@ -14,7 +17,8 @@ export class BooleanParser extends BaseParser {
14
17
  {type: 'NULL', value: 'null', ignoreCase: true},
15
18
  {type: 'NOTNULL', value: '-null', ignoreCase: true},
16
19
  {type: 'TRUE', value: 'true', ignoreCase: true},
17
- {type: 'FALSE', value: 'false', ignoreCase: true},
20
+ {type: 'FALSE', value: '=false', ignoreCase: true},
21
+ {type: 'FALSEORNULL', value: 'false', ignoreCase: true},
18
22
  ];
19
23
  const params: TokenizerParams = {
20
24
  trimWordWhitespace: true,
@@ -28,7 +32,7 @@ export class BooleanParser extends BaseParser {
28
32
  this.tokens = Tokenizer.convertSpecialWords(this.tokens, specialWords);
29
33
  }
30
34
 
31
- public parse(): FilterParserResponse {
35
+ public parse(): BooleanParserResponse {
32
36
  this.index = 0;
33
37
  this.tokenize();
34
38
  const clauses: BooleanClause[] = [];
@@ -41,9 +45,10 @@ export class BooleanParser extends BaseParser {
41
45
  token.type === 'NULL' ||
42
46
  token.type === 'TRUE' ||
43
47
  token.type === 'FALSE' ||
48
+ token.type === 'FALSEORNULL' ||
44
49
  token.type === 'NOTNULL'
45
50
  ) {
46
- const clause: BooleanClause = {operator: token.type as BooleanOperator};
51
+ const clause: BooleanClause = {operator: token.type};
47
52
  clauses.push(clause);
48
53
  this.index++;
49
54
  } else {
@@ -1,9 +1,8 @@
1
- import {BooleanClause, Clause} from './clause_types';
2
- import {BaseSerializer} from './base_serializer';
1
+ import {BooleanClause} from './clause_types';
3
2
 
4
- export class BooleanSerializer extends BaseSerializer {
5
- constructor(clauses: Clause[]) {
6
- super(clauses);
3
+ export class BooleanSerializer {
4
+ constructor(private clauses: BooleanClause[]) {
5
+ this.clauses = clauses;
7
6
  }
8
7
 
9
8
  public serialize(): string {
@@ -12,10 +11,18 @@ export class BooleanSerializer extends BaseSerializer {
12
11
  }
13
12
 
14
13
  private static booleanClauseToString(clause: BooleanClause): string {
15
- return clause.operator === 'NOTNULL' ? '-NULL' : clause.operator;
14
+ switch (clause.operator) {
15
+ case 'NOTNULL':
16
+ return '-NULL';
17
+ case 'FALSEORNULL':
18
+ return 'FALSE';
19
+ case 'FALSE':
20
+ return '=FALSE';
21
+ }
22
+ return clause.operator;
16
23
  }
17
24
 
18
- private static clauseToString(clauses: Clause[]): string {
25
+ private static clauseToString(clauses: BooleanClause[]): string {
19
26
  let result = '';
20
27
  for (const clause of clauses) {
21
28
  if ('operator' in clause) {