@duckcodeailabs/dql-core 0.1.0

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 (74) hide show
  1. package/LICENSE +123 -0
  2. package/dist/ast/index.d.ts +4 -0
  3. package/dist/ast/index.d.ts.map +1 -0
  4. package/dist/ast/index.js +4 -0
  5. package/dist/ast/index.js.map +1 -0
  6. package/dist/ast/nodes.d.ts +205 -0
  7. package/dist/ast/nodes.d.ts.map +1 -0
  8. package/dist/ast/nodes.js +33 -0
  9. package/dist/ast/nodes.js.map +1 -0
  10. package/dist/ast/printer.d.ts +3 -0
  11. package/dist/ast/printer.d.ts.map +1 -0
  12. package/dist/ast/printer.js +157 -0
  13. package/dist/ast/printer.js.map +1 -0
  14. package/dist/ast/visitor.d.ts +45 -0
  15. package/dist/ast/visitor.d.ts.map +1 -0
  16. package/dist/ast/visitor.js +155 -0
  17. package/dist/ast/visitor.js.map +1 -0
  18. package/dist/errors/diagnostic.d.ts +23 -0
  19. package/dist/errors/diagnostic.d.ts.map +1 -0
  20. package/dist/errors/diagnostic.js +13 -0
  21. package/dist/errors/diagnostic.js.map +1 -0
  22. package/dist/errors/index.d.ts +3 -0
  23. package/dist/errors/index.d.ts.map +1 -0
  24. package/dist/errors/index.js +3 -0
  25. package/dist/errors/index.js.map +1 -0
  26. package/dist/errors/reporter.d.ts +22 -0
  27. package/dist/errors/reporter.d.ts.map +1 -0
  28. package/dist/errors/reporter.js +64 -0
  29. package/dist/errors/reporter.js.map +1 -0
  30. package/dist/formatter/formatter.d.ts +8 -0
  31. package/dist/formatter/formatter.d.ts.map +1 -0
  32. package/dist/formatter/formatter.js +243 -0
  33. package/dist/formatter/formatter.js.map +1 -0
  34. package/dist/formatter/index.d.ts +2 -0
  35. package/dist/formatter/index.d.ts.map +1 -0
  36. package/dist/formatter/index.js +2 -0
  37. package/dist/formatter/index.js.map +1 -0
  38. package/dist/index.d.ts +7 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +9 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/lexer/index.d.ts +3 -0
  43. package/dist/lexer/index.d.ts.map +1 -0
  44. package/dist/lexer/index.js +3 -0
  45. package/dist/lexer/index.js.map +1 -0
  46. package/dist/lexer/lexer.d.ts +43 -0
  47. package/dist/lexer/lexer.d.ts.map +1 -0
  48. package/dist/lexer/lexer.js +346 -0
  49. package/dist/lexer/lexer.js.map +1 -0
  50. package/dist/lexer/token.d.ts +72 -0
  51. package/dist/lexer/token.d.ts.map +1 -0
  52. package/dist/lexer/token.js +170 -0
  53. package/dist/lexer/token.js.map +1 -0
  54. package/dist/parser/index.d.ts +2 -0
  55. package/dist/parser/index.d.ts.map +1 -0
  56. package/dist/parser/index.js +2 -0
  57. package/dist/parser/index.js.map +1 -0
  58. package/dist/parser/parser.d.ts +50 -0
  59. package/dist/parser/parser.d.ts.map +1 -0
  60. package/dist/parser/parser.js +1024 -0
  61. package/dist/parser/parser.js.map +1 -0
  62. package/dist/semantic/analyzer.d.ts +27 -0
  63. package/dist/semantic/analyzer.d.ts.map +1 -0
  64. package/dist/semantic/analyzer.js +580 -0
  65. package/dist/semantic/analyzer.js.map +1 -0
  66. package/dist/semantic/index.d.ts +4 -0
  67. package/dist/semantic/index.d.ts.map +1 -0
  68. package/dist/semantic/index.js +3 -0
  69. package/dist/semantic/index.js.map +1 -0
  70. package/dist/semantic/semantic-layer.d.ts +118 -0
  71. package/dist/semantic/semantic-layer.d.ts.map +1 -0
  72. package/dist/semantic/semantic-layer.js +264 -0
  73. package/dist/semantic/semantic-layer.js.map +1 -0
  74. package/package.json +49 -0
