@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
package/dist/ast.d.ts ADDED
@@ -0,0 +1,259 @@
1
+ /**
2
+ * Abstract Syntax Tree Node Types
3
+ */
4
+ export interface BaseNode {
5
+ type: string;
6
+ start?: number;
7
+ end?: number;
8
+ line?: number;
9
+ column?: number;
10
+ }
11
+ export interface NumberLiteral extends BaseNode {
12
+ type: 'NumberLiteral';
13
+ value: number;
14
+ }
15
+ export interface StringLiteral extends BaseNode {
16
+ type: 'StringLiteral';
17
+ value: string;
18
+ }
19
+ export interface BooleanLiteral extends BaseNode {
20
+ type: 'BooleanLiteral';
21
+ value: boolean;
22
+ }
23
+ export interface NullLiteral extends BaseNode {
24
+ type: 'NullLiteral';
25
+ }
26
+ export interface UndefinedLiteral extends BaseNode {
27
+ type: 'UndefinedLiteral';
28
+ }
29
+ export interface TemplateLiteral extends BaseNode {
30
+ type: 'TemplateLiteral';
31
+ parts: (string | Expression)[];
32
+ }
33
+ export interface ObjectLiteral extends BaseNode {
34
+ type: 'ObjectLiteral';
35
+ properties: ObjectProperty[];
36
+ }
37
+ export type ObjectProperty = StandardProperty | ShorthandProperty | ComputedProperty | SpreadProperty;
38
+ export interface StandardProperty extends BaseNode {
39
+ type: 'StandardProperty';
40
+ key: string;
41
+ value: Expression;
42
+ }
43
+ export interface ShorthandProperty extends BaseNode {
44
+ type: 'ShorthandProperty';
45
+ key: string;
46
+ }
47
+ export interface ComputedProperty extends BaseNode {
48
+ type: 'ComputedProperty';
49
+ key: Expression;
50
+ value: Expression;
51
+ }
52
+ export interface SpreadProperty extends BaseNode {
53
+ type: 'SpreadProperty';
54
+ argument: Expression;
55
+ }
56
+ export interface ArrayLiteral extends BaseNode {
57
+ type: 'ArrayLiteral';
58
+ elements: (Expression | SpreadElement)[];
59
+ }
60
+ export interface SpreadElement extends BaseNode {
61
+ type: 'SpreadElement';
62
+ argument: Expression;
63
+ }
64
+ export interface Identifier extends BaseNode {
65
+ type: 'Identifier';
66
+ name: string;
67
+ }
68
+ export interface MemberAccess extends BaseNode {
69
+ type: 'MemberAccess';
70
+ object: Expression;
71
+ property: string;
72
+ optional: boolean;
73
+ }
74
+ export interface IndexAccess extends BaseNode {
75
+ type: 'IndexAccess';
76
+ object: Expression;
77
+ index: Expression;
78
+ optional: boolean;
79
+ }
80
+ export interface SliceAccess extends BaseNode {
81
+ type: 'SliceAccess';
82
+ object: Expression;
83
+ sliceStart: Expression | null;
84
+ sliceEnd: Expression | null;
85
+ }
86
+ export interface SpreadAccess extends BaseNode {
87
+ type: 'SpreadAccess';
88
+ object: Expression;
89
+ }
90
+ export interface FilterAccess extends BaseNode {
91
+ type: 'FilterAccess';
92
+ object: Expression;
93
+ predicate: Expression;
94
+ }
95
+ export interface MapTransform extends BaseNode {
96
+ type: 'MapTransform';
97
+ array: Expression;
98
+ template: ObjectLiteral;
99
+ }
100
+ export interface RootAccess extends BaseNode {
101
+ type: 'RootAccess';
102
+ path: string | null;
103
+ }
104
+ export interface ParentAccess extends BaseNode {
105
+ type: 'ParentAccess';
106
+ path: string | null;
107
+ }
108
+ export interface CurrentAccess extends BaseNode {
109
+ type: 'CurrentAccess';
110
+ path: string | null;
111
+ }
112
+ export interface BindingAccess extends BaseNode {
113
+ type: 'BindingAccess';
114
+ name: string;
115
+ }
116
+ export interface BinaryExpression extends BaseNode {
117
+ type: 'BinaryExpression';
118
+ operator: string;
119
+ left: Expression;
120
+ right: Expression;
121
+ }
122
+ export interface UnaryExpression extends BaseNode {
123
+ type: 'UnaryExpression';
124
+ operator: string;
125
+ argument: Expression;
126
+ prefix: boolean;
127
+ }
128
+ export interface TernaryExpression extends BaseNode {
129
+ type: 'TernaryExpression';
130
+ test: Expression;
131
+ consequent: Expression;
132
+ alternate: Expression;
133
+ }
134
+ export interface PipeExpression extends BaseNode {
135
+ type: 'PipeExpression';
136
+ left: Expression;
137
+ right: Expression;
138
+ }
139
+ export interface PipeContextRef extends BaseNode {
140
+ type: 'PipeContextRef';
141
+ }
142
+ export interface NullCoalesce extends BaseNode {
143
+ type: 'NullCoalesce';
144
+ left: Expression;
145
+ right: Expression;
146
+ }
147
+ export interface CallExpression extends BaseNode {
148
+ type: 'CallExpression';
149
+ callee: Expression;
150
+ arguments: Expression[];
151
+ }
152
+ export interface ArrowFunction extends BaseNode {
153
+ type: 'ArrowFunction';
154
+ params: Parameter[];
155
+ body: Expression;
156
+ }
157
+ export interface Parameter extends BaseNode {
158
+ type: 'Parameter';
159
+ name: string;
160
+ typeAnnotation?: TypeAnnotation;
161
+ defaultValue?: Expression;
162
+ }
163
+ export interface IfExpression extends BaseNode {
164
+ type: 'IfExpression';
165
+ conditions: ConditionalBranch[];
166
+ alternate: Expression | null;
167
+ }
168
+ export interface ConditionalBranch extends BaseNode {
169
+ type: 'ConditionalBranch';
170
+ test: Expression;
171
+ consequent: Expression;
172
+ }
173
+ export interface LetBinding extends BaseNode {
174
+ type: 'LetBinding';
175
+ name: string;
176
+ value: Expression;
177
+ constant: boolean;
178
+ }
179
+ export interface Program extends BaseNode {
180
+ type: 'Program';
181
+ statements: LetBinding[];
182
+ expression: Expression | null;
183
+ }
184
+ export type TypeAnnotation = PrimitiveType | ArrayType | ObjectType | UnionType | TypeReference;
185
+ export interface PrimitiveType extends BaseNode {
186
+ type: 'PrimitiveType';
187
+ name: 'string' | 'number' | 'boolean' | 'null' | 'any';
188
+ nonNull: boolean;
189
+ }
190
+ export interface ArrayType extends BaseNode {
191
+ type: 'ArrayType';
192
+ elementType: TypeAnnotation;
193
+ }
194
+ export interface ObjectType extends BaseNode {
195
+ type: 'ObjectType';
196
+ properties: ObjectTypeProperty[];
197
+ }
198
+ export interface ObjectTypeProperty extends BaseNode {
199
+ type: 'ObjectTypeProperty';
200
+ key: string;
201
+ valueType: TypeAnnotation;
202
+ optional: boolean;
203
+ }
204
+ export interface UnionType extends BaseNode {
205
+ type: 'UnionType';
206
+ types: TypeAnnotation[];
207
+ }
208
+ export interface TypeReference extends BaseNode {
209
+ type: 'TypeReference';
210
+ name: string;
211
+ }
212
+ export interface TypeAssertion extends BaseNode {
213
+ type: 'TypeAssertion';
214
+ expression: Expression;
215
+ typeAnnotation: TypeAnnotation;
216
+ }
217
+ export interface NonNullAssertion extends BaseNode {
218
+ type: 'NonNullAssertion';
219
+ expression: Expression;
220
+ }
221
+ export type Literal = NumberLiteral | StringLiteral | BooleanLiteral | NullLiteral | UndefinedLiteral | TemplateLiteral;
222
+ export type ContextAccessNode = RootAccess | ParentAccess | CurrentAccess | BindingAccess;
223
+ export type Expression = Literal | ObjectLiteral | ArrayLiteral | Identifier | MemberAccess | IndexAccess | SliceAccess | SpreadAccess | FilterAccess | MapTransform | ContextAccessNode | BinaryExpression | UnaryExpression | TernaryExpression | PipeExpression | PipeContextRef | NullCoalesce | CallExpression | ArrowFunction | IfExpression | TypeAssertion | NonNullAssertion;
224
+ export type ASTNode = Expression | Program | LetBinding | Parameter;
225
+ export interface Visitor<T = void> {
226
+ visitProgram?(node: Program): T;
227
+ visitLetBinding?(node: LetBinding): T;
228
+ visitNumberLiteral?(node: NumberLiteral): T;
229
+ visitStringLiteral?(node: StringLiteral): T;
230
+ visitBooleanLiteral?(node: BooleanLiteral): T;
231
+ visitNullLiteral?(node: NullLiteral): T;
232
+ visitUndefinedLiteral?(node: UndefinedLiteral): T;
233
+ visitTemplateLiteral?(node: TemplateLiteral): T;
234
+ visitObjectLiteral?(node: ObjectLiteral): T;
235
+ visitArrayLiteral?(node: ArrayLiteral): T;
236
+ visitIdentifier?(node: Identifier): T;
237
+ visitMemberAccess?(node: MemberAccess): T;
238
+ visitIndexAccess?(node: IndexAccess): T;
239
+ visitSliceAccess?(node: SliceAccess): T;
240
+ visitSpreadAccess?(node: SpreadAccess): T;
241
+ visitFilterAccess?(node: FilterAccess): T;
242
+ visitRootAccess?(node: RootAccess): T;
243
+ visitParentAccess?(node: ParentAccess): T;
244
+ visitCurrentAccess?(node: CurrentAccess): T;
245
+ visitBindingAccess?(node: BindingAccess): T;
246
+ visitBinaryExpression?(node: BinaryExpression): T;
247
+ visitUnaryExpression?(node: UnaryExpression): T;
248
+ visitTernaryExpression?(node: TernaryExpression): T;
249
+ visitPipeExpression?(node: PipeExpression): T;
250
+ visitPipeContextRef?(node: PipeContextRef): T;
251
+ visitNullCoalesce?(node: NullCoalesce): T;
252
+ visitCallExpression?(node: CallExpression): T;
253
+ visitArrowFunction?(node: ArrowFunction): T;
254
+ visitIfExpression?(node: IfExpression): T;
255
+ visitTypeAssertion?(node: TypeAssertion): T;
256
+ visitNonNullAssertion?(node: NonNullAssertion): T;
257
+ }
258
+ export declare function visit<T>(node: ASTNode, visitor: Visitor<T>): T | undefined;
259
+ //# sourceMappingURL=ast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
package/dist/ast.js ADDED
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Abstract Syntax Tree Node Types
3
+ */
4
+ export function visit(node, visitor) {
5
+ const methodName = `visit${node.type}`;
6
+ const method = visitor[methodName];
7
+ if (method) {
8
+ return method.call(visitor, node);
9
+ }
10
+ return undefined;
11
+ }
12
+ //# sourceMappingURL=ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiYH,MAAM,UAAU,KAAK,CAAI,IAAa,EAAE,OAAmB;IACzD,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,IAAI,EAAsB,CAAC;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAuC,CAAC;IACzE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Base Code Generator - Shared functionality for all code generators
3
+ */
4
+ import * as AST from '../ast.js';
5
+ export interface CodeGenOptions {
6
+ /** Pretty print the output */
7
+ pretty?: boolean;
8
+ /** Variable name for input data */
9
+ inputVar?: string;
10
+ /** Variable name for bindings/context */
11
+ bindingsVar?: string;
12
+ /** Variable name for parent context */
13
+ parentVar?: string;
14
+ /** Wrap in function */
15
+ wrapInFunction?: boolean;
16
+ /** Function name (if wrapping) */
17
+ functionName?: string;
18
+ }
19
+ export declare const DEFAULT_OPTIONS: Required<CodeGenOptions>;
20
+ export declare abstract class BaseCodeGenerator {
21
+ protected options: Required<CodeGenOptions>;
22
+ protected localVariables: Set<string>;
23
+ protected currentPath: string[];
24
+ protected pipeContextVar: string | null;
25
+ protected tempVarCounter: number;
26
+ constructor(options?: CodeGenOptions);
27
+ generate(program: AST.Program): string;
28
+ protected generateProgram(program: AST.Program): string;
29
+ protected generateLetBinding(node: AST.LetBinding): string;
30
+ protected generateFlattenedPipeChain(node: AST.PipeExpression): string[];
31
+ protected generatePipeStep(step: AST.Expression, pipeVar: string): string;
32
+ protected generateExpression(node: AST.Expression): string;
33
+ protected generateTemplateLiteral(node: AST.TemplateLiteral): string;
34
+ protected generateObjectLiteral(node: AST.ObjectLiteral): string;
35
+ protected generateArrayLiteral(node: AST.ArrayLiteral): string;
36
+ protected generateBinaryExpression(node: AST.BinaryExpression): string;
37
+ protected generateConcatenation(node: AST.BinaryExpression): string;
38
+ protected flattenConcatenation(node: AST.Expression): AST.Expression[];
39
+ protected canBeNullish(node: AST.Expression): boolean;
40
+ protected generateUnaryExpression(node: AST.UnaryExpression): string;
41
+ protected generateTernaryExpression(node: AST.TernaryExpression): string;
42
+ protected generateNullCoalesce(node: AST.NullCoalesce): string;
43
+ protected generateArrowFunction(node: AST.ArrowFunction): string;
44
+ protected generateIfExpression(node: AST.IfExpression): string;
45
+ protected indentCode(code: string, levels?: number): string;
46
+ protected getTempVar(prefix?: string): string;
47
+ protected buildPathFromNode(node: AST.Expression): string;
48
+ /** Known array methods that return arrays */
49
+ protected static ARRAY_RETURNING_METHODS: Set<string>;
50
+ /**
51
+ * Check if an expression produces an array that should auto-project on property access.
52
+ * Returns true for: SpreadAccess, FilterAccess, SliceAccess, array-returning CallExpressions,
53
+ * and MemberAccess chains that end in any of these.
54
+ */
55
+ protected isArrayProducingExpression(node: AST.Expression): boolean;
56
+ /** Check if a CallExpression is a call to a known array-returning method */
57
+ protected isArrayReturningCall(node: AST.CallExpression): boolean;
58
+ /**
59
+ * Check if property access after an array-producing expression should auto-project.
60
+ * Skips auto-projection when the property is itself an array method (method chaining).
61
+ */
62
+ protected shouldAutoProject(node: AST.MemberAccess): boolean;
63
+ protected containsPipeContextRef(node: AST.Expression): boolean;
64
+ protected tryExtractPropertyPath(node: AST.Expression): string | null;
65
+ protected abstract generateIdentifier(node: AST.Identifier): string;
66
+ protected abstract generateMemberAccess(node: AST.MemberAccess): string;
67
+ protected abstract generateIndexAccess(node: AST.IndexAccess): string;
68
+ protected abstract generateSliceAccess(node: AST.SliceAccess): string;
69
+ protected abstract generateSpreadAccess(node: AST.SpreadAccess): string;
70
+ protected abstract generateFilterAccess(node: AST.FilterAccess): string;
71
+ protected abstract generateMapTransform(node: AST.MapTransform): string;
72
+ protected abstract generateRootAccess(node: AST.RootAccess): string;
73
+ protected abstract generateParentAccess(node: AST.ParentAccess): string;
74
+ protected abstract generateCurrentAccess(node: AST.CurrentAccess): string;
75
+ protected abstract generateBindingAccess(node: AST.BindingAccess): string;
76
+ protected abstract generatePipeExpression(node: AST.PipeExpression): string;
77
+ protected abstract generateCallExpression(node: AST.CallExpression): string;
78
+ protected abstract generateTypeAssertion(node: AST.TypeAssertion): string;
79
+ protected abstract generateNonNullAssertion(node: AST.NonNullAssertion): string;
80
+ protected abstract tryGeneratePipedCall(node: AST.Expression, pipeValue: string): string | null;
81
+ protected abstract createChildGenerator(inputVar: string): BaseCodeGenerator;
82
+ }
83
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/codegen/base.ts"],"names":[],"mappings":"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"}