@ahsankhanamu/json-transformer 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 (49) hide show
  1. package/dist/ast.d.ts +259 -0
  2. package/dist/ast.d.ts.map +1 -0
  3. package/dist/ast.js +12 -0
  4. package/dist/ast.js.map +1 -0
  5. package/dist/codegen/base.d.ts +83 -0
  6. package/dist/codegen/base.d.ts.map +1 -0
  7. package/dist/codegen/base.js +494 -0
  8. package/dist/codegen/base.js.map +1 -0
  9. package/dist/codegen/index.d.ts +35 -0
  10. package/dist/codegen/index.d.ts.map +1 -0
  11. package/dist/codegen/index.js +42 -0
  12. package/dist/codegen/index.js.map +1 -0
  13. package/dist/codegen/library.d.ts +42 -0
  14. package/dist/codegen/library.d.ts.map +1 -0
  15. package/dist/codegen/library.js +406 -0
  16. package/dist/codegen/library.js.map +1 -0
  17. package/dist/codegen/native.d.ts +33 -0
  18. package/dist/codegen/native.d.ts.map +1 -0
  19. package/dist/codegen/native.js +452 -0
  20. package/dist/codegen/native.js.map +1 -0
  21. package/dist/codegen.d.ts +13 -0
  22. package/dist/codegen.d.ts.map +1 -0
  23. package/dist/codegen.js +12 -0
  24. package/dist/codegen.js.map +1 -0
  25. package/dist/index.d.ts +257 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +231 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/lexer.d.ts +37 -0
  30. package/dist/lexer.d.ts.map +1 -0
  31. package/dist/lexer.js +499 -0
  32. package/dist/lexer.js.map +1 -0
  33. package/dist/parser.d.ts +63 -0
  34. package/dist/parser.d.ts.map +1 -0
  35. package/dist/parser.js +1045 -0
  36. package/dist/parser.js.map +1 -0
  37. package/dist/playground.d.ts +6 -0
  38. package/dist/playground.d.ts.map +1 -0
  39. package/dist/playground.js +216 -0
  40. package/dist/playground.js.map +1 -0
  41. package/dist/runtime.d.ts +229 -0
  42. package/dist/runtime.d.ts.map +1 -0
  43. package/dist/runtime.js +933 -0
  44. package/dist/runtime.js.map +1 -0
  45. package/dist/tokens.d.ts +80 -0
  46. package/dist/tokens.d.ts.map +1 -0
  47. package/dist/tokens.js +88 -0
  48. package/dist/tokens.js.map +1 -0
  49. package/package.json +30 -0
