@malloydata/malloy-filter 0.0.237 → 0.0.238-dev250226003939

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 (52) hide show
  1. package/dist/a_simple_parser.d.ts +1 -0
  2. package/dist/a_simple_parser.js +29 -0
  3. package/dist/a_simple_parser.js.map +1 -0
  4. package/dist/base_parser.d.ts +11 -0
  5. package/dist/base_parser.js +39 -0
  6. package/dist/base_parser.js.map +1 -0
  7. package/dist/boolean_parser.d.ts +7 -0
  8. package/dist/boolean_parser.js +76 -0
  9. package/dist/boolean_parser.js.map +1 -0
  10. package/dist/boolean_serializer.d.ts +8 -0
  11. package/dist/boolean_serializer.js +45 -0
  12. package/dist/boolean_serializer.js.map +1 -0
  13. package/dist/clause_types.d.ts +68 -0
  14. package/dist/clause_types.js +9 -0
  15. package/dist/clause_types.js.map +1 -0
  16. package/dist/date_parser.d.ts +25 -0
  17. package/dist/date_parser.js +434 -0
  18. package/dist/date_parser.js.map +1 -0
  19. package/dist/date_serializer.d.ts +11 -0
  20. package/dist/date_serializer.js +94 -0
  21. package/dist/date_serializer.js.map +1 -0
  22. package/dist/date_types.d.ts +75 -0
  23. package/dist/date_types.js +9 -0
  24. package/dist/date_types.js.map +1 -0
  25. package/dist/generate_samples.d.ts +1 -0
  26. package/dist/generate_samples.js +334 -0
  27. package/dist/generate_samples.js.map +1 -0
  28. package/dist/index.d.ts +10 -0
  29. package/dist/index.js +42 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/number_parser.d.ts +17 -0
  32. package/dist/number_parser.js +252 -0
  33. package/dist/number_parser.js.map +1 -0
  34. package/dist/number_serializer.d.ts +11 -0
  35. package/dist/number_serializer.js +85 -0
  36. package/dist/number_serializer.js.map +1 -0
  37. package/dist/string_parser.d.ts +17 -0
  38. package/dist/string_parser.js +166 -0
  39. package/dist/string_parser.js.map +1 -0
  40. package/dist/string_serializer.d.ts +13 -0
  41. package/dist/string_serializer.js +107 -0
  42. package/dist/string_serializer.js.map +1 -0
  43. package/dist/token_types.d.ts +7 -0
  44. package/dist/token_types.js +9 -0
  45. package/dist/token_types.js.map +1 -0
  46. package/dist/tokenizer.d.ts +52 -0
  47. package/dist/tokenizer.js +269 -0
  48. package/dist/tokenizer.js.map +1 -0
  49. package/dist/tokenizer.spec.d.ts +1 -0
  50. package/dist/tokenizer.spec.js +261 -0
  51. package/dist/tokenizer.spec.js.map +1 -0
  52. package/package.json +1 -1