@@ -0,0 +1,3 @@
1
+ export { Lexer } from './lexer.js';
2
+ export { TokenType, type Token, lookupKeyword, CHART_TYPES, CHART_TYPE_ALIASES, normalizeChartType, SQL_START_KEYWORDS, } from './token.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lexer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,SAAS,EACT,KAAK,KAAK,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Lexer } from './lexer.js';
2
+ export { TokenType, lookupKeyword, CHART_TYPES, CHART_TYPE_ALIASES, normalizeChartType, SQL_START_KEYWORDS, } from './token.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lexer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,SAAS,EAET,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { type Token } from './token.js';
2
+ export declare class Lexer {
3
+ private source;
4
+ private pos;
5
+ private line;
6
+ private column;
7
+ private file;
8
+ constructor(source: string, file?: string);
9
+ tokenize(): Token[];
10
+ nextToken(): Token;
11
+ /**
12
+ * Scan SQL fragment from current position.
13
+ * Called by the parser when it expects embedded SQL.
14
+ * Scans until it finds: comma + identifier + equals at paren depth 0,
15
+ * or a closing paren at depth 0.
16
+ *
17
+ * @param tokens - The token array to scan through
18
+ * @param startIndex - Index in tokens where SQL starts
19
+ * @returns { sql: string, endIndex: number } - The SQL text and the index after it
20
+ */
21
+ static scanSQLBoundary(source: string, startOffset: number, openParenDepth: number): {
22
+ sql: string;
23
+ endOffset: number;
24
+ };
25
+ private static skipStringInSQL;
26
+ private readComment;
27
+ private readString;
28
+ private readNumber;
29
+ private readIdentifierOrKeyword;
30
+ private readPunctuation;
31
+ private skipWhitespace;
32
+ private peek;
33
+ private peekNext;
34
+ private advance;
35
+ private isAtEnd;
36
+ private isDigit;
37
+ private isAlpha;
38
+ private isAlphaNumeric;
39
+ private readTripleQuoteString;
40
+ private location;
41
+ private makeToken;
42
+ }
43
+ //# sourceMappingURL=lexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../src/lexer/lexer.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,KAAK,EAAiB,MAAM,YAAY,CAAC;AAElE,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,IAAI,CAAqB;gBAErB,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAKzC,QAAQ,IAAI,KAAK,EAAE;IAcnB,SAAS,IAAI,KAAK;IA6DlB;;;;;;;;;OASG;IACH,MAAM,CAAC,eAAe,CACpB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAkErC,OAAO,CAAC,MAAM,CAAC,eAAe;IAiB9B,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,UAAU;IAoClB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,qBAAqB;IAiC7B,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;CAOlB"}
@@ -0,0 +1,346 @@
1
+ import { TokenType, lookupKeyword } from './token.js';
2
+ export class Lexer {
3
+ source;
4
+ pos = 0;
5
+ line = 1;
6
+ column = 1;
7
+ file;
8
+ constructor(source, file) {
9
+ this.source = source;
10
+ this.file = file;
11
+ }
12
+ tokenize() {
13
+ const tokens = [];
14
+ while (!this.isAtEnd()) {
15
+ this.skipWhitespace();
16
+ if (this.isAtEnd())
17
+ break;
18
+ const token = this.nextToken();
19
+ if (token.type !== TokenType.Comment) {
20
+ tokens.push(token);
21
+ }
22
+ }
23
+ tokens.push(this.makeToken(TokenType.EOF, '', this.location()));
24
+ return tokens;
25
+ }
26
+ nextToken() {
27
+ this.skipWhitespace();
28
+ if (this.isAtEnd()) {
29
+ return this.makeToken(TokenType.EOF, '', this.location());
30
+ }
31
+ const start = this.location();
32
+ const ch = this.peek();
33
+ // Single-line comment
34
+ if (ch === '/' && this.peekNext() === '/') {
35
+ return this.readComment(start);
36
+ }
37
+ // Triple-quote string literal
38
+ if (ch === '"' && this.peekNext() === '"' && this.source[this.pos + 2] === '"') {
39
+ return this.readTripleQuoteString(start);
40
+ }
41
+ // String literal
42
+ if (ch === '"' || ch === "'") {
43
+ return this.readString(ch, start);
44
+ }
45
+ // Number literal
46
+ if (this.isDigit(ch) || (ch === '-' && this.isDigit(this.peekNext() ?? ''))) {
47
+ return this.readNumber(start);
48
+ }
49
+ // Identifier or keyword
50
+ if (this.isAlpha(ch) || ch === '_') {
51
+ return this.readIdentifierOrKeyword(start);
52
+ }
53
+ // Multi-character operators
54
+ if (ch === '>' && this.peekNext() === '=') {
55
+ this.advance();
56
+ this.advance();
57
+ return this.makeToken(TokenType.GreaterThanOrEqual, '>=', start);
58
+ }
59
+ if (ch === '<' && this.peekNext() === '=') {
60
+ this.advance();
61
+ this.advance();
62
+ return this.makeToken(TokenType.LessThanOrEqual, '<=', start);
63
+ }
64
+ if (ch === '=' && this.peekNext() === '=') {
65
+ this.advance();
66
+ this.advance();
67
+ return this.makeToken(TokenType.DoubleEquals, '==', start);
68
+ }
69
+ if (ch === '!' && this.peekNext() === '=') {
70
+ this.advance();
71
+ this.advance();
72
+ return this.makeToken(TokenType.NotEquals, '!=', start);
73
+ }
74
+ // Punctuation
75
+ return this.readPunctuation(start);
76
+ }
77
+ /**
78
+ * Scan SQL fragment from current position.
79
+ * Called by the parser when it expects embedded SQL.
80
+ * Scans until it finds: comma + identifier + equals at paren depth 0,
81
+ * or a closing paren at depth 0.
82
+ *
83
+ * @param tokens - The token array to scan through
84
+ * @param startIndex - Index in tokens where SQL starts
85
+ * @returns { sql: string, endIndex: number } - The SQL text and the index after it
86
+ */
87
+ static scanSQLBoundary(source, startOffset, openParenDepth) {
88
+ let pos = startOffset;
89
+ let parenDepth = openParenDepth;
90
+ const len = source.length;
91
+ while (pos < len) {
92
+ const ch = source[pos];
93
+ // Track string literals (skip their contents)
94
+ if (ch === "'" || ch === '"') {
95
+ pos = Lexer.skipStringInSQL(source, pos);
96
+ continue;
97
+ }
98
+ // Track parentheses
99
+ if (ch === '(') {
100
+ parenDepth++;
101
+ pos++;
102
+ continue;
103
+ }
104
+ if (ch === ')') {
105
+ if (parenDepth === 1) {
106
+ // Closing paren of the chart call - SQL ends here
107
+ const sql = source.substring(startOffset, pos).trim();
108
+ return { sql, endOffset: pos };
109
+ }
110
+ parenDepth--;
111
+ pos++;
112
+ continue;
113
+ }
114
+ // Check for comma + identifier + equals pattern (boundary marker)
115
+ if (ch === ',' && parenDepth === 1) {
116
+ // Look ahead past whitespace for identifier = pattern
117
+ let lookAhead = pos + 1;
118
+ while (lookAhead < len && /\s/.test(source[lookAhead]))
119
+ lookAhead++;
120
+ // Check if we have an identifier
121
+ if (lookAhead < len && /[a-zA-Z_]/.test(source[lookAhead])) {
122
+ let identEnd = lookAhead;
123
+ while (identEnd < len && /[a-zA-Z0-9_]/.test(source[identEnd]))
124
+ identEnd++;
125
+ // Check if followed by =
126
+ let afterIdent = identEnd;
127
+ while (afterIdent < len && /\s/.test(source[afterIdent]))
128
+ afterIdent++;
129
+ if (afterIdent < len && source[afterIdent] === '=') {
130
+ // Check it's not == (comparison operator)
131
+ if (afterIdent + 1 >= len || source[afterIdent + 1] !== '=') {
132
+ // This is the boundary: SQL ends before this comma
133
+ const sql = source.substring(startOffset, pos).trim();
134
+ return { sql, endOffset: pos };
135
+ }
136
+ }
137
+ }
138
+ }
139
+ pos++;
140
+ }
141
+ // Reached end without finding boundary
142
+ const sql = source.substring(startOffset, pos).trim();
143
+ return { sql, endOffset: pos };
144
+ }
145
+ static skipStringInSQL(source, pos) {
146
+ const quote = source[pos];
147
+ pos++; // skip opening quote
148
+ while (pos < source.length) {
149
+ if (source[pos] === '\\') {
150
+ pos += 2; // skip escape
151
+ continue;
152
+ }
153
+ if (source[pos] === quote) {
154
+ pos++; // skip closing quote
155
+ return pos;
156
+ }
157
+ pos++;
158
+ }
159
+ return pos;
160
+ }
161
+ readComment(start) {
162
+ let value = '';
163
+ while (!this.isAtEnd() && this.peek() !== '\n') {
164
+ value += this.advance();
165
+ }
166
+ return this.makeToken(TokenType.Comment, value, start);
167
+ }
168
+ readString(quote, start) {
169
+ this.advance(); // skip opening quote
170
+ let value = '';
171
+ while (!this.isAtEnd() && this.peek() !== quote) {
172
+ if (this.peek() === '\\') {
173
+ this.advance(); // skip backslash
174
+ const escaped = this.advance();
175
+ switch (escaped) {
176
+ case 'n':
177
+ value += '\n';
178
+ break;
179
+ case 't':
180
+ value += '\t';
181
+ break;
182
+ case '\\':
183
+ value += '\\';
184
+ break;
185
+ case "'":
186
+ value += "'";
187
+ break;
188
+ case '"':
189
+ value += '"';
190
+ break;
191
+ default:
192
+ value += escaped;
193
+ }
194
+ }
195
+ else {
196
+ value += this.advance();
197
+ }
198
+ }
199
+ if (!this.isAtEnd()) {
200
+ this.advance(); // skip closing quote
201
+ }
202
+ return this.makeToken(TokenType.StringLiteral, value, start);
203
+ }
204
+ readNumber(start) {
205
+ let value = '';
206
+ if (this.peek() === '-') {
207
+ value += this.advance();
208
+ }
209
+ while (!this.isAtEnd() && this.isDigit(this.peek())) {
210
+ value += this.advance();
211
+ }
212
+ if (!this.isAtEnd() && this.peek() === '.' && this.isDigit(this.peekNext() ?? '')) {
213
+ value += this.advance(); // dot
214
+ while (!this.isAtEnd() && this.isDigit(this.peek())) {
215
+ value += this.advance();
216
+ }
217
+ }
218
+ return this.makeToken(TokenType.NumberLiteral, value, start);
219
+ }
220
+ readIdentifierOrKeyword(start) {
221
+ let value = '';
222
+ while (!this.isAtEnd() && (this.isAlphaNumeric(this.peek()) || this.peek() === '_')) {
223
+ value += this.advance();
224
+ }
225
+ const type = lookupKeyword(value);
226
+ return this.makeToken(type, value, start);
227
+ }
228
+ readPunctuation(start) {
229
+ const ch = this.advance();
230
+ switch (ch) {
231
+ case '(':
232
+ return this.makeToken(TokenType.LeftParen, ch, start);
233
+ case ')':
234
+ return this.makeToken(TokenType.RightParen, ch, start);
235
+ case '{':
236
+ return this.makeToken(TokenType.LeftBrace, ch, start);
237
+ case '}':
238
+ return this.makeToken(TokenType.RightBrace, ch, start);
239
+ case '[':
240
+ return this.makeToken(TokenType.LeftBracket, ch, start);
241
+ case ']':
242
+ return this.makeToken(TokenType.RightBracket, ch, start);
243
+ case ',':
244
+ return this.makeToken(TokenType.Comma, ch, start);
245
+ case '.':
246
+ return this.makeToken(TokenType.Dot, ch, start);
247
+ case '=':
248
+ return this.makeToken(TokenType.Equals, ch, start);
249
+ case '+':
250
+ return this.makeToken(TokenType.Plus, ch, start);
251
+ case '-':
252
+ return this.makeToken(TokenType.Minus, ch, start);
253
+ case '*':
254
+ return this.makeToken(TokenType.Star, ch, start);
255
+ case '@':
256
+ return this.makeToken(TokenType.AtSign, ch, start);
257
+ case ':':
258
+ return this.makeToken(TokenType.ColonToken, ch, start);
259
+ case '>':
260
+ return this.makeToken(TokenType.GreaterThan, ch, start);
261
+ case '<':
262
+ return this.makeToken(TokenType.LessThan, ch, start);
263
+ default:
264
+ return this.makeToken(TokenType.Identifier, ch, start);
265
+ }
266
+ }
267
+ skipWhitespace() {
268
+ while (!this.isAtEnd()) {
269
+ const ch = this.peek();
270
+ if (ch === ' ' || ch === '\t' || ch === '\r' || ch === '\n') {
271
+ this.advance();
272
+ }
273
+ else {
274
+ break;
275
+ }
276
+ }
277
+ }
278
+ peek() {
279
+ return this.source[this.pos];
280
+ }
281
+ peekNext() {
282
+ return this.source[this.pos + 1];
283
+ }
284
+ advance() {
285
+ const ch = this.source[this.pos];
286
+ this.pos++;
287
+ if (ch === '\n') {
288
+ this.line++;
289
+ this.column = 1;
290
+ }
291
+ else {
292
+ this.column++;
293
+ }
294
+ return ch;
295
+ }
296
+ isAtEnd() {
297
+ return this.pos >= this.source.length;
298
+ }
299
+ isDigit(ch) {
300
+ return ch >= '0' && ch <= '9';
301
+ }
302
+ isAlpha(ch) {
303
+ return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch === '_';
304
+ }
305
+ isAlphaNumeric(ch) {
306
+ return this.isAlpha(ch) || this.isDigit(ch);
307
+ }
308
+ readTripleQuoteString(start) {
309
+ // Skip opening """
310
+ this.advance(); // "
311
+ this.advance(); // "
312
+ this.advance(); // "
313
+ // Skip optional leading newline
314
+ if (!this.isAtEnd() && this.peek() === '\n') {
315
+ this.advance();
316
+ }
317
+ let value = '';
318
+ while (!this.isAtEnd()) {
319
+ if (this.peek() === '"' &&
320
+ this.peekNext() === '"' &&
321
+ this.source[this.pos + 2] === '"') {
322
+ // Skip closing """
323
+ this.advance();
324
+ this.advance();
325
+ this.advance();
326
+ // Trim trailing whitespace/newline from value
327
+ value = value.replace(/\n\s*$/, '');
328
+ return this.makeToken(TokenType.TripleQuoteString, value, start);
329
+ }
330
+ value += this.advance();
331
+ }
332
+ // Unterminated triple-quote string
333
+ return this.makeToken(TokenType.TripleQuoteString, value, start);
334
+ }
335
+ location() {
336
+ return { line: this.line, column: this.column, offset: this.pos, file: this.file };
337
+ }
338
+ makeToken(type, value, start) {
339
+ return {
340
+ type,
341
+ value,
342
+ span: { start, end: this.location() },
343
+ };
344
+ }
345
+ }
346
+ //# sourceMappingURL=lexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer.js","sourceRoot":"","sources":["../../src/lexer/lexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import type { SourceSpan } from '../errors/diagnostic.js';
2
+ export declare enum TokenType {
3
+ StringLiteral = "StringLiteral",
4
+ NumberLiteral = "NumberLiteral",
5
+ BooleanLiteral = "BooleanLiteral",
6
+ Identifier = "Identifier",
7
+ DashboardKeyword = "DashboardKeyword",
8
+ WorkbookKeyword = "WorkbookKeyword",
9
+ PageKeyword = "PageKeyword",
10
+ LetKeyword = "LetKeyword",
11
+ ParamKeyword = "ParamKeyword",
12
+ ChartKeyword = "ChartKeyword",
13
+ FilterKeyword = "FilterKeyword",
14
+ IntervalKeyword = "IntervalKeyword",
15
+ ImportKeyword = "ImportKeyword",
16
+ FromKeyword = "FromKeyword",
17
+ UseKeyword = "UseKeyword",
18
+ LayoutKeyword = "LayoutKeyword",
19
+ RowKeyword = "RowKeyword",
20
+ BlockKeyword = "BlockKeyword",
21
+ DomainKeyword = "DomainKeyword",
22
+ TypeKeyword = "TypeKeyword",
23
+ DescriptionKeyword = "DescriptionKeyword",
24
+ TagsKeyword = "TagsKeyword",
25
+ OwnerKeyword = "OwnerKeyword",
26
+ QueryKeyword = "QueryKeyword",
27
+ VisualizationKeyword = "VisualizationKeyword",
28
+ TestsKeyword = "TestsKeyword",
29
+ ParamsKeyword = "ParamsKeyword",
30
+ AssertKeyword = "AssertKeyword",
31
+ VarKeyword = "VarKeyword",
32
+ DefaultKeyword = "DefaultKeyword",
33
+ MetricKeyword = "MetricKeyword",
34
+ ColonToken = "ColonToken",
35
+ TripleQuoteString = "TripleQuoteString",
36
+ GreaterThan = "GreaterThan",
37
+ LessThan = "LessThan",
38
+ GreaterThanOrEqual = "GreaterThanOrEqual",
39
+ LessThanOrEqual = "LessThanOrEqual",
40
+ DoubleEquals = "DoubleEquals",
41
+ NotEquals = "NotEquals",
42
+ InKeyword = "InKeyword",
43
+ SQLFragment = "SQLFragment",
44
+ AtSign = "AtSign",
45
+ LeftParen = "LeftParen",
46
+ RightParen = "RightParen",
47
+ LeftBrace = "LeftBrace",
48
+ RightBrace = "RightBrace",
49
+ LeftBracket = "LeftBracket",
50
+ RightBracket = "RightBracket",
51
+ Comma = "Comma",
52
+ Dot = "Dot",
53
+ Equals = "Equals",
54
+ Plus = "Plus",
55
+ Minus = "Minus",
56
+ Star = "Star",
57
+ Comment = "Comment",
58
+ Newline = "Newline",
59
+ EOF = "EOF"
60
+ }
61
+ export interface Token {
62
+ type: TokenType;
63
+ value: string;
64
+ span: SourceSpan;
65
+ }
66
+ export declare function lookupKeyword(identifier: string): TokenType;
67
+ export declare const CHART_TYPES: Set<string>;
68
+ export declare const CHART_TYPE_ALIASES: Record<string, string>;
69
+ export declare function normalizeChartType(chartType: string): string;
70
+ export declare const FILTER_TYPES: Set<string>;
71
+ export declare const SQL_START_KEYWORDS: Set<string>;
72
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/lexer/token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,oBAAY,SAAS;IAEnB,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IAGjC,UAAU,eAAe;IACzB,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IACnC,WAAW,gBAAgB;IAC3B,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,UAAU,eAAe;IACzB,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,kBAAkB,uBAAuB;IACzC,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,oBAAoB,yBAAyB;IAC7C,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,iBAAiB,sBAAsB;IACvC,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,kBAAkB,uBAAuB;IACzC,eAAe,oBAAoB;IACnC,YAAY,iBAAiB;IAC7B,SAAS,cAAc;IACvB,SAAS,cAAc;IAGvB,WAAW,gBAAgB;IAG3B,MAAM,WAAW;IAGjB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IAGb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;CAClB;AAmCD,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAE3D;AAED,eAAO,MAAM,WAAW,aAoCtB,CAAC;AAEH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgBrD,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,eAAO,MAAM,YAAY,aAMvB,CAAC;AAEH,eAAO,MAAM,kBAAkB,aAG7B,CAAC"}