@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,12 +1,20 @@
1
1
  export type NumberOperator = '<=' | '>=' | '!=' | '=' | '>' | '<';
2
2
 
3
- export type NumberValue = number | null;
3
+ export type NumberValue = number;
4
4
 
5
5
  export interface NumberCondition {
6
6
  operator: NumberOperator;
7
7
  values: NumberValue[];
8
8
  }
9
9
 
10
+ export interface NumberNull {
11
+ operator: 'NULL';
12
+ }
13
+
14
+ export interface NumberNotNull {
15
+ operator: 'NOTNULL';
16
+ }
17
+
10
18
  export type NumberRangeOperator = '<=' | '>=' | '>' | '<';
11
19
 
12
20
  export interface NumberRange {
@@ -17,19 +25,13 @@ export interface NumberRange {
17
25
  endValue: NumberValue;
18
26
  }
19
27
 
20
- export type QuoteType =
21
- | 'SINGLE'
22
- | 'DOUBLE'
23
- | 'BACKTICK'
24
- | 'TRIPLESINGLE'
25
- | 'TRIPLEDOUBLE'
26
- | 'ESCAPEDSINGLE'
27
- | 'ESCAPEDDOUBLE'
28
- | 'ESCAPEDBACKTICK';
28
+ export type NumberClause =
29
+ | NumberCondition
30
+ | NumberRange
31
+ | NumberNull
32
+ | NumberNotNull;
29
33
 
30
- export type StringOperator =
31
- | 'EMPTY'
32
- | 'NOTEMPTY'
34
+ export type StringConditionOperator =
33
35
  | 'starts'
34
36
  | 'ends'
35
37
  | 'contains'
@@ -41,120 +43,75 @@ export type StringOperator =
41
43
  | '!~'
42
44
  | '!=';
43
45
 
44
- export type StringValue = string | null;
46
+ export type StringValue = string;
45
47
 
46
48
  export interface StringCondition {
47
- operator: StringOperator;
49
+ operator: StringConditionOperator;
48
50
  values: StringValue[];
49
- quotes?: QuoteType[]; // List of quote types found in the string.
50
51
  }
51
52
 
52
- export type BooleanOperator = 'TRUE' | 'FALSE' | 'NULL' | 'NOTNULL';
53
-
54
- export interface BooleanClause {
55
- operator: BooleanOperator;
53
+ export interface StringNull {
54
+ operator: 'NULL';
56
55
  }
57
56
 
58
- export type DatePrefix = 'BEFORE' | 'AFTER';
59
-
60
- export type DateTimeUnit =
61
- | 'YEAR'
62
- | 'QUARTER'
63
- | 'MONTH'
64
- | 'WEEK'
65
- | 'DAY'
66
- | 'HOUR'
67
- | 'MINUTE'
68
- | 'SECOND';
69
-
70
- export type DateWeekday =
71
- | 'MONDAY'
72
- | 'TUESDAY'
73
- | 'WEDNESDAY'
74
- | 'THURSDAY'
75
- | 'FRIDAY'
76
- | 'SATURDAY'
77
- | 'SUNDAY';
78
-
79
- export type DateMomentNowOperator = 'NOW' | 'TODAY' | 'YESTERDAY' | 'TOMORROW';
80
-
81
- // now, after today, before yesterday, tomorrow
82
- export interface DateMomentNow {
83
- prefix?: DatePrefix;
84
- operator: DateMomentNowOperator;
57
+ export interface StringNotNull {
58
+ operator: 'NOTNULL';
85
59
  }
86
60
 
87
- export type DateMomentIntervalOperator = 'LAST' | 'THIS' | 'NEXT';
88
-
89
- // LAST|UNITOFTIME, LAST|DAYOFWEEK
90
- // THIS|UNITOFTIME
91
- // NEXT|UNITOFTIME, NEXT|DAYOFWEEK
92
- // before last month, after next tuesday, this month
93
- export interface DateMomentInterval {
94
- prefix?: DatePrefix;
95
- operator: DateMomentIntervalOperator;
96
- unit: DateTimeUnit | DateWeekday;
61
+ export interface StringEmpty {
62
+ operator: 'EMPTY';
97
63
  }
98
64
 
99
- export type DateMomentNumberIntervalOperator =
100
- | 'LASTN'
101
- | 'NEXTN'
102
- | 'AGO'
103
- | 'FROMNOW';
104
-
105
- // LAST|NUMBER|UNITOFTIME
106
- // NEXT|NUMBER|UNITOFTIME
107
- // NUMBER|UNITOFTIME|AGO
108
- // NUMBER|UNITOFTIME|FROM|NOW
109
- // before 3 hours ago, next 5 days, 2025 seconds ago, after 6 weeks from now
110
- export interface DateMomentNumberInterval {
111
- prefix?: DatePrefix;
112
- operator: DateMomentNumberIntervalOperator;
113
- unit: DateTimeUnit;
114
- value: string;
65
+ export interface StringNotEmpty {
66
+ operator: 'NOTEMPTY';
115
67
  }
116
68
 
117
- export type DateMomentNumberUnitOperator = 'TIMEBLOCK';
69
+ export type StringClause =
70
+ | StringCondition
71
+ | StringNull
72
+ | StringNotNull
73
+ | StringEmpty
74
+ | StringNotEmpty;
75
+
76
+ export type BooleanOperator =
77
+ | 'TRUE'
78
+ | 'FALSE'
79
+ | 'FALSEORNULL'
80
+ | 'NULL'
81
+ | 'NOTNULL';
118
82
 
119
- // NUMBER|UNITOFTIME
120
- // 2025 seconds, after 32 hours
121
- export interface DateMomentNumberUnit {
122
- prefix?: DatePrefix;
123
- operator: DateMomentNumberUnitOperator;
124
- unit: DateTimeUnit;
125
- value: string;
83
+ export interface BooleanClause {
84
+ operator: BooleanOperator;
126
85
  }
127
86
 
128
- export type DateMomentNumberOperator = 'DATE' | 'DATETIME';
129
-
130
- // DATE|TIME, DATE
131
- // after 2025, before 2025-08-04, 2025-08-04 08:11:52
132
- export interface DateMomentNumber {
133
- prefix?: DatePrefix;
134
- operator: DateMomentNumberOperator;
135
- date: string;
136
- time?: string;
87
+ export interface FilterError {
88
+ message: string;
89
+ startIndex: number;
90
+ endIndex: number;
137
91
  }
138
92
 
139
- export type DateMoment =
140
- | DateMomentNow
141
- | DateMomentInterval
142
- | DateMomentNumberInterval
143
- | DateMomentNumberUnit
144
- | DateMomentNumber;
145
-
146
- export interface DateRange {
147
- start: DateMoment;
148
- operator: 'TO' | 'FOR';
149
- end: DateMoment;
93
+ export interface BooleanParserResponse {
94
+ clauses: BooleanClause[];
95
+ errors: FilterError[];
150
96
  }
151
97
 
152
- export type NumberClause = NumberCondition | NumberRange;
98
+ export interface NumberParserResponse {
99
+ clauses: NumberClause[];
100
+ errors: FilterError[];
101
+ }
153
102
 
154
- export type DateClause = DateMoment | DateRange;
103
+ export type QuoteType =
104
+ | 'SINGLE'
105
+ | 'DOUBLE'
106
+ | 'BACKTICK'
107
+ | 'TRIPLESINGLE'
108
+ | 'TRIPLEDOUBLE'
109
+ | 'ESCAPEDSINGLE'
110
+ | 'ESCAPEDDOUBLE'
111
+ | 'ESCAPEDBACKTICK';
155
112
 
156
- export type Clause =
157
- | NumberClause
158
- | StringCondition
159
- | BooleanClause
160
- | DateClause;
113
+ export interface StringParserResponse {
114
+ clauses: StringClause[];
115
+ errors: FilterError[];
116
+ quotes?: QuoteType[]; // List of quote types found in the string.
117
+ }