@typed-sql/postgres 2.0.0 → 2.1.0-rc.1

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 (116) hide show
  1. package/CHANGELOG.md +147 -0
  2. package/README.md +17 -0
  3. package/dist/packages/postgres/src/bulk.d.ts.map +1 -1
  4. package/dist/packages/postgres/src/bulk.js +1 -1
  5. package/dist/packages/postgres/src/bulk.js.map +1 -1
  6. package/dist/packages/postgres/src/capabilities.d.ts +19 -0
  7. package/dist/packages/postgres/src/capabilities.d.ts.map +1 -0
  8. package/dist/packages/postgres/src/capabilities.js +120 -0
  9. package/dist/packages/postgres/src/capabilities.js.map +1 -0
  10. package/dist/packages/postgres/src/catalog/generated/14.d.ts +4 -0
  11. package/dist/packages/postgres/src/catalog/generated/14.d.ts.map +1 -0
  12. package/dist/packages/postgres/src/catalog/generated/14.js +2018 -0
  13. package/dist/packages/postgres/src/catalog/generated/14.js.map +1 -0
  14. package/dist/packages/postgres/src/catalog/generated/15.d.ts +4 -0
  15. package/dist/packages/postgres/src/catalog/generated/15.d.ts.map +1 -0
  16. package/dist/packages/postgres/src/catalog/generated/15.js +2012 -0
  17. package/dist/packages/postgres/src/catalog/generated/15.js.map +1 -0
  18. package/dist/packages/postgres/src/catalog/generated/16.d.ts +4 -0
  19. package/dist/packages/postgres/src/catalog/generated/16.d.ts.map +1 -0
  20. package/dist/packages/postgres/src/catalog/generated/16.js +2012 -0
  21. package/dist/packages/postgres/src/catalog/generated/16.js.map +1 -0
  22. package/dist/packages/postgres/src/catalog/generated/17.d.ts +4 -0
  23. package/dist/packages/postgres/src/catalog/generated/17.d.ts.map +1 -0
  24. package/dist/packages/postgres/src/catalog/generated/17.js +2012 -0
  25. package/dist/packages/postgres/src/catalog/generated/17.js.map +1 -0
  26. package/dist/packages/postgres/src/catalog/generated/18.d.ts +4 -0
  27. package/dist/packages/postgres/src/catalog/generated/18.d.ts.map +1 -0
  28. package/dist/packages/postgres/src/catalog/generated/18.js +2048 -0
  29. package/dist/packages/postgres/src/catalog/generated/18.js.map +1 -0
  30. package/dist/packages/postgres/src/catalog/generated/19.d.ts +4 -0
  31. package/dist/packages/postgres/src/catalog/generated/19.d.ts.map +1 -0
  32. package/dist/packages/postgres/src/catalog/generated/19.js +2048 -0
  33. package/dist/packages/postgres/src/catalog/generated/19.js.map +1 -0
  34. package/dist/packages/postgres/src/catalog/index.d.ts +14 -0
  35. package/dist/packages/postgres/src/catalog/index.d.ts.map +1 -0
  36. package/dist/packages/postgres/src/catalog/index.js +86 -0
  37. package/dist/packages/postgres/src/catalog/index.js.map +1 -0
  38. package/dist/packages/postgres/src/catalog/types.d.ts +46 -0
  39. package/dist/packages/postgres/src/catalog/types.d.ts.map +1 -0
  40. package/dist/packages/postgres/src/catalog/types.js +2 -0
  41. package/dist/packages/postgres/src/catalog/types.js.map +1 -0
  42. package/dist/packages/postgres/src/expression-evidence.d.ts +11 -0
  43. package/dist/packages/postgres/src/expression-evidence.d.ts.map +1 -0
  44. package/dist/packages/postgres/src/expression-evidence.js +33 -0
  45. package/dist/packages/postgres/src/expression-evidence.js.map +1 -0
  46. package/dist/packages/postgres/src/extensions.d.ts +61 -0
  47. package/dist/packages/postgres/src/extensions.d.ts.map +1 -0
  48. package/dist/packages/postgres/src/extensions.js +311 -0
  49. package/dist/packages/postgres/src/extensions.js.map +1 -0
  50. package/dist/packages/postgres/src/index.d.ts +13 -0
  51. package/dist/packages/postgres/src/index.d.ts.map +1 -1
  52. package/dist/packages/postgres/src/index.js +51 -17
  53. package/dist/packages/postgres/src/index.js.map +1 -1
  54. package/dist/packages/postgres/src/parser/index.d.ts +8 -0
  55. package/dist/packages/postgres/src/parser/index.d.ts.map +1 -0
  56. package/dist/packages/postgres/src/parser/index.js +4 -0
  57. package/dist/packages/postgres/src/parser/index.js.map +1 -0
  58. package/dist/packages/postgres/src/parser/parser.d.ts +14 -0
  59. package/dist/packages/postgres/src/parser/parser.d.ts.map +1 -0
  60. package/dist/packages/postgres/src/parser/parser.js +2683 -0
  61. package/dist/packages/postgres/src/parser/parser.js.map +1 -0
  62. package/dist/packages/postgres/src/parser/tokenizer.d.ts +15 -0
  63. package/dist/packages/postgres/src/parser/tokenizer.d.ts.map +1 -0
  64. package/dist/packages/postgres/src/parser/tokenizer.js +470 -0
  65. package/dist/packages/postgres/src/parser/tokenizer.js.map +1 -0
  66. package/dist/packages/postgres/src/parser/types.d.ts +652 -0
  67. package/dist/packages/postgres/src/parser/types.d.ts.map +1 -0
  68. package/dist/packages/postgres/src/parser/types.js +9 -0
  69. package/dist/packages/postgres/src/parser/types.js.map +1 -0
  70. package/dist/packages/postgres/src/parser/walk.d.ts +13 -0
  71. package/dist/packages/postgres/src/parser/walk.d.ts.map +1 -0
  72. package/dist/packages/postgres/src/parser/walk.js +374 -0
  73. package/dist/packages/postgres/src/parser/walk.js.map +1 -0
  74. package/dist/packages/postgres/src/pg.d.ts +35 -4
  75. package/dist/packages/postgres/src/pg.d.ts.map +1 -1
  76. package/dist/packages/postgres/src/pg.js +355 -40
  77. package/dist/packages/postgres/src/pg.js.map +1 -1
  78. package/dist/packages/postgres/src/prepared.d.ts +5 -3
  79. package/dist/packages/postgres/src/prepared.d.ts.map +1 -1
  80. package/dist/packages/postgres/src/prepared.js +23 -15
  81. package/dist/packages/postgres/src/prepared.js.map +1 -1
  82. package/dist/packages/postgres/src/provider.d.ts +149 -11
  83. package/dist/packages/postgres/src/provider.d.ts.map +1 -1
  84. package/dist/packages/postgres/src/provider.js +652 -42
  85. package/dist/packages/postgres/src/provider.js.map +1 -1
  86. package/dist/packages/postgres/src/resolver.d.ts +1 -1
  87. package/dist/packages/postgres/src/resolver.d.ts.map +1 -1
  88. package/dist/packages/postgres/src/resolver.js +2767 -203
  89. package/dist/packages/postgres/src/resolver.js.map +1 -1
  90. package/dist/packages/postgres/src/routing.d.ts.map +1 -1
  91. package/dist/packages/postgres/src/routing.js +1 -1
  92. package/dist/packages/postgres/src/routing.js.map +1 -1
  93. package/dist/packages/postgres/src/runtime-compatibility.d.ts +14 -0
  94. package/dist/packages/postgres/src/runtime-compatibility.d.ts.map +1 -0
  95. package/dist/packages/postgres/src/runtime-compatibility.js +63 -0
  96. package/dist/packages/postgres/src/runtime-compatibility.js.map +1 -0
  97. package/dist/packages/postgres/src/runtime.d.ts +10 -1
  98. package/dist/packages/postgres/src/runtime.d.ts.map +1 -1
  99. package/dist/packages/postgres/src/runtime.js +50 -2
  100. package/dist/packages/postgres/src/runtime.js.map +1 -1
  101. package/dist/packages/postgres/src/semantics.d.ts +1 -1
  102. package/dist/packages/postgres/src/semantics.d.ts.map +1 -1
  103. package/dist/packages/postgres/src/semantics.js +19 -6
  104. package/dist/packages/postgres/src/semantics.js.map +1 -1
  105. package/dist/packages/postgres/src/support.d.ts +29 -0
  106. package/dist/packages/postgres/src/support.d.ts.map +1 -0
  107. package/dist/packages/postgres/src/support.js +45 -0
  108. package/dist/packages/postgres/src/support.js.map +1 -0
  109. package/dist/packages/postgres/src/type-policy.d.ts.map +1 -1
  110. package/dist/packages/postgres/src/type-policy.js +34 -43
  111. package/dist/packages/postgres/src/type-policy.js.map +1 -1
  112. package/dist/packages/postgres/src/type-resolution.d.ts +33 -0
  113. package/dist/packages/postgres/src/type-resolution.d.ts.map +1 -0
  114. package/dist/packages/postgres/src/type-resolution.js +906 -0
  115. package/dist/packages/postgres/src/type-resolution.js.map +1 -0
  116. package/package.json +7 -4
