@chilts/weave 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.
@@ -0,0 +1,604 @@
1
+ import { lex } from '../lexer/index.js';
2
+ import { parse } from '../parser/index.js';
3
+ import { chunk, joinChunks, offsetMappings, lineCount, buildSourceMap } from './sourcemap.js';
4
+ export class CodegenError extends Error {
5
+ line;
6
+ col;
7
+ constructor(message, line, col) {
8
+ super(`${message} at line ${line}, col ${col}`);
9
+ this.name = 'CodegenError';
10
+ this.line = line;
11
+ this.col = col;
12
+ }
13
+ }
14
+ function capitalize(s) {
15
+ return s.charAt(0).toUpperCase() + s.slice(1);
16
+ }
17
+ function camelToKebab(name) {
18
+ return name.replace(/[A-Z]/g, m => '-' + m.toLowerCase());
19
+ }
20
+ function templateHasBlocks(node) {
21
+ function walk(n) {
22
+ if (n.type === 'Block')
23
+ return true;
24
+ if (n.type === 'Element')
25
+ return n.children.some(walk);
26
+ if (n.type === 'Conditional') {
27
+ if (n.consequent.some(walk))
28
+ return true;
29
+ for (const alt of n.alternates) {
30
+ if (alt.body.some(walk))
31
+ return true;
32
+ }
33
+ if (n.fallback?.some(walk))
34
+ return true;
35
+ }
36
+ if (n.type === 'Iteration')
37
+ return n.body.some(walk);
38
+ return false;
39
+ }
40
+ return node.body.some(walk);
41
+ }
42
+ function mapping(loc, genLine = 0) {
43
+ return { genLine, genCol: 0, srcLine: loc.line - 1, srcCol: loc.col - 1 };
44
+ }
45
+ class CodeGenerator {
46
+ formatted;
47
+ constructor(formatted = false) {
48
+ this.formatted = formatted;
49
+ }
50
+ ind(level) {
51
+ return ' '.repeat(level);
52
+ }
53
+ /**
54
+ * Join CodeChunks into comma-separated indented lines.
55
+ * Comment lines (starting with //) never receive trailing commas.
56
+ * Non-comment expressions get trailing commas only if more non-comment expressions follow.
57
+ */
58
+ joinWithCommentChunks(chunks, indent) {
59
+ const allMappings = [];
60
+ const lines = [];
61
+ let currentLine = 0;
62
+ for (let i = 0; i < chunks.length; i++) {
63
+ const c = chunks[i];
64
+ const isComment = c.code.startsWith('//');
65
+ if (isComment) {
66
+ lines.push(`${indent}${c.code}`);
67
+ }
68
+ else {
69
+ const hasMore = chunks.slice(i + 1).some(e => !e.code.startsWith('//'));
70
+ lines.push(hasMore ? `${indent}${c.code},` : `${indent}${c.code}`);
71
+ }
72
+ allMappings.push(...offsetMappings(c.mappings, currentLine));
73
+ currentLine += lineCount(c.code) + 1;
74
+ }
75
+ return { code: lines.join('\n'), mappings: allMappings };
76
+ }
77
+ genNode(node, indent = 0) {
78
+ switch (node.type) {
79
+ case 'Conditional':
80
+ return this.genConditional(node, indent);
81
+ case 'Iteration':
82
+ return this.genIteration(node, indent);
83
+ case 'Comment':
84
+ return null;
85
+ case 'PassthroughComment':
86
+ return chunk(`//${node.value}`, node.loc);
87
+ case 'Element':
88
+ return this.genElement(node, indent);
89
+ case 'Text':
90
+ return this.genText(node);
91
+ case 'BufferedCode':
92
+ return this.genBufferedCode(node);
93
+ case 'Doctype':
94
+ return this.genDoctype(node);
95
+ case 'Pipe':
96
+ return this.genPipe(node);
97
+ case 'Template':
98
+ return this.genTemplate(node, indent);
99
+ case 'Import':
100
+ return this.genImport(node);
101
+ case 'MixinDefinition':
102
+ return this.genMixinDefinition(node, indent);
103
+ case 'MixinCall':
104
+ return this.genMixinCall(node);
105
+ case 'Include':
106
+ return this.genInclude(node);
107
+ case 'Block':
108
+ return this.genBlock(node, indent);
109
+ case 'Extends':
110
+ return this.genExtends(node, indent);
111
+ case 'Document':
112
+ throw new CodegenError(`Not implemented: ${node.type}`, node.loc.line, node.loc.col);
113
+ }
114
+ }
115
+ // --- Conditional generation ---
116
+ genConditional(node, indent) {
117
+ const bi = this.formatted ? this.ind(indent + 1) : ' ';
118
+ const consequentChunk = this.genFragment(node.consequent, indent + 1);
119
+ let code = `${node.condition}\n${bi}? ${consequentChunk.code}`;
120
+ const mappings = [
121
+ mapping(node.loc),
122
+ ...offsetMappings(consequentChunk.mappings, 1),
123
+ ];
124
+ for (const alt of node.alternates) {
125
+ const altBodyChunk = this.genFragment(alt.body, indent + 1);
126
+ const prevLines = lineCount(code);
127
+ code += `\n${bi}: ${alt.condition}\n${bi}? ${altBodyChunk.code}`;
128
+ mappings.push(...offsetMappings(altBodyChunk.mappings, prevLines + 2));
129
+ }
130
+ if (node.fallback !== null) {
131
+ const fallbackChunk = this.genFragment(node.fallback, indent + 1);
132
+ const prevLines = lineCount(code);
133
+ code += `\n${bi}: ${fallbackChunk.code}`;
134
+ mappings.push(...offsetMappings(fallbackChunk.mappings, prevLines + 1));
135
+ }
136
+ else {
137
+ code += `\n${bi}: null`;
138
+ }
139
+ return { code, mappings };
140
+ }
141
+ // --- Iteration generation ---
142
+ genIteration(node, indent) {
143
+ const { variable, iterable } = this.parseForParams(node.params, node.loc);
144
+ const bodyChunk = this.genFragment(node.body, indent + 1);
145
+ // Wrap destructured variables in parens for arrow function
146
+ const param = variable.startsWith('{') || variable.startsWith('[')
147
+ ? `(${variable})`
148
+ : variable;
149
+ const bi = this.formatted ? this.ind(indent + 1) : ' ';
150
+ const pi = this.formatted ? this.ind(indent) : '';
151
+ const code = `${iterable}.map(${param} =>\n${bi}${bodyChunk.code}\n${pi})`;
152
+ const mappings = [
153
+ mapping(node.loc),
154
+ ...offsetMappings(bodyChunk.mappings, 1),
155
+ ];
156
+ return { code, mappings };
157
+ }
158
+ parseForParams(params, loc) {
159
+ const ofIndex = params.indexOf(' of ');
160
+ if (ofIndex === -1) {
161
+ throw new CodegenError(`Invalid for params: only "for...of" is supported, got "${params}"`, loc.line, loc.col);
162
+ }
163
+ const binding = params.slice(0, ofIndex).trim();
164
+ const iterable = params.slice(ofIndex + 4).trim();
165
+ const variable = binding.replace(/^(const|let)\s+/, '');
166
+ return { variable, iterable };
167
+ }
168
+ // --- Fragment helper ---
169
+ genFragment(nodes, indent) {
170
+ const chunks = nodes
171
+ .map(n => this.genNode(n, indent))
172
+ .filter((e) => e !== null);
173
+ // Comments cannot appear in single-expression contexts (ternaries, arrow bodies)
174
+ const nonComments = chunks.filter(c => !c.code.startsWith('//'));
175
+ if (nonComments.length === 0)
176
+ return chunk('null');
177
+ if (nonComments.length === 1)
178
+ return nonComments[0];
179
+ if (!this.formatted) {
180
+ const inner = this.joinWithCommentChunks(chunks, ' ');
181
+ const code = `h(Fragment, {},\n${inner.code}\n)`;
182
+ return { code, mappings: offsetMappings(inner.mappings, 1) };
183
+ }
184
+ const ci = this.ind(indent + 1);
185
+ const pi = this.ind(indent);
186
+ const inner = this.joinWithCommentChunks(chunks, ci);
187
+ const code = `h(Fragment, {},\n${inner.code}\n${pi})`;
188
+ return { code, mappings: offsetMappings(inner.mappings, 1) };
189
+ }
190
+ // --- Element generation ---
191
+ genElement(node, indent) {
192
+ const attrs = this.genAttrs(node);
193
+ const children = node.children
194
+ .map(c => this.genNode(c, indent + 1))
195
+ .filter((e) => e !== null);
196
+ if (children.length === 0) {
197
+ return chunk(`h("${node.tag}", ${attrs})`, node.loc);
198
+ }
199
+ const hasComments = children.some(c => c.code.startsWith('//'));
200
+ if (!this.formatted && !hasComments) {
201
+ const childrenStr = children.map(c => c.code).join(', ');
202
+ return chunk(`h("${node.tag}", ${attrs}, ${childrenStr})`, node.loc);
203
+ }
204
+ // Keep inline when all children are leaf nodes (text, expressions) and no comments
205
+ const leafTypes = new Set(['Text', 'BufferedCode', 'Pipe']);
206
+ const allLeaf = !hasComments && node.children
207
+ .filter(c => c.type !== 'Comment' && c.type !== 'PassthroughComment')
208
+ .every(c => leafTypes.has(c.type));
209
+ if (allLeaf) {
210
+ const childrenStr = children.map(c => c.code).join(', ');
211
+ return chunk(`h("${node.tag}", ${attrs}, ${childrenStr})`, node.loc);
212
+ }
213
+ const ci = this.ind(indent + 1);
214
+ const pi = this.ind(indent);
215
+ const inner = this.joinWithCommentChunks(children, ci);
216
+ const code = `h("${node.tag}", ${attrs},\n${inner.code}\n${pi})`;
217
+ const mappings = [
218
+ mapping(node.loc),
219
+ ...offsetMappings(inner.mappings, 1),
220
+ ];
221
+ return { code, mappings };
222
+ }
223
+ genAttrs(node) {
224
+ const parts = [];
225
+ // Check if explicit class attr exists
226
+ const explicitClass = node.attrs.find(a => a.name === 'class' && !a.spread);
227
+ // Classes: merge shorthand + explicit into one
228
+ if (node.classes.length > 0 && explicitClass && explicitClass.value !== null) {
229
+ const prefix = node.classes.join(' ');
230
+ parts.push(`class: ${this.mergeClassValue(prefix, explicitClass.value)}`);
231
+ }
232
+ else if (node.classes.length > 0) {
233
+ parts.push(`class: "${node.classes.join(' ')}"`);
234
+ }
235
+ // ID from shorthand
236
+ if (node.id !== null) {
237
+ parts.push(`id: "${node.id}"`);
238
+ }
239
+ // Explicit attributes (skip class if already merged)
240
+ for (const attr of node.attrs) {
241
+ if (attr === explicitClass && node.classes.length > 0)
242
+ continue;
243
+ if (attr.spread) {
244
+ parts.push(`...${attr.name}`);
245
+ }
246
+ else if (attr.value === null) {
247
+ const key = this.attrKey(attr.name);
248
+ parts.push(`${key}: true`);
249
+ }
250
+ else {
251
+ const key = this.attrKey(attr.name);
252
+ parts.push(`${key}: ${attr.value}`);
253
+ }
254
+ }
255
+ if (parts.length === 0)
256
+ return '{}';
257
+ return `{ ${parts.join(', ')} }`;
258
+ }
259
+ mergeClassValue(prefix, value) {
260
+ if (value.startsWith('`')) {
261
+ return `\`${prefix} ${value.slice(1)}`;
262
+ }
263
+ if (value.startsWith('"')) {
264
+ return `"${prefix} ${value.slice(1)}`;
265
+ }
266
+ return `\`${prefix} \${${value}}\``;
267
+ }
268
+ attrKey(name) {
269
+ if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name))
270
+ return name;
271
+ return `"${name}"`;
272
+ }
273
+ // --- Text generation ---
274
+ genText(node) {
275
+ return chunk(this.genSegments(node.segments), node.loc);
276
+ }
277
+ genPipe(node) {
278
+ return chunk(this.genSegments(node.segments), node.loc);
279
+ }
280
+ genSegments(segments) {
281
+ if (segments.length === 1 && segments[0].type === 'text') {
282
+ return `"${this.escapeString(segments[0].value)}"`;
283
+ }
284
+ let result = '`';
285
+ for (const seg of segments) {
286
+ if (seg.type === 'text') {
287
+ result += this.escapeTemplateLiteral(seg.value);
288
+ }
289
+ else {
290
+ result += `\${${seg.expression}}`;
291
+ }
292
+ }
293
+ result += '`';
294
+ return result;
295
+ }
296
+ escapeString(s) {
297
+ return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n');
298
+ }
299
+ escapeTemplateLiteral(s) {
300
+ return s.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\$\{/g, '\\${');
301
+ }
302
+ // --- Template and import generation ---
303
+ genImport(node) {
304
+ return chunk(node.statement, node.loc);
305
+ }
306
+ genTemplate(node, indent) {
307
+ const i1 = this.ind(indent + 1);
308
+ const i2 = this.ind(indent + 2);
309
+ // Check if body contains an ExtendsNode (page template)
310
+ const extendsNode = node.body.find((c) => c.type === 'Extends');
311
+ if (extendsNode) {
312
+ const extendsChunk = this.genExtends(extendsNode, indent + 1);
313
+ const code = `export function ${node.name}(${node.params}) {\n${i1}return ${extendsChunk.code}\n}`;
314
+ const mappings = [
315
+ mapping(node.loc),
316
+ ...offsetMappings(extendsChunk.mappings, 1),
317
+ ];
318
+ return { code, mappings };
319
+ }
320
+ // Check if body tree contains BlockNodes (layout template)
321
+ const hasBlocks = templateHasBlocks(node);
322
+ const params = hasBlocks
323
+ ? `${node.params}, blocks: ${capitalize(node.name)}Blocks = {}`
324
+ : node.params;
325
+ const bodyChunks = node.body
326
+ .map(child => this.genNode(child, indent + 2))
327
+ .filter((e) => e !== null);
328
+ if (bodyChunks.length === 0) {
329
+ return chunk(`export function ${node.name}(${params}) {\n${i1}return []\n}`, node.loc);
330
+ }
331
+ const bodyInner = this.joinWithCommentChunks(bodyChunks, i2);
332
+ const code = `export function ${node.name}(${params}) {\n${i1}return [\n${bodyInner.code}\n${i1}]\n}`;
333
+ const mappings = [
334
+ mapping(node.loc),
335
+ ...offsetMappings(bodyInner.mappings, 2), // body starts at line 2 (after fn sig + return [)
336
+ ];
337
+ return { code, mappings };
338
+ }
339
+ // --- Mixin generation ---
340
+ genMixinDefinition(node, indent) {
341
+ const i1 = this.ind(indent + 1);
342
+ const params = node.params
343
+ ? `${node.params}, attrs: Attrs = {}`
344
+ : 'attrs: Attrs = {}';
345
+ const bodyChunks = node.body
346
+ .map(child => this.genNode(child, indent + 1))
347
+ .filter((e) => e !== null);
348
+ const bodyChunk = this.genFragment(bodyChunks.length > 0 ? node.body : [], indent + 1);
349
+ const code = `export function ${node.name}(${params}) {\n${i1}return ${bodyChunk.code}\n}`;
350
+ const mappings = [
351
+ mapping(node.loc),
352
+ ...offsetMappings(bodyChunk.mappings, 1),
353
+ ];
354
+ return { code, mappings };
355
+ }
356
+ genMixinCall(node) {
357
+ const argParts = [];
358
+ if (node.args) {
359
+ argParts.push(node.args);
360
+ }
361
+ if (node.attrs.length > 0) {
362
+ argParts.push(this.genCallAttrs(node.attrs));
363
+ }
364
+ return chunk(`${node.name}(${argParts.join(', ')})`, node.loc);
365
+ }
366
+ genCallAttrs(attrs) {
367
+ const parts = [];
368
+ for (const attr of attrs) {
369
+ if (attr.spread) {
370
+ parts.push(`...${attr.name}`);
371
+ }
372
+ else if (attr.value === null) {
373
+ const key = this.attrKey(attr.name);
374
+ parts.push(`${key}: true`);
375
+ }
376
+ else {
377
+ const key = this.attrKey(attr.name);
378
+ parts.push(`${key}: ${attr.value}`);
379
+ }
380
+ }
381
+ return `{ ${parts.join(', ')} }`;
382
+ }
383
+ // --- Block and extends generation ---
384
+ genBlock(node, indent) {
385
+ if (node.children.length === 0) {
386
+ return chunk(`blocks.${node.name}?.()`, node.loc);
387
+ }
388
+ const bi = this.formatted ? this.ind(indent + 1) : ' ';
389
+ const defaultContentChunk = this.genFragment(node.children, indent + 1);
390
+ const code = `blocks.${node.name}\n${bi}? blocks.${node.name}()\n${bi}: ${defaultContentChunk.code}`;
391
+ const mappings = [
392
+ mapping(node.loc),
393
+ ...offsetMappings(defaultContentChunk.mappings, 2),
394
+ ];
395
+ return { code, mappings };
396
+ }
397
+ genExtends(node, indent) {
398
+ const bi = this.formatted ? this.ind(indent + 1) : ' ';
399
+ const ci = this.formatted ? this.ind(indent + 2) : ' ';
400
+ const pi = this.formatted ? this.ind(indent) : '';
401
+ const blockChunks = [];
402
+ for (const block of node.blocks) {
403
+ const childChunks = block.children
404
+ .map(c => this.genNode(c, indent + 2))
405
+ .filter((e) => e !== null);
406
+ const bodyInner = this.joinWithCommentChunks(childChunks, ci);
407
+ const blockCode = `${bi}${block.name}: () => [\n${bodyInner.code}\n${bi}]`;
408
+ const blockMappings = [
409
+ mapping(block.loc),
410
+ ...offsetMappings(bodyInner.mappings, 1),
411
+ ];
412
+ blockChunks.push({ code: blockCode, mappings: blockMappings });
413
+ }
414
+ const joinedBlocks = joinChunks(blockChunks, ',\n');
415
+ const code = `${node.target}(${node.args}, {\n${joinedBlocks.code}\n${pi}})`;
416
+ const mappings = [
417
+ mapping(node.loc),
418
+ ...offsetMappings(joinedBlocks.mappings, 1),
419
+ ];
420
+ return { code, mappings };
421
+ }
422
+ genInclude(node) {
423
+ const segments = node.path.split('/');
424
+ const name = segments[segments.length - 1];
425
+ return chunk(`import { ${name} } from '${node.path}.js'`, node.loc);
426
+ }
427
+ // --- Simple generators ---
428
+ genBufferedCode(node) {
429
+ return chunk(node.expression, node.loc);
430
+ }
431
+ genDoctype(node) {
432
+ return chunk('doctype()', node.loc);
433
+ }
434
+ }
435
+ // --- Runtime import scanning ---
436
+ function countEffective(nodes) {
437
+ return nodes.filter(n => n.type !== 'Comment' && n.type !== 'PassthroughComment').length;
438
+ }
439
+ function scanUsedHelpers(node) {
440
+ const helpers = new Set();
441
+ function walk(n) {
442
+ switch (n.type) {
443
+ case 'Element':
444
+ helpers.add('h');
445
+ for (const c of n.children)
446
+ walk(c);
447
+ break;
448
+ case 'Doctype':
449
+ helpers.add('doctype');
450
+ break;
451
+ case 'Conditional':
452
+ if (countEffective(n.consequent) > 1) {
453
+ helpers.add('h');
454
+ helpers.add('Fragment');
455
+ }
456
+ for (const c of n.consequent)
457
+ walk(c);
458
+ for (const alt of n.alternates) {
459
+ if (countEffective(alt.body) > 1) {
460
+ helpers.add('h');
461
+ helpers.add('Fragment');
462
+ }
463
+ for (const c of alt.body)
464
+ walk(c);
465
+ }
466
+ if (n.fallback) {
467
+ if (countEffective(n.fallback) > 1) {
468
+ helpers.add('h');
469
+ helpers.add('Fragment');
470
+ }
471
+ for (const c of n.fallback)
472
+ walk(c);
473
+ }
474
+ break;
475
+ case 'Iteration':
476
+ if (countEffective(n.body) > 1) {
477
+ helpers.add('h');
478
+ helpers.add('Fragment');
479
+ }
480
+ for (const c of n.body)
481
+ walk(c);
482
+ break;
483
+ case 'Template':
484
+ for (const c of n.body)
485
+ walk(c);
486
+ break;
487
+ case 'MixinDefinition':
488
+ for (const c of n.body)
489
+ walk(c);
490
+ break;
491
+ case 'MixinCall':
492
+ for (const c of n.block)
493
+ walk(c);
494
+ break;
495
+ case 'Block':
496
+ for (const c of n.children)
497
+ walk(c);
498
+ break;
499
+ case 'Extends':
500
+ for (const block of n.blocks) {
501
+ for (const c of block.children)
502
+ walk(c);
503
+ }
504
+ break;
505
+ case 'Document':
506
+ for (const c of n.children)
507
+ walk(c);
508
+ break;
509
+ }
510
+ }
511
+ walk(node);
512
+ return helpers;
513
+ }
514
+ // --- Public API ---
515
+ /** Generate a TypeScript expression from a single AST node. */
516
+ export function generateExpr(node) {
517
+ const gen = new CodeGenerator(false);
518
+ const result = gen.genNode(node);
519
+ if (result === null)
520
+ return '';
521
+ return result.code;
522
+ }
523
+ /** Generate TypeScript source from a DocumentNode. */
524
+ export function generate(doc) {
525
+ const gen = new CodeGenerator(true);
526
+ const parts = [];
527
+ // Scan for used runtime helpers
528
+ const helpers = scanUsedHelpers(doc);
529
+ // Emit runtime import (canonical order)
530
+ if (helpers.size > 0) {
531
+ const order = ['h', 'doctype', 'Fragment', 'raw'];
532
+ const used = order.filter(h => helpers.has(h));
533
+ parts.push(chunk(`import { ${used.join(', ')} } from "@chilts/weave"`));
534
+ }
535
+ // Emit Attrs type import if any mixin definitions exist
536
+ const hasMixinDefs = doc.children.some(c => c.type === 'MixinDefinition');
537
+ if (hasMixinDefs) {
538
+ parts.push(chunk('import type { Attrs } from "@chilts/weave"'));
539
+ }
540
+ // Pre-scan: find layout templates that need blocks type augmentation
541
+ let blocksTypeName = null;
542
+ for (const child of doc.children) {
543
+ if (child.type === 'Template' && templateHasBlocks(child)) {
544
+ blocksTypeName = capitalize(child.name) + 'Blocks';
545
+ }
546
+ }
547
+ // Emit user imports (augmented with blocks type if needed)
548
+ for (const child of doc.children) {
549
+ if (child.type === 'Import') {
550
+ let statement = child.statement;
551
+ if (blocksTypeName && statement.includes('import type')) {
552
+ const idx = statement.indexOf(' }');
553
+ if (idx !== -1) {
554
+ statement = statement.slice(0, idx) + `, ${blocksTypeName}` + statement.slice(idx);
555
+ }
556
+ }
557
+ parts.push(chunk(statement, child.loc));
558
+ }
559
+ }
560
+ // Emit include imports
561
+ for (const child of doc.children) {
562
+ if (child.type === 'Include') {
563
+ const result = gen.genNode(child, 0);
564
+ if (result !== null)
565
+ parts.push(result);
566
+ }
567
+ }
568
+ // Emit extends imports (auto-import layout function)
569
+ for (const child of doc.children) {
570
+ if (child.type === 'Template') {
571
+ const extendsNode = child.body.find(c => c.type === 'Extends');
572
+ if (extendsNode && extendsNode.type === 'Extends') {
573
+ const path = './' + camelToKebab(extendsNode.target);
574
+ parts.push(chunk(`import { ${extendsNode.target} } from '${path}.js'`, extendsNode.loc));
575
+ }
576
+ }
577
+ }
578
+ // Emit mixin definitions and template functions
579
+ for (const child of doc.children) {
580
+ if (child.type === 'Template' || child.type === 'MixinDefinition') {
581
+ parts.push(chunk(''));
582
+ const result = gen.genNode(child, 0);
583
+ if (result !== null)
584
+ parts.push(result);
585
+ }
586
+ }
587
+ const final = joinChunks(parts, '\n');
588
+ return { code: final.code + '\n', mappings: final.mappings };
589
+ }
590
+ /** Full pipeline: source string → TypeScript source. */
591
+ export function compile(source) {
592
+ const tokens = lex(source);
593
+ const doc = parse(tokens);
594
+ return generate(doc).code;
595
+ }
596
+ /** Full pipeline with source map generation. */
597
+ export function compileWithSourceMap(source, opts) {
598
+ const tokens = lex(source);
599
+ const doc = parse(tokens);
600
+ const result = generate(doc);
601
+ const sourceMap = buildSourceMap(result.mappings, opts.file, opts.sourceFile);
602
+ return { code: result.code, sourceMap };
603
+ }
604
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":"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"}