@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,20 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const filter_parser_1 = require("./filter_parser");
3
+ const boolean_parser_1 = require("./boolean_parser");
4
+ const string_parser_1 = require("./string_parser");
5
+ const number_parser_1 = require("./number_parser");
6
+ const date_parser_1 = require("./date_parser");
4
7
  /* eslint-disable no-console */
5
8
  function aSimpleParser() {
6
9
  let str = 'CAT,DOG';
7
- let response = new filter_parser_1.FilterParser(str, 'string').parse();
8
- console.log(str, '\n', ...response.clauses, '\n');
10
+ const stringResponse = new string_parser_1.StringParser(str).parse();
11
+ console.log(str, '\n', ...stringResponse.clauses, '\n');
9
12
  str = '-5.5, 10, 2.3e7';
10
- response = new filter_parser_1.FilterParser(str, 'number').parse();
11
- console.log(str, '\n', ...response.clauses, '\n');
13
+ const numberResponse = new number_parser_1.NumberParser(str).parse();
14
+ console.log(str, '\n', ...numberResponse.clauses, '\n');
12
15
  str = 'null, false';
13
- response = new filter_parser_1.FilterParser(str, 'boolean').parse();
14
- console.log(str, '\n', ...response.clauses, '\n');
16
+ const booleanResponse = new boolean_parser_1.BooleanParser(str).parse();
17
+ console.log(str, '\n', ...booleanResponse.clauses, '\n');
15
18
  str = 'after 2025-10-05';
16
- response = new filter_parser_1.FilterParser(str, 'date').parse();
17
- console.log(str, '\n', ...response.clauses, '\n');
19
+ const dateResponse = new date_parser_1.DateParser(str).parse();
20
+ console.log(str, '\n', ...dateResponse.clauses, '\n');
18
21
  }
19
22
  aSimpleParser();
20
23
  //# sourceMappingURL=a_simple_parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"a_simple_parser.js","sourceRoot":"","sources":["../src/a_simple_parser.ts"],"names":[],"mappings":";;AAAA,mDAA6C;AAE7C,+BAA+B;AAC/B,SAAS,aAAa;IACpB,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,IAAI,QAAQ,GAAG,IAAI,4BAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAElD,GAAG,GAAG,iBAAiB,CAAC;IACxB,QAAQ,GAAG,IAAI,4BAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAElD,GAAG,GAAG,aAAa,CAAC;IACpB,QAAQ,GAAG,IAAI,4BAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAElD,GAAG,GAAG,kBAAkB,CAAC;IACzB,QAAQ,GAAG,IAAI,4BAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"a_simple_parser.js","sourceRoot":"","sources":["../src/a_simple_parser.ts"],"names":[],"mappings":";;AAAA,qDAA+C;AAC/C,mDAA6C;AAC7C,mDAA6C;AAC7C,+CAAyC;AAEzC,+BAA+B;AAC/B,SAAS,aAAa;IACpB,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,MAAM,cAAc,GAAG,IAAI,4BAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAExD,GAAG,GAAG,iBAAiB,CAAC;IACxB,MAAM,cAAc,GAAG,IAAI,4BAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAExD,GAAG,GAAG,aAAa,CAAC;IACpB,MAAM,eAAe,GAAG,IAAI,8BAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEzD,GAAG,GAAG,kBAAkB,CAAC;IACzB,MAAM,YAAY,GAAG,IAAI,wBAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,aAAa,EAAE,CAAC"}
@@ -1,12 +1,10 @@
1
1
  import { Token } from './token_types';