@@ -0,0 +1,269 @@
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
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.Tokenizer = void 0;
10
+ class Tokenizer {
11
+ constructor(input, params) {
12
+ this.index = 0;
13
+ this.specialSubstrings = params.specialSubstrings;
14
+ this.specialWords = params.specialWords;
15
+ this.params = params;
16
+ this.input = input;
17
+ }
18
+ tokenize() {
19
+ let tokens = [];
20
+ let wordStart = -1;
21
+ let wordEnd = -1;
22
+ let special;
23
+ while (this.hasMoreInput()) {
24
+ if (this.params.splitOnWhitespace && this.isWhitespace(this.index)) {
25
+ this.maybeConsumeWord(wordStart, wordEnd, tokens);
26
+ wordStart = -1;
27
+ this.consumeWhitespace();
28
+ }
29
+ else if (this.input[this.index] === '\\') {
30
+ if (wordStart === -1) {
31
+ wordStart = this.index;
32
+ }
33
+ wordEnd = this.index;
34
+ this.index++;
35
+ if (this.hasMoreInput()) {
36
+ // Unless backslash is at the end, handle next char.
37
+ wordEnd = this.index;
38
+ this.index++;
39
+ }
40
+ }
41
+ else if ((special = this.isSpecialSubstring())) {
42
+ this.maybeConsumeWord(wordStart, wordEnd, tokens);
43
+ wordStart = -1;
44
+ this.consumeSpecialSubstring(special, tokens);
45
+ }
46
+ else {
47
+ if (wordStart === -1) {
48
+ wordStart = this.index;
49
+ }
50
+ wordEnd = this.index;
51
+ this.index++;
52
+ }
53
+ }
54
+ this.maybeConsumeWord(wordStart, wordEnd, tokens);
55
+ tokens = Tokenizer.convertSpecialWords(tokens, this.specialWords);
56
+ if (this.params.combineAdjacentWords) {
57
+ tokens = Tokenizer.combineAdjacentWords(tokens);
58
+ }
59
+ if (this.params.trimWordWhitespace) {
60
+ tokens = Tokenizer.trimWordWhitespace(tokens);
61
+ }
62
+ return tokens;
63
+ }
64
+ parse() {
65
+ let tokens = this.tokenize();
66
+ if (this.params.trimWordWhitespace) {
67
+ tokens = Tokenizer.trimWordWhitespace(tokens);
68
+ }
69
+ return tokens;
70
+ }
71
+ hasMoreInput() {
72
+ return this.index < this.input.length;
73
+ }
74
+ isWhitespace(idx) {
75
+ return /\s/.test(this.input[idx]);
76
+ }
77
+ consumeWhitespace() {
78
+ while (this.hasMoreInput() && this.isWhitespace(this.index)) {
79
+ this.index++;
80
+ }
81
+ }
82
+ maybeConsumeWord(wordStart, wordEnd, tokens) {
83
+ if (wordStart >= 0 && wordEnd >= wordStart) {
84
+ tokens.push({
85
+ type: 'word',
86
+ value: this.input.substring(wordStart, wordEnd + 1),
87
+ startIndex: wordStart,
88
+ endIndex: wordEnd + 1,
89
+ });
90
+ }
91
+ }
92
+ isSpecialSubstring() {
93
+ for (const special of this.specialSubstrings) {
94
+ if (special.value instanceof RegExp) {
95
+ const shifted = this.input.substring(this.index); // create a substring starting at index.
96
+ const matcher = special.value.exec(shifted);
97
+ if (matcher) {
98
+ return {
99
+ type: special.type,
100
+ value: special.value,
101
+ matchedString: matcher[0],
102
+ };
103
+ }
104
+ }
105
+ else {
106
+ const subString = this.input.slice(this.index, this.index + special.value.length);
107
+ const matches = special.ignoreCase
108
+ ? subString.toLowerCase() === special.value.toLowerCase()
109
+ : subString === special.value;
110
+ if (matches) {
111
+ const value = special.ignoreCase
112
+ ? subString.toLowerCase()
113
+ : subString;
114
+ return {
115
+ type: special.type,
116
+ value: special.value,
117
+ matchedString: value,
118
+ };
119
+ }
120
+ }
121
+ }
122
+ return undefined;
123
+ }
124
+ consumeSpecialSubstring(special, tokens) {
125
+ tokens.push({
126
+ type: special.type,
127
+ value: special.matchedString,
128
+ startIndex: this.index,
129
+ endIndex: this.index + special.matchedString.length,
130
+ });
131
+ this.index += special.matchedString.length;
132
+ }
133
+ static combineAdjacentWords(tokens) {
134
+ const output = [];
135
+ let previousToken = undefined;
136
+ for (let i = 0; i < tokens.length; i++) {
137
+ const currentToken = tokens[i];
138
+ if (currentToken.type === 'word' &&
139
+ previousToken &&
140
+ previousToken.type === 'word') {
141
+ previousToken.value += currentToken.value;
142
+ previousToken.endIndex = currentToken.endIndex;
143
+ }
144
+ else {
145
+ output.push(currentToken);
146
+ }
147
+ previousToken = currentToken;
148
+ }
149
+ return output;
150
+ }
151
+ static trimWordWhitespace(tokens) {
152
+ const output = [];
153
+ for (const token of tokens) {
154
+ if (token.type === 'word') {
155
+ token.value = token.value.trim();
156
+ }
157
+ output.push(token);
158
+ }
159
+ return output;
160
+ }
161
+ static isSpecialWord(token, specials) {
162
+ for (const special of specials) {
163
+ if (special.value instanceof RegExp) {
164
+ const regexp = special.value;
165
+ regexp.lastIndex = 0; // Set the starting index for the search
166
+ if (regexp.test(token.value)) {
167
+ const value = special.ignoreCase
168
+ ? token.value.toLowerCase()
169
+ : token.value;
170
+ return {
171
+ type: special.type,
172
+ value: value,
173
+ startIndex: token.startIndex,
174
+ endIndex: token.endIndex,
175
+ };
176
+ }
177
+ }
178
+ else {
179
+ const matches = special.ignoreCase
180
+ ? token.value.toLowerCase() === special.value.toLowerCase()
181
+ : token.value === special.value;
182
+ if (matches) {
183
+ const value = special.ignoreCase
184
+ ? token.value.toLowerCase()
185
+ : token.value;
186
+ return {
187
+ type: special.type,
188
+ value: value,
189
+ startIndex: token.startIndex,
190
+ endIndex: token.endIndex,
191
+ };
192
+ }
193
+ }
194
+ }
195
+ return undefined;
196
+ }
197
+ static convertSpecialWords(tokens, specials) {
198
+ const output = [];
199
+ let special = undefined;
200
+ for (const token of tokens) {
201
+ if (token.type === 'word' &&
202
+ (special = Tokenizer.isSpecialWord(token, specials))) {
203
+ output.push(special);
204
+ }
205
+ else {
206
+ output.push(token);
207
+ }
208
+ }
209
+ return output;
210
+ }
211
+ /**
212
+ * Checks if the token types starting at the given index match the types in the input string.
213
+ *
214
+ * @param types - A string of types separated by '|'. Eg 'TYPEA|TYPEB|TYPEC'
215
+ * @param tokens - An array of tokens.
216
+ * @param index - The index into the token array to start checking from.
217
+ * @returns True if the token types match, false otherwise.
218
+ */
219
+ static matchTypes(types, tokens, index) {
220
+ const typeArray = types.split('|');
221
+ if (index < 0 || index + typeArray.length > tokens.length) {
222
+ return undefined;
223
+ }
224
+ // Iterate over the types and check if they match the token types
225
+ for (let i = 0; i < typeArray.length; i++) {
226
+ if (index + i >= tokens.length) {
227
+ return undefined;
228
+ }
229
+ if (tokens[index + i].type !== typeArray[i]) {
230
+ return undefined;
231
+ }
232
+ }
233
+ return tokens.slice(index, index + typeArray.length);
234
+ }
235
+ /**
236
+ * Merges tokens that match a given type string into a single token with a specified merge type.
237
+ *
238
+ * @param types - A string of types separated by '|'.
239
+ * @param tokens - An array of tokens.
240
+ * @param mergeType - The type to use for the merged token.
241
+ * @returns The updated token list with merged tokens.
242
+ */
243
+ static mergeTypes(types, tokens, mergeType) {
244
+ const output = [];
245
+ let i = 0;
246
+ while (i < tokens.length) {
247
+ // Check if the current token matches the type string
248
+ const matchedTokens = Tokenizer.matchTypes(types, tokens, i);
249
+ if (matchedTokens && matchedTokens.length > 0) {
250
+ const mergedToken = {
251
+ type: mergeType,
252
+ value: '',
253
+ values: matchedTokens,
254
+ startIndex: matchedTokens[0].startIndex,
255
+ endIndex: matchedTokens[matchedTokens.length - 1].endIndex,
256
+ };
257
+ output.push(mergedToken);
258
+ i += matchedTokens.length;
259
+ }
260
+ else {
261
+ output.push(tokens[i]);
262
+ i++;
263
+ }
264
+ }
265
+ return output;
266
+ }
267
+ }
268
+ exports.Tokenizer = Tokenizer;
269
+ //# sourceMappingURL=tokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../src/tokenizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,261 @@
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
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const tokenizer_1 = require("./tokenizer");
10
+ function makeParams() {
11
+ const specialSubstrings = [
12
+ { type: ',', value: ',' },
13
+ { type: 'VARIABLE', value: /^\$\{[^}]+\}/ },
14
+ ];
15
+ const specialWords = [
16
+ { type: 'NULL', value: 'null', ignoreCase: true },
17
+ { type: 'EMPTY', value: 'empty', ignoreCase: true },
18
+ { type: 'NOTNULL', value: '-null', ignoreCase: true },
19
+ { type: 'NOTEMPTY', value: '-empty', ignoreCase: true },
20
+ {
21
+ type: 'DAYOFWEEK',
22
+ value: /^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)$/i,
23
+ ignoreCase: true,
24
+ },
25
+ { type: 'STATE', value: /^(California|Washington)$/i },
26
+ { type: 'DATE', value: /^\d\d\d\d-\d\d-\d\d$/ },
27
+ { type: 'DATE', value: /^\d\d\d\d-\d\d$/ },
28
+ { type: 'DATE', value: /^\d\d\d\d$/ },
29
+ ];
30
+ return {
31
+ splitOnWhitespace: true,
32
+ trimWordWhitespace: true,
33
+ specialSubstrings,
34
+ specialWords,
35
+ };
36
+ }
37
+ describe('Tokenizer', () => {
38
+ const makeToken = (type, value, startIndex, endIndex) => ({ type, value, startIndex, endIndex });
39
+ it('should tokenize a simple string', () => {
40
+ const input = 'hello world';
41
+ const expectedTokens = [
42
+ makeToken('word', 'hello', 0, 5),
43
+ makeToken('word', 'world', 6, 11),
44
+ ];
45
+ expect(new tokenizer_1.Tokenizer(input, makeParams()).parse()).toEqual(expectedTokens);
46
+ });
47
+ it('should split adjacent characters when no whitespace', () => {
48
+ const specialSubstrings = [
49
+ { type: ',', value: ',' },
50
+ { type: 'exclamation', value: '!' },
51
+ { type: 'bracket', value: '[' },
52
+ ];
53
+ const input = '[hello],big,world!';
54
+ const expectedTokens = [
55
+ makeToken('bracket', '[', 0, 1),
56
+ makeToken('word', 'hello]', 1, 7),
57
+ makeToken(',', ',', 7, 8),
58
+ makeToken('word', 'big', 8, 11),
59
+ makeToken(',', ',', 11, 12),
60
+ makeToken('word', 'world', 12, 17),
61
+ makeToken('exclamation', '!', 17, 18),
62
+ ];
63
+ expect(new tokenizer_1.Tokenizer(input, { ...makeParams(), specialSubstrings }).parse()).toEqual(expectedTokens);
64
+ });
65
+ it('should match special tokens', () => {
66
+ const input = 'hello NULL world,-Null,-\'NULL" ,NULL, NULL , ';
67
+ const expectedTokens = [
68
+ makeToken('word', 'hello', 0, 5),
69
+ makeToken('NULL', 'null', 6, 10),
70
+ makeToken('word', 'world', 11, 16),
71
+ makeToken(',', ',', 16, 17),
72
+ makeToken('NOTNULL', '-null', 17, 22),
73
+ makeToken(',', ',', 22, 23),
74
+ makeToken('word', '-\'NULL"', 23, 30),
75
+ makeToken(',', ',', 31, 32),
76
+ makeToken('NULL', 'null', 32, 36),
77
+ makeToken(',', ',', 36, 37),
78
+ makeToken('NULL', 'null', 38, 42),
79
+ makeToken(',', ',', 43, 44),
80
+ ];
81
+ const params = makeParams();
82
+ expect(new tokenizer_1.Tokenizer(input, params).parse()).toEqual(expectedTokens);
83
+ });
84
+ it('should not combine adjacent words', () => {
85
+ const input = 'ABC DEF';
86
+ const expectedTokens = [
87
+ makeToken('word', 'ABC', 0, 3),
88
+ makeToken('word', 'DEF', 4, 7),
89
+ ];
90
+ const params = makeParams();
91
+ expect(new tokenizer_1.Tokenizer(input, params).parse()).toEqual(expectedTokens);
92
+ });
93
+ it('should combine adjacent words when combineAdjacentWords', () => {
94
+ const input = 'ABC DEF';
95
+ const expectedTokens = [makeToken('word', 'ABCDEF', 0, 7)];
96
+ const params = { ...makeParams(), combineAdjacentWords: true };
97
+ expect(new tokenizer_1.Tokenizer(input, params).parse()).toEqual(expectedTokens);
98
+ });
99
+ it('escaping should prevent special token matching', () => {
100
+ const input = 'N\\ULL';
101
+ const expectedTokens = [makeToken('word', 'N\\ULL', 0, 5)];
102
+ expect(new tokenizer_1.Tokenizer(input, makeParams()).parse()).toEqual(expectedTokens);
103
+ });
104
+ it('should match escaped characters', () => {
105
+ const input = 'hello \\n world';
106
+ const expectedTokens = [
107
+ makeToken('word', 'hello', 0, 5),
108
+ makeToken('word', '\\n', 6, 8),
109
+ makeToken('word', 'world', 9, 14),
110
+ ];
111
+ expect(new tokenizer_1.Tokenizer(input, makeParams()).parse()).toEqual(expectedTokens);
112
+ });
113
+ it('should preserve all escaped characters', () => {
114
+ const input = "he'llo \\t \\${w}or\\,ld";
115
+ const expectedTokens = [
116
+ makeToken('word', "he'llo", 0, 6),
117
+ makeToken('word', '\\t', 7, 9),
118
+ makeToken('word', '\\${w}or\\,ld', 10, 21),
119
+ ];
120
+ expect(new tokenizer_1.Tokenizer(input, makeParams()).parse()).toEqual(expectedTokens);
121
+ });
122
+ it('should match regexp and lowercase special matches', () => {
123
+ const input = "hello tuesDAY,ttuesday, tuesdayy ,Tuesday , ttuesday, 'TUESday' ";
124
+ const expectedTokens = [
125
+ makeToken('word', 'hello', 0, 5),
126
+ makeToken('DAYOFWEEK', 'tuesday', 6, 13),
127
+ makeToken(',', ',', 13, 14),
128
+ makeToken('word', 'ttuesday', 14, 22),
129
+ makeToken(',', ',', 22, 23),
130
+ makeToken('word', 'tuesdayy', 24, 32),
131
+ makeToken(',', ',', 33, 34),
132
+ makeToken('DAYOFWEEK', 'tuesday', 34, 41),
133
+ makeToken(',', ',', 42, 43),
134
+ makeToken('word', 'ttuesday', 44, 52),
135
+ makeToken(',', ',', 52, 53),
136
+ makeToken('word', "'TUESday'", 54, 63),
137
+ ];
138
+ expect(new tokenizer_1.Tokenizer(input, makeParams()).parse()).toEqual(expectedTokens);
139
+ });
140
+ it('should match regexp and not capitalize', () => {
141
+ const input = 'Washington, Washingo,washington,wWashington ';
142
+ const expectedTokens = [
143
+ makeToken('STATE', 'Washington', 0, 10),
144
+ makeToken(',', ',', 10, 11),
145
+ makeToken('word', 'Washingo', 12, 20),
146
+ makeToken(',', ',', 20, 21),
147
+ makeToken('STATE', 'washington', 21, 31),
148
+ makeToken(',', ',', 31, 32),
149
+ makeToken('word', 'wWashington', 32, 43),
150
+ ];
151
+ expect(new tokenizer_1.Tokenizer(input, makeParams()).parse()).toEqual(expectedTokens);
152
+ });
153
+ it('should match substring regexp', () => {
154
+ const input = 'hello \\${var1},aa${var2}bb, cc${var3} dd';
155
+ const expectedTokens = [
156
+ makeToken('word', 'hello', 0, 5),
157
+ makeToken('word', '\\${var1}', 7, 15),
158
+ makeToken(',', ',', 15, 16),
159
+ makeToken('word', 'aa', 16, 18),
160
+ makeToken('VARIABLE', '${var2}', 18, 25),
161
+ makeToken('word', 'bb', 25, 27),
162
+ makeToken(',', ',', 27, 28),
163
+ makeToken('word', 'cc', 29, 31),
164
+ makeToken('VARIABLE', '${var3}', 31, 38),
165
+ makeToken('word', 'dd', 39, 41),
166
+ ];
167
+ expect(new tokenizer_1.Tokenizer(input, makeParams()).parse()).toEqual(expectedTokens);
168
+ });
169
+ describe('mergeTypes', () => {
170
+ it('should return an empty array when input is empty', () => {
171
+ const result = tokenizer_1.Tokenizer.mergeTypes('', [], 'merged');
172
+ expect(result).toEqual([]);
173
+ });
174
+ it('should not merge tokens when no match is found', () => {
175
+ const tokens = [
176
+ { type: 'x', value: '1', startIndex: 0, endIndex: 1 },
177
+ { type: 'y', value: '2', startIndex: 1, endIndex: 2 },
178
+ ];
179
+ const result = tokenizer_1.Tokenizer.mergeTypes('a|b', tokens, 'merged');
180
+ expect(result).toEqual(tokens);
181
+ });
182
+ it('should merge tokens when a single match is found', () => {
183
+ const tokens = [
184
+ { type: 'a', value: '1', startIndex: 0, endIndex: 1 },
185
+ { type: 'b', value: '2', startIndex: 1, endIndex: 2 },
186
+ ];
187
+ const expected = [
188
+ {
189
+ type: 'merged',
190
+ value: '',
191
+ values: [tokens[0], tokens[1]],
192
+ startIndex: 0,
193
+ endIndex: 2,
194
+ },
195
+ ];
196
+ const result = tokenizer_1.Tokenizer.mergeTypes('a|b', tokens, 'merged');
197
+ expect(result).toEqual(expected);
198
+ });
199
+ it('should merge multiple matches', () => {
200
+ const tokens = [
201
+ { type: 'a', value: '1', startIndex: 0, endIndex: 1 },
202
+ { type: 'b', value: '2', startIndex: 1, endIndex: 2 },
203
+ { type: 'a', value: '3', startIndex: 2, endIndex: 3 },
204
+ { type: 'b', value: '4', startIndex: 3, endIndex: 4 },
205
+ ];
206
+ const expected = [
207
+ {
208
+ type: 'merged',
209
+ value: '',
210
+ values: [tokens[0], tokens[1]],
211
+ startIndex: 0,
212
+ endIndex: 2,
213
+ },
214
+ {
215
+ type: 'merged',
216
+ value: '',
217
+ values: [tokens[2], tokens[3]],
218
+ startIndex: 2,
219
+ endIndex: 4,
220
+ },
221
+ ];
222
+ const result = tokenizer_1.Tokenizer.mergeTypes('a|b', tokens, 'merged');
223
+ expect(result).toEqual(expected);
224
+ });
225
+ it('should not merge partial matches', () => {
226
+ const tokens = [
227
+ { type: 'a', value: '1', startIndex: 0, endIndex: 1 },
228
+ { type: 'b', value: '2', startIndex: 1, endIndex: 2 },
229
+ ];
230
+ const result = tokenizer_1.Tokenizer.mergeTypes('a|b|c', tokens, 'merged');
231
+ expect(result).toEqual(tokens);
232
+ });
233
+ });
234
+ describe('matchTypes', () => {
235
+ it('should return tokens when types match', () => {
236
+ const tokens = [makeToken('a', '1', 0, 1), makeToken('b', '2', 1, 2)];
237
+ expect(tokenizer_1.Tokenizer.matchTypes('a|b', tokens, 0)).toEqual(tokens);
238
+ });
239
+ it('should return undefined when types do not match', () => {
240
+ const tokens = [makeToken('x', '1', 0, 1), makeToken('y', '2', 1, 2)];
241
+ expect(tokenizer_1.Tokenizer.matchTypes('a|b', tokens, 0)).toBeUndefined();
242
+ });
243
+ it('should return undefined when index is out of range', () => {
244
+ const tokens = [makeToken('a', '1', 0, 1)];
245
+ expect(tokenizer_1.Tokenizer.matchTypes('a|b', tokens, 1)).toBeUndefined();
246
+ });
247
+ it('should return all matching tokens when multiple types match', () => {
248
+ const tokens = [
249
+ makeToken('a', '1', 0, 1),
250
+ makeToken('b', '2', 1, 2),
251
+ makeToken('c', '3', 2, 3),
252
+ ];
253
+ expect(tokenizer_1.Tokenizer.matchTypes('a|b|c', tokens, 0)).toEqual(tokens);
254
+ });
255
+ it('should return only matching tokens when partial match occurs', () => {
256
+ const tokens = [makeToken('a', '1', 0, 1), makeToken('b', '2', 1, 2)];
257
+ expect(tokenizer_1.Tokenizer.matchTypes('a|b|c', tokens, 0)).toBeUndefined();
258
+ });
259
+ });
260
+ });
261
+ //# sourceMappingURL=tokenizer.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.spec.js","sourceRoot":"","sources":["../src/tokenizer.spec.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",
3
+ "version": "0.0.238-dev250226003939",
4
4
  "license": "MIT",
5
5
  "description": "",
6
6
  "main": "dist/index.js",