@@ -0,0 +1,470 @@
1
+ export const DEFAULT_MAX_SQL_LENGTH = 1_000_000;
2
+ export const DEFAULT_MAX_TOKENS = 100_000;
3
+ const keywords = new Set([
4
+ "ALL",
5
+ "AND",
6
+ "ANY",
7
+ "ARRAY",
8
+ "AS",
9
+ "ASC",
10
+ "AT",
11
+ "BETWEEN",
12
+ "BREADTH",
13
+ "BY",
14
+ "CASE",
15
+ "CAST",
16
+ "COLLATE",
17
+ "COALESCE",
18
+ "CONFLICT",
19
+ "CONSTRAINT",
20
+ "COUNT",
21
+ "CROSS",
22
+ "CUBE",
23
+ "CURRENT",
24
+ "CYCLE",
25
+ "DEFAULT",
26
+ "DELETE",
27
+ "DEPTH",
28
+ "DESC",
29
+ "DISTINCT",
30
+ "DO",
31
+ "ELSE",
32
+ "END",
33
+ "EXCEPT",
34
+ "EXCLUDE",
35
+ "EXCLUDED",
36
+ "EXISTS",
37
+ "FALSE",
38
+ "FETCH",
39
+ "FILTER",
40
+ "FIRST",
41
+ "FOLLOWING",
42
+ "FOR",
43
+ "FROM",
44
+ "FULL",
45
+ "GROUP",
46
+ "GROUPING",
47
+ "GROUPS",
48
+ "HAVING",
49
+ "ILIKE",
50
+ "IN",
51
+ "INNER",
52
+ "INSERT",
53
+ "INTERSECT",
54
+ "INTO",
55
+ "IS",
56
+ "JOIN",
57
+ "KEY",
58
+ "LAST",
59
+ "LATERAL",
60
+ "LEFT",
61
+ "LIKE",
62
+ "LIMIT",
63
+ "LOCAL",
64
+ "LOCK",
65
+ "LOCKED",
66
+ "MAX",
67
+ "MATERIALIZED",
68
+ "MATCHED",
69
+ "MERGE",
70
+ "MIN",
71
+ "MODE",
72
+ "NO",
73
+ "NEXT",
74
+ "NOT",
75
+ "NOTHING",
76
+ "NOWAIT",
77
+ "NULL",
78
+ "NULLS",
79
+ "OFFSET",
80
+ "OF",
81
+ "ONLY",
82
+ "ON",
83
+ "OR",
84
+ "ORDER",
85
+ "ORDINALITY",
86
+ "OVERRIDING",
87
+ "OTHERS",
88
+ "OUTER",
89
+ "OVER",
90
+ "PARTITION",
91
+ "PRECEDING",
92
+ "RANGE",
93
+ "RECURSIVE",
94
+ "REPEATABLE",
95
+ "RETURNING",
96
+ "RIGHT",
97
+ "ROLLUP",
98
+ "ROW",
99
+ "ROWS",
100
+ "SEARCH",
101
+ "SELECT",
102
+ "SET",
103
+ "SETS",
104
+ "SHARE",
105
+ "SIMILAR",
106
+ "SOME",
107
+ "SKIP",
108
+ "SUM",
109
+ "TABLESAMPLE",
110
+ "THEN",
111
+ "TIME",
112
+ "TIES",
113
+ "TO",
114
+ "TRUE",
115
+ "UNION",
116
+ "UNBOUNDED",
117
+ "UPDATE",
118
+ "VARIADIC",
119
+ "USING",
120
+ "VALUES",
121
+ "WHEN",
122
+ "WHERE",
123
+ "WINDOW",
124
+ "WITH",
125
+ "WITHIN",
126
+ "ZONE",
127
+ ]);
128
+ const operators = [
129
+ "||/",
130
+ "|/",
131
+ "&<|",
132
+ "?-|",
133
+ "?||",
134
+ "|&>",
135
+ "<<=",
136
+ ">>=",
137
+ "<<|",
138
+ "|>>",
139
+ "<->",
140
+ "@-@",
141
+ "#>>",
142
+ "->>",
143
+ "-\u007c-",
144
+ "=>",
145
+ ":=",
146
+ "::",
147
+ "<=",
148
+ ">=",
149
+ "!=",
150
+ "<>",
151
+ "||",
152
+ "->",
153
+ "#>",
154
+ "@>",
155
+ "<@",
156
+ "?|",
157
+ "?&",
158
+ "&&",
159
+ "!~*",
160
+ "!~",
161
+ "!!",
162
+ "~*",
163
+ "#-",
164
+ "##",
165
+ "&<",
166
+ "&>",
167
+ "<<",
168
+ ">>",
169
+ "@?",
170
+ "@@",
171
+ "^@",
172
+ "?#",
173
+ "?-",
174
+ "~=",
175
+ "<^",
176
+ ">^",
177
+ "=",
178
+ "<",
179
+ ">",
180
+ "+",
181
+ "-",
182
+ "*",
183
+ "/",
184
+ "%",
185
+ "^",
186
+ "~",
187
+ "?",
188
+ "&",
189
+ "|",
190
+ "#",
191
+ "@",
192
+ ];
193
+ export class SqlTokenizeError extends Error {
194
+ range;
195
+ code;
196
+ constructor(message, range, code = "TSQ001") {
197
+ super(message);
198
+ this.name = "SqlTokenizeError";
199
+ this.range = range;
200
+ this.code = code;
201
+ }
202
+ }
203
+ function isWordStart(value) {
204
+ return value === "_" || /\p{L}/u.test(value);
205
+ }
206
+ function isWordPart(value) {
207
+ return value === "_" || value === "$" || /[\p{L}\p{N}]/u.test(value);
208
+ }
209
+ class Scanner {
210
+ #source;
211
+ #maxTokens;
212
+ #index = 0;
213
+ #line = 1;
214
+ #column = 1;
215
+ #parameterIndex = 0;
216
+ #syntax = "postgres";
217
+ constructor(source, options) {
218
+ const maxSqlLength = options.maxSqlLength ?? DEFAULT_MAX_SQL_LENGTH;
219
+ if (!Number.isSafeInteger(maxSqlLength) || maxSqlLength < 1)
220
+ throw new TypeError("maxSqlLength must be a positive safe integer");
221
+ this.#maxTokens = options.maxTokens ?? DEFAULT_MAX_TOKENS;
222
+ if (!Number.isSafeInteger(this.#maxTokens) || this.#maxTokens < 1)
223
+ throw new TypeError("maxTokens must be a positive safe integer");
224
+ if (source.length > maxSqlLength) {
225
+ throw new SqlTokenizeError(`SQL exceeds the ${maxSqlLength} character parser limit`, { start: 0, end: source.length, line: 1, column: 1 }, "TSQ002");
226
+ }
227
+ this.#source = source;
228
+ }
229
+ scan() {
230
+ const tokens = [];
231
+ while (!this.#atEnd()) {
232
+ this.#skipTrivia();
233
+ if (this.#atEnd())
234
+ break;
235
+ if (tokens.length >= this.#maxTokens) {
236
+ throw new SqlTokenizeError(`SQL exceeds the ${this.#maxTokens} token parser limit`, this.#range(this.#position()), "TSQ002");
237
+ }
238
+ tokens.push(this.#scanToken());
239
+ }
240
+ const position = this.#position();
241
+ tokens.push(this.#token("eof", "", "", position));
242
+ return tokens;
243
+ }
244
+ #scanToken() {
245
+ const start = this.#position();
246
+ const char = this.#peek();
247
+ if ((char === "E" || char === "e") && this.#peek(1) === "'") {
248
+ this.#advance();
249
+ return this.#scanString(start, true);
250
+ }
251
+ if (isWordStart(char))
252
+ return this.#scanWord(start);
253
+ if (/[0-9]/.test(char))
254
+ return this.#scanNumber(start);
255
+ if (char === "'")
256
+ return this.#scanString(start, false, "'");
257
+ if (char === '"' && this.#syntax === "mysql")
258
+ return this.#scanString(start, false, '"');
259
+ if (char === '"')
260
+ return this.#scanQuotedIdentifier(start, '"');
261
+ if (char === "`" && this.#syntax !== "postgres")
262
+ return this.#scanQuotedIdentifier(start, "`");
263
+ if (char === "[" && this.#syntax === "sqlite")
264
+ return this.#scanBracketIdentifier(start);
265
+ if (char === "$" && /[0-9]/.test(this.#peek(1)))
266
+ return this.#scanParameter(start);
267
+ if (char === "$" && this.#dollarQuoteDelimiter() !== undefined)
268
+ return this.#scanDollarString(start);
269
+ if (char === "?" && this.#syntax !== "postgres") {
270
+ this.#advance();
271
+ this.#parameterIndex += 1;
272
+ return this.#token("parameter", "?", String(this.#parameterIndex), start);
273
+ }
274
+ const operator = operators.find((candidate) => this.#source.startsWith(candidate, this.#index));
275
+ if (operator !== undefined) {
276
+ for (let offset = 0; offset < operator.length; offset += 1)
277
+ this.#advance();
278
+ return this.#token("operator", operator, operator, start);
279
+ }
280
+ if (["(", ")", ",", ".", ";", "[", "]", ":"].includes(char)) {
281
+ this.#advance();
282
+ return this.#token("punctuation", char, char, start);
283
+ }
284
+ this.#advance();
285
+ throw new SqlTokenizeError(`Unexpected character ${JSON.stringify(char)}`, this.#range(start));
286
+ }
287
+ #scanBracketIdentifier(start) {
288
+ this.#advance();
289
+ let value = "";
290
+ while (!this.#atEnd()) {
291
+ const char = this.#advance();
292
+ if (char === "]")
293
+ return this.#token("quoted-identifier", this.#source.slice(start.index, this.#index), value, start);
294
+ value += char;
295
+ }
296
+ throw new SqlTokenizeError("Unterminated bracket identifier", this.#range(start));
297
+ }
298
+ #scanWord(start) {
299
+ while (isWordPart(this.#peek()))
300
+ this.#advance();
301
+ const text = this.#source.slice(start.index, this.#index);
302
+ const upper = text.toUpperCase();
303
+ const kind = keywords.has(upper) ? "keyword" : "identifier";
304
+ return this.#token(kind, text, kind === "keyword" ? upper : text, start);
305
+ }
306
+ #scanNumber(start) {
307
+ while (/[0-9]/.test(this.#peek()))
308
+ this.#advance();
309
+ if (this.#peek() === "." && /[0-9]/.test(this.#peek(1))) {
310
+ this.#advance();
311
+ while (/[0-9]/.test(this.#peek()))
312
+ this.#advance();
313
+ }
314
+ if ((this.#peek() === "e" || this.#peek() === "E") && /[+\-0-9]/.test(this.#peek(1))) {
315
+ this.#advance();
316
+ if (this.#peek() === "+" || this.#peek() === "-")
317
+ this.#advance();
318
+ if (!/[0-9]/.test(this.#peek()))
319
+ throw new SqlTokenizeError("Invalid numeric exponent", this.#range(start));
320
+ while (/[0-9]/.test(this.#peek()))
321
+ this.#advance();
322
+ }
323
+ const text = this.#source.slice(start.index, this.#index);
324
+ return this.#token("number", text, text, start);
325
+ }
326
+ #scanString(start, escaped, quote = "'") {
327
+ this.#advance();
328
+ let value = "";
329
+ while (!this.#atEnd()) {
330
+ const char = this.#advance();
331
+ if (char === quote) {
332
+ if (this.#peek() === quote) {
333
+ this.#advance();
334
+ value += quote;
335
+ continue;
336
+ }
337
+ return this.#token("string", this.#source.slice(start.index, this.#index), value, start);
338
+ }
339
+ if (escaped && char === "\\" && !this.#atEnd()) {
340
+ const next = this.#advance();
341
+ value += next === "n" ? "\n" : next === "r" ? "\r" : next === "t" ? "\t" : next;
342
+ }
343
+ else
344
+ value += char;
345
+ }
346
+ throw new SqlTokenizeError("Unterminated string literal", this.#range(start));
347
+ }
348
+ #scanDollarString(start) {
349
+ const delimiter = this.#dollarQuoteDelimiter();
350
+ for (let index = 0; index < delimiter.length; index += 1)
351
+ this.#advance();
352
+ const contentStart = this.#index;
353
+ const close = this.#source.indexOf(delimiter, contentStart);
354
+ if (close === -1) {
355
+ while (!this.#atEnd())
356
+ this.#advance();
357
+ throw new SqlTokenizeError("Unterminated dollar-quoted string literal", this.#range(start));
358
+ }
359
+ while (this.#index < close)
360
+ this.#advance();
361
+ const value = this.#source.slice(contentStart, close);
362
+ for (let index = 0; index < delimiter.length; index += 1)
363
+ this.#advance();
364
+ return this.#token("string", this.#source.slice(start.index, this.#index), value, start);
365
+ }
366
+ #dollarQuoteDelimiter() {
367
+ if (this.#peek() !== "$")
368
+ return undefined;
369
+ let offset = 1;
370
+ while (/[A-Za-z0-9_]/.test(this.#peek(offset)))
371
+ offset += 1;
372
+ if (this.#peek(offset) !== "$")
373
+ return undefined;
374
+ return this.#source.slice(this.#index, this.#index + offset + 1);
375
+ }
376
+ #scanQuotedIdentifier(start, quote) {
377
+ this.#advance();
378
+ let value = "";
379
+ while (!this.#atEnd()) {
380
+ const char = this.#advance();
381
+ if (char === quote) {
382
+ if (this.#peek() === quote) {
383
+ this.#advance();
384
+ value += quote;
385
+ continue;
386
+ }
387
+ return this.#token("quoted-identifier", this.#source.slice(start.index, this.#index), value, start);
388
+ }
389
+ value += char;
390
+ }
391
+ throw new SqlTokenizeError("Unterminated quoted identifier", this.#range(start));
392
+ }
393
+ #scanParameter(start) {
394
+ this.#advance();
395
+ while (/[0-9]/.test(this.#peek()))
396
+ this.#advance();
397
+ const text = this.#source.slice(start.index, this.#index);
398
+ if (text === "$0")
399
+ throw new SqlTokenizeError("PostgreSQL parameters start at $1", this.#range(start));
400
+ return this.#token("parameter", text, text.slice(1), start);
401
+ }
402
+ #skipTrivia() {
403
+ let moved = true;
404
+ while (moved) {
405
+ moved = false;
406
+ while (/\s/u.test(this.#peek())) {
407
+ moved = true;
408
+ this.#advance();
409
+ }
410
+ if (this.#peek() === "-" && this.#peek(1) === "-") {
411
+ moved = true;
412
+ while (!this.#atEnd() && this.#peek() !== "\n")
413
+ this.#advance();
414
+ }
415
+ else if (this.#peek() === "/" && this.#peek(1) === "*") {
416
+ const start = this.#position();
417
+ moved = true;
418
+ this.#advance();
419
+ this.#advance();
420
+ let depth = 1;
421
+ while (!this.#atEnd() && depth > 0) {
422
+ if (this.#peek() === "/" && this.#peek(1) === "*") {
423
+ depth += 1;
424
+ this.#advance();
425
+ this.#advance();
426
+ }
427
+ else if (this.#peek() === "*" && this.#peek(1) === "/") {
428
+ depth -= 1;
429
+ this.#advance();
430
+ this.#advance();
431
+ }
432
+ else
433
+ this.#advance();
434
+ }
435
+ if (depth > 0)
436
+ throw new SqlTokenizeError("Unterminated block comment", this.#range(start));
437
+ }
438
+ }
439
+ }
440
+ #atEnd() {
441
+ return this.#index >= this.#source.length;
442
+ }
443
+ #peek(offset = 0) {
444
+ return this.#source[this.#index + offset] ?? "\0";
445
+ }
446
+ #advance() {
447
+ const char = this.#source[this.#index] ?? "\0";
448
+ this.#index += 1;
449
+ if (char === "\n") {
450
+ this.#line += 1;
451
+ this.#column = 1;
452
+ }
453
+ else
454
+ this.#column += 1;
455
+ return char;
456
+ }
457
+ #position() {
458
+ return { index: this.#index, line: this.#line, column: this.#column };
459
+ }
460
+ #range(start) {
461
+ return { start: start.index, end: this.#index, line: start.line, column: start.column };
462
+ }
463
+ #token(kind, text, value, start) {
464
+ return { kind, text, value, range: this.#range(start) };
465
+ }
466
+ }
467
+ export function tokenize(source, options = {}) {
468
+ return new Scanner(source, options).scan();
469
+ }
470
+ //# sourceMappingURL=tokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../../../../src/parser/tokenizer.ts"],"names":[],"mappings":"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"}