2
- import { FilterParserResponse } from './filter_types';
3
2
  export declare abstract class BaseParser {
4
3
  protected inputString: string;
5
4
  protected index: number;
6
5
  protected tokens: Token[];
7
6
  constructor(inputString: string);
8
7
  getTokens(): Token[];
9
- abstract parse(): FilterParserResponse;
10
8
  protected getAt(index: number): Token;
11
9
  protected getNext(): Token;
12
10
  protected static matchTokenTypes(candidates: string[], index: number, tokens: Token[]): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"base_parser.js","sourceRoot":"","sources":["../src/base_parser.ts"],"names":[],"mappings":";;;AAGA,MAAsB,UAAU;IAK9B,YAAY,WAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAIS,KAAK,CAAC,KAAa;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAES,OAAO;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAES,MAAM,CAAC,eAAe,CAC9B,UAAoB,EACpB,KAAa,EACb,MAAe;QAEf,MAAM,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE;YACzC,OAAO,KAAK,CAAC;SACd;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE;gBAC5C,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAzCD,gCAyCC"}
1
+ {"version":3,"file":"base_parser.js","sourceRoot":"","sources":["../src/base_parser.ts"],"names":[],"mappings":";;;AAEA,MAAsB,UAAU;IAK9B,YAAY,WAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,KAAa;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAES,OAAO;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAES,MAAM,CAAC,eAAe,CAC9B,UAAoB,EACpB,KAAa,EACb,MAAe;QAEf,MAAM,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE;YACzC,OAAO,KAAK,CAAC;SACd;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE;gBAC5C,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAvCD,gCAuCC"}
@@ -1,7 +1,7 @@
1
+ import { BooleanParserResponse } from './clause_types';
1
2
  import { BaseParser } from './base_parser';
2
- import { FilterParserResponse } from './filter_types';
3
3
  export declare class BooleanParser extends BaseParser {
4
4
  constructor(input: string);
5
5
  private tokenize;
6
- parse(): FilterParserResponse;
6
+ parse(): BooleanParserResponse;
7
7
  }
@@ -13,7 +13,8 @@ class BooleanParser extends base_parser_1.BaseParser {
13
13
  { type: 'NULL', value: 'null', ignoreCase: true },
14
14
  { type: 'NOTNULL', value: '-null', ignoreCase: true },
15
15
  { type: 'TRUE', value: 'true', ignoreCase: true },
16
- { type: 'FALSE', value: 'false', ignoreCase: true },
16
+ { type: 'FALSE', value: '=false', ignoreCase: true },
17
+ { type: 'FALSEORNULL', value: 'false', ignoreCase: true },
17
18
  ];
