@velarscript/compiler 0.12.1 → 0.13.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 (109) hide show
  1. package/dist/advisory-suppression.d.ts +62 -0
  2. package/dist/advisory-suppression.d.ts.map +1 -0
  3. package/dist/advisory-suppression.js +179 -0
  4. package/dist/advisory-suppression.js.map +1 -0
  5. package/dist/analyzer.d.ts +405 -17
  6. package/dist/analyzer.d.ts.map +1 -1
  7. package/dist/analyzer.js +1755 -211
  8. package/dist/analyzer.js.map +1 -1
  9. package/dist/ast.d.ts +6 -3
  10. package/dist/ast.d.ts.map +1 -1
  11. package/dist/ast.js.map +1 -1
  12. package/dist/binding-stability.d.ts +22 -0
  13. package/dist/binding-stability.d.ts.map +1 -0
  14. package/dist/binding-stability.js +63 -0
  15. package/dist/binding-stability.js.map +1 -0
  16. package/dist/collection-lowering-runtime.d.ts +1 -1
  17. package/dist/collection-lowering-runtime.d.ts.map +1 -1
  18. package/dist/collection-lowering-runtime.js +183 -56
  19. package/dist/collection-lowering-runtime.js.map +1 -1
  20. package/dist/diagnostic.d.ts +34 -0
  21. package/dist/diagnostic.d.ts.map +1 -1
  22. package/dist/diagnostic.js +11 -1
  23. package/dist/diagnostic.js.map +1 -1
  24. package/dist/embedded-javascript.d.ts +12 -1
  25. package/dist/embedded-javascript.d.ts.map +1 -1
  26. package/dist/embedded-javascript.js +111 -2
  27. package/dist/embedded-javascript.js.map +1 -1
  28. package/dist/embedded-module.d.ts.map +1 -1
  29. package/dist/embedded-module.js +22 -0
  30. package/dist/embedded-module.js.map +1 -1
  31. package/dist/emitter.d.ts +83 -1
  32. package/dist/emitter.d.ts.map +1 -1
  33. package/dist/emitter.js +518 -41
  34. package/dist/emitter.js.map +1 -1
  35. package/dist/error-runtime.d.ts +9 -0
  36. package/dist/error-runtime.d.ts.map +1 -1
  37. package/dist/error-runtime.js +21 -0
  38. package/dist/error-runtime.js.map +1 -1
  39. package/dist/extension.d.ts +5 -2
  40. package/dist/extension.d.ts.map +1 -1
  41. package/dist/extension.js +2 -1
  42. package/dist/extension.js.map +1 -1
  43. package/dist/formatter.d.ts.map +1 -1
  44. package/dist/formatter.js +222 -91
  45. package/dist/formatter.js.map +1 -1
  46. package/dist/index.d.ts +10 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +43 -5
  49. package/dist/index.js.map +1 -1
  50. package/dist/interpolated-string.d.ts.map +1 -1
  51. package/dist/interpolated-string.js +29 -2
  52. package/dist/interpolated-string.js.map +1 -1
  53. package/dist/json-runtime.d.ts.map +1 -1
  54. package/dist/json-runtime.js +27 -3
  55. package/dist/json-runtime.js.map +1 -1
  56. package/dist/lexer.d.ts +217 -1
  57. package/dist/lexer.d.ts.map +1 -1
  58. package/dist/lexer.js +799 -37
  59. package/dist/lexer.js.map +1 -1
  60. package/dist/limits.d.ts +9 -0
  61. package/dist/limits.d.ts.map +1 -1
  62. package/dist/limits.js +9 -0
  63. package/dist/limits.js.map +1 -1
  64. package/dist/mechanical-fix.d.ts.map +1 -1
  65. package/dist/mechanical-fix.js +38 -0
  66. package/dist/mechanical-fix.js.map +1 -1
  67. package/dist/parser.d.ts +30 -1
  68. package/dist/parser.d.ts.map +1 -1
  69. package/dist/parser.js +137 -21
  70. package/dist/parser.js.map +1 -1
  71. package/dist/promise-runtime.d.ts +20 -1
  72. package/dist/promise-runtime.d.ts.map +1 -1
  73. package/dist/promise-runtime.js +38 -3
  74. package/dist/promise-runtime.js.map +1 -1
  75. package/dist/reactive-bridge-runtime.d.ts.map +1 -1
  76. package/dist/reactive-bridge-runtime.js +7 -1
  77. package/dist/reactive-bridge-runtime.js.map +1 -1
  78. package/dist/runtime-abi.d.ts +21 -1
  79. package/dist/runtime-abi.d.ts.map +1 -1
  80. package/dist/runtime-abi.js +23 -3
  81. package/dist/runtime-abi.js.map +1 -1
  82. package/dist/source-names.d.ts +26 -0
  83. package/dist/source-names.d.ts.map +1 -1
  84. package/dist/source-names.js +49 -5
  85. package/dist/source-names.js.map +1 -1
  86. package/dist/source.d.ts.map +1 -1
  87. package/dist/source.js +13 -0
  88. package/dist/source.js.map +1 -1
  89. package/dist/stable-order.d.ts +16 -0
  90. package/dist/stable-order.d.ts.map +1 -0
  91. package/dist/stable-order.js +18 -0
  92. package/dist/stable-order.js.map +1 -0
  93. package/dist/text-runtime.d.ts.map +1 -1
  94. package/dist/text-runtime.js +182 -41
  95. package/dist/text-runtime.js.map +1 -1
  96. package/dist/token.d.ts +11 -0
  97. package/dist/token.d.ts.map +1 -1
  98. package/dist/token.js.map +1 -1
  99. package/dist/type-registry-runtime.d.ts.map +1 -1
  100. package/dist/type-registry-runtime.js +8 -1
  101. package/dist/type-registry-runtime.js.map +1 -1
  102. package/dist/type-validation-runtime.d.ts.map +1 -1
  103. package/dist/type-validation-runtime.js +129 -1
  104. package/dist/type-validation-runtime.js.map +1 -1
  105. package/dist/types.d.ts +17 -1
  106. package/dist/types.d.ts.map +1 -1
  107. package/dist/types.js +161 -17
  108. package/dist/types.js.map +1 -1
  109. package/package.json +1 -1
