@zenstackhq/language 3.8.0-beta.1 → 3.8.0-beta.3
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.
- package/dist/ast-DHvua30v.cjs +1721 -0
- package/dist/ast-DHvua30v.cjs.map +1 -0
- package/dist/ast-DhPyAQoX.d.mts +1440 -0
- package/dist/ast-Z-Y9-aOU.mjs +1021 -0
- package/dist/ast-Z-Y9-aOU.mjs.map +1 -0
- package/dist/ast-fg9-E1cy.d.cts +1440 -0
- package/dist/ast.cjs +1 -1
- package/dist/ast.d.cts +1 -1
- package/dist/ast.d.mts +1 -1
- package/dist/ast.mjs +1 -1
- package/dist/factory.cjs +31 -31
- package/dist/factory.cjs.map +1 -1
- package/dist/factory.d.cts +1 -1
- package/dist/factory.d.mts +1 -1
- package/dist/factory.mjs +31 -31
- package/dist/factory.mjs.map +1 -1
- package/dist/index.cjs +181 -356
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +181 -356
- package/dist/index.mjs.map +1 -1
- package/dist/{utils-CCU55PfR.mjs → utils-BbhrRsiM.mjs} +2 -2
- package/dist/{utils-CCU55PfR.mjs.map → utils-BbhrRsiM.mjs.map} +1 -1
- package/dist/{utils-b3dJKmYr.cjs → utils-C731YIwp.cjs} +2 -2
- package/dist/{utils-b3dJKmYr.cjs.map → utils-C731YIwp.cjs.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.d.cts +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +9 -8
- package/res/stdlib.zmodel +23 -1
- package/dist/ast-Clidp86c.cjs +0 -1465
- package/dist/ast-Clidp86c.cjs.map +0 -1
- package/dist/ast-DEfhnj8j.mjs +0 -765
- package/dist/ast-DEfhnj8j.mjs.map +0 -1
- package/dist/ast-DQDdBZQ3.d.mts +0 -525
- package/dist/ast-W2h6Qtfk.d.cts +0 -525
package/dist/factory.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as InternalAttribute, C as EnumField, F as Model, G as ReferenceExpr, I as ModelImport, J as ThisExpr, L as NullExpr, N as MemberAccessExpr, Q as UnsupportedFieldType, R as NumberLiteral, S as Enum, T as FieldInitializer, W as ReferenceArg, Z as UnaryExpr, _ as DataFieldAttribute, a as AttributeArg, b as DataModelAttribute, c as BinaryExpr, g as DataField, i as Attribute, j as InvocationExpr, l as BooleanLiteral, n as Argument, o as AttributeParam, q as StringLiteral, r as ArrayExpr, s as AttributeParamType, v as DataFieldType, y as DataModel, z as ObjectExpr } from "./ast-
|
|
1
|
+
import { A as InternalAttribute, C as EnumField, F as Model, G as ReferenceExpr, I as ModelImport, J as ThisExpr, L as NullExpr, N as MemberAccessExpr, Q as UnsupportedFieldType, R as NumberLiteral, S as Enum, T as FieldInitializer, W as ReferenceArg, Z as UnaryExpr, _ as DataFieldAttribute, a as AttributeArg, b as DataModelAttribute, c as BinaryExpr, g as DataField, i as Attribute, j as InvocationExpr, l as BooleanLiteral, n as Argument, o as AttributeParam, q as StringLiteral, r as ArrayExpr, s as AttributeParamType, v as DataFieldType, y as DataModel, z as ObjectExpr } from "./ast-Z-Y9-aOU.mjs";
|
|
2
2
|
import "./ast.mjs";
|
|
3
3
|
//#region src/factory/ast-factory.ts
|
|
4
4
|
var AstFactory = class AstFactory {
|
|
@@ -30,7 +30,7 @@ var AstFactory = class AstFactory {
|
|
|
30
30
|
var ThisExprFactory = class extends AstFactory {
|
|
31
31
|
constructor() {
|
|
32
32
|
super({
|
|
33
|
-
type: ThisExpr,
|
|
33
|
+
type: ThisExpr.$type,
|
|
34
34
|
node: { value: "this" }
|
|
35
35
|
});
|
|
36
36
|
}
|
|
@@ -38,7 +38,7 @@ var ThisExprFactory = class extends AstFactory {
|
|
|
38
38
|
var NullExprFactory = class extends AstFactory {
|
|
39
39
|
constructor() {
|
|
40
40
|
super({
|
|
41
|
-
type: NullExpr,
|
|
41
|
+
type: NullExpr.$type,
|
|
42
42
|
node: { value: "null" }
|
|
43
43
|
});
|
|
44
44
|
}
|
|
@@ -46,7 +46,7 @@ var NullExprFactory = class extends AstFactory {
|
|
|
46
46
|
var NumberLiteralFactory = class extends AstFactory {
|
|
47
47
|
value;
|
|
48
48
|
constructor() {
|
|
49
|
-
super({ type: NumberLiteral });
|
|
49
|
+
super({ type: NumberLiteral.$type });
|
|
50
50
|
}
|
|
51
51
|
setValue(value) {
|
|
52
52
|
this.value = value;
|
|
@@ -57,7 +57,7 @@ var NumberLiteralFactory = class extends AstFactory {
|
|
|
57
57
|
var StringLiteralFactory = class extends AstFactory {
|
|
58
58
|
value;
|
|
59
59
|
constructor() {
|
|
60
|
-
super({ type: StringLiteral });
|
|
60
|
+
super({ type: StringLiteral.$type });
|
|
61
61
|
}
|
|
62
62
|
setValue(value) {
|
|
63
63
|
this.value = value;
|
|
@@ -68,7 +68,7 @@ var StringLiteralFactory = class extends AstFactory {
|
|
|
68
68
|
var BooleanLiteralFactory = class extends AstFactory {
|
|
69
69
|
value;
|
|
70
70
|
constructor() {
|
|
71
|
-
super({ type: BooleanLiteral });
|
|
71
|
+
super({ type: BooleanLiteral.$type });
|
|
72
72
|
}
|
|
73
73
|
setValue(value) {
|
|
74
74
|
this.value = value;
|
|
@@ -120,7 +120,7 @@ var UnaryExprFactory = class extends AstFactory {
|
|
|
120
120
|
operand;
|
|
121
121
|
constructor() {
|
|
122
122
|
super({
|
|
123
|
-
type: UnaryExpr,
|
|
123
|
+
type: UnaryExpr.$type,
|
|
124
124
|
node: { operator: "!" }
|
|
125
125
|
});
|
|
126
126
|
}
|
|
@@ -135,7 +135,7 @@ var ReferenceExprFactory = class extends AstFactory {
|
|
|
135
135
|
args = [];
|
|
136
136
|
constructor() {
|
|
137
137
|
super({
|
|
138
|
-
type: ReferenceExpr,
|
|
138
|
+
type: ReferenceExpr.$type,
|
|
139
139
|
node: { args: [] }
|
|
140
140
|
});
|
|
141
141
|
}
|
|
@@ -159,7 +159,7 @@ var ReferenceArgFactory = class extends AstFactory {
|
|
|
159
159
|
name;
|
|
160
160
|
value;
|
|
161
161
|
constructor() {
|
|
162
|
-
super({ type: ReferenceArg });
|
|
162
|
+
super({ type: ReferenceArg.$type });
|
|
163
163
|
}
|
|
164
164
|
setName(name) {
|
|
165
165
|
this.name = name;
|
|
@@ -176,7 +176,7 @@ var MemberAccessExprFactory = class extends AstFactory {
|
|
|
176
176
|
member;
|
|
177
177
|
operand;
|
|
178
178
|
constructor() {
|
|
179
|
-
super({ type: MemberAccessExpr });
|
|
179
|
+
super({ type: MemberAccessExpr.$type });
|
|
180
180
|
}
|
|
181
181
|
setMember(target) {
|
|
182
182
|
this.member = target;
|
|
@@ -193,7 +193,7 @@ var ObjectExprFactory = class extends AstFactory {
|
|
|
193
193
|
fields = [];
|
|
194
194
|
constructor() {
|
|
195
195
|
super({
|
|
196
|
-
type: ObjectExpr,
|
|
196
|
+
type: ObjectExpr.$type,
|
|
197
197
|
node: { fields: [] }
|
|
198
198
|
});
|
|
199
199
|
}
|
|
@@ -207,7 +207,7 @@ var FieldInitializerFactory = class extends AstFactory {
|
|
|
207
207
|
name;
|
|
208
208
|
value;
|
|
209
209
|
constructor() {
|
|
210
|
-
super({ type: FieldInitializer });
|
|
210
|
+
super({ type: FieldInitializer.$type });
|
|
211
211
|
}
|
|
212
212
|
setName(name) {
|
|
213
213
|
this.name = name;
|
|
@@ -225,7 +225,7 @@ var InvocationExprFactory = class extends AstFactory {
|
|
|
225
225
|
function;
|
|
226
226
|
constructor() {
|
|
227
227
|
super({
|
|
228
|
-
type: InvocationExpr,
|
|
228
|
+
type: InvocationExpr.$type,
|
|
229
229
|
node: { args: [] }
|
|
230
230
|
});
|
|
231
231
|
}
|
|
@@ -246,7 +246,7 @@ var InvocationExprFactory = class extends AstFactory {
|
|
|
246
246
|
var ArgumentFactory = class extends AstFactory {
|
|
247
247
|
value;
|
|
248
248
|
constructor() {
|
|
249
|
-
super({ type: Argument });
|
|
249
|
+
super({ type: Argument.$type });
|
|
250
250
|
}
|
|
251
251
|
setValue(builder) {
|
|
252
252
|
this.value = builder(ExpressionBuilder());
|
|
@@ -258,7 +258,7 @@ var ArrayExprFactory = class extends AstFactory {
|
|
|
258
258
|
items = [];
|
|
259
259
|
constructor() {
|
|
260
260
|
super({
|
|
261
|
-
type: ArrayExpr,
|
|
261
|
+
type: ArrayExpr.$type,
|
|
262
262
|
node: { items: [] }
|
|
263
263
|
});
|
|
264
264
|
}
|
|
@@ -273,7 +273,7 @@ var BinaryExprFactory = class extends AstFactory {
|
|
|
273
273
|
right;
|
|
274
274
|
left;
|
|
275
275
|
constructor() {
|
|
276
|
-
super({ type: BinaryExpr });
|
|
276
|
+
super({ type: BinaryExpr.$type });
|
|
277
277
|
}
|
|
278
278
|
setOperator(operator) {
|
|
279
279
|
this.operator = operator;
|
|
@@ -298,7 +298,7 @@ var DataFieldAttributeFactory = class extends AstFactory {
|
|
|
298
298
|
decl;
|
|
299
299
|
constructor() {
|
|
300
300
|
super({
|
|
301
|
-
type: DataFieldAttribute,
|
|
301
|
+
type: DataFieldAttribute.$type,
|
|
302
302
|
node: { args: [] }
|
|
303
303
|
});
|
|
304
304
|
}
|
|
@@ -324,7 +324,7 @@ var DataModelAttributeFactory = class extends AstFactory {
|
|
|
324
324
|
decl;
|
|
325
325
|
constructor() {
|
|
326
326
|
super({
|
|
327
|
-
type: DataModelAttribute,
|
|
327
|
+
type: DataModelAttribute.$type,
|
|
328
328
|
node: { args: [] }
|
|
329
329
|
});
|
|
330
330
|
}
|
|
@@ -349,7 +349,7 @@ var AttributeArgFactory = class extends AstFactory {
|
|
|
349
349
|
name = "";
|
|
350
350
|
value;
|
|
351
351
|
constructor() {
|
|
352
|
-
super({ type: AttributeArg });
|
|
352
|
+
super({ type: AttributeArg.$type });
|
|
353
353
|
}
|
|
354
354
|
setName(name) {
|
|
355
355
|
this.name = name;
|
|
@@ -367,7 +367,7 @@ var InternalAttributeFactory = class extends AstFactory {
|
|
|
367
367
|
args = [];
|
|
368
368
|
constructor() {
|
|
369
369
|
super({
|
|
370
|
-
type: InternalAttribute,
|
|
370
|
+
type: InternalAttribute.$type,
|
|
371
371
|
node: { args: [] }
|
|
372
372
|
});
|
|
373
373
|
}
|
|
@@ -395,7 +395,7 @@ var AttributeParamFactory = class extends AstFactory {
|
|
|
395
395
|
type;
|
|
396
396
|
constructor() {
|
|
397
397
|
super({
|
|
398
|
-
type: AttributeParam,
|
|
398
|
+
type: AttributeParam.$type,
|
|
399
399
|
node: {
|
|
400
400
|
comments: [],
|
|
401
401
|
attributes: []
|
|
@@ -434,7 +434,7 @@ var AttributeParamTypeFactory = class extends AstFactory {
|
|
|
434
434
|
reference;
|
|
435
435
|
type;
|
|
436
436
|
constructor() {
|
|
437
|
-
super({ type: AttributeParamType });
|
|
437
|
+
super({ type: AttributeParamType.$type });
|
|
438
438
|
}
|
|
439
439
|
setArray(array) {
|
|
440
440
|
this.array = array;
|
|
@@ -467,7 +467,7 @@ var AttributeFactory = class extends AstFactory {
|
|
|
467
467
|
params = [];
|
|
468
468
|
constructor() {
|
|
469
469
|
super({
|
|
470
|
-
type: Attribute,
|
|
470
|
+
type: Attribute.$type,
|
|
471
471
|
node: {
|
|
472
472
|
comments: [],
|
|
473
473
|
attributes: [],
|
|
@@ -537,7 +537,7 @@ var DataModelFactory = class extends AstFactory {
|
|
|
537
537
|
name;
|
|
538
538
|
constructor() {
|
|
539
539
|
super({
|
|
540
|
-
type: DataModel,
|
|
540
|
+
type: DataModel.$type,
|
|
541
541
|
node: {
|
|
542
542
|
attributes: [],
|
|
543
543
|
comments: [],
|
|
@@ -594,7 +594,7 @@ var DataFieldFactory = class extends AstFactory {
|
|
|
594
594
|
type;
|
|
595
595
|
constructor() {
|
|
596
596
|
super({
|
|
597
|
-
type: DataField,
|
|
597
|
+
type: DataField.$type,
|
|
598
598
|
node: {
|
|
599
599
|
attributes: [],
|
|
600
600
|
comments: []
|
|
@@ -636,7 +636,7 @@ var DataFieldTypeFactory = class extends AstFactory {
|
|
|
636
636
|
type;
|
|
637
637
|
unsupported;
|
|
638
638
|
constructor() {
|
|
639
|
-
super({ type: DataFieldType });
|
|
639
|
+
super({ type: DataFieldType.$type });
|
|
640
640
|
}
|
|
641
641
|
setArray(array) {
|
|
642
642
|
this.array = array;
|
|
@@ -670,7 +670,7 @@ var DataFieldTypeFactory = class extends AstFactory {
|
|
|
670
670
|
var UnsupportedFieldTypeFactory = class extends AstFactory {
|
|
671
671
|
value;
|
|
672
672
|
constructor() {
|
|
673
|
-
super({ type: UnsupportedFieldType });
|
|
673
|
+
super({ type: UnsupportedFieldType.$type });
|
|
674
674
|
}
|
|
675
675
|
setValue(builder) {
|
|
676
676
|
this.value = builder(ExpressionBuilder());
|
|
@@ -683,7 +683,7 @@ var ModelFactory = class extends AstFactory {
|
|
|
683
683
|
imports = [];
|
|
684
684
|
constructor() {
|
|
685
685
|
super({
|
|
686
|
-
type: Model,
|
|
686
|
+
type: Model.$type,
|
|
687
687
|
node: {
|
|
688
688
|
declarations: [],
|
|
689
689
|
imports: []
|
|
@@ -704,7 +704,7 @@ var ModelFactory = class extends AstFactory {
|
|
|
704
704
|
var ModelImportFactory = class extends AstFactory {
|
|
705
705
|
path;
|
|
706
706
|
constructor() {
|
|
707
|
-
super({ type: ModelImport });
|
|
707
|
+
super({ type: ModelImport.$type });
|
|
708
708
|
}
|
|
709
709
|
setPath(path) {
|
|
710
710
|
this.path = path;
|
|
@@ -719,7 +719,7 @@ var EnumFactory = class extends AstFactory {
|
|
|
719
719
|
attributes = [];
|
|
720
720
|
constructor() {
|
|
721
721
|
super({
|
|
722
|
-
type: Enum,
|
|
722
|
+
type: Enum.$type,
|
|
723
723
|
node: {
|
|
724
724
|
comments: [],
|
|
725
725
|
fields: [],
|
|
@@ -749,7 +749,7 @@ var EnumFieldFactory = class extends AstFactory {
|
|
|
749
749
|
attributes = [];
|
|
750
750
|
constructor() {
|
|
751
751
|
super({
|
|
752
|
-
type: EnumField,
|
|
752
|
+
type: EnumField.$type,
|
|
753
753
|
node: {
|
|
754
754
|
comments: [],
|
|
755
755
|
attributes: []
|
package/dist/factory.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.mjs","names":[],"sources":["../src/factory/ast-factory.ts","../src/factory/primitives.ts","../src/factory/expression.ts","../src/factory/attribute.ts","../src/factory/declaration.ts"],"sourcesContent":["import { type AstNode } from '../ast';\n\nexport type ContainerProps<T extends AstNode | undefined> = {\n $container: T;\n $containerProperty?: string;\n $containerIndex?: number;\n};\n\ntype NodeFactoriesFor<N> = {\n [K in keyof N as {} extends Pick<N, K> ? never : K]: N[K] extends (infer U)[]\n ? (AstFactory<U extends AstNode ? U : AstNode> | U)[]\n : AstFactory<N[K] extends AstNode ? N[K] : AstNode> | N[K];\n} & {\n [K in keyof N as {} extends Pick<N, K> ? K : never]?: N[K] extends (infer U)[]\n ? (AstFactory<U extends AstNode ? U : AstNode> | U)[]\n : AstFactory<N[K] extends AstNode ? N[K] : AstNode> | N[K];\n};\n\nexport abstract class AstFactory<T extends AstNode = AstNode> {\n node = {} as T;\n constructor({ type, node }: { type: T['$type']; node?: Partial<T> }) {\n (this.node as any).$type = type;\n if (node) {\n this.update(node);\n }\n }\n setContainer(container: T['$container']) {\n (this.node as any).$container = container;\n return this;\n }\n\n get(params?: ContainerProps<T['$container']>): T {\n if (params) this.update(params as any);\n return this.node;\n }\n update(nodeArg: Partial<T | NodeFactoriesFor<T>>): T {\n const keys = Object.keys(nodeArg as object);\n keys.forEach((key) => {\n const child = (nodeArg as any)[key];\n if (child instanceof AstFactory) {\n (this.node as any)[key] = child.get({ $container: this.node as any });\n } else if (Array.isArray(child)) {\n (this.node as any)[key] = child.map((item: any) =>\n item instanceof AstFactory ? item.get({ $container: this.node as any }) : item,\n );\n } else {\n (this.node as any)[key] = child;\n }\n });\n return this.node;\n }\n}\n","import { AstFactory } from './ast-factory';\nimport { BooleanLiteral, NullExpr, NumberLiteral, StringLiteral, ThisExpr } from '../ast';\n\nexport class ThisExprFactory extends AstFactory<ThisExpr> {\n constructor() {\n super({ type: ThisExpr, node: { value: 'this' } });\n }\n}\n\nexport class NullExprFactory extends AstFactory<NullExpr> {\n constructor() {\n super({ type: NullExpr, node: { value: 'null' } });\n }\n}\n\nexport class NumberLiteralFactory extends AstFactory<NumberLiteral> {\n value?: number | string;\n\n constructor() {\n super({ type: NumberLiteral });\n }\n\n setValue(value: number | string) {\n this.value = value;\n this.update({\n value: this.value.toString(),\n });\n return this;\n }\n}\n\nexport class StringLiteralFactory extends AstFactory<StringLiteral> {\n value?: string;\n\n constructor() {\n super({ type: StringLiteral });\n }\n\n setValue(value: string) {\n this.value = value;\n this.update({\n value: this.value,\n });\n return this;\n }\n}\nexport class BooleanLiteralFactory extends AstFactory<BooleanLiteral> {\n value?: boolean;\n\n constructor() {\n super({ type: BooleanLiteral });\n }\n\n setValue(value: boolean) {\n this.value = value;\n this.update({\n value: this.value,\n });\n return this;\n }\n}\n","import type { Reference } from 'langium';\nimport { AstFactory } from './ast-factory';\nimport {\n Argument,\n ArrayExpr,\n BinaryExpr,\n FieldInitializer,\n FunctionDecl,\n InvocationExpr,\n MemberAccessExpr,\n MemberAccessTarget,\n ObjectExpr,\n ReferenceArg,\n ReferenceExpr,\n ReferenceTarget,\n UnaryExpr,\n type Expression,\n type RegularID,\n} from '../ast';\nimport {\n BooleanLiteralFactory,\n NullExprFactory,\n NumberLiteralFactory,\n StringLiteralFactory,\n ThisExprFactory,\n} from './primitives';\n\nexport const ExpressionBuilder = () =>\n ({\n get ArrayExpr() {\n return new ArrayExprFactory();\n },\n get BinaryExpr() {\n return new BinaryExprFactory();\n },\n get BooleanLiteral() {\n return new BooleanLiteralFactory();\n },\n get InvocationExpr() {\n return new InvocationExprFactory();\n },\n get MemberAccessExpr() {\n return new MemberAccessExprFactory();\n },\n get NullExpr() {\n return new NullExprFactory();\n },\n get NumberLiteral() {\n return new NumberLiteralFactory();\n },\n get ObjectExpr() {\n return new ObjectExprFactory();\n },\n get ReferenceExpr() {\n return new ReferenceExprFactory();\n },\n get StringLiteral() {\n return new StringLiteralFactory();\n },\n get ThisExpr() {\n return new ThisExprFactory();\n },\n get UnaryExpr() {\n return new UnaryExprFactory();\n },\n }) satisfies ExpressionBuilderType;\ntype ExpressionBuilderType<T extends Expression = Expression> = {\n [K in T['$type']]: AstFactory<Extract<T, { $type: K }>>;\n};\n\ntype ExpressionFactoryMap = ReturnType<typeof ExpressionBuilder>;\n\nexport type ExpressionBuilder<T extends Expression = Expression> = Pick<\n ExpressionFactoryMap,\n Extract<T['$type'], keyof ExpressionFactoryMap>\n>;\n\nexport class UnaryExprFactory extends AstFactory<UnaryExpr> {\n operand?: AstFactory<Expression>;\n\n constructor() {\n super({ type: UnaryExpr, node: { operator: '!' } });\n }\n\n setOperand(builder: (a: ExpressionBuilder) => AstFactory<Expression>) {\n this.operand = builder(ExpressionBuilder());\n this.update({\n operand: this.operand,\n });\n return this;\n }\n}\n\nexport class ReferenceExprFactory extends AstFactory<ReferenceExpr> {\n target?: Reference<ReferenceTarget>;\n args: ReferenceArgFactory[] = [];\n\n constructor() {\n super({ type: ReferenceExpr, node: { args: [] } });\n }\n\n setTarget(target: ReferenceTarget) {\n this.target = {\n $refText: target.name,\n ref: target,\n };\n this.update({\n target: this.target,\n });\n return this;\n }\n\n addArg(builder: (a: ExpressionBuilder) => AstFactory<Expression>, name?: string) {\n const arg = new ReferenceArgFactory().setValue(builder);\n if (name) {\n arg.setName(name);\n }\n this.args.push(arg);\n this.update({\n args: this.args,\n });\n return this;\n }\n}\n\nexport class ReferenceArgFactory extends AstFactory<ReferenceArg> {\n name?: string;\n value?: AstFactory<Expression>;\n\n constructor() {\n super({ type: ReferenceArg });\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n setValue(builder: (a: ExpressionBuilder) => AstFactory<Expression>) {\n this.value = builder(ExpressionBuilder());\n this.update({\n value: this.value,\n });\n return this;\n }\n}\n\nexport class MemberAccessExprFactory extends AstFactory<MemberAccessExpr> {\n member?: Reference<MemberAccessTarget>;\n operand?: AstFactory<Expression>;\n\n constructor() {\n super({ type: MemberAccessExpr });\n }\n\n setMember(target: Reference<MemberAccessTarget>) {\n this.member = target;\n this.update({\n member: this.member,\n });\n return this;\n }\n\n setOperand(builder: (b: ExpressionBuilder) => AstFactory<Expression>) {\n this.operand = builder(ExpressionBuilder());\n this.update({\n operand: this.operand,\n });\n return this;\n }\n}\n\nexport class ObjectExprFactory extends AstFactory<ObjectExpr> {\n fields: FieldInitializerFactory[] = [];\n\n constructor() {\n super({ type: ObjectExpr, node: { fields: [] } });\n }\n\n addField(builder: (b: FieldInitializerFactory) => FieldInitializerFactory) {\n this.fields.push(builder(new FieldInitializerFactory()));\n this.update({\n fields: this.fields,\n });\n return this;\n }\n}\n\nexport class FieldInitializerFactory extends AstFactory<FieldInitializer> {\n name?: RegularID;\n value?: AstFactory<Expression>;\n\n constructor() {\n super({ type: FieldInitializer });\n }\n\n setName(name: RegularID) {\n this.name = name;\n this.update({\n name: this.name!,\n });\n return this;\n }\n\n setValue(builder: (a: ExpressionBuilder) => AstFactory<Expression>) {\n this.value = builder(ExpressionBuilder());\n this.update({\n value: this.value!,\n });\n return this;\n }\n}\n\nexport class InvocationExprFactory extends AstFactory<InvocationExpr> {\n args: ArgumentFactory[] = [];\n function?: Reference<FunctionDecl>;\n\n constructor() {\n super({ type: InvocationExpr, node: { args: [] } });\n }\n\n addArg(builder: (arg: ArgumentFactory) => ArgumentFactory) {\n this.args.push(builder(new ArgumentFactory()));\n this.update({\n args: this.args,\n });\n return this;\n }\n\n setFunction(value: FunctionDecl) {\n this.function = {\n $refText: value.name,\n ref: value,\n };\n this.update({\n function: this.function!,\n });\n return this;\n }\n}\n\nexport class ArgumentFactory extends AstFactory<Argument> {\n value?: AstFactory<Expression>;\n\n constructor() {\n super({ type: Argument });\n }\n\n setValue(builder: (a: ExpressionBuilder) => AstFactory<Expression>) {\n this.value = builder(ExpressionBuilder());\n this.update({\n value: this.value!,\n });\n return this;\n }\n}\n\nexport class ArrayExprFactory extends AstFactory<ArrayExpr> {\n items: AstFactory<Expression>[] = [];\n\n constructor() {\n super({ type: ArrayExpr, node: { items: [] } });\n }\n\n addItem(builder: (a: ExpressionBuilder) => AstFactory<Expression>) {\n this.items.push(builder(ExpressionBuilder()));\n this.update({\n items: this.items,\n });\n return this;\n }\n}\n\nexport class BinaryExprFactory extends AstFactory<BinaryExpr> {\n operator?: BinaryExpr['operator'];\n right?: AstFactory<Expression>;\n left?: AstFactory<Expression>;\n // TODO: add support for CollectionPredicateBinding\n\n constructor() {\n super({ type: BinaryExpr });\n }\n\n setOperator(operator: BinaryExpr['operator']) {\n this.operator = operator;\n this.update({\n operator: this.operator!,\n });\n return this;\n }\n setRight(builder: (arg: ExpressionBuilder) => AstFactory<Expression>) {\n this.right = builder(ExpressionBuilder());\n this.update({\n right: this.right!,\n });\n return this;\n }\n setLeft(builder: (arg: ExpressionBuilder) => AstFactory<Expression>) {\n this.left = builder(ExpressionBuilder());\n this.update({\n left: this.left!,\n });\n return this;\n }\n}\n","import { AstFactory } from './ast-factory';\nimport {\n Attribute,\n AttributeArg,\n AttributeParam,\n AttributeParamType,\n DataFieldAttribute,\n DataModelAttribute,\n Expression,\n InternalAttribute,\n TypeDeclaration,\n type Reference,\n type RegularID,\n} from '../ast';\nimport { ExpressionBuilder } from './expression';\n\nexport class DataFieldAttributeFactory extends AstFactory<DataFieldAttribute> {\n args: AttributeArgFactory[] = [];\n decl?: Reference<Attribute>;\n constructor() {\n super({ type: DataFieldAttribute, node: { args: [] } });\n }\n setDecl(decl: Attribute) {\n if (!decl) {\n throw new Error('Attribute declaration is required');\n }\n this.decl = {\n $refText: decl.name,\n ref: decl,\n };\n this.update({\n decl: this.decl,\n });\n return this;\n }\n addArg(builder: (b: ExpressionBuilder) => AstFactory<Expression>, name?: string) {\n const factory = new AttributeArgFactory().setValue(builder);\n if (name) {\n factory.setName(name);\n }\n this.args.push(factory);\n this.update({\n args: this.args,\n });\n return this;\n }\n}\n\nexport class DataModelAttributeFactory extends AstFactory<DataModelAttribute> {\n args: AttributeArgFactory[] = [];\n decl?: Reference<Attribute>;\n constructor() {\n super({ type: DataModelAttribute, node: { args: [] } });\n }\n setDecl(decl: Attribute) {\n if (!decl) {\n throw new Error('Attribute declaration is required');\n }\n this.decl = {\n $refText: decl.name,\n ref: decl,\n };\n this.update({\n decl: this.decl,\n });\n return this;\n }\n addArg(builder: (b: ExpressionBuilder) => AstFactory<Expression>, name?: string) {\n const factory = new AttributeArgFactory().setValue(builder);\n if (name) {\n factory.setName(name);\n }\n this.args.push(factory);\n this.update({\n args: this.args,\n });\n return this;\n }\n}\n\nexport class AttributeArgFactory extends AstFactory<AttributeArg> {\n name?: RegularID = '';\n value?: AstFactory<Expression>;\n\n constructor() {\n super({ type: AttributeArg });\n }\n\n setName(name: RegularID) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n setValue(builder: (b: ExpressionBuilder) => AstFactory<Expression>) {\n this.value = builder(ExpressionBuilder());\n this.update({\n value: this.value,\n });\n return this;\n }\n}\n\nexport class InternalAttributeFactory extends AstFactory<InternalAttribute> {\n decl?: Reference<Attribute>;\n args: AttributeArgFactory[] = [];\n\n constructor() {\n super({ type: InternalAttribute, node: { args: [] } });\n }\n\n setDecl(decl: Attribute) {\n this.decl = {\n $refText: decl.name,\n ref: decl,\n };\n this.update({\n decl: this.decl,\n });\n return this;\n }\n\n addArg(builder: (b: ExpressionBuilder) => AstFactory<Expression>, name?: string) {\n const factory = new AttributeArgFactory().setValue(builder);\n if (name) {\n factory.setName(name);\n }\n this.args.push(factory);\n this.update({\n args: this.args,\n });\n return this;\n }\n}\n\nexport class AttributeParamFactory extends AstFactory<AttributeParam> {\n attributes: InternalAttributeFactory[] = [];\n comments: string[] = [];\n default?: boolean;\n name?: RegularID;\n type?: AttributeParamTypeFactory;\n\n constructor() {\n super({\n type: AttributeParam,\n node: {\n comments: [],\n attributes: [],\n },\n });\n }\n\n addAttribute(builder: (b: InternalAttributeFactory) => InternalAttributeFactory) {\n this.attributes.push(builder(new InternalAttributeFactory()));\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n setComments(comments: string[]) {\n this.comments = comments;\n this.update({\n comments: this.comments,\n });\n return this;\n }\n\n setDefault(defaultValue: boolean) {\n this.default = defaultValue;\n this.update({\n default: this.default,\n });\n return this;\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n setType(builder: (b: AttributeParamTypeFactory) => AttributeParamTypeFactory) {\n this.type = builder(new AttributeParamTypeFactory());\n this.update({\n type: this.type,\n });\n return this;\n }\n}\n\nexport class AttributeParamTypeFactory extends AstFactory<AttributeParamType> {\n array?: boolean;\n optional?: boolean;\n reference?: Reference<TypeDeclaration>;\n type?: AttributeParamType['type'];\n constructor() {\n super({ type: AttributeParamType });\n }\n setArray(array: boolean) {\n this.array = array;\n this.update({\n array: this.array,\n });\n return this;\n }\n\n setOptional(optional: boolean) {\n this.optional = optional;\n this.update({\n optional: this.optional,\n });\n return this;\n }\n\n setReference(reference: TypeDeclaration) {\n this.reference = {\n $refText: reference.name,\n ref: reference,\n };\n this.update({\n reference: this.reference,\n });\n return this;\n }\n\n setType(type: AttributeParamType['type']) {\n this.type = type;\n this.update({\n type: this.type,\n });\n return this;\n }\n}\n\nexport class AttributeFactory extends AstFactory<Attribute> {\n name?: string;\n comments: string[] = [];\n attributes: InternalAttributeFactory[] = [];\n params: AttributeParamFactory[] = [];\n\n constructor() {\n super({ type: Attribute, node: { comments: [], attributes: [], params: [] } });\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n setComments(comments: string[]) {\n this.comments = comments;\n this.update({\n comments: this.comments,\n });\n return this;\n }\n\n addAttribute(builder: (b: InternalAttributeFactory) => InternalAttributeFactory) {\n this.attributes.push(builder(new InternalAttributeFactory()));\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n addParam(builder: (b: AttributeParamFactory) => AttributeParamFactory) {\n this.params.push(builder(new AttributeParamFactory()));\n this.update({\n params: this.params,\n });\n return this;\n }\n}\n","import { AstFactory } from './ast-factory';\nimport { AbstractDeclaration, type Reference } from '../ast';\nimport {\n type BuiltinType,\n DataField,\n DataFieldType,\n DataModel,\n Enum,\n EnumField,\n LiteralExpr,\n Model,\n ModelImport,\n type RegularID,\n type RegularIDWithTypeNames,\n TypeDeclaration,\n type TypeDef,\n UnsupportedFieldType,\n} from '../generated/ast';\nimport { AttributeFactory, DataFieldAttributeFactory, DataModelAttributeFactory } from './attribute';\nimport { ExpressionBuilder } from './expression';\nexport const DeclarationBuilder = () =>\n ({\n get Attribute() {\n return new AttributeFactory();\n },\n get DataModel() {\n return new DataModelFactory();\n },\n get DataSource(): any {\n throw new Error('DataSource is not implemented');\n },\n get Enum() {\n return new EnumFactory();\n },\n get FunctionDecl(): any {\n throw new Error('FunctionDecl is not implemented');\n },\n get GeneratorDecl(): any {\n throw new Error('GeneratorDecl is not implemented');\n },\n get Plugin(): any {\n throw new Error('Plugin is not implemented');\n },\n get Procedure(): any {\n throw new Error('Procedure is not implemented');\n },\n get TypeDef(): any {\n throw new Error('TypeDef is not implemented');\n },\n }) satisfies DeclarationBuilderType;\ntype DeclarationBuilderType<T extends AbstractDeclaration = AbstractDeclaration> = {\n [K in T['$type']]: AstFactory<Extract<T, { $type: K }>>;\n};\ntype DeclarationBuilderMap = ReturnType<typeof DeclarationBuilder>;\n\nexport type DeclarationBuilder<T extends AbstractDeclaration = AbstractDeclaration> = Pick<\n DeclarationBuilderMap,\n Extract<T['$type'], keyof DeclarationBuilderMap>\n>;\n\nexport class DataModelFactory extends AstFactory<DataModel> {\n attributes: DataModelAttributeFactory[] = [];\n baseModel?: Reference<DataModel>;\n comments: string[] = [];\n fields: DataFieldFactory[] = [];\n isView?: boolean;\n mixins: Reference<TypeDef>[] = [];\n name?: RegularID;\n\n constructor() {\n super({\n type: DataModel,\n node: {\n attributes: [],\n comments: [],\n fields: [],\n mixins: [],\n },\n });\n }\n\n addAttribute(builder: (attr: DataModelAttributeFactory) => DataModelAttributeFactory) {\n this.attributes.push(builder(new DataModelAttributeFactory()).setContainer(this.node));\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n setBaseModel(model: Reference<DataModel>) {\n this.baseModel = model;\n this.update({\n baseModel: this.baseModel,\n });\n return this;\n }\n\n setComments(comments: string[]) {\n this.comments = comments;\n this.update({\n comments: this.comments,\n });\n return this;\n }\n\n addComment(comment: string) {\n this.comments.push(comment);\n this.update({\n comments: this.comments,\n });\n return this;\n }\n\n addField(builder: (field: DataFieldFactory) => DataFieldFactory) {\n this.fields.push(builder(new DataFieldFactory()).setContainer(this.node));\n this.update({\n fields: this.fields,\n });\n return this;\n }\n\n setIsView(isView: boolean) {\n this.isView = isView;\n this.update({\n isView: this.isView,\n });\n return this;\n }\n\n addMixin(mixin: Reference<TypeDef>) {\n this.mixins.push(mixin);\n this.update({\n mixins: this.mixins,\n });\n return this;\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n}\n\nexport class DataFieldFactory extends AstFactory<DataField> {\n attributes: DataFieldAttributeFactory[] = [];\n comments: string[] = [];\n name?: string;\n type?: DataFieldTypeFactory;\n\n constructor() {\n super({ type: DataField, node: { attributes: [], comments: [] } });\n }\n\n addAttribute(\n builder: ((attr: DataFieldAttributeFactory) => DataFieldAttributeFactory) | DataFieldAttributeFactory,\n ) {\n if (builder instanceof DataFieldAttributeFactory) {\n builder.setContainer(this.node);\n this.attributes.push(builder);\n } else {\n const attr = builder(new DataFieldAttributeFactory());\n attr.setContainer(this.node);\n this.attributes.push(attr);\n }\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n setComments(comments: string[]) {\n this.comments = comments;\n this.update({\n comments: this.comments,\n });\n return this;\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n setType(builder: (type: DataFieldTypeFactory) => DataFieldTypeFactory) {\n this.type = builder(new DataFieldTypeFactory()).setContainer(this.node);\n this.update({\n type: this.type,\n });\n return this;\n }\n}\n\nexport class DataFieldTypeFactory extends AstFactory<DataFieldType> {\n array?: boolean;\n optional?: boolean;\n reference?: Reference<TypeDeclaration>;\n type?: BuiltinType;\n unsupported?: UnsupportedFieldTypeFactory;\n\n constructor() {\n super({ type: DataFieldType });\n }\n\n setArray(array: boolean) {\n this.array = array;\n this.update({\n array: this.array,\n });\n return this;\n }\n\n setOptional(optional: boolean) {\n this.optional = optional;\n this.update({\n optional: this.optional,\n });\n return this;\n }\n\n setReference(reference: TypeDeclaration) {\n this.reference = {\n $refText: reference.name,\n ref: reference,\n };\n this.update({\n reference: this.reference,\n });\n return this;\n }\n\n setType(type: BuiltinType) {\n this.type = type;\n this.update({\n type: this.type,\n });\n return this;\n }\n\n setUnsupported(builder: (a: UnsupportedFieldTypeFactory) => UnsupportedFieldTypeFactory) {\n this.unsupported = builder(new UnsupportedFieldTypeFactory()).setContainer(this.node);\n this.update({\n unsupported: this.unsupported,\n });\n return this;\n }\n}\n\nexport class UnsupportedFieldTypeFactory extends AstFactory<UnsupportedFieldType> {\n value?: AstFactory<LiteralExpr>;\n constructor() {\n super({ type: UnsupportedFieldType });\n }\n setValue(builder: (value: ExpressionBuilder<LiteralExpr>) => AstFactory<LiteralExpr>) {\n this.value = builder(ExpressionBuilder());\n this.update({\n value: this.value!,\n });\n return this;\n }\n}\n\nexport class ModelFactory extends AstFactory<Model> {\n declarations: AstFactory<AbstractDeclaration>[] = [];\n imports: ModelImportFactory[] = [];\n constructor() {\n super({ type: Model, node: { declarations: [], imports: [] } });\n }\n addImport(builder: (b: ModelImportFactory) => ModelImportFactory) {\n this.imports.push(builder(new ModelImportFactory()).setContainer(this.node));\n this.update({\n imports: this.imports,\n });\n return this;\n }\n addDeclaration(builder: (b: DeclarationBuilder) => AstFactory<AbstractDeclaration>) {\n this.declarations.push(builder(DeclarationBuilder()).setContainer(this.node));\n this.update({\n declarations: this.declarations,\n });\n return this;\n }\n}\n\nexport class ModelImportFactory extends AstFactory<ModelImport> {\n path?: string | undefined;\n\n constructor() {\n super({ type: ModelImport });\n }\n\n setPath(path: string) {\n this.path = path;\n this.update({\n path: this.path,\n });\n return this;\n }\n}\n\nexport class EnumFactory extends AstFactory<Enum> {\n name?: string;\n comments: string[] = [];\n fields: EnumFieldFactory[] = [];\n attributes: DataModelAttributeFactory[] = [];\n\n constructor() {\n super({ type: Enum, node: { comments: [], fields: [], attributes: [] } });\n }\n\n addField(builder: (b: EnumFieldFactory) => EnumFieldFactory) {\n this.fields.push(builder(new EnumFieldFactory()).setContainer(this.node));\n this.update({\n fields: this.fields,\n });\n return this;\n }\n\n addAttribute(builder: (b: DataModelAttributeFactory) => DataModelAttributeFactory) {\n this.attributes.push(builder(new DataModelAttributeFactory()).setContainer(this.node));\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n}\n\nexport class EnumFieldFactory extends AstFactory<EnumField> {\n name?: RegularIDWithTypeNames;\n comments: string[] = [];\n attributes: DataFieldAttributeFactory[] = [];\n\n constructor() {\n super({ type: EnumField, node: { comments: [], attributes: [] } });\n }\n\n setName(name: RegularIDWithTypeNames) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n addAttribute(builder: (b: DataFieldAttributeFactory) => DataFieldAttributeFactory) {\n this.attributes.push(builder(new DataFieldAttributeFactory()).setContainer(this.node));\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n addComment(comment: string) {\n this.comments.push(comment);\n this.update({\n comments: this.comments,\n });\n return this;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"factory.mjs","names":[],"sources":["../src/factory/ast-factory.ts","../src/factory/primitives.ts","../src/factory/expression.ts","../src/factory/attribute.ts","../src/factory/declaration.ts"],"sourcesContent":["import { type AstNode } from '../ast';\n\nexport type ContainerProps<T extends AstNode | undefined> = {\n $container: T;\n $containerProperty?: string;\n $containerIndex?: number;\n};\n\ntype NodeFactoriesFor<N> = {\n [K in keyof N as {} extends Pick<N, K> ? never : K]: N[K] extends (infer U)[]\n ? (AstFactory<U extends AstNode ? U : AstNode> | U)[]\n : AstFactory<N[K] extends AstNode ? N[K] : AstNode> | N[K];\n} & {\n [K in keyof N as {} extends Pick<N, K> ? K : never]?: N[K] extends (infer U)[]\n ? (AstFactory<U extends AstNode ? U : AstNode> | U)[]\n : AstFactory<N[K] extends AstNode ? N[K] : AstNode> | N[K];\n};\n\nexport abstract class AstFactory<T extends AstNode = AstNode> {\n node = {} as T;\n constructor({ type, node }: { type: T['$type']; node?: Partial<T> }) {\n (this.node as any).$type = type;\n if (node) {\n this.update(node);\n }\n }\n setContainer(container: T['$container']) {\n (this.node as any).$container = container;\n return this;\n }\n\n get(params?: ContainerProps<T['$container']>): T {\n if (params) this.update(params as any);\n return this.node;\n }\n update(nodeArg: Partial<T | NodeFactoriesFor<T>>): T {\n const keys = Object.keys(nodeArg as object);\n keys.forEach((key) => {\n const child = (nodeArg as any)[key];\n if (child instanceof AstFactory) {\n (this.node as any)[key] = child.get({ $container: this.node as any });\n } else if (Array.isArray(child)) {\n (this.node as any)[key] = child.map((item: any) =>\n item instanceof AstFactory ? item.get({ $container: this.node as any }) : item,\n );\n } else {\n (this.node as any)[key] = child;\n }\n });\n return this.node;\n }\n}\n","import { AstFactory } from './ast-factory';\nimport { BooleanLiteral, NullExpr, NumberLiteral, StringLiteral, ThisExpr } from '../ast';\n\nexport class ThisExprFactory extends AstFactory<ThisExpr> {\n constructor() {\n super({ type: ThisExpr.$type, node: { value: 'this' } });\n }\n}\n\nexport class NullExprFactory extends AstFactory<NullExpr> {\n constructor() {\n super({ type: NullExpr.$type, node: { value: 'null' } });\n }\n}\n\nexport class NumberLiteralFactory extends AstFactory<NumberLiteral> {\n value?: number | string;\n\n constructor() {\n super({ type: NumberLiteral.$type });\n }\n\n setValue(value: number | string) {\n this.value = value;\n this.update({\n value: this.value.toString(),\n });\n return this;\n }\n}\n\nexport class StringLiteralFactory extends AstFactory<StringLiteral> {\n value?: string;\n\n constructor() {\n super({ type: StringLiteral.$type });\n }\n\n setValue(value: string) {\n this.value = value;\n this.update({\n value: this.value,\n });\n return this;\n }\n}\nexport class BooleanLiteralFactory extends AstFactory<BooleanLiteral> {\n value?: boolean;\n\n constructor() {\n super({ type: BooleanLiteral.$type });\n }\n\n setValue(value: boolean) {\n this.value = value;\n this.update({\n value: this.value,\n });\n return this;\n }\n}\n","import type { Reference } from 'langium';\nimport { AstFactory } from './ast-factory';\nimport {\n Argument,\n ArrayExpr,\n BinaryExpr,\n FieldInitializer,\n FunctionDecl,\n InvocationExpr,\n MemberAccessExpr,\n MemberAccessTarget,\n ObjectExpr,\n ReferenceArg,\n ReferenceExpr,\n ReferenceTarget,\n UnaryExpr,\n type Expression,\n type RegularID,\n} from '../ast';\nimport {\n BooleanLiteralFactory,\n NullExprFactory,\n NumberLiteralFactory,\n StringLiteralFactory,\n ThisExprFactory,\n} from './primitives';\n\nexport const ExpressionBuilder = () =>\n ({\n get ArrayExpr() {\n return new ArrayExprFactory();\n },\n get BinaryExpr() {\n return new BinaryExprFactory();\n },\n get BooleanLiteral() {\n return new BooleanLiteralFactory();\n },\n get InvocationExpr() {\n return new InvocationExprFactory();\n },\n get MemberAccessExpr() {\n return new MemberAccessExprFactory();\n },\n get NullExpr() {\n return new NullExprFactory();\n },\n get NumberLiteral() {\n return new NumberLiteralFactory();\n },\n get ObjectExpr() {\n return new ObjectExprFactory();\n },\n get ReferenceExpr() {\n return new ReferenceExprFactory();\n },\n get StringLiteral() {\n return new StringLiteralFactory();\n },\n get ThisExpr() {\n return new ThisExprFactory();\n },\n get UnaryExpr() {\n return new UnaryExprFactory();\n },\n }) satisfies ExpressionBuilderType;\ntype ExpressionBuilderType<T extends Expression = Expression> = {\n [K in T['$type']]: AstFactory<Extract<T, { $type: K }>>;\n};\n\ntype ExpressionFactoryMap = ReturnType<typeof ExpressionBuilder>;\n\nexport type ExpressionBuilder<T extends Expression = Expression> = Pick<\n ExpressionFactoryMap,\n Extract<T['$type'], keyof ExpressionFactoryMap>\n>;\n\nexport class UnaryExprFactory extends AstFactory<UnaryExpr> {\n operand?: AstFactory<Expression>;\n\n constructor() {\n super({ type: UnaryExpr.$type, node: { operator: '!' } });\n }\n\n setOperand(builder: (a: ExpressionBuilder) => AstFactory<Expression>) {\n this.operand = builder(ExpressionBuilder());\n this.update({\n operand: this.operand,\n });\n return this;\n }\n}\n\nexport class ReferenceExprFactory extends AstFactory<ReferenceExpr> {\n target?: Reference<ReferenceTarget>;\n args: ReferenceArgFactory[] = [];\n\n constructor() {\n super({ type: ReferenceExpr.$type, node: { args: [] } });\n }\n\n setTarget(target: ReferenceTarget) {\n this.target = {\n $refText: target.name,\n ref: target,\n };\n this.update({\n target: this.target,\n });\n return this;\n }\n\n addArg(builder: (a: ExpressionBuilder) => AstFactory<Expression>, name?: string) {\n const arg = new ReferenceArgFactory().setValue(builder);\n if (name) {\n arg.setName(name);\n }\n this.args.push(arg);\n this.update({\n args: this.args,\n });\n return this;\n }\n}\n\nexport class ReferenceArgFactory extends AstFactory<ReferenceArg> {\n name?: string;\n value?: AstFactory<Expression>;\n\n constructor() {\n super({ type: ReferenceArg.$type });\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n setValue(builder: (a: ExpressionBuilder) => AstFactory<Expression>) {\n this.value = builder(ExpressionBuilder());\n this.update({\n value: this.value,\n });\n return this;\n }\n}\n\nexport class MemberAccessExprFactory extends AstFactory<MemberAccessExpr> {\n member?: Reference<MemberAccessTarget>;\n operand?: AstFactory<Expression>;\n\n constructor() {\n super({ type: MemberAccessExpr.$type });\n }\n\n setMember(target: Reference<MemberAccessTarget>) {\n this.member = target;\n this.update({\n member: this.member,\n });\n return this;\n }\n\n setOperand(builder: (b: ExpressionBuilder) => AstFactory<Expression>) {\n this.operand = builder(ExpressionBuilder());\n this.update({\n operand: this.operand,\n });\n return this;\n }\n}\n\nexport class ObjectExprFactory extends AstFactory<ObjectExpr> {\n fields: FieldInitializerFactory[] = [];\n\n constructor() {\n super({ type: ObjectExpr.$type, node: { fields: [] } });\n }\n\n addField(builder: (b: FieldInitializerFactory) => FieldInitializerFactory) {\n this.fields.push(builder(new FieldInitializerFactory()));\n this.update({\n fields: this.fields,\n });\n return this;\n }\n}\n\nexport class FieldInitializerFactory extends AstFactory<FieldInitializer> {\n name?: RegularID;\n value?: AstFactory<Expression>;\n\n constructor() {\n super({ type: FieldInitializer.$type });\n }\n\n setName(name: RegularID) {\n this.name = name;\n this.update({\n name: this.name!,\n });\n return this;\n }\n\n setValue(builder: (a: ExpressionBuilder) => AstFactory<Expression>) {\n this.value = builder(ExpressionBuilder());\n this.update({\n value: this.value!,\n });\n return this;\n }\n}\n\nexport class InvocationExprFactory extends AstFactory<InvocationExpr> {\n args: ArgumentFactory[] = [];\n function?: Reference<FunctionDecl>;\n\n constructor() {\n super({ type: InvocationExpr.$type, node: { args: [] } });\n }\n\n addArg(builder: (arg: ArgumentFactory) => ArgumentFactory) {\n this.args.push(builder(new ArgumentFactory()));\n this.update({\n args: this.args,\n });\n return this;\n }\n\n setFunction(value: FunctionDecl) {\n this.function = {\n $refText: value.name,\n ref: value,\n };\n this.update({\n function: this.function!,\n });\n return this;\n }\n}\n\nexport class ArgumentFactory extends AstFactory<Argument> {\n value?: AstFactory<Expression>;\n\n constructor() {\n super({ type: Argument.$type });\n }\n\n setValue(builder: (a: ExpressionBuilder) => AstFactory<Expression>) {\n this.value = builder(ExpressionBuilder());\n this.update({\n value: this.value!,\n });\n return this;\n }\n}\n\nexport class ArrayExprFactory extends AstFactory<ArrayExpr> {\n items: AstFactory<Expression>[] = [];\n\n constructor() {\n super({ type: ArrayExpr.$type, node: { items: [] } });\n }\n\n addItem(builder: (a: ExpressionBuilder) => AstFactory<Expression>) {\n this.items.push(builder(ExpressionBuilder()));\n this.update({\n items: this.items,\n });\n return this;\n }\n}\n\nexport class BinaryExprFactory extends AstFactory<BinaryExpr> {\n operator?: BinaryExpr['operator'];\n right?: AstFactory<Expression>;\n left?: AstFactory<Expression>;\n // TODO: add support for CollectionPredicateBinding\n\n constructor() {\n super({ type: BinaryExpr.$type });\n }\n\n setOperator(operator: BinaryExpr['operator']) {\n this.operator = operator;\n this.update({\n operator: this.operator!,\n });\n return this;\n }\n setRight(builder: (arg: ExpressionBuilder) => AstFactory<Expression>) {\n this.right = builder(ExpressionBuilder());\n this.update({\n right: this.right!,\n });\n return this;\n }\n setLeft(builder: (arg: ExpressionBuilder) => AstFactory<Expression>) {\n this.left = builder(ExpressionBuilder());\n this.update({\n left: this.left!,\n });\n return this;\n }\n}\n","import { AstFactory } from './ast-factory';\nimport {\n Attribute,\n AttributeArg,\n AttributeParam,\n AttributeParamType,\n DataFieldAttribute,\n DataModelAttribute,\n Expression,\n InternalAttribute,\n TypeDeclaration,\n type Reference,\n type RegularID,\n} from '../ast';\nimport { ExpressionBuilder } from './expression';\n\nexport class DataFieldAttributeFactory extends AstFactory<DataFieldAttribute> {\n args: AttributeArgFactory[] = [];\n decl?: Reference<Attribute>;\n constructor() {\n super({ type: DataFieldAttribute.$type, node: { args: [] } });\n }\n setDecl(decl: Attribute) {\n if (!decl) {\n throw new Error('Attribute declaration is required');\n }\n this.decl = {\n $refText: decl.name,\n ref: decl,\n };\n this.update({\n decl: this.decl,\n });\n return this;\n }\n addArg(builder: (b: ExpressionBuilder) => AstFactory<Expression>, name?: string) {\n const factory = new AttributeArgFactory().setValue(builder);\n if (name) {\n factory.setName(name);\n }\n this.args.push(factory);\n this.update({\n args: this.args,\n });\n return this;\n }\n}\n\nexport class DataModelAttributeFactory extends AstFactory<DataModelAttribute> {\n args: AttributeArgFactory[] = [];\n decl?: Reference<Attribute>;\n constructor() {\n super({ type: DataModelAttribute.$type, node: { args: [] } });\n }\n setDecl(decl: Attribute) {\n if (!decl) {\n throw new Error('Attribute declaration is required');\n }\n this.decl = {\n $refText: decl.name,\n ref: decl,\n };\n this.update({\n decl: this.decl,\n });\n return this;\n }\n addArg(builder: (b: ExpressionBuilder) => AstFactory<Expression>, name?: string) {\n const factory = new AttributeArgFactory().setValue(builder);\n if (name) {\n factory.setName(name);\n }\n this.args.push(factory);\n this.update({\n args: this.args,\n });\n return this;\n }\n}\n\nexport class AttributeArgFactory extends AstFactory<AttributeArg> {\n name?: RegularID = '';\n value?: AstFactory<Expression>;\n\n constructor() {\n super({ type: AttributeArg.$type });\n }\n\n setName(name: RegularID) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n setValue(builder: (b: ExpressionBuilder) => AstFactory<Expression>) {\n this.value = builder(ExpressionBuilder());\n this.update({\n value: this.value,\n });\n return this;\n }\n}\n\nexport class InternalAttributeFactory extends AstFactory<InternalAttribute> {\n decl?: Reference<Attribute>;\n args: AttributeArgFactory[] = [];\n\n constructor() {\n super({ type: InternalAttribute.$type, node: { args: [] } });\n }\n\n setDecl(decl: Attribute) {\n this.decl = {\n $refText: decl.name,\n ref: decl,\n };\n this.update({\n decl: this.decl,\n });\n return this;\n }\n\n addArg(builder: (b: ExpressionBuilder) => AstFactory<Expression>, name?: string) {\n const factory = new AttributeArgFactory().setValue(builder);\n if (name) {\n factory.setName(name);\n }\n this.args.push(factory);\n this.update({\n args: this.args,\n });\n return this;\n }\n}\n\nexport class AttributeParamFactory extends AstFactory<AttributeParam> {\n attributes: InternalAttributeFactory[] = [];\n comments: string[] = [];\n default?: boolean;\n name?: RegularID;\n type?: AttributeParamTypeFactory;\n\n constructor() {\n super({\n type: AttributeParam.$type,\n node: {\n comments: [],\n attributes: [],\n },\n });\n }\n\n addAttribute(builder: (b: InternalAttributeFactory) => InternalAttributeFactory) {\n this.attributes.push(builder(new InternalAttributeFactory()));\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n setComments(comments: string[]) {\n this.comments = comments;\n this.update({\n comments: this.comments,\n });\n return this;\n }\n\n setDefault(defaultValue: boolean) {\n this.default = defaultValue;\n this.update({\n default: this.default,\n });\n return this;\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n setType(builder: (b: AttributeParamTypeFactory) => AttributeParamTypeFactory) {\n this.type = builder(new AttributeParamTypeFactory());\n this.update({\n type: this.type,\n });\n return this;\n }\n}\n\nexport class AttributeParamTypeFactory extends AstFactory<AttributeParamType> {\n array?: boolean;\n optional?: boolean;\n reference?: Reference<TypeDeclaration>;\n type?: AttributeParamType['type'];\n constructor() {\n super({ type: AttributeParamType.$type });\n }\n setArray(array: boolean) {\n this.array = array;\n this.update({\n array: this.array,\n });\n return this;\n }\n\n setOptional(optional: boolean) {\n this.optional = optional;\n this.update({\n optional: this.optional,\n });\n return this;\n }\n\n setReference(reference: TypeDeclaration) {\n this.reference = {\n $refText: reference.name,\n ref: reference,\n };\n this.update({\n reference: this.reference,\n });\n return this;\n }\n\n setType(type: AttributeParamType['type']) {\n this.type = type;\n this.update({\n type: this.type,\n });\n return this;\n }\n}\n\nexport class AttributeFactory extends AstFactory<Attribute> {\n name?: string;\n comments: string[] = [];\n attributes: InternalAttributeFactory[] = [];\n params: AttributeParamFactory[] = [];\n\n constructor() {\n super({ type: Attribute.$type, node: { comments: [], attributes: [], params: [] } });\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n setComments(comments: string[]) {\n this.comments = comments;\n this.update({\n comments: this.comments,\n });\n return this;\n }\n\n addAttribute(builder: (b: InternalAttributeFactory) => InternalAttributeFactory) {\n this.attributes.push(builder(new InternalAttributeFactory()));\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n addParam(builder: (b: AttributeParamFactory) => AttributeParamFactory) {\n this.params.push(builder(new AttributeParamFactory()));\n this.update({\n params: this.params,\n });\n return this;\n }\n}\n","import { AstFactory } from './ast-factory';\nimport { AbstractDeclaration, type Reference } from '../ast';\nimport {\n type BuiltinType,\n DataField,\n DataFieldType,\n DataModel,\n Enum,\n EnumField,\n LiteralExpr,\n Model,\n ModelImport,\n type RegularID,\n type RegularIDWithTypeNames,\n TypeDeclaration,\n type TypeDef,\n UnsupportedFieldType,\n} from '../generated/ast';\nimport { AttributeFactory, DataFieldAttributeFactory, DataModelAttributeFactory } from './attribute';\nimport { ExpressionBuilder } from './expression';\nexport const DeclarationBuilder = () =>\n ({\n get Attribute() {\n return new AttributeFactory();\n },\n get DataModel() {\n return new DataModelFactory();\n },\n get DataSource(): any {\n throw new Error('DataSource is not implemented');\n },\n get Enum() {\n return new EnumFactory();\n },\n get FunctionDecl(): any {\n throw new Error('FunctionDecl is not implemented');\n },\n get GeneratorDecl(): any {\n throw new Error('GeneratorDecl is not implemented');\n },\n get Plugin(): any {\n throw new Error('Plugin is not implemented');\n },\n get Procedure(): any {\n throw new Error('Procedure is not implemented');\n },\n get TypeDef(): any {\n throw new Error('TypeDef is not implemented');\n },\n }) satisfies DeclarationBuilderType;\ntype DeclarationBuilderType<T extends AbstractDeclaration = AbstractDeclaration> = {\n [K in T['$type']]: AstFactory<Extract<T, { $type: K }>>;\n};\ntype DeclarationBuilderMap = ReturnType<typeof DeclarationBuilder>;\n\nexport type DeclarationBuilder<T extends AbstractDeclaration = AbstractDeclaration> = Pick<\n DeclarationBuilderMap,\n Extract<T['$type'], keyof DeclarationBuilderMap>\n>;\n\nexport class DataModelFactory extends AstFactory<DataModel> {\n attributes: DataModelAttributeFactory[] = [];\n baseModel?: Reference<DataModel>;\n comments: string[] = [];\n fields: DataFieldFactory[] = [];\n isView?: boolean;\n mixins: Reference<TypeDef>[] = [];\n name?: RegularID;\n\n constructor() {\n super({\n type: DataModel.$type,\n node: {\n attributes: [],\n comments: [],\n fields: [],\n mixins: [],\n },\n });\n }\n\n addAttribute(builder: (attr: DataModelAttributeFactory) => DataModelAttributeFactory) {\n this.attributes.push(builder(new DataModelAttributeFactory()).setContainer(this.node));\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n setBaseModel(model: Reference<DataModel>) {\n this.baseModel = model;\n this.update({\n baseModel: this.baseModel,\n });\n return this;\n }\n\n setComments(comments: string[]) {\n this.comments = comments;\n this.update({\n comments: this.comments,\n });\n return this;\n }\n\n addComment(comment: string) {\n this.comments.push(comment);\n this.update({\n comments: this.comments,\n });\n return this;\n }\n\n addField(builder: (field: DataFieldFactory) => DataFieldFactory) {\n this.fields.push(builder(new DataFieldFactory()).setContainer(this.node));\n this.update({\n fields: this.fields,\n });\n return this;\n }\n\n setIsView(isView: boolean) {\n this.isView = isView;\n this.update({\n isView: this.isView,\n });\n return this;\n }\n\n addMixin(mixin: Reference<TypeDef>) {\n this.mixins.push(mixin);\n this.update({\n mixins: this.mixins,\n });\n return this;\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n}\n\nexport class DataFieldFactory extends AstFactory<DataField> {\n attributes: DataFieldAttributeFactory[] = [];\n comments: string[] = [];\n name?: string;\n type?: DataFieldTypeFactory;\n\n constructor() {\n super({ type: DataField.$type, node: { attributes: [], comments: [] } });\n }\n\n addAttribute(\n builder: ((attr: DataFieldAttributeFactory) => DataFieldAttributeFactory) | DataFieldAttributeFactory,\n ) {\n if (builder instanceof DataFieldAttributeFactory) {\n builder.setContainer(this.node);\n this.attributes.push(builder);\n } else {\n const attr = builder(new DataFieldAttributeFactory());\n attr.setContainer(this.node);\n this.attributes.push(attr);\n }\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n setComments(comments: string[]) {\n this.comments = comments;\n this.update({\n comments: this.comments,\n });\n return this;\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n setType(builder: (type: DataFieldTypeFactory) => DataFieldTypeFactory) {\n this.type = builder(new DataFieldTypeFactory()).setContainer(this.node);\n this.update({\n type: this.type,\n });\n return this;\n }\n}\n\nexport class DataFieldTypeFactory extends AstFactory<DataFieldType> {\n array?: boolean;\n optional?: boolean;\n reference?: Reference<TypeDeclaration>;\n type?: BuiltinType;\n unsupported?: UnsupportedFieldTypeFactory;\n\n constructor() {\n super({ type: DataFieldType.$type });\n }\n\n setArray(array: boolean) {\n this.array = array;\n this.update({\n array: this.array,\n });\n return this;\n }\n\n setOptional(optional: boolean) {\n this.optional = optional;\n this.update({\n optional: this.optional,\n });\n return this;\n }\n\n setReference(reference: TypeDeclaration) {\n this.reference = {\n $refText: reference.name,\n ref: reference,\n };\n this.update({\n reference: this.reference,\n });\n return this;\n }\n\n setType(type: BuiltinType) {\n this.type = type;\n this.update({\n type: this.type,\n });\n return this;\n }\n\n setUnsupported(builder: (a: UnsupportedFieldTypeFactory) => UnsupportedFieldTypeFactory) {\n this.unsupported = builder(new UnsupportedFieldTypeFactory()).setContainer(this.node);\n this.update({\n unsupported: this.unsupported,\n });\n return this;\n }\n}\n\nexport class UnsupportedFieldTypeFactory extends AstFactory<UnsupportedFieldType> {\n value?: AstFactory<LiteralExpr>;\n constructor() {\n super({ type: UnsupportedFieldType.$type });\n }\n setValue(builder: (value: ExpressionBuilder<LiteralExpr>) => AstFactory<LiteralExpr>) {\n this.value = builder(ExpressionBuilder());\n this.update({\n value: this.value!,\n });\n return this;\n }\n}\n\nexport class ModelFactory extends AstFactory<Model> {\n declarations: AstFactory<AbstractDeclaration>[] = [];\n imports: ModelImportFactory[] = [];\n constructor() {\n super({ type: Model.$type, node: { declarations: [], imports: [] } });\n }\n addImport(builder: (b: ModelImportFactory) => ModelImportFactory) {\n this.imports.push(builder(new ModelImportFactory()).setContainer(this.node));\n this.update({\n imports: this.imports,\n });\n return this;\n }\n addDeclaration(builder: (b: DeclarationBuilder) => AstFactory<AbstractDeclaration>) {\n this.declarations.push(builder(DeclarationBuilder()).setContainer(this.node));\n this.update({\n declarations: this.declarations,\n });\n return this;\n }\n}\n\nexport class ModelImportFactory extends AstFactory<ModelImport> {\n path?: string | undefined;\n\n constructor() {\n super({ type: ModelImport.$type });\n }\n\n setPath(path: string) {\n this.path = path;\n this.update({\n path: this.path,\n });\n return this;\n }\n}\n\nexport class EnumFactory extends AstFactory<Enum> {\n name?: string;\n comments: string[] = [];\n fields: EnumFieldFactory[] = [];\n attributes: DataModelAttributeFactory[] = [];\n\n constructor() {\n super({ type: Enum.$type, node: { comments: [], fields: [], attributes: [] } });\n }\n\n addField(builder: (b: EnumFieldFactory) => EnumFieldFactory) {\n this.fields.push(builder(new EnumFieldFactory()).setContainer(this.node));\n this.update({\n fields: this.fields,\n });\n return this;\n }\n\n addAttribute(builder: (b: DataModelAttributeFactory) => DataModelAttributeFactory) {\n this.attributes.push(builder(new DataModelAttributeFactory()).setContainer(this.node));\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n setName(name: string) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n}\n\nexport class EnumFieldFactory extends AstFactory<EnumField> {\n name?: RegularIDWithTypeNames;\n comments: string[] = [];\n attributes: DataFieldAttributeFactory[] = [];\n\n constructor() {\n super({ type: EnumField.$type, node: { comments: [], attributes: [] } });\n }\n\n setName(name: RegularIDWithTypeNames) {\n this.name = name;\n this.update({\n name: this.name,\n });\n return this;\n }\n\n addAttribute(builder: (b: DataFieldAttributeFactory) => DataFieldAttributeFactory) {\n this.attributes.push(builder(new DataFieldAttributeFactory()).setContainer(this.node));\n this.update({\n attributes: this.attributes,\n });\n return this;\n }\n\n addComment(comment: string) {\n this.comments.push(comment);\n this.update({\n comments: this.comments,\n });\n return this;\n }\n}\n"],"mappings":"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"}
|