@zenstackhq/language 2.15.1 → 3.0.0-alpha.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.
- package/LICENSE +1 -1
- package/dist/ast.cjs +1472 -0
- package/dist/ast.cjs.map +1 -0
- package/dist/ast.d.cts +566 -0
- package/dist/ast.d.ts +566 -0
- package/dist/ast.js +1331 -0
- package/dist/ast.js.map +1 -0
- package/dist/index.cjs +7790 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +94 -0
- package/dist/index.d.ts +94 -0
- package/dist/index.js +7755 -0
- package/dist/index.js.map +1 -0
- package/package.json +52 -33
- package/res/stdlib.zmodel +721 -0
- package/README.md +0 -5
- package/ast.d.ts +0 -55
- package/ast.js +0 -37
- package/ast.js.map +0 -1
- package/generated/ast.d.ts +0 -485
- package/generated/ast.js +0 -640
- package/generated/ast.js.map +0 -1
- package/generated/grammar.d.ts +0 -6
- package/generated/grammar.js +0 -3941
- package/generated/grammar.js.map +0 -1
- package/generated/module.d.ts +0 -12
- package/generated/module.js +0 -23
- package/generated/module.js.map +0 -1
- package/module.d.ts +0 -1
- package/module.js +0 -18
- package/module.js.map +0 -1
- package/syntaxes/zmodel.tmLanguage +0 -113
- package/syntaxes/zmodel.tmLanguage.json +0 -71
package/dist/ast.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/generated/ast.ts","../src/ast.ts"],"sourcesContent":["/******************************************************************************\n * This file was generated by langium-cli 3.3.0.\n * DO NOT EDIT MANUALLY!\n ******************************************************************************/\n\n/* eslint-disable */\nimport type { AstNode, Reference, ReferenceInfo, TypeMetaData } from 'langium';\nimport { AbstractAstReflection } from 'langium';\n\nexport const ZModelTerminals = {\n WS: /\\s+/,\n INTERNAL_ATTRIBUTE_NAME: /@@@([_a-zA-Z][\\w_]*\\.)*[_a-zA-Z][\\w_]*/,\n MODEL_ATTRIBUTE_NAME: /@@([_a-zA-Z][\\w_]*\\.)*[_a-zA-Z][\\w_]*/,\n FIELD_ATTRIBUTE_NAME: /@([_a-zA-Z][\\w_]*\\.)*[_a-zA-Z][\\w_]*/,\n ID: /[_a-zA-Z][\\w_]*/,\n STRING: /\"(\\\\.|[^\"\\\\])*\"|'(\\\\.|[^'\\\\])*'/,\n NUMBER: /[+-]?[0-9]+(\\.[0-9]+)?/,\n TRIPLE_SLASH_COMMENT: /\\/\\/\\/[^\\n\\r]*/,\n ML_COMMENT: /\\/\\*[\\s\\S]*?\\*\\//,\n SL_COMMENT: /\\/\\/[^\\n\\r]*/,\n};\n\nexport type ZModelTerminalNames = keyof typeof ZModelTerminals;\n\nexport type ZModelKeywordNames = \n | \"!\"\n | \"!=\"\n | \"&&\"\n | \"(\"\n | \")\"\n | \",\"\n | \".\"\n | \":\"\n | \";\"\n | \"<\"\n | \"<=\"\n | \"=\"\n | \"==\"\n | \">\"\n | \">=\"\n | \"?\"\n | \"Any\"\n | \"BigInt\"\n | \"Boolean\"\n | \"Bytes\"\n | \"ContextType\"\n | \"DateTime\"\n | \"Decimal\"\n | \"FieldReference\"\n | \"Float\"\n | \"Int\"\n | \"Json\"\n | \"Null\"\n | \"Object\"\n | \"String\"\n | \"TransitiveFieldReference\"\n | \"Unsupported\"\n | \"[\"\n | \"]\"\n | \"^\"\n | \"_\"\n | \"abstract\"\n | \"attribute\"\n | \"datasource\"\n | \"enum\"\n | \"extends\"\n | \"false\"\n | \"function\"\n | \"generator\"\n | \"import\"\n | \"in\"\n | \"model\"\n | \"mutation\"\n | \"null\"\n | \"plugin\"\n | \"procedure\"\n | \"this\"\n | \"true\"\n | \"type\"\n | \"view\"\n | \"{\"\n | \"||\"\n | \"}\";\n\nexport type ZModelTokenNames = ZModelTerminalNames | ZModelKeywordNames;\n\nexport type AbstractDeclaration = Attribute | DataModel | DataSource | Enum | FunctionDecl | GeneratorDecl | Plugin | Procedure | TypeDef;\n\nexport const AbstractDeclaration = 'AbstractDeclaration';\n\nexport function isAbstractDeclaration(item: unknown): item is AbstractDeclaration {\n return reflection.isInstance(item, AbstractDeclaration);\n}\n\nexport type Boolean = boolean;\n\nexport function isBoolean(item: unknown): item is Boolean {\n return typeof item === 'boolean';\n}\n\nexport type BuiltinType = 'BigInt' | 'Boolean' | 'Bytes' | 'DateTime' | 'Decimal' | 'Float' | 'Int' | 'Json' | 'String';\n\nexport function isBuiltinType(item: unknown): item is BuiltinType {\n return item === 'String' || item === 'Boolean' || item === 'Int' || item === 'BigInt' || item === 'Float' || item === 'Decimal' || item === 'DateTime' || item === 'Json' || item === 'Bytes';\n}\n\nexport type ConfigExpr = ConfigArrayExpr | InvocationExpr | LiteralExpr;\n\nexport const ConfigExpr = 'ConfigExpr';\n\nexport function isConfigExpr(item: unknown): item is ConfigExpr {\n return reflection.isInstance(item, ConfigExpr);\n}\n\nexport type Expression = ArrayExpr | BinaryExpr | InvocationExpr | LiteralExpr | MemberAccessExpr | NullExpr | ObjectExpr | ReferenceExpr | ThisExpr | UnaryExpr;\n\nexport const Expression = 'Expression';\n\nexport function isExpression(item: unknown): item is Expression {\n return reflection.isInstance(item, Expression);\n}\n\nexport type ExpressionType = 'Any' | 'Boolean' | 'DateTime' | 'Float' | 'Int' | 'Null' | 'Object' | 'String' | 'Unsupported';\n\nexport function isExpressionType(item: unknown): item is ExpressionType {\n return item === 'String' || item === 'Int' || item === 'Float' || item === 'Boolean' || item === 'DateTime' || item === 'Null' || item === 'Object' || item === 'Any' || item === 'Unsupported';\n}\n\nexport type LiteralExpr = BooleanLiteral | NumberLiteral | StringLiteral;\n\nexport const LiteralExpr = 'LiteralExpr';\n\nexport function isLiteralExpr(item: unknown): item is LiteralExpr {\n return reflection.isInstance(item, LiteralExpr);\n}\n\nexport type MemberAccessTarget = DataModelField | TypeDefField;\n\nexport const MemberAccessTarget = 'MemberAccessTarget';\n\nexport function isMemberAccessTarget(item: unknown): item is MemberAccessTarget {\n return reflection.isInstance(item, MemberAccessTarget);\n}\n\nexport type ReferenceTarget = DataModelField | EnumField | FunctionParam | TypeDefField;\n\nexport const ReferenceTarget = 'ReferenceTarget';\n\nexport function isReferenceTarget(item: unknown): item is ReferenceTarget {\n return reflection.isInstance(item, ReferenceTarget);\n}\n\nexport type RegularID = 'abstract' | 'attribute' | 'datasource' | 'enum' | 'import' | 'in' | 'model' | 'plugin' | 'type' | 'view' | string;\n\nexport function isRegularID(item: unknown): item is RegularID {\n return item === 'model' || item === 'enum' || item === 'attribute' || item === 'datasource' || item === 'plugin' || item === 'abstract' || item === 'in' || item === 'view' || item === 'import' || item === 'type' || (typeof item === 'string' && (/[_a-zA-Z][\\w_]*/.test(item)));\n}\n\nexport type RegularIDWithTypeNames = 'Any' | 'BigInt' | 'Boolean' | 'Bytes' | 'DateTime' | 'Decimal' | 'Float' | 'Int' | 'Json' | 'Null' | 'Object' | 'String' | 'Unsupported' | RegularID;\n\nexport function isRegularIDWithTypeNames(item: unknown): item is RegularIDWithTypeNames {\n return isRegularID(item) || item === 'String' || item === 'Boolean' || item === 'Int' || item === 'BigInt' || item === 'Float' || item === 'Decimal' || item === 'DateTime' || item === 'Json' || item === 'Bytes' || item === 'Null' || item === 'Object' || item === 'Any' || item === 'Unsupported';\n}\n\nexport type TypeDeclaration = DataModel | Enum | TypeDef;\n\nexport const TypeDeclaration = 'TypeDeclaration';\n\nexport function isTypeDeclaration(item: unknown): item is TypeDeclaration {\n return reflection.isInstance(item, TypeDeclaration);\n}\n\nexport type TypeDefFieldTypes = Enum | TypeDef;\n\nexport const TypeDefFieldTypes = 'TypeDefFieldTypes';\n\nexport function isTypeDefFieldTypes(item: unknown): item is TypeDefFieldTypes {\n return reflection.isInstance(item, TypeDefFieldTypes);\n}\n\nexport interface Argument extends AstNode {\n readonly $container: InvocationExpr;\n readonly $type: 'Argument';\n value: Expression;\n}\n\nexport const Argument = 'Argument';\n\nexport function isArgument(item: unknown): item is Argument {\n return reflection.isInstance(item, Argument);\n}\n\nexport interface ArrayExpr extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | PluginField | ReferenceArg | UnaryExpr;\n readonly $type: 'ArrayExpr';\n items: Array<Expression>;\n}\n\nexport const ArrayExpr = 'ArrayExpr';\n\nexport function isArrayExpr(item: unknown): item is ArrayExpr {\n return reflection.isInstance(item, ArrayExpr);\n}\n\nexport interface Attribute extends AstNode {\n readonly $container: Model;\n readonly $type: 'Attribute';\n attributes: Array<InternalAttribute>;\n comments: Array<string>;\n name: string;\n params: Array<AttributeParam>;\n}\n\nexport const Attribute = 'Attribute';\n\nexport function isAttribute(item: unknown): item is Attribute {\n return reflection.isInstance(item, Attribute);\n}\n\nexport interface AttributeArg extends AstNode {\n readonly $container: DataModelAttribute | DataModelFieldAttribute | InternalAttribute;\n readonly $type: 'AttributeArg';\n name?: RegularID;\n value: Expression;\n}\n\nexport const AttributeArg = 'AttributeArg';\n\nexport function isAttributeArg(item: unknown): item is AttributeArg {\n return reflection.isInstance(item, AttributeArg);\n}\n\nexport interface AttributeParam extends AstNode {\n readonly $container: Attribute;\n readonly $type: 'AttributeParam';\n attributes: Array<InternalAttribute>;\n comments: Array<string>;\n default: boolean;\n name: RegularID;\n type: AttributeParamType;\n}\n\nexport const AttributeParam = 'AttributeParam';\n\nexport function isAttributeParam(item: unknown): item is AttributeParam {\n return reflection.isInstance(item, AttributeParam);\n}\n\nexport interface AttributeParamType extends AstNode {\n readonly $container: AttributeParam;\n readonly $type: 'AttributeParamType';\n array: boolean;\n optional: boolean;\n reference?: Reference<TypeDeclaration>;\n type?: 'ContextType' | 'FieldReference' | 'TransitiveFieldReference' | ExpressionType;\n}\n\nexport const AttributeParamType = 'AttributeParamType';\n\nexport function isAttributeParamType(item: unknown): item is AttributeParamType {\n return reflection.isInstance(item, AttributeParamType);\n}\n\nexport interface BinaryExpr extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'BinaryExpr';\n left: Expression;\n operator: '!' | '!=' | '&&' | '<' | '<=' | '==' | '>' | '>=' | '?' | '^' | 'in' | '||';\n right: Expression;\n}\n\nexport const BinaryExpr = 'BinaryExpr';\n\nexport function isBinaryExpr(item: unknown): item is BinaryExpr {\n return reflection.isInstance(item, BinaryExpr);\n}\n\nexport interface BooleanLiteral extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | ConfigArrayExpr | ConfigField | ConfigInvocationArg | FieldInitializer | FunctionDecl | MemberAccessExpr | PluginField | ReferenceArg | UnaryExpr | UnsupportedFieldType;\n readonly $type: 'BooleanLiteral';\n value: Boolean;\n}\n\nexport const BooleanLiteral = 'BooleanLiteral';\n\nexport function isBooleanLiteral(item: unknown): item is BooleanLiteral {\n return reflection.isInstance(item, BooleanLiteral);\n}\n\nexport interface ConfigArrayExpr extends AstNode {\n readonly $container: ConfigField;\n readonly $type: 'ConfigArrayExpr';\n items: Array<ConfigInvocationExpr | LiteralExpr>;\n}\n\nexport const ConfigArrayExpr = 'ConfigArrayExpr';\n\nexport function isConfigArrayExpr(item: unknown): item is ConfigArrayExpr {\n return reflection.isInstance(item, ConfigArrayExpr);\n}\n\nexport interface ConfigField extends AstNode {\n readonly $container: DataSource | GeneratorDecl;\n readonly $type: 'ConfigField';\n name: RegularID;\n value: ConfigExpr;\n}\n\nexport const ConfigField = 'ConfigField';\n\nexport function isConfigField(item: unknown): item is ConfigField {\n return reflection.isInstance(item, ConfigField);\n}\n\nexport interface ConfigInvocationArg extends AstNode {\n readonly $container: ConfigInvocationExpr;\n readonly $type: 'ConfigInvocationArg';\n name: string;\n value: LiteralExpr;\n}\n\nexport const ConfigInvocationArg = 'ConfigInvocationArg';\n\nexport function isConfigInvocationArg(item: unknown): item is ConfigInvocationArg {\n return reflection.isInstance(item, ConfigInvocationArg);\n}\n\nexport interface ConfigInvocationExpr extends AstNode {\n readonly $container: ConfigArrayExpr;\n readonly $type: 'ConfigInvocationExpr';\n args: Array<ConfigInvocationArg>;\n name: string;\n}\n\nexport const ConfigInvocationExpr = 'ConfigInvocationExpr';\n\nexport function isConfigInvocationExpr(item: unknown): item is ConfigInvocationExpr {\n return reflection.isInstance(item, ConfigInvocationExpr);\n}\n\nexport interface DataModel extends AstNode {\n readonly $container: Model;\n readonly $type: 'DataModel';\n attributes: Array<DataModelAttribute>;\n comments: Array<string>;\n fields: Array<DataModelField>;\n isAbstract: boolean;\n isView: boolean;\n name: RegularID;\n superTypes: Array<Reference<DataModel>>;\n}\n\nexport const DataModel = 'DataModel';\n\nexport function isDataModel(item: unknown): item is DataModel {\n return reflection.isInstance(item, DataModel);\n}\n\nexport interface DataModelAttribute extends AstNode {\n readonly $container: DataModel | Enum | TypeDef;\n readonly $type: 'DataModelAttribute';\n args: Array<AttributeArg>;\n decl: Reference<Attribute>;\n}\n\nexport const DataModelAttribute = 'DataModelAttribute';\n\nexport function isDataModelAttribute(item: unknown): item is DataModelAttribute {\n return reflection.isInstance(item, DataModelAttribute);\n}\n\nexport interface DataModelField extends AstNode {\n readonly $container: DataModel;\n readonly $type: 'DataModelField';\n attributes: Array<DataModelFieldAttribute>;\n comments: Array<string>;\n name: RegularIDWithTypeNames;\n type: DataModelFieldType;\n}\n\nexport const DataModelField = 'DataModelField';\n\nexport function isDataModelField(item: unknown): item is DataModelField {\n return reflection.isInstance(item, DataModelField);\n}\n\nexport interface DataModelFieldAttribute extends AstNode {\n readonly $container: DataModelField | EnumField | TypeDefField;\n readonly $type: 'DataModelFieldAttribute';\n args: Array<AttributeArg>;\n decl: Reference<Attribute>;\n}\n\nexport const DataModelFieldAttribute = 'DataModelFieldAttribute';\n\nexport function isDataModelFieldAttribute(item: unknown): item is DataModelFieldAttribute {\n return reflection.isInstance(item, DataModelFieldAttribute);\n}\n\nexport interface DataModelFieldType extends AstNode {\n readonly $container: DataModelField;\n readonly $type: 'DataModelFieldType';\n array: boolean;\n optional: boolean;\n reference?: Reference<TypeDeclaration>;\n type?: BuiltinType;\n unsupported?: UnsupportedFieldType;\n}\n\nexport const DataModelFieldType = 'DataModelFieldType';\n\nexport function isDataModelFieldType(item: unknown): item is DataModelFieldType {\n return reflection.isInstance(item, DataModelFieldType);\n}\n\nexport interface DataSource extends AstNode {\n readonly $container: Model;\n readonly $type: 'DataSource';\n fields: Array<ConfigField>;\n name: RegularID;\n}\n\nexport const DataSource = 'DataSource';\n\nexport function isDataSource(item: unknown): item is DataSource {\n return reflection.isInstance(item, DataSource);\n}\n\nexport interface Enum extends AstNode {\n readonly $container: Model;\n readonly $type: 'Enum';\n attributes: Array<DataModelAttribute>;\n comments: Array<string>;\n fields: Array<EnumField>;\n name: RegularID;\n}\n\nexport const Enum = 'Enum';\n\nexport function isEnum(item: unknown): item is Enum {\n return reflection.isInstance(item, Enum);\n}\n\nexport interface EnumField extends AstNode {\n readonly $container: Enum;\n readonly $type: 'EnumField';\n attributes: Array<DataModelFieldAttribute>;\n comments: Array<string>;\n name: RegularIDWithTypeNames;\n}\n\nexport const EnumField = 'EnumField';\n\nexport function isEnumField(item: unknown): item is EnumField {\n return reflection.isInstance(item, EnumField);\n}\n\nexport interface FieldInitializer extends AstNode {\n readonly $container: ObjectExpr;\n readonly $type: 'FieldInitializer';\n name: RegularID | string;\n value: Expression;\n}\n\nexport const FieldInitializer = 'FieldInitializer';\n\nexport function isFieldInitializer(item: unknown): item is FieldInitializer {\n return reflection.isInstance(item, FieldInitializer);\n}\n\nexport interface FunctionDecl extends AstNode {\n readonly $container: Model;\n readonly $type: 'FunctionDecl';\n attributes: Array<InternalAttribute>;\n expression?: Expression;\n name: RegularID;\n params: Array<FunctionParam>;\n returnType: FunctionParamType;\n}\n\nexport const FunctionDecl = 'FunctionDecl';\n\nexport function isFunctionDecl(item: unknown): item is FunctionDecl {\n return reflection.isInstance(item, FunctionDecl);\n}\n\nexport interface FunctionParam extends AstNode {\n readonly $container: FunctionDecl | Procedure;\n readonly $type: 'FunctionParam';\n name: RegularID;\n optional: boolean;\n type: FunctionParamType;\n}\n\nexport const FunctionParam = 'FunctionParam';\n\nexport function isFunctionParam(item: unknown): item is FunctionParam {\n return reflection.isInstance(item, FunctionParam);\n}\n\nexport interface FunctionParamType extends AstNode {\n readonly $container: FunctionDecl | FunctionParam | Procedure | ProcedureParam;\n readonly $type: 'FunctionParamType';\n array: boolean;\n reference?: Reference<TypeDeclaration>;\n type?: ExpressionType;\n}\n\nexport const FunctionParamType = 'FunctionParamType';\n\nexport function isFunctionParamType(item: unknown): item is FunctionParamType {\n return reflection.isInstance(item, FunctionParamType);\n}\n\nexport interface GeneratorDecl extends AstNode {\n readonly $container: Model;\n readonly $type: 'GeneratorDecl';\n fields: Array<ConfigField>;\n name: RegularID;\n}\n\nexport const GeneratorDecl = 'GeneratorDecl';\n\nexport function isGeneratorDecl(item: unknown): item is GeneratorDecl {\n return reflection.isInstance(item, GeneratorDecl);\n}\n\nexport interface InternalAttribute extends AstNode {\n readonly $container: Attribute | AttributeParam | FunctionDecl | Procedure;\n readonly $type: 'InternalAttribute';\n args: Array<AttributeArg>;\n decl: Reference<Attribute>;\n}\n\nexport const InternalAttribute = 'InternalAttribute';\n\nexport function isInternalAttribute(item: unknown): item is InternalAttribute {\n return reflection.isInstance(item, InternalAttribute);\n}\n\nexport interface InvocationExpr extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | ConfigField | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'InvocationExpr';\n args: Array<Argument>;\n function: Reference<FunctionDecl>;\n}\n\nexport const InvocationExpr = 'InvocationExpr';\n\nexport function isInvocationExpr(item: unknown): item is InvocationExpr {\n return reflection.isInstance(item, InvocationExpr);\n}\n\nexport interface MemberAccessExpr extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'MemberAccessExpr';\n member: Reference<MemberAccessTarget>;\n operand: Expression;\n}\n\nexport const MemberAccessExpr = 'MemberAccessExpr';\n\nexport function isMemberAccessExpr(item: unknown): item is MemberAccessExpr {\n return reflection.isInstance(item, MemberAccessExpr);\n}\n\nexport interface Model extends AstNode {\n readonly $type: 'Model';\n declarations: Array<AbstractDeclaration>;\n imports: Array<ModelImport>;\n}\n\nexport const Model = 'Model';\n\nexport function isModel(item: unknown): item is Model {\n return reflection.isInstance(item, Model);\n}\n\nexport interface ModelImport extends AstNode {\n readonly $container: Model;\n readonly $type: 'ModelImport';\n path: string;\n}\n\nexport const ModelImport = 'ModelImport';\n\nexport function isModelImport(item: unknown): item is ModelImport {\n return reflection.isInstance(item, ModelImport);\n}\n\nexport interface NullExpr extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'NullExpr';\n value: 'null';\n}\n\nexport const NullExpr = 'NullExpr';\n\nexport function isNullExpr(item: unknown): item is NullExpr {\n return reflection.isInstance(item, NullExpr);\n}\n\nexport interface NumberLiteral extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | ConfigArrayExpr | ConfigField | ConfigInvocationArg | FieldInitializer | FunctionDecl | MemberAccessExpr | PluginField | ReferenceArg | UnaryExpr | UnsupportedFieldType;\n readonly $type: 'NumberLiteral';\n value: string;\n}\n\nexport const NumberLiteral = 'NumberLiteral';\n\nexport function isNumberLiteral(item: unknown): item is NumberLiteral {\n return reflection.isInstance(item, NumberLiteral);\n}\n\nexport interface ObjectExpr extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | PluginField | ReferenceArg | UnaryExpr;\n readonly $type: 'ObjectExpr';\n fields: Array<FieldInitializer>;\n}\n\nexport const ObjectExpr = 'ObjectExpr';\n\nexport function isObjectExpr(item: unknown): item is ObjectExpr {\n return reflection.isInstance(item, ObjectExpr);\n}\n\nexport interface Plugin extends AstNode {\n readonly $container: Model;\n readonly $type: 'Plugin';\n fields: Array<PluginField>;\n name: RegularID;\n}\n\nexport const Plugin = 'Plugin';\n\nexport function isPlugin(item: unknown): item is Plugin {\n return reflection.isInstance(item, Plugin);\n}\n\nexport interface PluginField extends AstNode {\n readonly $container: Plugin;\n readonly $type: 'PluginField';\n name: RegularID;\n value: ArrayExpr | LiteralExpr | ObjectExpr;\n}\n\nexport const PluginField = 'PluginField';\n\nexport function isPluginField(item: unknown): item is PluginField {\n return reflection.isInstance(item, PluginField);\n}\n\nexport interface Procedure extends AstNode {\n readonly $container: Model;\n readonly $type: 'Procedure';\n attributes: Array<InternalAttribute>;\n mutation: boolean;\n name: RegularID;\n params: Array<FunctionParam | ProcedureParam>;\n returnType: FunctionParamType;\n}\n\nexport const Procedure = 'Procedure';\n\nexport function isProcedure(item: unknown): item is Procedure {\n return reflection.isInstance(item, Procedure);\n}\n\nexport interface ProcedureParam extends AstNode {\n readonly $container: Procedure;\n readonly $type: 'ProcedureParam';\n name: RegularID;\n optional: boolean;\n type: FunctionParamType;\n}\n\nexport const ProcedureParam = 'ProcedureParam';\n\nexport function isProcedureParam(item: unknown): item is ProcedureParam {\n return reflection.isInstance(item, ProcedureParam);\n}\n\nexport interface ReferenceArg extends AstNode {\n readonly $container: ReferenceExpr;\n readonly $type: 'ReferenceArg';\n name: string;\n value: Expression;\n}\n\nexport const ReferenceArg = 'ReferenceArg';\n\nexport function isReferenceArg(item: unknown): item is ReferenceArg {\n return reflection.isInstance(item, ReferenceArg);\n}\n\nexport interface ReferenceExpr extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'ReferenceExpr';\n args: Array<ReferenceArg>;\n target: Reference<ReferenceTarget>;\n}\n\nexport const ReferenceExpr = 'ReferenceExpr';\n\nexport function isReferenceExpr(item: unknown): item is ReferenceExpr {\n return reflection.isInstance(item, ReferenceExpr);\n}\n\nexport interface StringLiteral extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | ConfigArrayExpr | ConfigField | ConfigInvocationArg | FieldInitializer | FunctionDecl | MemberAccessExpr | PluginField | ReferenceArg | UnaryExpr | UnsupportedFieldType;\n readonly $type: 'StringLiteral';\n value: string;\n}\n\nexport const StringLiteral = 'StringLiteral';\n\nexport function isStringLiteral(item: unknown): item is StringLiteral {\n return reflection.isInstance(item, StringLiteral);\n}\n\nexport interface ThisExpr extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'ThisExpr';\n value: 'this';\n}\n\nexport const ThisExpr = 'ThisExpr';\n\nexport function isThisExpr(item: unknown): item is ThisExpr {\n return reflection.isInstance(item, ThisExpr);\n}\n\nexport interface TypeDef extends AstNode {\n readonly $container: Model;\n readonly $type: 'TypeDef';\n attributes: Array<DataModelAttribute>;\n comments: Array<string>;\n fields: Array<TypeDefField>;\n name: RegularID;\n}\n\nexport const TypeDef = 'TypeDef';\n\nexport function isTypeDef(item: unknown): item is TypeDef {\n return reflection.isInstance(item, TypeDef);\n}\n\nexport interface TypeDefField extends AstNode {\n readonly $container: TypeDef;\n readonly $type: 'TypeDefField';\n attributes: Array<DataModelFieldAttribute>;\n comments: Array<string>;\n name: RegularIDWithTypeNames;\n type: TypeDefFieldType;\n}\n\nexport const TypeDefField = 'TypeDefField';\n\nexport function isTypeDefField(item: unknown): item is TypeDefField {\n return reflection.isInstance(item, TypeDefField);\n}\n\nexport interface TypeDefFieldType extends AstNode {\n readonly $container: TypeDefField;\n readonly $type: 'TypeDefFieldType';\n array: boolean;\n optional: boolean;\n reference?: Reference<TypeDefFieldTypes>;\n type?: BuiltinType;\n}\n\nexport const TypeDefFieldType = 'TypeDefFieldType';\n\nexport function isTypeDefFieldType(item: unknown): item is TypeDefFieldType {\n return reflection.isInstance(item, TypeDefFieldType);\n}\n\nexport interface UnaryExpr extends AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'UnaryExpr';\n operand: Expression;\n operator: '!';\n}\n\nexport const UnaryExpr = 'UnaryExpr';\n\nexport function isUnaryExpr(item: unknown): item is UnaryExpr {\n return reflection.isInstance(item, UnaryExpr);\n}\n\nexport interface UnsupportedFieldType extends AstNode {\n readonly $container: DataModelFieldType;\n readonly $type: 'UnsupportedFieldType';\n value: LiteralExpr;\n}\n\nexport const UnsupportedFieldType = 'UnsupportedFieldType';\n\nexport function isUnsupportedFieldType(item: unknown): item is UnsupportedFieldType {\n return reflection.isInstance(item, UnsupportedFieldType);\n}\n\nexport type ZModelAstType = {\n AbstractDeclaration: AbstractDeclaration\n Argument: Argument\n ArrayExpr: ArrayExpr\n Attribute: Attribute\n AttributeArg: AttributeArg\n AttributeParam: AttributeParam\n AttributeParamType: AttributeParamType\n BinaryExpr: BinaryExpr\n BooleanLiteral: BooleanLiteral\n ConfigArrayExpr: ConfigArrayExpr\n ConfigExpr: ConfigExpr\n ConfigField: ConfigField\n ConfigInvocationArg: ConfigInvocationArg\n ConfigInvocationExpr: ConfigInvocationExpr\n DataModel: DataModel\n DataModelAttribute: DataModelAttribute\n DataModelField: DataModelField\n DataModelFieldAttribute: DataModelFieldAttribute\n DataModelFieldType: DataModelFieldType\n DataSource: DataSource\n Enum: Enum\n EnumField: EnumField\n Expression: Expression\n FieldInitializer: FieldInitializer\n FunctionDecl: FunctionDecl\n FunctionParam: FunctionParam\n FunctionParamType: FunctionParamType\n GeneratorDecl: GeneratorDecl\n InternalAttribute: InternalAttribute\n InvocationExpr: InvocationExpr\n LiteralExpr: LiteralExpr\n MemberAccessExpr: MemberAccessExpr\n MemberAccessTarget: MemberAccessTarget\n Model: Model\n ModelImport: ModelImport\n NullExpr: NullExpr\n NumberLiteral: NumberLiteral\n ObjectExpr: ObjectExpr\n Plugin: Plugin\n PluginField: PluginField\n Procedure: Procedure\n ProcedureParam: ProcedureParam\n ReferenceArg: ReferenceArg\n ReferenceExpr: ReferenceExpr\n ReferenceTarget: ReferenceTarget\n StringLiteral: StringLiteral\n ThisExpr: ThisExpr\n TypeDeclaration: TypeDeclaration\n TypeDef: TypeDef\n TypeDefField: TypeDefField\n TypeDefFieldType: TypeDefFieldType\n TypeDefFieldTypes: TypeDefFieldTypes\n UnaryExpr: UnaryExpr\n UnsupportedFieldType: UnsupportedFieldType\n}\n\nexport class ZModelAstReflection extends AbstractAstReflection {\n\n getAllTypes(): string[] {\n return [AbstractDeclaration, Argument, ArrayExpr, Attribute, AttributeArg, AttributeParam, AttributeParamType, BinaryExpr, BooleanLiteral, ConfigArrayExpr, ConfigExpr, ConfigField, ConfigInvocationArg, ConfigInvocationExpr, DataModel, DataModelAttribute, DataModelField, DataModelFieldAttribute, DataModelFieldType, DataSource, Enum, EnumField, Expression, FieldInitializer, FunctionDecl, FunctionParam, FunctionParamType, GeneratorDecl, InternalAttribute, InvocationExpr, LiteralExpr, MemberAccessExpr, MemberAccessTarget, Model, ModelImport, NullExpr, NumberLiteral, ObjectExpr, Plugin, PluginField, Procedure, ProcedureParam, ReferenceArg, ReferenceExpr, ReferenceTarget, StringLiteral, ThisExpr, TypeDeclaration, TypeDef, TypeDefField, TypeDefFieldType, TypeDefFieldTypes, UnaryExpr, UnsupportedFieldType];\n }\n\n protected override computeIsSubtype(subtype: string, supertype: string): boolean {\n switch (subtype) {\n case ArrayExpr:\n case BinaryExpr:\n case MemberAccessExpr:\n case NullExpr:\n case ObjectExpr:\n case ReferenceExpr:\n case ThisExpr:\n case UnaryExpr: {\n return this.isSubtype(Expression, supertype);\n }\n case Attribute:\n case DataSource:\n case FunctionDecl:\n case GeneratorDecl:\n case Plugin:\n case Procedure: {\n return this.isSubtype(AbstractDeclaration, supertype);\n }\n case BooleanLiteral:\n case NumberLiteral:\n case StringLiteral: {\n return this.isSubtype(LiteralExpr, supertype);\n }\n case ConfigArrayExpr: {\n return this.isSubtype(ConfigExpr, supertype);\n }\n case DataModel: {\n return this.isSubtype(AbstractDeclaration, supertype) || this.isSubtype(TypeDeclaration, supertype);\n }\n case DataModelField:\n case TypeDefField: {\n return this.isSubtype(MemberAccessTarget, supertype) || this.isSubtype(ReferenceTarget, supertype);\n }\n case Enum:\n case TypeDef: {\n return this.isSubtype(AbstractDeclaration, supertype) || this.isSubtype(TypeDeclaration, supertype) || this.isSubtype(TypeDefFieldTypes, supertype);\n }\n case EnumField:\n case FunctionParam: {\n return this.isSubtype(ReferenceTarget, supertype);\n }\n case InvocationExpr:\n case LiteralExpr: {\n return this.isSubtype(ConfigExpr, supertype) || this.isSubtype(Expression, supertype);\n }\n default: {\n return false;\n }\n }\n }\n\n getReferenceType(refInfo: ReferenceInfo): string {\n const referenceId = `${refInfo.container.$type}:${refInfo.property}`;\n switch (referenceId) {\n case 'AttributeParamType:reference':\n case 'DataModelFieldType:reference':\n case 'FunctionParamType:reference': {\n return TypeDeclaration;\n }\n case 'DataModel:superTypes': {\n return DataModel;\n }\n case 'DataModelAttribute:decl':\n case 'DataModelFieldAttribute:decl':\n case 'InternalAttribute:decl': {\n return Attribute;\n }\n case 'InvocationExpr:function': {\n return FunctionDecl;\n }\n case 'MemberAccessExpr:member': {\n return MemberAccessTarget;\n }\n case 'ReferenceExpr:target': {\n return ReferenceTarget;\n }\n case 'TypeDefFieldType:reference': {\n return TypeDefFieldTypes;\n }\n default: {\n throw new Error(`${referenceId} is not a valid reference id.`);\n }\n }\n }\n\n getTypeMetaData(type: string): TypeMetaData {\n switch (type) {\n case Argument: {\n return {\n name: Argument,\n properties: [\n { name: 'value' }\n ]\n };\n }\n case ArrayExpr: {\n return {\n name: ArrayExpr,\n properties: [\n { name: 'items', defaultValue: [] }\n ]\n };\n }\n case Attribute: {\n return {\n name: Attribute,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'comments', defaultValue: [] },\n { name: 'name' },\n { name: 'params', defaultValue: [] }\n ]\n };\n }\n case AttributeArg: {\n return {\n name: AttributeArg,\n properties: [\n { name: 'name' },\n { name: 'value' }\n ]\n };\n }\n case AttributeParam: {\n return {\n name: AttributeParam,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'comments', defaultValue: [] },\n { name: 'default', defaultValue: false },\n { name: 'name' },\n { name: 'type' }\n ]\n };\n }\n case AttributeParamType: {\n return {\n name: AttributeParamType,\n properties: [\n { name: 'array', defaultValue: false },\n { name: 'optional', defaultValue: false },\n { name: 'reference' },\n { name: 'type' }\n ]\n };\n }\n case BinaryExpr: {\n return {\n name: BinaryExpr,\n properties: [\n { name: 'left' },\n { name: 'operator' },\n { name: 'right' }\n ]\n };\n }\n case BooleanLiteral: {\n return {\n name: BooleanLiteral,\n properties: [\n { name: 'value' }\n ]\n };\n }\n case ConfigArrayExpr: {\n return {\n name: ConfigArrayExpr,\n properties: [\n { name: 'items', defaultValue: [] }\n ]\n };\n }\n case ConfigField: {\n return {\n name: ConfigField,\n properties: [\n { name: 'name' },\n { name: 'value' }\n ]\n };\n }\n case ConfigInvocationArg: {\n return {\n name: ConfigInvocationArg,\n properties: [\n { name: 'name' },\n { name: 'value' }\n ]\n };\n }\n case ConfigInvocationExpr: {\n return {\n name: ConfigInvocationExpr,\n properties: [\n { name: 'args', defaultValue: [] },\n { name: 'name' }\n ]\n };\n }\n case DataModel: {\n return {\n name: DataModel,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'comments', defaultValue: [] },\n { name: 'fields', defaultValue: [] },\n { name: 'isAbstract', defaultValue: false },\n { name: 'isView', defaultValue: false },\n { name: 'name' },\n { name: 'superTypes', defaultValue: [] }\n ]\n };\n }\n case DataModelAttribute: {\n return {\n name: DataModelAttribute,\n properties: [\n { name: 'args', defaultValue: [] },\n { name: 'decl' }\n ]\n };\n }\n case DataModelField: {\n return {\n name: DataModelField,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'comments', defaultValue: [] },\n { name: 'name' },\n { name: 'type' }\n ]\n };\n }\n case DataModelFieldAttribute: {\n return {\n name: DataModelFieldAttribute,\n properties: [\n { name: 'args', defaultValue: [] },\n { name: 'decl' }\n ]\n };\n }\n case DataModelFieldType: {\n return {\n name: DataModelFieldType,\n properties: [\n { name: 'array', defaultValue: false },\n { name: 'optional', defaultValue: false },\n { name: 'reference' },\n { name: 'type' },\n { name: 'unsupported' }\n ]\n };\n }\n case DataSource: {\n return {\n name: DataSource,\n properties: [\n { name: 'fields', defaultValue: [] },\n { name: 'name' }\n ]\n };\n }\n case Enum: {\n return {\n name: Enum,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'comments', defaultValue: [] },\n { name: 'fields', defaultValue: [] },\n { name: 'name' }\n ]\n };\n }\n case EnumField: {\n return {\n name: EnumField,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'comments', defaultValue: [] },\n { name: 'name' }\n ]\n };\n }\n case FieldInitializer: {\n return {\n name: FieldInitializer,\n properties: [\n { name: 'name' },\n { name: 'value' }\n ]\n };\n }\n case FunctionDecl: {\n return {\n name: FunctionDecl,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'expression' },\n { name: 'name' },\n { name: 'params', defaultValue: [] },\n { name: 'returnType' }\n ]\n };\n }\n case FunctionParam: {\n return {\n name: FunctionParam,\n properties: [\n { name: 'name' },\n { name: 'optional', defaultValue: false },\n { name: 'type' }\n ]\n };\n }\n case FunctionParamType: {\n return {\n name: FunctionParamType,\n properties: [\n { name: 'array', defaultValue: false },\n { name: 'reference' },\n { name: 'type' }\n ]\n };\n }\n case GeneratorDecl: {\n return {\n name: GeneratorDecl,\n properties: [\n { name: 'fields', defaultValue: [] },\n { name: 'name' }\n ]\n };\n }\n case InternalAttribute: {\n return {\n name: InternalAttribute,\n properties: [\n { name: 'args', defaultValue: [] },\n { name: 'decl' }\n ]\n };\n }\n case InvocationExpr: {\n return {\n name: InvocationExpr,\n properties: [\n { name: 'args', defaultValue: [] },\n { name: 'function' }\n ]\n };\n }\n case MemberAccessExpr: {\n return {\n name: MemberAccessExpr,\n properties: [\n { name: 'member' },\n { name: 'operand' }\n ]\n };\n }\n case Model: {\n return {\n name: Model,\n properties: [\n { name: 'declarations', defaultValue: [] },\n { name: 'imports', defaultValue: [] }\n ]\n };\n }\n case ModelImport: {\n return {\n name: ModelImport,\n properties: [\n { name: 'path' }\n ]\n };\n }\n case NullExpr: {\n return {\n name: NullExpr,\n properties: [\n { name: 'value' }\n ]\n };\n }\n case NumberLiteral: {\n return {\n name: NumberLiteral,\n properties: [\n { name: 'value' }\n ]\n };\n }\n case ObjectExpr: {\n return {\n name: ObjectExpr,\n properties: [\n { name: 'fields', defaultValue: [] }\n ]\n };\n }\n case Plugin: {\n return {\n name: Plugin,\n properties: [\n { name: 'fields', defaultValue: [] },\n { name: 'name' }\n ]\n };\n }\n case PluginField: {\n return {\n name: PluginField,\n properties: [\n { name: 'name' },\n { name: 'value' }\n ]\n };\n }\n case Procedure: {\n return {\n name: Procedure,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'mutation', defaultValue: false },\n { name: 'name' },\n { name: 'params', defaultValue: [] },\n { name: 'returnType' }\n ]\n };\n }\n case ProcedureParam: {\n return {\n name: ProcedureParam,\n properties: [\n { name: 'name' },\n { name: 'optional', defaultValue: false },\n { name: 'type' }\n ]\n };\n }\n case ReferenceArg: {\n return {\n name: ReferenceArg,\n properties: [\n { name: 'name' },\n { name: 'value' }\n ]\n };\n }\n case ReferenceExpr: {\n return {\n name: ReferenceExpr,\n properties: [\n { name: 'args', defaultValue: [] },\n { name: 'target' }\n ]\n };\n }\n case StringLiteral: {\n return {\n name: StringLiteral,\n properties: [\n { name: 'value' }\n ]\n };\n }\n case ThisExpr: {\n return {\n name: ThisExpr,\n properties: [\n { name: 'value' }\n ]\n };\n }\n case TypeDef: {\n return {\n name: TypeDef,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'comments', defaultValue: [] },\n { name: 'fields', defaultValue: [] },\n { name: 'name' }\n ]\n };\n }\n case TypeDefField: {\n return {\n name: TypeDefField,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'comments', defaultValue: [] },\n { name: 'name' },\n { name: 'type' }\n ]\n };\n }\n case TypeDefFieldType: {\n return {\n name: TypeDefFieldType,\n properties: [\n { name: 'array', defaultValue: false },\n { name: 'optional', defaultValue: false },\n { name: 'reference' },\n { name: 'type' }\n ]\n };\n }\n case UnaryExpr: {\n return {\n name: UnaryExpr,\n properties: [\n { name: 'operand' },\n { name: 'operator' }\n ]\n };\n }\n case UnsupportedFieldType: {\n return {\n name: UnsupportedFieldType,\n properties: [\n { name: 'value' }\n ]\n };\n }\n default: {\n return {\n name: type,\n properties: []\n };\n }\n }\n }\n}\n\nexport const reflection = new ZModelAstReflection();\n","import type { AstNode } from 'langium';\nimport {\n AbstractDeclaration,\n BinaryExpr,\n DataModel,\n type ExpressionType,\n} from './generated/ast';\n\nexport type { AstNode, Reference } from 'langium';\nexport * from './generated/ast';\n\n/**\n * Shape of type resolution result: an expression type or reference to a declaration\n */\nexport type ResolvedShape = ExpressionType | AbstractDeclaration;\n\n/**\n * Resolved type information (attached to expressions by linker)\n */\nexport type ResolvedType = {\n decl?: ResolvedShape;\n array?: boolean;\n nullable?: boolean;\n};\n\nexport const BinaryExprOperatorPriority: Record<\n BinaryExpr['operator'],\n number\n> = {\n //LogicalExpr\n '||': 1,\n '&&': 1,\n //EqualityExpr\n '==': 2,\n '!=': 2,\n //ComparisonExpr\n '>': 3,\n '<': 3,\n '>=': 3,\n '<=': 3,\n in: 4,\n //CollectionPredicateExpr\n '^': 5,\n '?': 5,\n '!': 5,\n};\n\ndeclare module './ast' {\n interface AttributeArg {\n /**\n * Resolved attribute param declaration\n */\n // @ts-ignore\n $resolvedParam?: AttributeParam;\n }\n\n interface DataModelField {\n $inheritedFrom?: DataModel;\n }\n\n interface DataModelAttribute {\n $inheritedFrom?: DataModel;\n }\n\n export interface DataModel {\n /**\n * Indicates whether the model is already merged with the base types\n */\n $baseMerged?: boolean;\n\n /**\n * All fields including those marked with `@ignore`\n */\n $allFields?: DataModelField[];\n }\n}\n\nexport interface InheritableNode extends AstNode {\n $inheritedFrom?: DataModel;\n}\n\nexport interface InheritableNode extends AstNode {\n $inheritedFrom?: DataModel;\n}\n\ndeclare module 'langium' {\n export interface AstNode {\n /**\n * Resolved type information attached to expressions\n */\n $resolvedType?: ResolvedType;\n }\n}\n"],"mappings":"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","names":["AbstractAstReflection","ZModelTerminals","WS","INTERNAL_ATTRIBUTE_NAME","MODEL_ATTRIBUTE_NAME","FIELD_ATTRIBUTE_NAME","ID","STRING","NUMBER","TRIPLE_SLASH_COMMENT","ML_COMMENT","SL_COMMENT","AbstractDeclaration","isAbstractDeclaration","item","reflection","isInstance","isBoolean","isBuiltinType","ConfigExpr","isConfigExpr","Expression","isExpression","isExpressionType","LiteralExpr","isLiteralExpr","MemberAccessTarget","isMemberAccessTarget","ReferenceTarget","isReferenceTarget","isRegularID","test","isRegularIDWithTypeNames","TypeDeclaration","isTypeDeclaration","TypeDefFieldTypes","isTypeDefFieldTypes","Argument","isArgument","ArrayExpr","isArrayExpr","Attribute","isAttribute","AttributeArg","isAttributeArg","AttributeParam","isAttributeParam","AttributeParamType","isAttributeParamType","BinaryExpr","isBinaryExpr","BooleanLiteral","isBooleanLiteral","ConfigArrayExpr","isConfigArrayExpr","ConfigField","isConfigField","ConfigInvocationArg","isConfigInvocationArg","ConfigInvocationExpr","isConfigInvocationExpr","DataModel","isDataModel","DataModelAttribute","isDataModelAttribute","DataModelField","isDataModelField","DataModelFieldAttribute","isDataModelFieldAttribute","DataModelFieldType","isDataModelFieldType","DataSource","isDataSource","Enum","isEnum","EnumField","isEnumField","FieldInitializer","isFieldInitializer","FunctionDecl","isFunctionDecl","FunctionParam","isFunctionParam","FunctionParamType","isFunctionParamType","GeneratorDecl","isGeneratorDecl","InternalAttribute","isInternalAttribute","InvocationExpr","isInvocationExpr","MemberAccessExpr","isMemberAccessExpr","Model","isModel","ModelImport","isModelImport","NullExpr","isNullExpr","NumberLiteral","isNumberLiteral","ObjectExpr","isObjectExpr","Plugin","isPlugin","PluginField","isPluginField","Procedure","isProcedure","ProcedureParam","isProcedureParam","ReferenceArg","isReferenceArg","ReferenceExpr","isReferenceExpr","StringLiteral","isStringLiteral","ThisExpr","isThisExpr","TypeDef","isTypeDef","TypeDefField","isTypeDefField","TypeDefFieldType","isTypeDefFieldType","UnaryExpr","isUnaryExpr","UnsupportedFieldType","isUnsupportedFieldType","ZModelAstReflection","AbstractAstReflection","getAllTypes","computeIsSubtype","subtype","supertype","isSubtype","getReferenceType","refInfo","referenceId","container","$type","property","Error","getTypeMetaData","type","name","properties","defaultValue","BinaryExprOperatorPriority","in"]}
|