18
19
  const params = {
19
20
  trimWordWhitespace: true,
@@ -38,6 +39,7 @@ class BooleanParser extends base_parser_1.BaseParser {
38
39
  else if (token.type === 'NULL' ||
39
40
  token.type === 'TRUE' ||
40
41
  token.type === 'FALSE' ||
42
+ token.type === 'FALSEORNULL' ||
41
43
  token.type === 'NOTNULL') {
42
44
  const clause = { operator: token.type };
43
45
  clauses.push(clause);
@@ -1 +1 @@
1
- {"version":3,"file":"boolean_parser.js","sourceRoot":"","sources":["../src/boolean_parser.ts"],"names":[],"mappings":";;;AAAA,2CAAqE;AAErE,+CAAyC;AAGzC,MAAa,aAAc,SAAQ,wBAAU;IAC3C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEO,QAAQ;QACd,MAAM,iBAAiB,GAAmB,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC;QACpE,MAAM,YAAY,GAAmB;YACnC,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC;YAC/C,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAC;YACnD,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC;YAC/C,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAC;SAClD,CAAC;QACF,MAAM,MAAM,GAAoB;YAC9B,kBAAkB,EAAE,IAAI;YACxB,iBAAiB,EAAE,IAAI;YACvB,iBAAiB;YACjB,YAAY,EAAE,YAAY;SAC3B,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,qBAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzE,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,MAAM,OAAO,GAAoB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;gBACtB,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;iBAAM,IACL,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,KAAK,CAAC,IAAI,KAAK,SAAS,EACxB;gBACA,MAAM,MAAM,GAAkB,EAAC,QAAQ,EAAE,KAAK,CAAC,IAAuB,EAAC,CAAC;gBACxE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO,EAAE,gBAAgB,GAAG,KAAK,CAAC,KAAK;oBACvC,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;QACD,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,CAAC;IAC3B,CAAC;CACF;AAtDD,sCAsDC"}
1
+ {"version":3,"file":"boolean_parser.js","sourceRoot":"","sources":["../src/boolean_parser.ts"],"names":[],"mappings":";;;AAAA,2CAAqE;AAMrE,+CAAyC;AAEzC,MAAa,aAAc,SAAQ,wBAAU;IAC3C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEO,QAAQ;QACd,MAAM,iBAAiB,GAAmB,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC;QACpE,MAAM,YAAY,GAAmB;YACnC,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC;YAC/C,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAC;YACnD,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC;YAC/C,EAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAC;YAClD,EAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAC;SACxD,CAAC;QACF,MAAM,MAAM,GAAoB;YAC9B,kBAAkB,EAAE,IAAI;YACxB,iBAAiB,EAAE,IAAI;YACvB,iBAAiB;YACjB,YAAY,EAAE,YAAY;SAC3B,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,qBAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzE,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,MAAM,OAAO,GAAoB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;gBACtB,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;iBAAM,IACL,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,KAAK,CAAC,IAAI,KAAK,aAAa;gBAC5B,KAAK,CAAC,IAAI,KAAK,SAAS,EACxB;gBACA,MAAM,MAAM,GAAkB,EAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO,EAAE,gBAAgB,GAAG,KAAK,CAAC,KAAK;oBACvC,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;QACD,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,CAAC;IAC3B,CAAC;CACF;AAxDD,sCAwDC"}
@@ -1,7 +1,7 @@
1
- import { Clause } from './clause_types';
2
- import { BaseSerializer } from './base_serializer';
3
- export declare class BooleanSerializer extends BaseSerializer {
4
- constructor(clauses: Clause[]);
1
+ import { BooleanClause } from './clause_types';
2
+ export declare class BooleanSerializer {
3
+ private clauses;
4
+ constructor(clauses: BooleanClause[]);
5
5
  serialize(): string;
6
6
  private static booleanClauseToString;
7
7
  private static clauseToString;
@@ -1,17 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BooleanSerializer = void 0;
4
- const base_serializer_1 = require("./base_serializer");
5
- class BooleanSerializer extends base_serializer_1.BaseSerializer {
4
+ class BooleanSerializer {
6
5
  constructor(clauses) {
7
- super(clauses);
6
+ this.clauses = clauses;
7
+ this.clauses = clauses;
8
8
  }
9
9
  serialize() {
10
10
  const result = BooleanSerializer.clauseToString(this.clauses);
11
11
  return result.trim().replace(/,$/, '');
12
12
  }
13
13
  static booleanClauseToString(clause) {
14
- 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;
15
23
  }
16
24
  static clauseToString(clauses) {
17
25
  let result = '';
@@ -1 +1 @@
1
- {"version":3,"file":"boolean_serializer.js","sourceRoot":"","sources":["../src/boolean_serializer.ts"],"names":[],"mappings":";;;AACA,uDAAiD;AAEjD,MAAa,iBAAkB,SAAQ,gCAAc;IACnD,YAAY,OAAiB;QAC3B,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAEM,SAAS;QACd,MAAM,MAAM,GAAG,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,MAAqB;QACxD,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IACnE,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,OAAiB;QAC7C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,UAAU,IAAI,MAAM,EAAE;gBACxB,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,CAC/C,MAAuB,CACxB,CAAC;aACH;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;aACrE;YACD,MAAM,IAAI,IAAI,CAAC;SAChB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA5BD,8CA4BC"}
1
+ {"version":3,"file":"boolean_serializer.js","sourceRoot":"","sources":["../src/boolean_serializer.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;IAC5B,YAAoB,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,SAAS;QACd,MAAM,MAAM,GAAG,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,MAAqB;QACxD,QAAQ,MAAM,CAAC,QAAQ,EAAE;YACvB,KAAK,SAAS;gBACZ,OAAO,OAAO,CAAC;YACjB,KAAK,aAAa;gBAChB,OAAO,OAAO,CAAC;YACjB,KAAK,OAAO;gBACV,OAAO,QAAQ,CAAC;SACnB;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,OAAwB;QACpD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,UAAU,IAAI,MAAM,EAAE;gBACxB,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,CAC/C,MAAuB,CACxB,CAAC;aACH;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;aACrE;YACD,MAAM,IAAI,IAAI,CAAC;SAChB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AApCD,8CAoCC"}
@@ -1,9 +1,15 @@
1
1
  export type NumberOperator = '<=' | '>=' | '!=' | '=' | '>' | '<';
2
- export type NumberValue = number | null;
2
+ export type NumberValue = number;
3
3
  export interface NumberCondition {
4
4
  operator: NumberOperator;
5
5
  values: NumberValue[];
6
6
  }
7
+ export interface NumberNull {
8
+ operator: 'NULL';
9
+ }
10
+ export interface NumberNotNull {
11
+ operator: 'NOTNULL';
12
+ }
7
13
  export type NumberRangeOperator = '<=' | '>=' | '>' | '<';
8
14
  export interface NumberRange {
9
15
  operator: 'range';
@@ -12,59 +18,46 @@ export interface NumberRange {
12
18
  endOperator: NumberRangeOperator;
13
19
  endValue: NumberValue;
14
20
  }
15
- export type QuoteType = 'SINGLE' | 'DOUBLE' | 'BACKTICK' | 'TRIPLESINGLE' | 'TRIPLEDOUBLE' | 'ESCAPEDSINGLE' | 'ESCAPEDDOUBLE' | 'ESCAPEDBACKTICK';
16
- export type StringOperator = 'EMPTY' | 'NOTEMPTY' | 'starts' | 'ends' | 'contains' | 'notStarts' | 'notEnds' | 'notContains' | '~' | '=' | '!~' | '!=';
17
- export type StringValue = string | null;
21
+ export type NumberClause = NumberCondition | NumberRange | NumberNull | NumberNotNull;
22
+ export type StringConditionOperator = 'starts' | 'ends' | 'contains' | 'notStarts' | 'notEnds' | 'notContains' | '~' | '=' | '!~' | '!=';
23
+ export type StringValue = string;
18
24
  export interface StringCondition {
19
- operator: StringOperator;
25
+ operator: StringConditionOperator;
20
26
  values: StringValue[];
21
- quotes?: QuoteType[];
22
27
  }
23
- export type BooleanOperator = 'TRUE' | 'FALSE' | 'NULL' | 'NOTNULL';
24
- export interface BooleanClause {
25
- operator: BooleanOperator;
28
+ export interface StringNull {
29
+ operator: 'NULL';
26
30
  }
27
- export type DatePrefix = 'BEFORE' | 'AFTER';
28
- export type DateTimeUnit = 'YEAR' | 'QUARTER' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND';
29
- export type DateWeekday = 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY';
30
- export type DateMomentNowOperator = 'NOW' | 'TODAY' | 'YESTERDAY' | 'TOMORROW';
31
- export interface DateMomentNow {
32
- prefix?: DatePrefix;
33
- operator: DateMomentNowOperator;
31
+ export interface StringNotNull {
32
+ operator: 'NOTNULL';
34
33
  }
35
- export type DateMomentIntervalOperator = 'LAST' | 'THIS' | 'NEXT';
36
- export interface DateMomentInterval {
37
- prefix?: DatePrefix;
38
- operator: DateMomentIntervalOperator;
39
- unit: DateTimeUnit | DateWeekday;
34
+ export interface StringEmpty {
35
+ operator: 'EMPTY';
40
36
  }
41
- export type DateMomentNumberIntervalOperator = 'LASTN' | 'NEXTN' | 'AGO' | 'FROMNOW';
42
- export interface DateMomentNumberInterval {
43
- prefix?: DatePrefix;
44
- operator: DateMomentNumberIntervalOperator;
45
- unit: DateTimeUnit;
46
- value: string;
37
+ export interface StringNotEmpty {
38
+ operator: 'NOTEMPTY';
47
39
  }
48
- export type DateMomentNumberUnitOperator = 'TIMEBLOCK';
49
- export interface DateMomentNumberUnit {
50
- prefix?: DatePrefix;
51
- operator: DateMomentNumberUnitOperator;
52
- unit: DateTimeUnit;
53
- value: string;
40
+ export type StringClause = StringCondition | StringNull | StringNotNull | StringEmpty | StringNotEmpty;
41
+ export type BooleanOperator = 'TRUE' | 'FALSE' | 'FALSEORNULL' | 'NULL' | 'NOTNULL';
42
+ export interface BooleanClause {
43
+ operator: BooleanOperator;
44
+ }
45
+ export interface FilterError {
46
+ message: string;
47
+ startIndex: number;
48
+ endIndex: number;
54
49
  }
55
- export type DateMomentNumberOperator = 'DATE' | 'DATETIME';
56
- export interface DateMomentNumber {
57
- prefix?: DatePrefix;
58
- operator: DateMomentNumberOperator;
59
- date: string;
60
- time?: string;
50
+ export interface BooleanParserResponse {
51
+ clauses: BooleanClause[];
52
+ errors: FilterError[];
61
53
  }
62
- export type DateMoment = DateMomentNow | DateMomentInterval | DateMomentNumberInterval | DateMomentNumberUnit | DateMomentNumber;
63
- export interface DateRange {
64
- start: DateMoment;
65
- operator: 'TO' | 'FOR';
66
- end: DateMoment;
54
+ export interface NumberParserResponse {
55
+ clauses: NumberClause[];
56
+ errors: FilterError[];
57
+ }
58
+ export type QuoteType = 'SINGLE' | 'DOUBLE' | 'BACKTICK' | 'TRIPLESINGLE' | 'TRIPLEDOUBLE' | 'ESCAPEDSINGLE' | 'ESCAPEDDOUBLE' | 'ESCAPEDBACKTICK';
59
+ export interface StringParserResponse {
60
+ clauses: StringClause[];
61
+ errors: FilterError[];
62
+ quotes?: QuoteType[];
67
63
  }
68
- export type NumberClause = NumberCondition | NumberRange;
69
- export type DateClause = DateMoment | DateRange;
70
- export type Clause = NumberClause | StringCondition | BooleanClause | DateClause;
@@ -1,5 +1,5 @@
1
+ import { DateParserResponse } from './date_types';
1
2
  import { BaseParser } from './base_parser';
2
- import { FilterParserResponse } from './filter_types';
3
3
  export declare class DateParser extends BaseParser {
4
4
  private static readonly yearRegex;
5
5
  private static readonly negatedStartRegex;
@@ -7,16 +7,18 @@ export declare class DateParser extends BaseParser {
7
7
  private tokenize;
8
8
  private mergeMomentTokens;
9
9
  private matchAndMerge;
10
- parse(): FilterParserResponse;
11
- private static createMomentInterval;
12
- private static createMomentNumberInterval;
13
- private static createMomentNumberIntervalAgo;
14
- private static createMomentNumberIntervalFromNow;
15
- private static createMomentNumberUnit;
16
- private static createMomentNumber;
17
- private static createMomentNow;
18
- private static createMomentFromToken;
10
+ parse(): DateParserResponse;
11
+ private static createMomentClause;
12
+ private static createIntervalMoment;
13
+ private static createOffsetMoment;
14
+ private static createSpanMoment;
15
+ private static createDateDuration;
16
+ private static createAbsoluteMoment;
17
+ private static createNamedMoment;
18
+ private static isValidNumber;
19
+ private static createDurationFromMerged;
20
+ private static createClauseFromMerged;
19
21
  private isMatchingToken;
20
22
  private handleRange;
21
- private handleMoment;
23
+ private handleMerged;
22
24
  }