@@ -0,0 +1,452 @@
1
+ /**
2
+ * Native Code Generator - Generates pure JavaScript without any helper dependencies
3
+ */
4
+ import { BaseCodeGenerator } from './base.js';
5
+ export class NativeCodeGenerator extends BaseCodeGenerator {
6
+ constructor(options = {}) {
7
+ super(options);
8
+ }
9
+ // ============================================================================
10
+ // IDENTIFIER
11
+ // ============================================================================
12
+ generateIdentifier(node) {
13
+ if (this.localVariables.has(node.name)) {
14
+ return node.name;
15
+ }
16
+ // Iteration context variables
17
+ switch (node.name) {
18
+ case '$item':
19
+ return 'item';
20
+ case '$index':
21
+ case '$i':
22
+ return 'index';
23
+ case '$array':
24
+ return 'arr';
25
+ case '$length':
26
+ return 'arr.length';
27
+ case '$first':
28
+ return '(index === 0)';
29
+ case '$last':
30
+ return '(index === arr.length - 1)';
31
+ }
32
+ return `${this.options.inputVar}?.${node.name}`;
33
+ }
34
+ // ============================================================================
35
+ // MEMBER ACCESS
36
+ // ============================================================================
37
+ generateMemberAccess(node) {
38
+ // Auto-project property access after array-producing expressions
39
+ if (this.shouldAutoProject(node)) {
40
+ const arrayExpr = this.generateArrayExpression(node.object);
41
+ return `(${arrayExpr}).map((item, index, arr) => item?.${node.property})`;
42
+ }
43
+ const object = this.generateExpression(node.object);
44
+ return `${object}?.${node.property}`;
45
+ }
46
+ /** Generate the array expression, handling SpreadAccess specially */
47
+ generateArrayExpression(node) {
48
+ if (node.type === 'SpreadAccess') {
49
+ const array = this.generateExpression(node.object);
50
+ return `${array} ?? []`;
51
+ }
52
+ return this.generateExpression(node);
53
+ }
54
+ // ============================================================================
55
+ // INDEX ACCESS
56
+ // ============================================================================
57
+ generateIndexAccess(node) {
58
+ const object = this.generateExpression(node.object);
59
+ const index = this.generateExpression(node.index);
60
+ return `${object}?.[${index}]`;
61
+ }
62
+ // ============================================================================
63
+ // SLICE ACCESS
64
+ // ============================================================================
65
+ generateSliceAccess(node) {
66
+ const object = this.generateExpression(node.object);
67
+ const start = node.sliceStart ? this.generateExpression(node.sliceStart) : '0';
68
+ const end = node.sliceEnd ? this.generateExpression(node.sliceEnd) : '';
69
+ return `(${object} ?? []).slice(${start}${end ? ', ' + end : ''})`;
70
+ }
71
+ // ============================================================================
72
+ // SPREAD ACCESS
73
+ // ============================================================================
74
+ generateSpreadAccess(node) {
75
+ const object = this.generateExpression(node.object);
76
+ return `(${object} ?? [])`;
77
+ }
78
+ // ============================================================================
79
+ // FILTER ACCESS
80
+ // ============================================================================
81
+ generateFilterAccess(node) {
82
+ const object = this.generateExpression(node.object);
83
+ const predicateCode = this.generatePredicateFunction(node.predicate);
84
+ return `(${object} ?? []).filter(${predicateCode})`;
85
+ }
86
+ generatePredicateFunction(predicate) {
87
+ const childGen = this.createChildGenerator('item');
88
+ const body = childGen.generateExpressionPublic(predicate);
89
+ return `(item, index, arr) => ${body}`;
90
+ }
91
+ // For child generators to access generateExpression
92
+ generateExpressionPublic(node) {
93
+ return this.generateExpression(node);
94
+ }
95
+ // ============================================================================
96
+ // MAP TRANSFORM
97
+ // ============================================================================
98
+ generateMapTransform(node) {
99
+ const array = this.generateExpression(node.array);
100
+ const childGen = this.createChildGenerator('item');
101
+ const templateCode = childGen.generateObjectLiteralForMap(node.template);
102
+ return `(${array} ?? []).map((item, index, arr) => (${templateCode}))`;
103
+ }
104
+ generateObjectLiteralForMap(node) {
105
+ if (node.properties.length === 0)
106
+ return '{}';
107
+ const props = node.properties.map((prop) => {
108
+ switch (prop.type) {
109
+ case 'StandardProperty':
110
+ const key = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(prop.key)
111
+ ? prop.key
112
+ : JSON.stringify(prop.key);
113
+ return `${key}: ${this.generateExpression(prop.value)}`;
114
+ case 'ShorthandProperty':
115
+ return `${prop.key}: item?.${prop.key}`;
116
+ case 'ComputedProperty':
117
+ return `[${this.generateExpression(prop.key)}]: ${this.generateExpression(prop.value)}`;
118
+ case 'SpreadProperty':
119
+ return `...${this.generateExpression(prop.argument)}`;
120
+ }
121
+ });
122
+ return `{ ${props.join(', ')} }`;
123
+ }
124
+ // ============================================================================
125
+ // CONTEXT ACCESS
126
+ // ============================================================================
127
+ generateRootAccess(node) {
128
+ const input = this.options.inputVar;
129
+ if (node.path === null) {
130
+ return input;
131
+ }
132
+ return `${input}?.${node.path}`;
133
+ }
134
+ generateParentAccess(node) {
135
+ const parent = this.options.parentVar;
136
+ if (node.path === null) {
137
+ return parent;
138
+ }
139
+ return `${parent}?.${node.path}`;
140
+ }
141
+ generateCurrentAccess(node) {
142
+ const input = this.options.inputVar;
143
+ if (node.path === null) {
144
+ return input;
145
+ }
146
+ return `${input}?.${node.path}`;
147
+ }
148
+ generateBindingAccess(node) {
149
+ const bindings = this.options.bindingsVar;
150
+ return `${bindings}?.${node.name}`;
151
+ }
152
+ // ============================================================================
153
+ // PIPE EXPRESSION
154
+ // ============================================================================
155
+ generatePipeExpression(node) {
156
+ const left = this.generateExpression(node.left);
157
+ // Object literal on right - pipe-to-object construction
158
+ if (node.right.type === 'ObjectLiteral') {
159
+ const tempVar = this.getTempVar('_pipe');
160
+ const prevPipeVar = this.pipeContextVar;
161
+ this.pipeContextVar = tempVar;
162
+ const right = this.generateExpression(node.right);
163
+ this.pipeContextVar = prevPipeVar;
164
+ return `(((${tempVar}) => (${right}))(${left}))`;
165
+ }
166
+ // Array literal on right - pipe-to-array construction
167
+ if (node.right.type === 'ArrayLiteral') {
168
+ const tempVar = this.getTempVar('_pipe');
169
+ const prevPipeVar = this.pipeContextVar;
170
+ this.pipeContextVar = tempVar;
171
+ const right = this.generateExpression(node.right);
172
+ this.pipeContextVar = prevPipeVar;
173
+ return `(((${tempVar}) => ${right})(${left}))`;
174
+ }
175
+ // PipeContextRef (jq-style property access)
176
+ if (this.containsPipeContextRef(node.right)) {
177
+ const tempVar = this.getTempVar('_pipe');
178
+ const prevPipeVar = this.pipeContextVar;
179
+ this.pipeContextVar = tempVar;
180
+ const right = this.generateExpression(node.right);
181
+ this.pipeContextVar = prevPipeVar;
182
+ return `(((${tempVar}) => ${right})(${left}))`;
183
+ }
184
+ // Try piped call
185
+ const pipedResult = this.tryGeneratePipedCall(node.right, left);
186
+ if (pipedResult) {
187
+ return pipedResult;
188
+ }
189
+ // Fallback
190
+ const right = this.generateExpression(node.right);
191
+ return `${right}(${left})`;
192
+ }
193
+ // ============================================================================
194
+ // CALL EXPRESSION
195
+ // ============================================================================
196
+ generateCallExpression(node) {
197
+ const args = node.arguments.map((a) => this.generateExpression(a));
198
+ // Built-in helper function
199
+ if (node.callee.type === 'Identifier') {
200
+ const funcName = node.callee.name;
201
+ const nativeCode = this.generateNativeHelperCall(funcName, args);
202
+ if (nativeCode)
203
+ return nativeCode;
204
+ // Fallback - shouldn't happen in native mode
205
+ return `${funcName}(${args.join(', ')})`;
206
+ }
207
+ // SpreadAccess.method() pattern
208
+ if (node.callee.type === 'MemberAccess' && node.callee.object.type === 'SpreadAccess') {
209
+ const array = this.generateExpression(node.callee.object.object);
210
+ const method = node.callee.property;
211
+ // Handle sort/sortDesc/groupBy/keyBy with key argument
212
+ const helperMethods = ['sort', 'sortDesc', 'groupBy', 'keyBy'];
213
+ if (helperMethods.includes(method) && node.arguments.length === 1) {
214
+ const arg = node.arguments[0];
215
+ let keyPath = null;
216
+ if (arg.type === 'StringLiteral') {
217
+ keyPath = arg.value;
218
+ }
219
+ else {
220
+ keyPath = this.tryExtractPropertyPath(arg);
221
+ }
222
+ if (keyPath !== null) {
223
+ return this.generateNativeArrayMethod(array, method, keyPath);
224
+ }
225
+ }
226
+ return `(${array} ?? []).${method}(${args.join(', ')})`;
227
+ }
228
+ const callee = this.generateExpression(node.callee);
229
+ return `${callee}(${args.join(', ')})`;
230
+ }
231
+ // ============================================================================
232
+ // PIPED CALL
233
+ // ============================================================================
234
+ tryGeneratePipedCall(node, pipeValue) {
235
+ // Direct identifier: value | funcName
236
+ if (node.type === 'Identifier') {
237
+ const funcName = node.name;
238
+ const nativeCode = this.generateNativeHelperCall(funcName, [pipeValue]);
239
+ if (nativeCode)
240
+ return nativeCode;
241
+ return null;
242
+ }
243
+ // Direct call: value | funcName(args)
244
+ if (node.type === 'CallExpression' && node.callee.type === 'Identifier') {
245
+ const funcName = node.callee.name;
246
+ // Handle sort/groupBy/keyBy with property path argument
247
+ const helperMethods = ['sort', 'sortDesc', 'groupBy', 'keyBy'];
248
+ if (helperMethods.includes(funcName) && node.arguments.length === 1) {
249
+ const arg = node.arguments[0];
250
+ let keyPath = null;
251
+ if (arg.type === 'StringLiteral') {
252
+ keyPath = arg.value;
253
+ }
254
+ else {
255
+ keyPath = this.tryExtractPropertyPath(arg);
256
+ }
257
+ if (keyPath !== null && keyPath !== '') {
258
+ return this.generateNativeArrayMethod(pipeValue, funcName, keyPath);
259
+ }
260
+ }
261
+ const args = node.arguments.map((a) => this.generateExpression(a));
262
+ const nativeCode = this.generateNativeHelperCall(funcName, [pipeValue, ...args]);
263
+ if (nativeCode)
264
+ return nativeCode;
265
+ return null;
266
+ }
267
+ // Index access wrapping a pipeable call
268
+ if (node.type === 'IndexAccess') {
269
+ const innerResult = this.tryGeneratePipedCall(node.object, pipeValue);
270
+ if (innerResult) {
271
+ const index = this.generateExpression(node.index);
272
+ return `${innerResult}?.[${index}]`;
273
+ }
274
+ }
275
+ // Slice access wrapping a pipeable call
276
+ if (node.type === 'SliceAccess') {
277
+ const innerResult = this.tryGeneratePipedCall(node.object, pipeValue);
278
+ if (innerResult) {
279
+ const start = node.sliceStart ? this.generateExpression(node.sliceStart) : '0';
280
+ const end = node.sliceEnd ? this.generateExpression(node.sliceEnd) : '';
281
+ return `(${innerResult}).slice(${start}${end ? ', ' + end : ''})`;
282
+ }
283
+ }
284
+ return null;
285
+ }
286
+ // ============================================================================
287
+ // TYPE ASSERTIONS (no-op in native mode)
288
+ // ============================================================================
289
+ generateTypeAssertion(node) {
290
+ return this.generateExpression(node.expression);
291
+ }
292
+ generateNonNullAssertion(node) {
293
+ return this.generateExpression(node.expression);
294
+ }
295
+ // ============================================================================
296
+ // NATIVE HELPER IMPLEMENTATIONS
297
+ // ============================================================================
298
+ generateNativeHelperCall(funcName, args) {
299
+ // String functions
300
+ if (funcName === 'upper')
301
+ return `String(${args[0]} ?? '').toUpperCase()`;
302
+ if (funcName === 'lower')
303
+ return `String(${args[0]} ?? '').toLowerCase()`;
304
+ if (funcName === 'trim')
305
+ return `String(${args[0]} ?? '').trim()`;
306
+ if (funcName === 'split')
307
+ return `String(${args[0]} ?? '').split(${args[1] ?? '","'})`;
308
+ if (funcName === 'join')
309
+ return `${args[0]}?.join(${args[1] ?? '","'}) ?? ''`;
310
+ if (funcName === 'substring')
311
+ return `String(${args[0]} ?? '').substring(${args.slice(1).join(', ')})`;
312
+ if (funcName === 'replace')
313
+ return `String(${args[0]} ?? '').replace(${args[1]}, ${args[2]})`;
314
+ if (funcName === 'replaceAll')
315
+ return `String(${args[0]} ?? '').replaceAll(${args[1]}, ${args[2]})`;
316
+ if (funcName === 'startsWith')
317
+ return `String(${args[0]} ?? '').startsWith(${args[1]})`;
318
+ if (funcName === 'endsWith')
319
+ return `String(${args[0]} ?? '').endsWith(${args[1]})`;
320
+ if (funcName === 'contains')
321
+ return `String(${args[0]} ?? '').includes(${args[1]})`;
322
+ if (funcName === 'padStart')
323
+ return `String(${args[0]} ?? '').padStart(${args.slice(1).join(', ')})`;
324
+ if (funcName === 'padEnd')
325
+ return `String(${args[0]} ?? '').padEnd(${args.slice(1).join(', ')})`;
326
+ // Math functions
327
+ if (funcName === 'round')
328
+ return args.length > 1
329
+ ? `(Math.round(Number(${args[0]}) * Math.pow(10, ${args[1]})) / Math.pow(10, ${args[1]}))`
330
+ : `Math.round(Number(${args[0]}))`;
331
+ if (funcName === 'floor')
332
+ return `Math.floor(Number(${args[0]}))`;
333
+ if (funcName === 'ceil')
334
+ return `Math.ceil(Number(${args[0]}))`;
335
+ if (funcName === 'abs')
336
+ return `Math.abs(Number(${args[0]}))`;
337
+ if (funcName === 'min')
338
+ return `Math.min(...[${args.join(', ')}].flat())`;
339
+ if (funcName === 'max')
340
+ return `Math.max(...[${args.join(', ')}].flat())`;
341
+ // Array functions with callbacks
342
+ if (funcName === 'map')
343
+ return `${args[0]}?.map(${args[1]})`;
344
+ if (funcName === 'filter')
345
+ return `${args[0]}?.filter(${args[1]})`;
346
+ if (funcName === 'find')
347
+ return `${args[0]}?.find(${args[1]})`;
348
+ if (funcName === 'some')
349
+ return `${args[0]}?.some(${args[1]})`;
350
+ if (funcName === 'every')
351
+ return `${args[0]}?.every(${args[1]})`;
352
+ if (funcName === 'reduce')
353
+ return `(${args[0]} ?? []).reduce(${args[1]}, ${args[2] ?? 'undefined'})`;
354
+ // Array functions - simple
355
+ if (funcName === 'count')
356
+ return `${args[0]}?.length ?? 0`;
357
+ if (funcName === 'first')
358
+ return `${args[0]}?.[0]`;
359
+ if (funcName === 'last')
360
+ return `${args[0]}?.at(-1)`;
361
+ if (funcName === 'unique')
362
+ return `[...new Set(${args[0]} ?? [])]`;
363
+ if (funcName === 'flatten')
364
+ return `${args[0]}?.flat()`;
365
+ if (funcName === 'reverse')
366
+ return `[...(${args[0]} ?? [])].reverse()`;
367
+ if (funcName === 'compact')
368
+ return `${args[0]}?.filter(x => x != null)`;
369
+ if (funcName === 'take')
370
+ return `${args[0]}?.slice(0, ${args[1]})`;
371
+ if (funcName === 'drop')
372
+ return `${args[0]}?.slice(${args[1]})`;
373
+ if (funcName === 'sum')
374
+ return `${args[0]}?.reduce((a, b) => a + Number(b || 0), 0) ?? 0`;
375
+ if (funcName === 'avg')
376
+ return `((arr) => arr.length ? arr.reduce((a, b) => a + Number(b || 0), 0) / arr.length : 0)(${args[0]} ?? [])`;
377
+ // Object functions
378
+ if (funcName === 'keys')
379
+ return `Object.keys(${args[0]} ?? {})`;
380
+ if (funcName === 'values')
381
+ return `Object.values(${args[0]} ?? {})`;
382
+ if (funcName === 'entries')
383
+ return `Object.entries(${args[0]} ?? {})`;
384
+ if (funcName === 'merge')
385
+ return `Object.assign({}, ${args.join(', ')})`;
386
+ // Type functions
387
+ if (funcName === 'type')
388
+ return `(v => v === null ? 'null' : Array.isArray(v) ? 'array' : typeof v)(${args[0]})`;
389
+ if (funcName === 'isString')
390
+ return `typeof ${args[0]} === 'string'`;
391
+ if (funcName === 'isNumber')
392
+ return `typeof ${args[0]} === 'number' && !isNaN(${args[0]})`;
393
+ if (funcName === 'isBoolean')
394
+ return `typeof ${args[0]} === 'boolean'`;
395
+ if (funcName === 'isArray')
396
+ return `Array.isArray(${args[0]})`;
397
+ if (funcName === 'isObject')
398
+ return `${args[0]} !== null && typeof ${args[0]} === 'object' && !Array.isArray(${args[0]})`;
399
+ if (funcName === 'isNull')
400
+ return `${args[0]} === null`;
401
+ if (funcName === 'isUndefined')
402
+ return `${args[0]} === undefined`;
403
+ if (funcName === 'isEmpty')
404
+ return `((v) => v == null || (typeof v === 'string' && v.length === 0) || (Array.isArray(v) && v.length === 0) || (typeof v === 'object' && Object.keys(v).length === 0))(${args[0]})`;
405
+ // Conversion functions
406
+ if (funcName === 'toString')
407
+ return `(${args[0]} == null ? '' : typeof ${args[0]} === 'object' ? JSON.stringify(${args[0]}) : String(${args[0]}))`;
408
+ if (funcName === 'toNumber')
409
+ return `Number(${args[0]}) || 0`;
410
+ if (funcName === 'toBoolean')
411
+ return `Boolean(${args[0]})`;
412
+ if (funcName === 'toArray')
413
+ return `(${args[0]} == null ? [] : Array.isArray(${args[0]}) ? ${args[0]} : [${args[0]}])`;
414
+ if (funcName === 'toJSON')
415
+ return `JSON.stringify(${args[0]})`;
416
+ if (funcName === 'fromJSON')
417
+ return `JSON.parse(${args[0]})`;
418
+ // Utility
419
+ if (funcName === 'coalesce')
420
+ return `[${args.join(', ')}].find(v => v != null)`;
421
+ return null;
422
+ }
423
+ generateNativeArrayMethod(array, method, keyPath) {
424
+ const pathParts = keyPath.split('.');
425
+ const getProp = (varName) => pathParts.length === 1 ? `${varName}.${keyPath}` : `${varName}.${pathParts.join('.')}`;
426
+ const safeArray = array.includes('?? []') ? array : `(${array} ?? [])`;
427
+ if (method === 'sort') {
428
+ return `${safeArray}.toSorted((a, b) => ${getProp('a')} - ${getProp('b')})`;
429
+ }
430
+ if (method === 'sortDesc') {
431
+ return `${safeArray}.toSorted((a, b) => ${getProp('b')} - ${getProp('a')})`;
432
+ }
433
+ if (method === 'groupBy') {
434
+ return `${safeArray}.reduce((acc, item) => { const key = String(${getProp('item')}); (acc[key] = acc[key] || []).push(item); return acc; }, {})`;
435
+ }
436
+ if (method === 'keyBy') {
437
+ return `${safeArray}.reduce((acc, item) => { acc[String(${getProp('item')})] = item; return acc; }, {})`;
438
+ }
439
+ return `${safeArray}.${method}("${keyPath}")`;
440
+ }
441
+ // ============================================================================
442
+ // CHILD GENERATOR FACTORY
443
+ // ============================================================================
444
+ createChildGenerator(inputVar) {
445
+ return new NativeCodeGenerator({
446
+ ...this.options,
447
+ inputVar,
448
+ wrapInFunction: false,
449
+ });
450
+ }
451
+ }
452
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/codegen/native.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Code Generator - Re-exports from the modular codegen implementation
3
+ *
4
+ * This file exists for backward compatibility. The actual implementation
5
+ * is split into:
6
+ * - codegen/base.ts - Base class with shared functionality
7
+ * - codegen/native.ts - Pure JS generator (no dependencies)
8
+ * - codegen/library.ts - Library JS generator (with __helpers)
9
+ * - codegen/index.ts - Factory and exports
10
+ */
11
+ export type { CodeGenOptions, FullCodeGenOptions, LibraryCodeGenOptions } from './codegen/index.js';
12
+ export { NativeCodeGenerator, LibraryCodeGenerator, CodeGenerator, createCodeGenerator, generate, } from './codegen/index.js';
13
+ //# sourceMappingURL=codegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEpG,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,QAAQ,GACT,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Code Generator - Re-exports from the modular codegen implementation
3
+ *
4
+ * This file exists for backward compatibility. The actual implementation
5
+ * is split into:
6
+ * - codegen/base.ts - Base class with shared functionality
7
+ * - codegen/native.ts - Pure JS generator (no dependencies)
8
+ * - codegen/library.ts - Library JS generator (with __helpers)
9
+ * - codegen/index.ts - Factory and exports
10
+ */
11
+ export { NativeCodeGenerator, LibraryCodeGenerator, CodeGenerator, createCodeGenerator, generate, } from './codegen/index.js';
12
+ //# sourceMappingURL=codegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,QAAQ,GACT,MAAM,oBAAoB,CAAC"}