@azerothjs/compiler 0.3.0-alpha.3 → 0.4.0-beta.2

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.
@@ -0,0 +1,110 @@
1
+ /**
2
+ * True for a single whitespace character (space, tab, newline, etc.).
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * isWhitespace(' '); // true
7
+ * isWhitespace('x'); // false
8
+ * ```
9
+ */
10
+ export declare function isWhitespace(ch: string): boolean;
11
+ /**
12
+ * True for a character that can begin an identifier (letter, `_`, or `$`).
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * isIdentStart('h'); // true
17
+ * isIdentStart('1'); // false (digits cannot start an identifier)
18
+ * ```
19
+ */
20
+ export declare function isIdentStart(ch: string): boolean;
21
+ /**
22
+ * True for a character allowed inside an identifier (an ident-start char or a digit).
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * isIdentPart('1'); // true (digits are fine after the first char)
27
+ * isIdentPart('-'); // false
28
+ * ```
29
+ */
30
+ export declare function isIdentPart(ch: string): boolean;
31
+ /**
32
+ * Skips a `//` line comment; returns the index of the newline (or EOF).
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * const src = 'a // note\nb';
37
+ * skipLineComment(src, 2); // 9 (the index of the '\n')
38
+ * ```
39
+ */
40
+ export declare function skipLineComment(src: string, i: number): number;
41
+ /**
42
+ * Skips a block comment (slash-star to star-slash); returns the index just after it.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const src = '/* hi *' + '/x';
47
+ * skipBlockComment(src, 0); // points just past the comment, at 'x'
48
+ * ```
49
+ */
50
+ export declare function skipBlockComment(src: string, i: number): number;
51
+ /**
52
+ * Skips a quoted string (`'` or `"`); `i` points at the opening quote.
53
+ * Returns the index just after the closing quote.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const src = 'x = "hi" + y';
58
+ * skipString(src, 4); // 8 (just past the closing '"')
59
+ * ```
60
+ */
61
+ export declare function skipString(src: string, i: number): number;
62
+ /**
63
+ * Skips a template literal; `i` points at the opening backtick.
64
+ * Handles `${ ... }` substitutions by recursing through `skipBalanced`
65
+ * (which itself re-enters here for nested templates).
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * const src = 'tag`a${ b }c` + d';
70
+ * skipTemplate(src, 3); // 13 (just past the closing backtick)
71
+ * ```
72
+ */
73
+ export declare function skipTemplate(src: string, i: number): number;
74
+ /**
75
+ * Skips a regex literal (including trailing flags); `i` points at the leading `/`.
76
+ * Returns the index just after the last flag.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * const src = 'x = /ab+/gi;';
81
+ * skipRegex(src, 4); // 11 (just past the 'gi' flags)
82
+ * ```
83
+ */
84
+ export declare function skipRegex(src: string, i: number): number;
85
+ /**
86
+ * Given `i` at an opening bracket (`(`, `[`, or `{`), returns the index just
87
+ * after the matching close, skipping strings, templates, comments, and nested
88
+ * brackets so braces inside them don't count.
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * const src = '{ a: { b: 1 } } rest';
93
+ * skipBalanced(src, 0); // 15 (just past the matching outer '}')
94
+ * ```
95
+ */
96
+ export declare function skipBalanced(src: string, openIndex: number): number;
97
+ /**
98
+ * Finds the next `<` that begins a markup element/fragment in expression
99
+ * position, scanning from `from` and correctly skipping all non-code spans.
100
+ * Returns its index, or -1 if there is no more markup.
101
+ *
102
+ * @example
103
+ * ```ts
104
+ * findMarkupStart('return <h1>Hi</h1>;', 0); // 7 (the '<' of <h1>)
105
+ * findMarkupStart('a < b', 0); // -1 (a less-than operator, not markup)
106
+ * findMarkupStart('const s = "<p>";', 0); // -1 (the '<' is inside a string)
107
+ * ```
108
+ */
109
+ export declare function findMarkupStart(src: string, from: number): number;
110
+ //# sourceMappingURL=scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAiBA;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAGhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAGhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAwB3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAqCxD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAmDnE;AAqJD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAmGjE"}
@@ -0,0 +1,443 @@
1
+ // Context-aware lexing helpers for finding markup inside arbitrary JS/TS
2
+ // without a full parser. Two jobs:
3
+ //
4
+ // 1. Skip non-code spans correctly - line/block comments, single/double
5
+ // quoted strings, template literals (with nested `${ ... }`), and regex
6
+ // literals - so a `<`, `{`, or `}` inside them is never mistaken for
7
+ // syntax.
8
+ //
9
+ // 2. Decide whether a `<` (or `/`) sits in expression position, which is
10
+ // what distinguishes markup from a less-than operator (and a regex from
11
+ // a divide). We track the previous significant token to make that call,
12
+ // the same trick hand-written JSX transforms use.
13
+ //
14
+ // These are pure functions over (src, index) -> nextIndex, shared with the
15
+ // parser (which also needs balanced-brace capture for `{...}` holes and
16
+ // `(...)`/`[...]`).
17
+ /**
18
+ * True for a single whitespace character (space, tab, newline, etc.).
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * isWhitespace(' '); // true
23
+ * isWhitespace('x'); // false
24
+ * ```
25
+ */
26
+ export function isWhitespace(ch) {
27
+ return ch === ' ' || ch === '\t' || ch === '\n' || ch === '\r' || ch === '\f' || ch === '\v';
28
+ }
29
+ /**
30
+ * True for a character that can begin an identifier (letter, `_`, or `$`).
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * isIdentStart('h'); // true
35
+ * isIdentStart('1'); // false (digits cannot start an identifier)
36
+ * ```
37
+ */
38
+ export function isIdentStart(ch) {
39
+ return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch === '_' || ch === '$';
40
+ }
41
+ /**
42
+ * True for a character allowed inside an identifier (an ident-start char or a digit).
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * isIdentPart('1'); // true (digits are fine after the first char)
47
+ * isIdentPart('-'); // false
48
+ * ```
49
+ */
50
+ export function isIdentPart(ch) {
51
+ return isIdentStart(ch) || (ch >= '0' && ch <= '9');
52
+ }
53
+ /**
54
+ * Skips a `//` line comment; returns the index of the newline (or EOF).
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * const src = 'a // note\nb';
59
+ * skipLineComment(src, 2); // 9 (the index of the '\n')
60
+ * ```
61
+ */
62
+ export function skipLineComment(src, i) {
63
+ i += 2;
64
+ while (i < src.length && src[i] !== '\n') {
65
+ i++;
66
+ }
67
+ return i;
68
+ }
69
+ /**
70
+ * Skips a block comment (slash-star to star-slash); returns the index just after it.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * const src = '/* hi *' + '/x';
75
+ * skipBlockComment(src, 0); // points just past the comment, at 'x'
76
+ * ```
77
+ */
78
+ export function skipBlockComment(src, i) {
79
+ i += 2;
80
+ while (i < src.length && !(src[i] === '*' && src[i + 1] === '/')) {
81
+ i++;
82
+ }
83
+ return Math.min(i + 2, src.length);
84
+ }
85
+ /**
86
+ * Skips a quoted string (`'` or `"`); `i` points at the opening quote.
87
+ * Returns the index just after the closing quote.
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * const src = 'x = "hi" + y';
92
+ * skipString(src, 4); // 8 (just past the closing '"')
93
+ * ```
94
+ */
95
+ export function skipString(src, i) {
96
+ const quote = src[i];
97
+ i++;
98
+ while (i < src.length) {
99
+ const ch = src[i];
100
+ if (ch === '\\') {
101
+ i += 2;
102
+ continue;
103
+ }
104
+ if (ch === quote) {
105
+ return i + 1;
106
+ }
107
+ i++;
108
+ }
109
+ return i;
110
+ }
111
+ /**
112
+ * Skips a template literal; `i` points at the opening backtick.
113
+ * Handles `${ ... }` substitutions by recursing through `skipBalanced`
114
+ * (which itself re-enters here for nested templates).
115
+ *
116
+ * @example
117
+ * ```ts
118
+ * const src = 'tag`a${ b }c` + d';
119
+ * skipTemplate(src, 3); // 13 (just past the closing backtick)
120
+ * ```
121
+ */
122
+ export function skipTemplate(src, i) {
123
+ i++; // past opening `
124
+ while (i < src.length) {
125
+ const ch = src[i];
126
+ if (ch === '\\') {
127
+ i += 2;
128
+ continue;
129
+ }
130
+ if (ch === '`') {
131
+ return i + 1;
132
+ }
133
+ if (ch === '$' && src[i + 1] === '{') {
134
+ // The substitution is balanced like any `{ ... }` block.
135
+ i = skipBalanced(src, i + 1);
136
+ continue;
137
+ }
138
+ i++;
139
+ }
140
+ return i;
141
+ }
142
+ /**
143
+ * Skips a regex literal (including trailing flags); `i` points at the leading `/`.
144
+ * Returns the index just after the last flag.
145
+ *
146
+ * @example
147
+ * ```ts
148
+ * const src = 'x = /ab+/gi;';
149
+ * skipRegex(src, 4); // 11 (just past the 'gi' flags)
150
+ * ```
151
+ */
152
+ export function skipRegex(src, i) {
153
+ i++; // past /
154
+ let inClass = false;
155
+ while (i < src.length) {
156
+ const ch = src[i];
157
+ if (ch === '\\') {
158
+ i += 2;
159
+ continue;
160
+ }
161
+ if (ch === '[') {
162
+ inClass = true;
163
+ }
164
+ else if (ch === ']') {
165
+ inClass = false;
166
+ }
167
+ else if (ch === '/' && !inClass) {
168
+ i++;
169
+ break;
170
+ }
171
+ else if (ch === '\n') {
172
+ break; // unterminated - bail rather than run away
173
+ }
174
+ i++;
175
+ }
176
+ // Trailing flags (g, i, m, ...).
177
+ while (i < src.length && isIdentPart(src[i])) {
178
+ i++;
179
+ }
180
+ return i;
181
+ }
182
+ /**
183
+ * Given `i` at an opening bracket (`(`, `[`, or `{`), returns the index just
184
+ * after the matching close, skipping strings, templates, comments, and nested
185
+ * brackets so braces inside them don't count.
186
+ *
187
+ * @example
188
+ * ```ts
189
+ * const src = '{ a: { b: 1 } } rest';
190
+ * skipBalanced(src, 0); // 15 (just past the matching outer '}')
191
+ * ```
192
+ */
193
+ export function skipBalanced(src, openIndex) {
194
+ const open = src[openIndex];
195
+ const close = open === '(' ? ')' : open === '[' ? ']' : '}';
196
+ let depth = 0;
197
+ let i = openIndex;
198
+ while (i < src.length) {
199
+ const ch = src[i];
200
+ if (ch === '/' && src[i + 1] === '/') {
201
+ i = skipLineComment(src, i);
202
+ continue;
203
+ }
204
+ if (ch === '/' && src[i + 1] === '*') {
205
+ i = skipBlockComment(src, i);
206
+ continue;
207
+ }
208
+ if (ch === '"' || ch === '\'') {
209
+ i = skipString(src, i);
210
+ continue;
211
+ }
212
+ if (ch === '`') {
213
+ i = skipTemplate(src, i);
214
+ continue;
215
+ }
216
+ if (ch === open) {
217
+ depth++;
218
+ i++;
219
+ continue;
220
+ }
221
+ if (ch === close) {
222
+ depth--;
223
+ i++;
224
+ if (depth === 0) {
225
+ return i;
226
+ }
227
+ continue;
228
+ }
229
+ i++;
230
+ }
231
+ return i; // unbalanced - caller treats as EOF
232
+ }
233
+ /** Keywords after which a `<` or `/` begins an expression (markup / regex). */
234
+ const EXPR_KEYWORDS = new Set([
235
+ 'return', 'typeof', 'instanceof', 'in', 'of', 'do', 'else',
236
+ 'yield', 'await', 'case', 'delete', 'void', 'new'
237
+ ]);
238
+ /** Punctuators after which an expression (hence markup / regex) can start. */
239
+ const EXPR_CHARS = new Set([
240
+ '', '(', '{', '[', ',', ';', ':', '?', '=', '>', '<',
241
+ '&', '|', '!', '~', '+', '-', '*', '/', '%', '^', '\n'
242
+ ]);
243
+ /**
244
+ * Whether a `<` / `/` at the current point is in expression position
245
+ * (markup / regex) rather than a binary operator. Based on the previous
246
+ * significant token: an identifier or literal that ends an expression means
247
+ * binary; a punctuator/keyword that expects an operand means expression.
248
+ */
249
+ function isExpressionPosition(prevChar, prevWord) {
250
+ if (prevWord !== '') {
251
+ return EXPR_KEYWORDS.has(prevWord);
252
+ }
253
+ return EXPR_CHARS.has(prevChar);
254
+ }
255
+ /**
256
+ * Given `i` at a `<` that opens a possible type-parameter list, scans to the
257
+ * index just past the matching `>`, or -1 if it doesn't balance as an
258
+ * angle-bracket region. Nested generics (`Array<Map<K, V>>`) nest the depth;
259
+ * an `=>` inside a function-type constraint (`<T extends () => void>`) is
260
+ * stepped over so its `>` doesn't close the list; and `(...)`/`[...]`/`{...}`
261
+ * regions (e.g. an object-literal default `<T = { a: 1 }>`) are skipped whole
262
+ * so their contents never affect the angle depth.
263
+ *
264
+ * @internal
265
+ */
266
+ function scanTypeParams(src, openIndex) {
267
+ let depth = 0;
268
+ let i = openIndex;
269
+ while (i < src.length) {
270
+ const ch = src[i];
271
+ if (ch === '/' && src[i + 1] === '/') {
272
+ i = skipLineComment(src, i);
273
+ continue;
274
+ }
275
+ if (ch === '/' && src[i + 1] === '*') {
276
+ i = skipBlockComment(src, i);
277
+ continue;
278
+ }
279
+ if (ch === '"' || ch === '\'') {
280
+ i = skipString(src, i);
281
+ continue;
282
+ }
283
+ if (ch === '`') {
284
+ i = skipTemplate(src, i);
285
+ continue;
286
+ }
287
+ if (ch === '(' || ch === '[' || ch === '{') {
288
+ i = skipBalanced(src, i);
289
+ continue;
290
+ }
291
+ // An arrow inside a function-type constraint - step over it so the `>`
292
+ // of `=>` isn't counted as a closing angle bracket.
293
+ if (ch === '=' && src[i + 1] === '>') {
294
+ i += 2;
295
+ continue;
296
+ }
297
+ if (ch === '<') {
298
+ depth++;
299
+ i++;
300
+ continue;
301
+ }
302
+ if (ch === '>') {
303
+ depth--;
304
+ i++;
305
+ if (depth === 0) {
306
+ return i;
307
+ }
308
+ continue;
309
+ }
310
+ i++;
311
+ }
312
+ return -1;
313
+ }
314
+ /**
315
+ * Decides whether a `<` in expression position opens a generic arrow function's
316
+ * type-parameter list (`<T>(x) => x`, `<T extends U>(a: T): T => a`) rather than
317
+ * markup. TSX has the same ambiguity and resolves it the same way: a
318
+ * type-parameter list is followed by the arrow's parameter parenthesis, and then
319
+ * either a return-type annotation (`:`) or the arrow itself (`=>`). Markup never
320
+ * has that shape, so requiring all three keeps real elements (`<div>(x)</div>`)
321
+ * out.
322
+ *
323
+ * Returns the index just past the `<...>` type-parameter list when it is a
324
+ * generic arrow (so the caller can resume scanning the arrow body, which may
325
+ * itself contain markup), or -1 otherwise.
326
+ *
327
+ * @internal
328
+ */
329
+ function tryGenericArrow(src, i) {
330
+ const afterAngles = scanTypeParams(src, i);
331
+ if (afterAngles === -1) {
332
+ return -1;
333
+ }
334
+ let k = afterAngles;
335
+ while (k < src.length && isWhitespace(src[k])) {
336
+ k++;
337
+ }
338
+ if (src[k] !== '(') {
339
+ return -1;
340
+ }
341
+ let m = skipBalanced(src, k);
342
+ while (m < src.length && isWhitespace(src[m])) {
343
+ m++;
344
+ }
345
+ if (src[m] === ':' || (src[m] === '=' && src[m + 1] === '>')) {
346
+ return afterAngles;
347
+ }
348
+ return -1;
349
+ }
350
+ /**
351
+ * Finds the next `<` that begins a markup element/fragment in expression
352
+ * position, scanning from `from` and correctly skipping all non-code spans.
353
+ * Returns its index, or -1 if there is no more markup.
354
+ *
355
+ * @example
356
+ * ```ts
357
+ * findMarkupStart('return <h1>Hi</h1>;', 0); // 7 (the '<' of <h1>)
358
+ * findMarkupStart('a < b', 0); // -1 (a less-than operator, not markup)
359
+ * findMarkupStart('const s = "<p>";', 0); // -1 (the '<' is inside a string)
360
+ * ```
361
+ */
362
+ export function findMarkupStart(src, from) {
363
+ let i = from;
364
+ let prevChar = '';
365
+ let prevWord = '';
366
+ while (i < src.length) {
367
+ const ch = src[i];
368
+ if (ch === '/' && src[i + 1] === '/') {
369
+ i = skipLineComment(src, i);
370
+ continue;
371
+ }
372
+ if (ch === '/' && src[i + 1] === '*') {
373
+ i = skipBlockComment(src, i);
374
+ continue;
375
+ }
376
+ if (ch === '"' || ch === '\'') {
377
+ i = skipString(src, i);
378
+ prevChar = '"';
379
+ prevWord = '';
380
+ continue;
381
+ }
382
+ if (ch === '`') {
383
+ i = skipTemplate(src, i);
384
+ prevChar = '`';
385
+ prevWord = '';
386
+ continue;
387
+ }
388
+ if (ch === '/' && isExpressionPosition(prevChar, prevWord)) {
389
+ i = skipRegex(src, i);
390
+ prevChar = '/';
391
+ prevWord = '';
392
+ continue;
393
+ }
394
+ if (isWhitespace(ch)) {
395
+ if (ch === '\n') {
396
+ // A newline only matters for the very specific ASI
397
+ // cases; keep prevChar so `a\n< b` stays a compare.
398
+ }
399
+ i++;
400
+ continue;
401
+ }
402
+ if (ch === '<') {
403
+ const next = src[i + 1];
404
+ if (isExpressionPosition(prevChar, prevWord) && (next === '>' || isIdentStart(next))) {
405
+ // A `<Ident...` in expression position is ambiguous: markup, or
406
+ // a generic arrow's type-parameter list (`<T>(x) => x`). The
407
+ // `<>` fragment is never a generic arrow, so only probe when a
408
+ // name follows.
409
+ if (next !== '>') {
410
+ const past = tryGenericArrow(src, i);
411
+ if (past !== -1) {
412
+ // Skip only the `<...>` list; the arrow body after it is
413
+ // ordinary code that may still contain markup.
414
+ prevChar = '>';
415
+ prevWord = '';
416
+ i = past;
417
+ continue;
418
+ }
419
+ }
420
+ return i;
421
+ }
422
+ prevChar = '<';
423
+ prevWord = '';
424
+ i++;
425
+ continue;
426
+ }
427
+ if (isIdentStart(ch)) {
428
+ let j = i + 1;
429
+ while (j < src.length && isIdentPart(src[j])) {
430
+ j++;
431
+ }
432
+ prevWord = src.slice(i, j);
433
+ prevChar = src[j - 1];
434
+ i = j;
435
+ continue;
436
+ }
437
+ prevChar = ch;
438
+ prevWord = '';
439
+ i++;
440
+ }
441
+ return -1;
442
+ }
443
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /** A Source Map v3 object (the shape tools and Vite expect). */
2
+ export interface SourceMapV3 {
3
+ version: 3;
4
+ sources: string[];
5
+ sourcesContent: string[];
6
+ names: string[];
7
+ mappings: string;
8
+ }
9
+ /** One mapping segment: a generated column to a source position. */
10
+ export interface RawSegment {
11
+ genColumn: number;
12
+ sourceLine: number;
13
+ sourceColumn: number;
14
+ }
15
+ /**
16
+ * Encodes a signed integer as a base64 VLQ (the source-map number format).
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * vlqEncode(0); // 'A'
21
+ * vlqEncode(1); // 'C' (1 << 1 = 2 -> base64 'C')
22
+ * vlqEncode(-1); // 'D' (sign bit set -> 3 -> base64 'D')
23
+ * ```
24
+ */
25
+ export declare function vlqEncode(value: number): string;
26
+ /**
27
+ * Offsets at which each line of `text` begins (index 0 = line 0).
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * buildLineStarts('ab\ncd\n'); // [0, 3, 6]
32
+ * ```
33
+ */
34
+ export declare function buildLineStarts(text: string): number[];
35
+ /**
36
+ * Converts a byte offset to a 0-based `{ line, column }` location.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const starts = buildLineStarts('ab\ncd\n'); // [0, 3, 6]
41
+ * locationFor(4, starts); // { line: 1, column: 1 } (the 'd' on line 1)
42
+ * ```
43
+ */
44
+ export declare function locationFor(offset: number, lineStarts: number[]): {
45
+ line: number;
46
+ column: number;
47
+ };
48
+ /**
49
+ * Encodes per-line segment lists into the `mappings` string.
50
+ * `genColumn` is relative within a line (reset each line); the
51
+ * source fields are relative across the whole file, per the spec.
52
+ * A single source (index 0) is assumed.
53
+ *
54
+ * @example
55
+ * ```ts
56
+ * encodeMappings([
57
+ * [{ genColumn: 0, sourceLine: 0, sourceColumn: 0 }], // line 0 -> source 0:0
58
+ * [{ genColumn: 0, sourceLine: 1, sourceColumn: 0 }] // line 1 -> source 1:0
59
+ * ]);
60
+ * // 'AAAA;AACA' (one ';'-separated segment per generated line)
61
+ * ```
62
+ */
63
+ export declare function encodeMappings(lines: RawSegment[][]): string;
64
+ //# sourceMappingURL=sourcemap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourcemap.d.ts","sourceRoot":"","sources":["../src/sourcemap.ts"],"names":[],"mappings":"AAQA,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAExB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,oEAAoE;AACpE,MAAM,WAAW,UAAU;IAEvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB/C;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAWtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAiBlG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,GAAG,MAAM,CAyB5D"}