package/dist/lexer.d.ts CHANGED
@@ -1,9 +1,14 @@
1
- import { type Diagnostic } from "./diagnostic.ts";
1
+ import { type AdvisorySuppression } from "./advisory-suppression.ts";
2
+ import { type Advisory, type Diagnostic } from "./diagnostic.ts";
2
3
  import type { CompilerLexicalExtension } from "./extension.ts";
3
4
  import { type Token } from "./token.ts";
4
5
  export interface LexResult {
5
6
  readonly tokens: readonly Token[];
6
7
  readonly diagnostics: readonly Diagnostic[];
8
+ /** D89: the advisory channel, accumulated beside the diagnostics and never merged into them. */
9
+ readonly advisories: readonly Advisory[];
10
+ /** D89: the reasoned `velar-allow` suppressions this module's line comments carry. */
11
+ readonly suppressions: readonly AdvisorySuppression[];
7
12
  }
8
13
  export declare class Lexer {
9
14
  private readonly text;
@@ -12,11 +17,22 @@ export declare class Lexer {
12
17
  private readonly numericSuffixes;
13
18
  private readonly tokens;
14
19
  private readonly diagnostics;
20
+ private readonly advisories;
21
+ private readonly suppressions;
15
22
  private readonly diagnosedBidirectionalOffsets;
16
23
  private readonly indentStack;
24
+ private readonly classBodyStack;
25
+ private readonly openBrackets;
17
26
  private index;
18
27
  private atLineStart;
28
+ private bracketLineStart;
19
29
  private nesting;
30
+ private logicalLineIndent;
31
+ private scannedLineStart;
32
+ private scannedTo;
33
+ private cachedLineEndFrom;
34
+ private cachedLineEnd;
35
+ private semicolonRunEnd;
20
36
  private readonly bracketFragment;
21
37
  private readonly scanSourceHygiene;
22
38
  constructor(text: string, extensions?: readonly CompilerLexicalExtension[], options?: {
@@ -25,14 +41,152 @@ export declare class Lexer {
25
41
  });
26
42
  lex(): LexResult;
27
43
  private readIndentation;
44
+ /** The width of a leading member step, or 0 where the line does not open with one. */
45
+ private leadingDotWidth;
46
+ /**
47
+ * Whether the leading-dot line at `width` joins the line above it. Two
48
+ * conditions, and the file's own contract has always claimed both:
49
+ *
50
+ * - It is the *next* line. The backward walk used to skip an unbounded run of
51
+ * `newline` tokens, so a chain joined a value that appeared any number of
52
+ * blank lines and whole-line comments earlier — the case the header comment
53
+ * says "never join accidentally" (D90, compiler-front-10). One `newline`
54
+ * token is the line that ended the statement; a second is a blank or
55
+ * comment line, and the statement ended there.
56
+ * - It is indented past the statement it continues. The charter called the
57
+ * deeper indentation canonical and nothing enforced it, so a column-0
58
+ * `.sorted()` dedented out of a function body and silently became part of
59
+ * it. `logicalLineIndent` is the *statement's* indentation rather than the
60
+ * previous physical line's, so every line of one chain answers to one rule.
61
+ */
28
62
  private isChainContinuation;
63
+ /**
64
+ * Whether the logical line that just ended opens a class body. Read by the
65
+ * member-name exemption: `def with(...)` declares a member here and a binding
66
+ * anywhere else, and only the enclosing block distinguishes them.
67
+ */
68
+ private opensClassBody;
29
69
  private readNewline;
70
+ /**
71
+ * D90 (compiler-front-14): an unclosed bracket used to swallow the rest of
72
+ * the module. While `nesting > 0` no newline token is emitted and no
73
+ * indentation is read, so one mistyped `(` turned every declaration below it
74
+ * into a continuation of one logical line — a file of fifty exports became
75
+ * one symbol, and none of the reported diagnostics named the bracket.
76
+ *
77
+ * Recovery is narrow because line breaks inside brackets really are
78
+ * insignificant: `compute(` with its arguments at column 0 is legal and must
79
+ * keep compiling, so indentation alone decides nothing. What decides is a
80
+ * physical line that begins a declaration or a statement — a word no
81
+ * bracketed expression can continue with — at or below the indentation of the
82
+ * line that opened the bracket. An indentation-significant language can read
83
+ * on from there; a brace language cannot.
84
+ */
85
+ private recoverUnclosedBrackets;
86
+ private openBracket;
87
+ private closeBracket;
30
88
  private readComment;
89
+ /**
90
+ * D89 A1: `//` is VelarScript's only comment spelling, so a Python author's
91
+ * floor division reads as a finished line followed by a comment and the
92
+ * compiler has nothing to object to. `#` cannot take the comment role over:
93
+ * of the branches the `#` dispatch reads (`readJavaScriptPrivateIdentifier`,
94
+ * `readHexColor`, `readHashComment`), `readHexColor` carries bare
95
+ * hexadecimal colors — a hot path in a language with `look:` — and a `#`
96
+ * that opened a comment would swallow `#ff0000` and the rest of its line
97
+ * instead of guiding it to the quoted spelling. With no comment spelling
98
+ * left to give up, an advisory is the only remaining move.
99
+ *
100
+ * The trigger is narrow on both sides. D89 asks for a syntactically complete
101
+ * expression or assignment ahead of the `//`, which here means three things:
102
+ * the line carries code, every bracket *this physical line* opened is closed
103
+ * before the comment (an unclosed one leaves the line unfinished, so
104
+ * `print( // 2` is silent), and the last token can end a dividend. The
105
+ * bracket test counts opens and closes on the line itself rather than reading
106
+ * `nesting`: a bracket opened on an earlier line and closed on a later one
107
+ * leaves the text before `//` complete, so `print(` / ` total // 2` / `)`
108
+ * is exactly the mistake this advisory exists for and used to compile in
109
+ * silence (D90). The comment's own text — with any `velar-allow` clause
110
+ * removed, which is what `contentEnd` is for — must then be a bare arithmetic
111
+ * body carrying a digit and no letter anywhere, so `// TODO`,
112
+ * `// 2. then handle X`, a bare `//`, and a whole-line comment are all
113
+ * silent.
114
+ *
115
+ * A bracket fragment is exempt because its lexer holds the fragment's text
116
+ * rather than the module's: `lineStart` there answers with the fragment's own
117
+ * beginning, and "the rest of this line is a comment" would be a claim about
118
+ * an interpolation rather than about a physical line.
119
+ *
120
+ * No mechanical fix is registered: deciding that the comment really was a
121
+ * divisor is the judgment D38 §48 keeps out of the fix registry.
122
+ */
123
+ private adviseFloorDivisionComment;
124
+ /**
125
+ * Whether a bracket opened on this physical line is still open at the
126
+ * comment. This is the "syntactically complete" half of A1's trigger that
127
+ * `nesting` was standing in for: `nesting` also counts a bracket opened three
128
+ * lines up, whose text before the `//` is complete all the same.
129
+ */
130
+ private hasBracketOpenedOnLine;
131
+ /**
132
+ * What Python's `//` would have divided: the primary expression the comment
133
+ * follows, read back from the source so the advisory quotes the author's own
134
+ * spelling. The walk stops at the first operator or keyword outside brackets,
135
+ * because `//` binds as tightly as `*` — in `a + b // 2` the dividend is `b`,
136
+ * and naming `a + b` would hand back a rewrite that changes the result.
137
+ *
138
+ * A leading unary sign belongs to the dividend. Python's `-7 // 2` is -4, so
139
+ * quoting `7` and suggesting `(7 / 2).floor()` — which answers 3 — is the same
140
+ * class of wrong rewrite the divisor side used to hand back. The sign is unary
141
+ * exactly when nothing that could end an operand stands in front of it, which
142
+ * keeps the binary reading in `a - 7 // 2`, where the dividend is still `7`.
143
+ *
144
+ * `target` is the name the value lands in, and only a plain `=` produces one:
145
+ * a compound assignment reads its target as well as writing it, so calling it
146
+ * the receiver would be a second claim this advisory has not checked.
147
+ */
148
+ private dividendBeforeComment;
31
149
  private readBlockComment;
32
150
  private blockCommentOwnsLine;
33
151
  private readIdentifier;
152
+ /**
153
+ * The three positions in which a name is a member name rather than a binding:
154
+ * after a member step, as a record-literal key, and as the name of a member
155
+ * declared in a class body. The first two are the reads — `q.with("cte")`,
156
+ * `{with: 1}` — and the third is the declaration an extern module needs to
157
+ * describe such an API at all.
158
+ *
159
+ * A class body is the only place the declaration is legal: `def with(...)`
160
+ * outside one binds a name, and the generated module would say
161
+ * `function with`, which is not JavaScript.
162
+ */
163
+ private isMemberNamePosition;
164
+ /**
165
+ * D90 (coherence): the one position where `this` is the Python receiver
166
+ * reflex rather than JavaScript's dynamic receiver — a parameter name in the
167
+ * list of an instance method or a constructor inside a class body. The
168
+ * analyzer owns that report, because only it knows the declaration carries
169
+ * an implicit receiver, and its rewrite deletes the parameter instead of
170
+ * renaming it to a spelling that is an error in the same position.
171
+ *
172
+ * The walk is paren-balanced so a default value cannot be mistaken for the
173
+ * list that encloses it — `def m(a = f(this))` is an ordinary receiver read
174
+ * — and `static def make(this)` is excluded because a static method has no
175
+ * receiver to delete, so the rename is still the honest answer there.
176
+ */
177
+ private isReceiverParameterPosition;
34
178
  private readNumber;
35
179
  private readRadixNumber;
180
+ /**
181
+ * A number token, carrying the author's own spelling whenever the value it
182
+ * holds is spelled differently — `1_000` loses its separators and `0X20`
183
+ * loses its uppercase prefix on the way to the token. D90 R6 quotes the
184
+ * literal back when it is not exactly representable, and it must quote what
185
+ * was written: reporting `'10000000000000000001'` for a source line that
186
+ * reads `1_000_000_000_000_000_000_1` sends the author looking for text that
187
+ * is not there.
188
+ */
189
+ private pushNumber;
36
190
  private isRadixDigit;
37
191
  /**
38
192
  * LOK-I5: `%` right after a number is the percentage unit only where a
@@ -45,6 +199,49 @@ export declare class Lexer {
45
199
  private readDigitsWithSeparators;
46
200
  private readString;
47
201
  private readEmbeddedJavaScript;
202
+ /**
203
+ * D89 A5/A6: JavaScript's `${...}` never interpolates in VelarScript. The
204
+ * charter keeps it literal on purpose — generating JavaScript source is a
205
+ * real use of these literals — so the spelling cannot become an error, and a
206
+ * string that carries it compiles in silence with a meaning the JavaScript
207
+ * reflex behind it did not intend. That is D89's admission shape exactly,
208
+ * on both sides of the `f` prefix:
209
+ *
210
+ * - A5, a plain double-quoted or backtick string: nothing interpolates, the
211
+ * `${name}` stays text. The way out is the `f` prefix with `{name}`.
212
+ * - A6, an `f` or `rf` string: the `$` ahead of `{` keeps that brace
213
+ * literal, so the author who wrote the prefix *and* the JavaScript
214
+ * spelling still gets text. The way out is dropping the `$`.
215
+ *
216
+ * The non-triggers, each deliberate: an empty `${}` or an unclosed `${`
217
+ * carries no expression to interpolate; a raw `r"..."` string is the author
218
+ * asking for literal text by name, so the deliberate-literal reading wins
219
+ * there (`rf` still triggers A6 — its rawness is about backslashes, not
220
+ * about interpolation); a single-quoted string is already VEL1005; an
221
+ * unterminated string is already VEL1003; and an inline `extern js` /
222
+ * `unsafe js` block never reaches this method at all — it is scanned by
223
+ * `readEmbeddedJavaScript`, where `${...}` is documented literal
224
+ * JavaScript. One advisory speaks per literal: the rewrite names the whole
225
+ * string, so a second occurrence adds nothing the first did not say.
226
+ *
227
+ * The fix is registered only where D38 §48's no-judgment bar holds: every
228
+ * `${...}` well-formed, every body a plain dotted name path (see
229
+ * `interpolationPathBody`), no `$` immediately ahead of an occurrence's own
230
+ * `$` — JavaScript's `$${x}` spells a literal `$` before an interpolation,
231
+ * and deleting the occurrence's `$` leaves `${x}`, whose surviving `$`
232
+ * holds the brace literal all over again, so the quoted rewrite would not
233
+ * interpolate — and, for A5, no bare brace outside the occurrences, because
234
+ * the `f` prefix would turn `{` into an interpolation opener and `{{` into
235
+ * a single literal brace. Everything else keeps the message and loses the
236
+ * one-click edit.
237
+ *
238
+ * A bracket fragment is exempt for A1's reason: its lexer holds the
239
+ * fragment's text rather than the module's, so a span there would not land
240
+ * on the physical line a `velar-allow` reads.
241
+ */
242
+ private adviseTemplateInterpolation;
243
+ /** The literal's source text with each occurrence's `$` removed, for the message that quotes the rewrite. */
244
+ private literalWithoutDollars;
48
245
  private diagnoseStringContents;
49
246
  private decodeStringText;
50
247
  private legacyTripleQuotePrefix;
@@ -72,7 +269,26 @@ export declare class Lexer {
72
269
  private diagnoseForbiddenSourceCharacters;
73
270
  private isBidirectionalControl;
74
271
  private isForbiddenLiteralControl;
272
+ /**
273
+ * The start of the physical line `index` sits on. D90 (compiler-front-2): the
274
+ * backward scan this used to be is O(column) per call, and its callers — A1,
275
+ * the block-comment reader, the semicolon fix, and every opening bracket —
276
+ * run once per token, so one long physical line cost O(n²). A line of 20000
277
+ * semicolons took 673 ms and a 4 MiB one would have taken hours, with nothing
278
+ * to stop it: a ';' produces no token, so `MAX_TOKENS` never fires.
279
+ *
280
+ * The offsets those callers ask about only move forward, so the scan is
281
+ * carried across the file once and each call pays for the characters since
282
+ * the last one. An earlier offset still falls back to the backward scan,
283
+ * which is correct and, being off the hot path, is not the cost.
284
+ */
75
285
  private lineStart;
286
+ /**
287
+ * The end of the physical line `index` sits on. Every offset between a line's
288
+ * start and its end shares that end, so one line answers every call about it
289
+ * once — which is what keeps a line of N semicolons from paying N forward
290
+ * scans of its own tail.
291
+ */
76
292
  private lineEnd;
77
293
  private invalidCharacter;
78
294
  private isAtEnd;
@@ -1 +1 @@
1
- {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"AACA,OAAO,EAAkD,KAAK,UAAU,EAAsB,MAAM,iBAAiB,CAAC;AAEtH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAK/D,OAAO,EAAgB,KAAK,KAAK,EAAkB,MAAM,YAAY,CAAC;AA0BtE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC7C;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAA6B;IAC3E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuD;IAMzF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;IAC1E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAqB;IACnE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAO;IACnC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAK;IAKpB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAE5C,YACE,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,SAAS,wBAAwB,EAAO,EACpD,OAAO,GAAE;QAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAO,EAY3F;IAED,GAAG,IAAI,SAAS,CAgRf;IAED,OAAO,CAAC,eAAe;IA0DvB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,cAAc;IAiDtB,OAAO,CAAC,UAAU;IA0ElB,OAAO,CAAC,eAAe;IAqCvB,OAAO,CAAC,YAAY;IAOpB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,UAAU;IAqDlB,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,sBAAsB;IA2C9B,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,QAAQ;IAIhB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,wBAAwB;IAMhC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,+BAA+B;IAuBvC,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,iCAAiC;IAiBzC,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,OAAO;CAGhB"}
1
+ {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"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"}