@zenstackhq/language 3.5.6 → 3.6.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 (45) hide show
  1. package/dist/ast-Clidp86c.cjs +1465 -0
  2. package/dist/ast-Clidp86c.cjs.map +1 -0
  3. package/dist/ast-DEfhnj8j.mjs +765 -0
  4. package/dist/ast-DEfhnj8j.mjs.map +1 -0
  5. package/dist/ast-DQDdBZQ3.d.mts +525 -0
  6. package/dist/ast-W2h6Qtfk.d.cts +525 -0
  7. package/dist/ast.cjs +130 -1432
  8. package/dist/ast.cjs.map +1 -1
  9. package/dist/ast.d.cts +2 -541
  10. package/dist/ast.d.mts +2 -0
  11. package/dist/ast.mjs +20 -0
  12. package/dist/ast.mjs.map +1 -0
  13. package/dist/factory.cjs +754 -2030
  14. package/dist/factory.cjs.map +1 -1
  15. package/dist/factory.d.cts +220 -215
  16. package/dist/factory.d.mts +289 -0
  17. package/dist/factory.mjs +778 -0
  18. package/dist/factory.mjs.map +1 -0
  19. package/dist/index.cjs +2691 -5454
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +104 -103
  22. package/dist/index.d.mts +170 -0
  23. package/dist/index.mjs +6925 -0
  24. package/dist/index.mjs.map +1 -0
  25. package/dist/utils-BB6L7ug2.mjs +529 -0
  26. package/dist/utils-BB6L7ug2.mjs.map +1 -0
  27. package/dist/utils-CfXGZkv7.cjs +842 -0
  28. package/dist/utils-CfXGZkv7.cjs.map +1 -0
  29. package/dist/utils.cjs +47 -1650
  30. package/dist/utils.d.cts +101 -10
  31. package/dist/{utils.d.ts → utils.d.mts} +101 -10
  32. package/dist/utils.mjs +2 -0
  33. package/package.json +16 -15
  34. package/dist/ast.d.ts +0 -541
  35. package/dist/ast.js +0 -1288
  36. package/dist/ast.js.map +0 -1
  37. package/dist/factory.d.ts +0 -284
  38. package/dist/factory.js +0 -2020
  39. package/dist/factory.js.map +0 -1
  40. package/dist/index.d.ts +0 -169
  41. package/dist/index.js +0 -9656
  42. package/dist/index.js.map +0 -1
  43. package/dist/utils.cjs.map +0 -1
  44. package/dist/utils.js +0 -1572
  45. package/dist/utils.js.map +0 -1
@@ -0,0 +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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"}