@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,406 @@
1
+ /**
2
+ * Library Code Generator - Generates JavaScript with __helpers runtime
3
+ * Supports strict mode with enhanced error messages
4
+ */
5
+ import { BaseCodeGenerator } from './base.js';
6
+ export class LibraryCodeGenerator extends BaseCodeGenerator {
7
+ strict;
8
+ constructor(options = {}) {
9
+ super(options);
10
+ this.strict = options.strict ?? false;
11
+ }
12
+ // ============================================================================
13
+ // IDENTIFIER
14
+ // ============================================================================
15
+ generateIdentifier(node) {
16
+ if (this.localVariables.has(node.name)) {
17
+ return node.name;
18
+ }
19
+ // Iteration context variables
20
+ switch (node.name) {
21
+ case '$item':
22
+ return 'item';
23
+ case '$index':
24
+ case '$i':
25
+ return 'index';
26
+ case '$array':
27
+ return 'arr';
28
+ case '$length':
29
+ return 'arr.length';
30
+ case '$first':
31
+ return '(index === 0)';
32
+ case '$last':
33
+ return '(index === arr.length - 1)';
34
+ }
35
+ const input = this.options.inputVar;
36
+ if (this.strict) {
37
+ return `__helpers.strictGet(${input}, "${node.name}", "")`;
38
+ }
39
+ return `${input}?.${node.name}`;
40
+ }
41
+ // ============================================================================
42
+ // MEMBER ACCESS
43
+ // ============================================================================
44
+ generateMemberAccess(node) {
45
+ // Auto-project property access after array-producing expressions
46
+ if (this.shouldAutoProject(node)) {
47
+ return this.generateAutoProjection(node);
48
+ }
49
+ const object = this.generateExpression(node.object);
50
+ if (this.strict && !node.optional) {
51
+ const path = this.buildPathFromNode(node.object);
52
+ return `__helpers.strictGet(${object}, "${node.property}", "${path}")`;
53
+ }
54
+ const op = node.optional || !this.strict ? '?.' : '.';
55
+ return `${object}${op}${node.property}`;
56
+ }
57
+ /** Generate auto-projection for property access after array-producing expressions */
58
+ generateAutoProjection(node) {
59
+ const obj = node.object;
60
+ // SpreadAccess uses strictMap in strict mode
61
+ if (obj.type === 'SpreadAccess') {
62
+ const array = this.generateExpression(obj.object);
63
+ if (this.strict) {
64
+ const path = this.buildPathFromNode(obj.object);
65
+ return `__helpers.strictMap(${array}, (item, index, arr) => __helpers.strictGet(item, "${node.property}", "${path}[*]"), "${path}")`;
66
+ }
67
+ return `(${array} ?? []).map((item, index, arr) => item?.${node.property})`;
68
+ }
69
+ // Other array-producing expressions use regular map
70
+ const arrayExpr = this.generateExpression(obj);
71
+ if (this.strict) {
72
+ const pathSuffix = this.getPathSuffix(obj);
73
+ const basePath = this.getBasePath(obj);
74
+ const fullPath = basePath ? `${basePath}${pathSuffix}` : '';
75
+ return `(${arrayExpr}).map((item, index, arr) => __helpers.strictGet(item, "${node.property}", "${fullPath}"))`;
76
+ }
77
+ return `(${arrayExpr}).map((item, index, arr) => item?.${node.property})`;
78
+ }
79
+ /** Get path suffix for strict mode error messages */
80
+ getPathSuffix(node) {
81
+ switch (node.type) {
82
+ case 'FilterAccess':
83
+ return '[?]';
84
+ case 'SliceAccess':
85
+ return '[:]';
86
+ default:
87
+ return '';
88
+ }
89
+ }
90
+ /** Get base path for strict mode error messages */
91
+ getBasePath(node) {
92
+ switch (node.type) {
93
+ case 'FilterAccess':
94
+ case 'SliceAccess':
95
+ return this.buildPathFromNode(node.object);
96
+ default:
97
+ return '';
98
+ }
99
+ }
100
+ // ============================================================================
101
+ // INDEX ACCESS
102
+ // ============================================================================
103
+ generateIndexAccess(node) {
104
+ const object = this.generateExpression(node.object);
105
+ const index = this.generateExpression(node.index);
106
+ if (this.strict && !node.optional) {
107
+ const path = this.buildPathFromNode(node.object);
108
+ return `__helpers.strictIndex(${object}, ${index}, "${path}")`;
109
+ }
110
+ const op = node.optional || !this.strict ? '?.' : '';
111
+ return `${object}${op}[${index}]`;
112
+ }
113
+ // ============================================================================
114
+ // SLICE ACCESS
115
+ // ============================================================================
116
+ generateSliceAccess(node) {
117
+ const object = this.generateExpression(node.object);
118
+ const start = node.sliceStart ? this.generateExpression(node.sliceStart) : '0';
119
+ const end = node.sliceEnd ? this.generateExpression(node.sliceEnd) : '';
120
+ if (this.strict) {
121
+ const path = this.buildPathFromNode(node.object);
122
+ return `__helpers.strictArray(${object}, "${path}").slice(${start}${end ? ', ' + end : ''})`;
123
+ }
124
+ return `(${object} ?? []).slice(${start}${end ? ', ' + end : ''})`;
125
+ }
126
+ // ============================================================================
127
+ // SPREAD ACCESS
128
+ // ============================================================================
129
+ generateSpreadAccess(node) {
130
+ const object = this.generateExpression(node.object);
131
+ if (this.strict) {
132
+ const path = this.buildPathFromNode(node.object);
133
+ return `__helpers.strictArray(${object}, "${path}")`;
134
+ }
135
+ return `(${object} ?? [])`;
136
+ }
137
+ // ============================================================================
138
+ // FILTER ACCESS
139
+ // ============================================================================
140
+ generateFilterAccess(node) {
141
+ const object = this.generateExpression(node.object);
142
+ const predicateCode = this.generatePredicateFunction(node.predicate);
143
+ if (this.strict) {
144
+ const path = this.buildPathFromNode(node.object);
145
+ return `__helpers.strictFilter(${object}, ${predicateCode}, "${path}")`;
146
+ }
147
+ return `(${object} ?? []).filter(${predicateCode})`;
148
+ }
149
+ generatePredicateFunction(predicate) {
150
+ const childGen = this.createChildGenerator('item');
151
+ const body = childGen.generateExpressionPublic(predicate);
152
+ return `(item, index, arr) => ${body}`;
153
+ }
154
+ generateExpressionPublic(node) {
155
+ return this.generateExpression(node);
156
+ }
157
+ // ============================================================================
158
+ // MAP TRANSFORM
159
+ // ============================================================================
160
+ generateMapTransform(node) {
161
+ const array = this.generateExpression(node.array);
162
+ const path = this.buildPathFromNode(node.array);
163
+ const childGen = this.createChildGenerator('item');
164
+ const templateCode = childGen.generateObjectLiteralForMap(node.template);
165
+ if (this.strict) {
166
+ return `__helpers.strictMap(${array}, (item, index, arr) => (${templateCode}), "${path}")`;
167
+ }
168
+ return `(${array} ?? []).map((item, index, arr) => (${templateCode}))`;
169
+ }
170
+ generateObjectLiteralForMap(node) {
171
+ if (node.properties.length === 0)
172
+ return '{}';
173
+ const props = node.properties.map((prop) => {
174
+ switch (prop.type) {
175
+ case 'StandardProperty':
176
+ const key = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(prop.key)
177
+ ? prop.key
178
+ : JSON.stringify(prop.key);
179
+ return `${key}: ${this.generateExpression(prop.value)}`;
180
+ case 'ShorthandProperty':
181
+ return `${prop.key}: item?.${prop.key}`;
182
+ case 'ComputedProperty':
183
+ return `[${this.generateExpression(prop.key)}]: ${this.generateExpression(prop.value)}`;
184
+ case 'SpreadProperty':
185
+ return `...${this.generateExpression(prop.argument)}`;
186
+ }
187
+ });
188
+ return `{ ${props.join(', ')} }`;
189
+ }
190
+ // ============================================================================
191
+ // CONTEXT ACCESS
192
+ // ============================================================================
193
+ generateRootAccess(node) {
194
+ const input = this.options.inputVar;
195
+ if (node.path === null) {
196
+ return input;
197
+ }
198
+ if (this.strict) {
199
+ return `${input}.${node.path}`;
200
+ }
201
+ return `${input}?.${node.path}`;
202
+ }
203
+ generateParentAccess(node) {
204
+ const parent = this.options.parentVar;
205
+ if (node.path === null) {
206
+ return parent;
207
+ }
208
+ if (this.strict) {
209
+ return `${parent}.${node.path}`;
210
+ }
211
+ return `${parent}?.${node.path}`;
212
+ }
213
+ generateCurrentAccess(node) {
214
+ const input = this.options.inputVar;
215
+ if (node.path === null) {
216
+ return input;
217
+ }
218
+ if (this.strict) {
219
+ return `${input}.${node.path}`;
220
+ }
221
+ return `${input}?.${node.path}`;
222
+ }
223
+ generateBindingAccess(node) {
224
+ const bindings = this.options.bindingsVar;
225
+ if (this.strict) {
226
+ return `${bindings}.${node.name}`;
227
+ }
228
+ return `${bindings}?.${node.name}`;
229
+ }
230
+ // ============================================================================
231
+ // PIPE EXPRESSION
232
+ // ============================================================================
233
+ generatePipeExpression(node) {
234
+ const left = this.generateExpression(node.left);
235
+ // Object literal on right
236
+ if (node.right.type === 'ObjectLiteral') {
237
+ const tempVar = this.getTempVar('_pipe');
238
+ const prevPipeVar = this.pipeContextVar;
239
+ this.pipeContextVar = tempVar;
240
+ const right = this.generateExpression(node.right);
241
+ this.pipeContextVar = prevPipeVar;
242
+ return `(((${tempVar}) => (${right}))(${left}))`;
243
+ }
244
+ // Array literal on right
245
+ if (node.right.type === 'ArrayLiteral') {
246
+ const tempVar = this.getTempVar('_pipe');
247
+ const prevPipeVar = this.pipeContextVar;
248
+ this.pipeContextVar = tempVar;
249
+ const right = this.generateExpression(node.right);
250
+ this.pipeContextVar = prevPipeVar;
251
+ return `(((${tempVar}) => ${right})(${left}))`;
252
+ }
253
+ // PipeContextRef
254
+ if (this.containsPipeContextRef(node.right)) {
255
+ const tempVar = this.getTempVar('_pipe');
256
+ const prevPipeVar = this.pipeContextVar;
257
+ this.pipeContextVar = tempVar;
258
+ const right = this.generateExpression(node.right);
259
+ this.pipeContextVar = prevPipeVar;
260
+ return `(((${tempVar}) => ${right})(${left}))`;
261
+ }
262
+ // Try piped call
263
+ const pipedResult = this.tryGeneratePipedCall(node.right, left);
264
+ if (pipedResult) {
265
+ return pipedResult;
266
+ }
267
+ // Fallback
268
+ const right = this.generateExpression(node.right);
269
+ return `${right}(${left})`;
270
+ }
271
+ // ============================================================================
272
+ // CALL EXPRESSION
273
+ // ============================================================================
274
+ generateCallExpression(node) {
275
+ const args = node.arguments.map((a) => this.generateExpression(a));
276
+ // Built-in helper function
277
+ if (node.callee.type === 'Identifier') {
278
+ const funcName = node.callee.name;
279
+ return `__helpers.${funcName}(${args.join(', ')})`;
280
+ }
281
+ // SpreadAccess.method() pattern
282
+ if (node.callee.type === 'MemberAccess' && node.callee.object.type === 'SpreadAccess') {
283
+ const array = this.generateExpression(node.callee.object.object);
284
+ const method = node.callee.property;
285
+ // Handle sort/sortDesc/groupBy/keyBy with key argument
286
+ const helperMethods = ['sort', 'sortDesc', 'groupBy', 'keyBy'];
287
+ if (helperMethods.includes(method) && node.arguments.length === 1) {
288
+ const arg = node.arguments[0];
289
+ let keyPath = null;
290
+ if (arg.type === 'StringLiteral') {
291
+ keyPath = arg.value;
292
+ }
293
+ else {
294
+ keyPath = this.tryExtractPropertyPath(arg);
295
+ }
296
+ if (keyPath !== null) {
297
+ if (this.strict) {
298
+ const path = this.buildPathFromNode(node.callee.object.object);
299
+ return `__helpers.${method}(__helpers.strictArray(${array}, "${path}"), "${keyPath}")`;
300
+ }
301
+ return `__helpers.${method}(${array} ?? [], "${keyPath}")`;
302
+ }
303
+ }
304
+ if (this.strict) {
305
+ const path = this.buildPathFromNode(node.callee.object.object);
306
+ return `__helpers.strictArray(${array}, "${path}").${method}(${args.join(', ')})`;
307
+ }
308
+ return `(${array} ?? []).${method}(${args.join(', ')})`;
309
+ }
310
+ const callee = this.generateExpression(node.callee);
311
+ return `${callee}(${args.join(', ')})`;
312
+ }
313
+ // ============================================================================
314
+ // PIPED CALL
315
+ // ============================================================================
316
+ tryGeneratePipedCall(node, pipeValue) {
317
+ // Direct identifier: value | funcName
318
+ if (node.type === 'Identifier') {
319
+ const funcName = node.name;
320
+ return `__helpers.${funcName}(${pipeValue})`;
321
+ }
322
+ // Direct call: value | funcName(args)
323
+ if (node.type === 'CallExpression' && node.callee.type === 'Identifier') {
324
+ const funcName = node.callee.name;
325
+ // Handle sort/groupBy/keyBy with property path argument
326
+ const helperMethods = ['sort', 'sortDesc', 'groupBy', 'keyBy'];
327
+ if (helperMethods.includes(funcName) && node.arguments.length === 1) {
328
+ const arg = node.arguments[0];
329
+ let keyPath = null;
330
+ if (arg.type === 'StringLiteral') {
331
+ keyPath = arg.value;
332
+ }
333
+ else {
334
+ keyPath = this.tryExtractPropertyPath(arg);
335
+ }
336
+ if (keyPath !== null && keyPath !== '') {
337
+ return `__helpers.${funcName}(${pipeValue}, "${keyPath}")`;
338
+ }
339
+ }
340
+ const args = node.arguments.map((a) => this.generateExpression(a));
341
+ return `__helpers.${funcName}(${pipeValue}${args.length ? ', ' + args.join(', ') : ''})`;
342
+ }
343
+ // Index access wrapping a pipeable call
344
+ if (node.type === 'IndexAccess') {
345
+ const innerResult = this.tryGeneratePipedCall(node.object, pipeValue);
346
+ if (innerResult) {
347
+ const index = this.generateExpression(node.index);
348
+ const op = node.optional || !this.strict ? '?.' : '';
349
+ return `${innerResult}${op}[${index}]`;
350
+ }
351
+ }
352
+ // Slice access wrapping a pipeable call
353
+ if (node.type === 'SliceAccess') {
354
+ const innerResult = this.tryGeneratePipedCall(node.object, pipeValue);
355
+ if (innerResult) {
356
+ const start = node.sliceStart ? this.generateExpression(node.sliceStart) : '0';
357
+ const end = node.sliceEnd ? this.generateExpression(node.sliceEnd) : '';
358
+ return `(${innerResult}).slice(${start}${end ? ', ' + end : ''})`;
359
+ }
360
+ }
361
+ return null;
362
+ }
363
+ // ============================================================================
364
+ // TYPE ASSERTIONS
365
+ // ============================================================================
366
+ generateTypeAssertion(node) {
367
+ const expr = this.generateExpression(node.expression);
368
+ if (this.strict) {
369
+ const typeCheck = this.generateTypeCheck(expr, node.typeAnnotation);
370
+ return `(${typeCheck})`;
371
+ }
372
+ return expr;
373
+ }
374
+ generateTypeCheck(expr, type) {
375
+ switch (type.type) {
376
+ case 'PrimitiveType':
377
+ if (type.nonNull) {
378
+ return `__helpers.assertType(${expr}, '${type.name}', true)`;
379
+ }
380
+ return `__helpers.assertType(${expr}, '${type.name}')`;
381
+ case 'ArrayType':
382
+ return `__helpers.assertArray(${expr})`;
383
+ default:
384
+ return expr;
385
+ }
386
+ }
387
+ generateNonNullAssertion(node) {
388
+ const expr = this.generateExpression(node.expression);
389
+ if (this.strict) {
390
+ return `__helpers.assertNonNull(${expr})`;
391
+ }
392
+ return expr;
393
+ }
394
+ // ============================================================================
395
+ // CHILD GENERATOR FACTORY
396
+ // ============================================================================
397
+ createChildGenerator(inputVar) {
398
+ return new LibraryCodeGenerator({
399
+ ...this.options,
400
+ strict: this.strict,
401
+ inputVar,
402
+ wrapInFunction: false,
403
+ });
404
+ }
405
+ }
406
+ //# sourceMappingURL=library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/codegen/library.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAkB,MAAM,WAAW,CAAC;AAO9D,MAAM,OAAO,oBAAqB,SAAQ,iBAAiB;IAC/C,MAAM,CAAU;IAE1B,YAAY,UAAiC,EAAE;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACxC,CAAC;IAED,+EAA+E;IAC/E,aAAa;IACb,+EAA+E;IAErE,kBAAkB,CAAC,IAAoB;QAC/C,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QAED,8BAA8B;QAC9B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC;YAChB,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,OAAO,OAAO,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,KAAK,CAAC;YACf,KAAK,SAAS;gBACZ,OAAO,YAAY,CAAC;YACtB,KAAK,QAAQ;gBACX,OAAO,eAAe,CAAC;YACzB,KAAK,OAAO;gBACV,OAAO,4BAA4B,CAAC;QACxC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAEpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,uBAAuB,KAAK,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC;QAC7D,CAAC;QACD,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,+EAA+E;IAC/E,gBAAgB;IAChB,+EAA+E;IAErE,oBAAoB,CAAC,IAAsB;QACnD,iEAAiE;QACjE,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,OAAO,uBAAuB,MAAM,MAAM,IAAI,CAAC,QAAQ,OAAO,IAAI,IAAI,CAAC;QACzE,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QACtD,OAAO,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,qFAAqF;IAC7E,sBAAsB,CAAC,IAAsB;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QAExB,6CAA6C;QAC7C,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChD,OAAO,uBAAuB,KAAK,sDAAsD,IAAI,CAAC,QAAQ,OAAO,IAAI,WAAW,IAAI,IAAI,CAAC;YACvI,CAAC;YACD,OAAO,IAAI,KAAK,2CAA2C,IAAI,CAAC,QAAQ,GAAG,CAAC;QAC9E,CAAC;QAED,oDAAoD;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,OAAO,IAAI,SAAS,0DAA0D,IAAI,CAAC,QAAQ,OAAO,QAAQ,KAAK,CAAC;QAClH,CAAC;QACD,OAAO,IAAI,SAAS,qCAAqC,IAAI,CAAC,QAAQ,GAAG,CAAC;IAC5E,CAAC;IAED,qDAAqD;IAC7C,aAAa,CAAC,IAAoB;QACxC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,cAAc;gBACjB,OAAO,KAAK,CAAC;YACf,KAAK,aAAa;gBAChB,OAAO,KAAK,CAAC;YACf;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED,mDAAmD;IAC3C,WAAW,CAAC,IAAoB;QACtC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,cAAc,CAAC;YACpB,KAAK,aAAa;gBAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,eAAe;IACf,+EAA+E;IAErE,mBAAmB,CAAC,IAAqB;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,OAAO,yBAAyB,MAAM,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC;QACjE,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,OAAO,GAAG,MAAM,GAAG,EAAE,IAAI,KAAK,GAAG,CAAC;IACpC,CAAC;IAED,+EAA+E;IAC/E,eAAe;IACf,+EAA+E;IAErE,mBAAmB,CAAC,IAAqB;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAExE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,OAAO,yBAAyB,MAAM,MAAM,IAAI,YAAY,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;QAC/F,CAAC;QACD,OAAO,IAAI,MAAM,iBAAiB,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACrE,CAAC;IAED,+EAA+E;IAC/E,gBAAgB;IAChB,+EAA+E;IAErE,oBAAoB,CAAC,IAAsB;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,OAAO,yBAAyB,MAAM,MAAM,IAAI,IAAI,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,MAAM,SAAS,CAAC;IAC7B,CAAC;IAED,+EAA+E;IAC/E,gBAAgB;IAChB,+EAA+E;IAErE,oBAAoB,CAAC,IAAsB;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAErE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,OAAO,0BAA0B,MAAM,KAAK,aAAa,MAAM,IAAI,IAAI,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,MAAM,kBAAkB,aAAa,GAAG,CAAC;IACtD,CAAC;IAES,yBAAyB,CAAC,SAAyB;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAC1D,OAAO,yBAAyB,IAAI,EAAE,CAAC;IACzC,CAAC;IAEM,wBAAwB,CAAC,IAAoB;QAClD,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,+EAA+E;IAC/E,gBAAgB;IAChB,+EAA+E;IAErE,oBAAoB,CAAC,IAAsB;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,QAAQ,CAAC,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,uBAAuB,KAAK,4BAA4B,YAAY,OAAO,IAAI,IAAI,CAAC;QAC7F,CAAC;QACD,OAAO,IAAI,KAAK,sCAAsC,YAAY,IAAI,CAAC;IACzE,CAAC;IAES,2BAA2B,CAAC,IAAuB;QAC3D,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE9C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,kBAAkB;oBACrB,MAAM,GAAG,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;wBACrD,CAAC,CAAC,IAAI,CAAC,GAAG;wBACV,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,KAAK,mBAAmB;oBACtB,OAAO,GAAG,IAAI,CAAC,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC1C,KAAK,kBAAkB;oBACrB,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1F,KAAK,gBAAgB;oBACnB,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACnC,CAAC;IAED,+EAA+E;IAC/E,iBAAiB;IACjB,+EAA+E;IAErE,kBAAkB,CAAC,IAAoB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACpC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAES,oBAAoB,CAAC,IAAsB;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAES,qBAAqB,CAAC,IAAuB;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACpC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAES,qBAAqB,CAAC,IAAuB;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,GAAG,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,+EAA+E;IAC/E,kBAAkB;IAClB,+EAA+E;IAErE,sBAAsB,CAAC,IAAwB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhD,0BAA0B;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;YACxC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;YAClC,OAAO,MAAM,OAAO,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC;QACnD,CAAC;QAED,yBAAyB;QACzB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;YACxC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;YAClC,OAAO,MAAM,OAAO,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC;QACjD,CAAC;QAED,iBAAiB;QACjB,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;YACxC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;YAClC,OAAO,MAAM,OAAO,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC;QACjD,CAAC;QAED,iBAAiB;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChE,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,WAAW;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC;IAC7B,CAAC;IAED,+EAA+E;IAC/E,kBAAkB;IAClB,+EAA+E;IAErE,sBAAsB,CAAC,IAAwB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnE,2BAA2B;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAClC,OAAO,aAAa,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACrD,CAAC;QAED,gCAAgC;QAChC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACtF,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAEpC,uDAAuD;YACvD,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,OAAO,GAAkB,IAAI,CAAC;gBAElC,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACjC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC7C,CAAC;gBAED,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAC/D,OAAO,aAAa,MAAM,0BAA0B,KAAK,MAAM,IAAI,QAAQ,OAAO,IAAI,CAAC;oBACzF,CAAC;oBACD,OAAO,aAAa,MAAM,IAAI,KAAK,YAAY,OAAO,IAAI,CAAC;gBAC7D,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC/D,OAAO,yBAAyB,KAAK,MAAM,IAAI,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACpF,CAAC;YACD,OAAO,IAAI,KAAK,WAAW,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACzC,CAAC;IAED,+EAA+E;IAC/E,aAAa;IACb,+EAA+E;IAErE,oBAAoB,CAAC,IAAoB,EAAE,SAAiB;QACpE,sCAAsC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,OAAO,aAAa,QAAQ,IAAI,SAAS,GAAG,CAAC;QAC/C,CAAC;QAED,sCAAsC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAElC,wDAAwD;YACxD,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,OAAO,GAAkB,IAAI,CAAC;gBAElC,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACjC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC7C,CAAC;gBAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;oBACvC,OAAO,aAAa,QAAQ,IAAI,SAAS,MAAM,OAAO,IAAI,CAAC;gBAC7D,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,OAAO,aAAa,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;QAC3F,CAAC;QAED,wCAAwC;QACxC,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACtE,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClD,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,OAAO,GAAG,WAAW,GAAG,EAAE,IAAI,KAAK,GAAG,CAAC;YACzC,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACtE,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,OAAO,IAAI,WAAW,WAAW,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;YACpE,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,kBAAkB;IAClB,+EAA+E;IAErE,qBAAqB,CAAC,IAAuB;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACpE,OAAO,IAAI,SAAS,GAAG,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAES,iBAAiB,CAAC,IAAY,EAAE,IAAwB;QAChE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,eAAe;gBAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO,wBAAwB,IAAI,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC;gBAC/D,CAAC;gBACD,OAAO,wBAAwB,IAAI,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC;YACzD,KAAK,WAAW;gBACd,OAAO,yBAAyB,IAAI,GAAG,CAAC;YAC1C;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAES,wBAAwB,CAAC,IAA0B;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,2BAA2B,IAAI,GAAG,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,0BAA0B;IAC1B,+EAA+E;IAErE,oBAAoB,CAAC,QAAgB;QAC7C,OAAO,IAAI,oBAAoB,CAAC;YAC9B,GAAG,IAAI,CAAC,OAAO;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ;YACR,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Native Code Generator - Generates pure JavaScript without any helper dependencies
3
+ */
4
+ import * as AST from '../ast.js';
5
+ import { BaseCodeGenerator, CodeGenOptions } from './base.js';
6
+ export declare class NativeCodeGenerator extends BaseCodeGenerator {
7
+ constructor(options?: CodeGenOptions);
8
+ protected generateIdentifier(node: AST.Identifier): string;
9
+ protected generateMemberAccess(node: AST.MemberAccess): string;
10
+ /** Generate the array expression, handling SpreadAccess specially */
11
+ private generateArrayExpression;
12
+ protected generateIndexAccess(node: AST.IndexAccess): string;
13
+ protected generateSliceAccess(node: AST.SliceAccess): string;
14
+ protected generateSpreadAccess(node: AST.SpreadAccess): string;
15
+ protected generateFilterAccess(node: AST.FilterAccess): string;
16
+ protected generatePredicateFunction(predicate: AST.Expression): string;
17
+ generateExpressionPublic(node: AST.Expression): string;
18
+ protected generateMapTransform(node: AST.MapTransform): string;
19
+ protected generateObjectLiteralForMap(node: AST.ObjectLiteral): string;
20
+ protected generateRootAccess(node: AST.RootAccess): string;
21
+ protected generateParentAccess(node: AST.ParentAccess): string;
22
+ protected generateCurrentAccess(node: AST.CurrentAccess): string;
23
+ protected generateBindingAccess(node: AST.BindingAccess): string;
24
+ protected generatePipeExpression(node: AST.PipeExpression): string;
25
+ protected generateCallExpression(node: AST.CallExpression): string;
26
+ protected tryGeneratePipedCall(node: AST.Expression, pipeValue: string): string | null;
27
+ protected generateTypeAssertion(node: AST.TypeAssertion): string;
28
+ protected generateNonNullAssertion(node: AST.NonNullAssertion): string;
29
+ protected generateNativeHelperCall(funcName: string, args: string[]): string | null;
30
+ protected generateNativeArrayMethod(array: string, method: string, keyPath: string): string;
31
+ protected createChildGenerator(inputVar: string): NativeCodeGenerator;
32
+ }
33
+ //# sourceMappingURL=native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/codegen/native.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE9D,qBAAa,mBAAoB,SAAQ,iBAAiB;gBAC5C,OAAO,GAAE,cAAmB;IAQxC,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM;IA6B1D,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,GAAG,MAAM;IAW9D,qEAAqE;IACrE,OAAO,CAAC,uBAAuB;IAY/B,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM;IAU5D,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM;IAW5D,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,GAAG,MAAM;IAS9D,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,GAAG,MAAM;IAM9D,SAAS,CAAC,yBAAyB,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM;IAO/D,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM;IAQ7D,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,GAAG,MAAM;IAO9D,SAAS,CAAC,2BAA2B,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,GAAG,MAAM;IA0BtE,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM;IAQ1D,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,GAAG,MAAM;IAQ9D,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,GAAG,MAAM;IAQhE,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,GAAG,MAAM;IAShE,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,GAAG,MAAM;IAgDlE,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,GAAG,MAAM;IA6ClE,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA8DtF,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,aAAa,GAAG,MAAM;IAIhE,SAAS,CAAC,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,gBAAgB,GAAG,MAAM;IAQtE,SAAS,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI;IA0FnF,SAAS,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IA8B3F,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB;CAOtE"}