@zenstackhq/language 3.3.0-beta.2 → 3.3.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.cjs CHANGED
@@ -41,6 +41,7 @@ __export(ast_exports, {
41
41
  BinaryExpr: () => BinaryExpr,
42
42
  BinaryExprOperatorPriority: () => BinaryExprOperatorPriority,
43
43
  BooleanLiteral: () => BooleanLiteral,
44
+ CollectionPredicateBinding: () => CollectionPredicateBinding,
44
45
  ConfigArrayExpr: () => ConfigArrayExpr,
45
46
  ConfigExpr: () => ConfigExpr,
46
47
  ConfigField: () => ConfigField,
@@ -96,6 +97,7 @@ __export(ast_exports, {
96
97
  isBoolean: () => isBoolean,
97
98
  isBooleanLiteral: () => isBooleanLiteral,
98
99
  isBuiltinType: () => isBuiltinType,
100
+ isCollectionPredicateBinding: () => isCollectionPredicateBinding,
99
101
  isConfigArrayExpr: () => isConfigArrayExpr,
100
102
  isConfigExpr: () => isConfigExpr,
101
103
  isConfigField: () => isConfigField,
@@ -254,6 +256,11 @@ function isBooleanLiteral(item) {
254
256
  return reflection.isInstance(item, BooleanLiteral);
255
257
  }
256
258
  __name(isBooleanLiteral, "isBooleanLiteral");
259
+ var CollectionPredicateBinding = "CollectionPredicateBinding";
260
+ function isCollectionPredicateBinding(item) {
261
+ return reflection.isInstance(item, CollectionPredicateBinding);
262
+ }
263
+ __name(isCollectionPredicateBinding, "isCollectionPredicateBinding");
257
264
  var ConfigArrayExpr = "ConfigArrayExpr";
258
265
  function isConfigArrayExpr(item) {
259
266
  return reflection.isInstance(item, ConfigArrayExpr);
@@ -449,6 +456,7 @@ var ZModelAstReflection = class extends langium.AbstractAstReflection {
449
456
  AttributeParamType,
450
457
  BinaryExpr,
451
458
  BooleanLiteral,
459
+ CollectionPredicateBinding,
452
460
  ConfigArrayExpr,
453
461
  ConfigExpr,
454
462
  ConfigField,
@@ -518,6 +526,11 @@ var ZModelAstReflection = class extends langium.AbstractAstReflection {
518
526
  case StringLiteral: {
519
527
  return this.isSubtype(LiteralExpr, supertype);
520
528
  }
529
+ case CollectionPredicateBinding:
530
+ case EnumField:
531
+ case FunctionParam: {
532
+ return this.isSubtype(ReferenceTarget, supertype);
533
+ }
521
534
  case ConfigArrayExpr: {
522
535
  return this.isSubtype(ConfigExpr, supertype);
523
536
  }
@@ -529,10 +542,6 @@ var ZModelAstReflection = class extends langium.AbstractAstReflection {
529
542
  case TypeDef: {
530
543
  return this.isSubtype(AbstractDeclaration, supertype) || this.isSubtype(TypeDeclaration, supertype);
531
544
  }
532
- case EnumField:
533
- case FunctionParam: {
534
- return this.isSubtype(ReferenceTarget, supertype);
535
- }
536
545
  case InvocationExpr:
537
546
  case LiteralExpr: {
538
547
  return this.isSubtype(ConfigExpr, supertype) || this.isSubtype(Expression, supertype);
@@ -684,6 +693,9 @@ var ZModelAstReflection = class extends langium.AbstractAstReflection {
684
693
  return {
685
694
  name: BinaryExpr,
686
695
  properties: [
696
+ {
697
+ name: "binding"
698
+ },
687
699
  {
688
700
  name: "left"
689
701
  },
@@ -706,6 +718,16 @@ var ZModelAstReflection = class extends langium.AbstractAstReflection {
706
718
  ]
707
719
  };
708
720
  }
721
+ case CollectionPredicateBinding: {
722
+ return {
723
+ name: CollectionPredicateBinding,
724
+ properties: [
725
+ {
726
+ name: "name"
727
+ }
728
+ ]
729
+ };
730
+ }
709
731
  case ConfigArrayExpr: {
710
732
  return {
711
733
  name: ConfigArrayExpr,
@@ -1306,6 +1328,7 @@ var BinaryExprOperatorPriority = {
1306
1328
  BinaryExpr,
1307
1329
  BinaryExprOperatorPriority,
1308
1330
  BooleanLiteral,
1331
+ CollectionPredicateBinding,
1309
1332
  ConfigArrayExpr,
1310
1333
  ConfigExpr,
1311
1334
  ConfigField,
@@ -1361,6 +1384,7 @@ var BinaryExprOperatorPriority = {
1361
1384
  isBoolean,
1362
1385
  isBooleanLiteral,
1363
1386
  isBuiltinType,
1387
+ isCollectionPredicateBinding,
1364
1388
  isConfigArrayExpr,
1365
1389
  isConfigExpr,
1366
1390
  isConfigField,
package/dist/ast.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ast.ts","../src/generated/ast.ts"],"sourcesContent":["import type { AstNode } from 'langium';\nimport { AbstractDeclaration, BinaryExpr, DataField, DataModel, type ExpressionType } 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<BinaryExpr['operator'], number> = {\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 export interface DataModel {\n /**\n * All fields including those marked with `@ignore`\n */\n $allFields?: DataField[];\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","/******************************************************************************\n * This file was generated by langium-cli 3.5.0.\n * DO NOT EDIT MANUALLY!\n ******************************************************************************/\n\n/* eslint-disable */\nimport * as langium 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 | \"Undefined\"\n | \"Unsupported\"\n | \"Void\"\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 | \"with\"\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' | 'BigInt' | 'Boolean' | 'Bytes' | 'DateTime' | 'Decimal' | 'Float' | 'Int' | 'Json' | 'Null' | 'Object' | 'String' | 'Undefined' | 'Unsupported' | 'Void';\n\nexport function isExpressionType(item: unknown): item is ExpressionType {\n return item === 'String' || item === 'Int' || item === 'Float' || item === 'Boolean' || item === 'BigInt' || item === 'Decimal' || item === 'DateTime' || item === 'Json' || item === 'Bytes' || item === 'Null' || item === 'Object' || item === 'Any' || item === 'Void' || item === 'Undefined' || 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 = DataField;\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 = DataField | EnumField | FunctionParam;\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' | 'Void' | 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 === 'Void' || 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 interface Argument extends langium.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 langium.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 langium.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 langium.AstNode {\n readonly $container: DataFieldAttribute | DataModelAttribute | 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 langium.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 langium.AstNode {\n readonly $container: AttributeParam;\n readonly $type: 'AttributeParamType';\n array: boolean;\n optional: boolean;\n reference?: langium.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 langium.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 langium.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 langium.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 langium.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 langium.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 langium.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 DataField extends langium.AstNode {\n readonly $container: DataModel | TypeDef;\n readonly $type: 'DataField';\n attributes: Array<DataFieldAttribute>;\n comments: Array<string>;\n name: RegularIDWithTypeNames;\n type: DataFieldType;\n}\n\nexport const DataField = 'DataField';\n\nexport function isDataField(item: unknown): item is DataField {\n return reflection.isInstance(item, DataField);\n}\n\nexport interface DataFieldAttribute extends langium.AstNode {\n readonly $container: DataField | EnumField;\n readonly $type: 'DataFieldAttribute';\n args: Array<AttributeArg>;\n decl: langium.Reference<Attribute>;\n}\n\nexport const DataFieldAttribute = 'DataFieldAttribute';\n\nexport function isDataFieldAttribute(item: unknown): item is DataFieldAttribute {\n return reflection.isInstance(item, DataFieldAttribute);\n}\n\nexport interface DataFieldType extends langium.AstNode {\n readonly $container: DataField;\n readonly $type: 'DataFieldType';\n array: boolean;\n optional: boolean;\n reference?: langium.Reference<TypeDeclaration>;\n type?: BuiltinType;\n unsupported?: UnsupportedFieldType;\n}\n\nexport const DataFieldType = 'DataFieldType';\n\nexport function isDataFieldType(item: unknown): item is DataFieldType {\n return reflection.isInstance(item, DataFieldType);\n}\n\nexport interface DataModel extends langium.AstNode {\n readonly $container: Model;\n readonly $type: 'DataModel';\n attributes: Array<DataModelAttribute>;\n baseModel?: langium.Reference<DataModel>;\n comments: Array<string>;\n fields: Array<DataField>;\n isView: boolean;\n mixins: Array<langium.Reference<TypeDef>>;\n name: RegularID;\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 langium.AstNode {\n readonly $container: DataModel | Enum | TypeDef;\n readonly $type: 'DataModelAttribute';\n args: Array<AttributeArg>;\n decl: langium.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 DataSource extends langium.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 langium.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 langium.AstNode {\n readonly $container: Enum;\n readonly $type: 'EnumField';\n attributes: Array<DataFieldAttribute>;\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 langium.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 langium.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 langium.AstNode {\n readonly $container: FunctionDecl;\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 langium.AstNode {\n readonly $container: FunctionDecl | FunctionParam | Procedure | ProcedureParam;\n readonly $type: 'FunctionParamType';\n array: boolean;\n reference?: langium.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 langium.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 langium.AstNode {\n readonly $container: Attribute | AttributeParam | FunctionDecl | Procedure;\n readonly $type: 'InternalAttribute';\n args: Array<AttributeArg>;\n decl: langium.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 langium.AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | ConfigField | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'InvocationExpr';\n args: Array<Argument>;\n function: langium.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 langium.AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'MemberAccessExpr';\n member: langium.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 langium.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 langium.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 langium.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 langium.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 langium.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 langium.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 langium.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 langium.AstNode {\n readonly $container: Model;\n readonly $type: 'Procedure';\n attributes: Array<InternalAttribute>;\n mutation: boolean;\n name: RegularID;\n params: Array<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 langium.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 langium.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 langium.AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'ReferenceExpr';\n args: Array<ReferenceArg>;\n target: langium.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 langium.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 langium.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 langium.AstNode {\n readonly $container: Model;\n readonly $type: 'TypeDef';\n attributes: Array<DataModelAttribute>;\n comments: Array<string>;\n fields: Array<DataField>;\n mixins: Array<langium.Reference<TypeDef>>;\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 UnaryExpr extends langium.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 langium.AstNode {\n readonly $container: DataFieldType;\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 DataField: DataField\n DataFieldAttribute: DataFieldAttribute\n DataFieldType: DataFieldType\n DataModel: DataModel\n DataModelAttribute: DataModelAttribute\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 UnaryExpr: UnaryExpr\n UnsupportedFieldType: UnsupportedFieldType\n}\n\nexport class ZModelAstReflection extends langium.AbstractAstReflection {\n\n getAllTypes(): string[] {\n return [AbstractDeclaration, Argument, ArrayExpr, Attribute, AttributeArg, AttributeParam, AttributeParamType, BinaryExpr, BooleanLiteral, ConfigArrayExpr, ConfigExpr, ConfigField, ConfigInvocationArg, ConfigInvocationExpr, DataField, DataFieldAttribute, DataFieldType, DataModel, DataModelAttribute, 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, 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 DataField: {\n return this.isSubtype(MemberAccessTarget, supertype) || this.isSubtype(ReferenceTarget, supertype);\n }\n case DataModel:\n case Enum:\n case TypeDef: {\n return this.isSubtype(AbstractDeclaration, supertype) || this.isSubtype(TypeDeclaration, 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: langium.ReferenceInfo): string {\n const referenceId = `${refInfo.container.$type}:${refInfo.property}`;\n switch (referenceId) {\n case 'AttributeParamType:reference':\n case 'DataFieldType:reference':\n case 'FunctionParamType:reference': {\n return TypeDeclaration;\n }\n case 'DataFieldAttribute:decl':\n case 'DataModelAttribute:decl':\n case 'InternalAttribute:decl': {\n return Attribute;\n }\n case 'DataModel:baseModel': {\n return DataModel;\n }\n case 'DataModel:mixins':\n case 'TypeDef:mixins': {\n return TypeDef;\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 default: {\n throw new Error(`${referenceId} is not a valid reference id.`);\n }\n }\n }\n\n getTypeMetaData(type: string): langium.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 DataField: {\n return {\n name: DataField,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'comments', defaultValue: [] },\n { name: 'name' },\n { name: 'type' }\n ]\n };\n }\n case DataFieldAttribute: {\n return {\n name: DataFieldAttribute,\n properties: [\n { name: 'args', defaultValue: [] },\n { name: 'decl' }\n ]\n };\n }\n case DataFieldType: {\n return {\n name: DataFieldType,\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 DataModel: {\n return {\n name: DataModel,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'baseModel' },\n { name: 'comments', defaultValue: [] },\n { name: 'fields', defaultValue: [] },\n { name: 'isView', defaultValue: false },\n { name: 'mixins', defaultValue: [] },\n { name: 'name' }\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 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: 'mixins', defaultValue: [] },\n { name: 'name' }\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"],"mappings":"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","names":["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","Argument","isArgument","ArrayExpr","isArrayExpr","Attribute","isAttribute","AttributeArg","isAttributeArg","AttributeParam","isAttributeParam","AttributeParamType","isAttributeParamType","BinaryExpr","isBinaryExpr","BooleanLiteral","isBooleanLiteral","ConfigArrayExpr","isConfigArrayExpr","ConfigField","isConfigField","ConfigInvocationArg","isConfigInvocationArg","ConfigInvocationExpr","isConfigInvocationExpr","DataField","isDataField","DataFieldAttribute","isDataFieldAttribute","DataFieldType","isDataFieldType","DataModel","isDataModel","DataModelAttribute","isDataModelAttribute","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","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"]}
1
+ {"version":3,"sources":["../src/ast.ts","../src/generated/ast.ts"],"sourcesContent":["import type { AstNode } from 'langium';\nimport { AbstractDeclaration, BinaryExpr, DataField, DataModel, type ExpressionType } 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<BinaryExpr['operator'], number> = {\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 export interface DataModel {\n /**\n * All fields including those marked with `@ignore`\n */\n $allFields?: DataField[];\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","/******************************************************************************\n * This file was generated by langium-cli 3.5.0.\n * DO NOT EDIT MANUALLY!\n ******************************************************************************/\n\n/* eslint-disable */\nimport * as langium 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 | \"Undefined\"\n | \"Unsupported\"\n | \"Void\"\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 | \"with\"\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' | 'BigInt' | 'Boolean' | 'Bytes' | 'DateTime' | 'Decimal' | 'Float' | 'Int' | 'Json' | 'Null' | 'Object' | 'String' | 'Undefined' | 'Unsupported' | 'Void';\n\nexport function isExpressionType(item: unknown): item is ExpressionType {\n return item === 'String' || item === 'Int' || item === 'Float' || item === 'Boolean' || item === 'BigInt' || item === 'Decimal' || item === 'DateTime' || item === 'Json' || item === 'Bytes' || item === 'Null' || item === 'Object' || item === 'Any' || item === 'Void' || item === 'Undefined' || 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 = DataField;\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 = CollectionPredicateBinding | DataField | EnumField | FunctionParam;\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' | 'Void' | 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 === 'Void' || 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 interface Argument extends langium.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 langium.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 langium.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 langium.AstNode {\n readonly $container: DataFieldAttribute | DataModelAttribute | 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 langium.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 langium.AstNode {\n readonly $container: AttributeParam;\n readonly $type: 'AttributeParamType';\n array: boolean;\n optional: boolean;\n reference?: langium.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 langium.AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'BinaryExpr';\n binding?: CollectionPredicateBinding;\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 langium.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 CollectionPredicateBinding extends langium.AstNode {\n readonly $container: BinaryExpr;\n readonly $type: 'CollectionPredicateBinding';\n name: RegularID;\n}\n\nexport const CollectionPredicateBinding = 'CollectionPredicateBinding';\n\nexport function isCollectionPredicateBinding(item: unknown): item is CollectionPredicateBinding {\n return reflection.isInstance(item, CollectionPredicateBinding);\n}\n\nexport interface ConfigArrayExpr extends langium.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 langium.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 langium.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 langium.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 DataField extends langium.AstNode {\n readonly $container: DataModel | TypeDef;\n readonly $type: 'DataField';\n attributes: Array<DataFieldAttribute>;\n comments: Array<string>;\n name: RegularIDWithTypeNames;\n type: DataFieldType;\n}\n\nexport const DataField = 'DataField';\n\nexport function isDataField(item: unknown): item is DataField {\n return reflection.isInstance(item, DataField);\n}\n\nexport interface DataFieldAttribute extends langium.AstNode {\n readonly $container: DataField | EnumField;\n readonly $type: 'DataFieldAttribute';\n args: Array<AttributeArg>;\n decl: langium.Reference<Attribute>;\n}\n\nexport const DataFieldAttribute = 'DataFieldAttribute';\n\nexport function isDataFieldAttribute(item: unknown): item is DataFieldAttribute {\n return reflection.isInstance(item, DataFieldAttribute);\n}\n\nexport interface DataFieldType extends langium.AstNode {\n readonly $container: DataField;\n readonly $type: 'DataFieldType';\n array: boolean;\n optional: boolean;\n reference?: langium.Reference<TypeDeclaration>;\n type?: BuiltinType;\n unsupported?: UnsupportedFieldType;\n}\n\nexport const DataFieldType = 'DataFieldType';\n\nexport function isDataFieldType(item: unknown): item is DataFieldType {\n return reflection.isInstance(item, DataFieldType);\n}\n\nexport interface DataModel extends langium.AstNode {\n readonly $container: Model;\n readonly $type: 'DataModel';\n attributes: Array<DataModelAttribute>;\n baseModel?: langium.Reference<DataModel>;\n comments: Array<string>;\n fields: Array<DataField>;\n isView: boolean;\n mixins: Array<langium.Reference<TypeDef>>;\n name: RegularID;\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 langium.AstNode {\n readonly $container: DataModel | Enum | TypeDef;\n readonly $type: 'DataModelAttribute';\n args: Array<AttributeArg>;\n decl: langium.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 DataSource extends langium.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 langium.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 langium.AstNode {\n readonly $container: Enum;\n readonly $type: 'EnumField';\n attributes: Array<DataFieldAttribute>;\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 langium.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 langium.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 langium.AstNode {\n readonly $container: FunctionDecl;\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 langium.AstNode {\n readonly $container: FunctionDecl | FunctionParam | Procedure | ProcedureParam;\n readonly $type: 'FunctionParamType';\n array: boolean;\n reference?: langium.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 langium.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 langium.AstNode {\n readonly $container: Attribute | AttributeParam | FunctionDecl | Procedure;\n readonly $type: 'InternalAttribute';\n args: Array<AttributeArg>;\n decl: langium.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 langium.AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | ConfigField | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'InvocationExpr';\n args: Array<Argument>;\n function: langium.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 langium.AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'MemberAccessExpr';\n member: langium.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 langium.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 langium.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 langium.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 langium.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 langium.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 langium.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 langium.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 langium.AstNode {\n readonly $container: Model;\n readonly $type: 'Procedure';\n attributes: Array<InternalAttribute>;\n mutation: boolean;\n name: RegularID;\n params: Array<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 langium.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 langium.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 langium.AstNode {\n readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;\n readonly $type: 'ReferenceExpr';\n args: Array<ReferenceArg>;\n target: langium.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 langium.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 langium.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 langium.AstNode {\n readonly $container: Model;\n readonly $type: 'TypeDef';\n attributes: Array<DataModelAttribute>;\n comments: Array<string>;\n fields: Array<DataField>;\n mixins: Array<langium.Reference<TypeDef>>;\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 UnaryExpr extends langium.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 langium.AstNode {\n readonly $container: DataFieldType;\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 CollectionPredicateBinding: CollectionPredicateBinding\n ConfigArrayExpr: ConfigArrayExpr\n ConfigExpr: ConfigExpr\n ConfigField: ConfigField\n ConfigInvocationArg: ConfigInvocationArg\n ConfigInvocationExpr: ConfigInvocationExpr\n DataField: DataField\n DataFieldAttribute: DataFieldAttribute\n DataFieldType: DataFieldType\n DataModel: DataModel\n DataModelAttribute: DataModelAttribute\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 UnaryExpr: UnaryExpr\n UnsupportedFieldType: UnsupportedFieldType\n}\n\nexport class ZModelAstReflection extends langium.AbstractAstReflection {\n\n getAllTypes(): string[] {\n return [AbstractDeclaration, Argument, ArrayExpr, Attribute, AttributeArg, AttributeParam, AttributeParamType, BinaryExpr, BooleanLiteral, CollectionPredicateBinding, ConfigArrayExpr, ConfigExpr, ConfigField, ConfigInvocationArg, ConfigInvocationExpr, DataField, DataFieldAttribute, DataFieldType, DataModel, DataModelAttribute, 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, 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 CollectionPredicateBinding:\n case EnumField:\n case FunctionParam: {\n return this.isSubtype(ReferenceTarget, supertype);\n }\n case ConfigArrayExpr: {\n return this.isSubtype(ConfigExpr, supertype);\n }\n case DataField: {\n return this.isSubtype(MemberAccessTarget, supertype) || this.isSubtype(ReferenceTarget, supertype);\n }\n case DataModel:\n case Enum:\n case TypeDef: {\n return this.isSubtype(AbstractDeclaration, supertype) || this.isSubtype(TypeDeclaration, 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: langium.ReferenceInfo): string {\n const referenceId = `${refInfo.container.$type}:${refInfo.property}`;\n switch (referenceId) {\n case 'AttributeParamType:reference':\n case 'DataFieldType:reference':\n case 'FunctionParamType:reference': {\n return TypeDeclaration;\n }\n case 'DataFieldAttribute:decl':\n case 'DataModelAttribute:decl':\n case 'InternalAttribute:decl': {\n return Attribute;\n }\n case 'DataModel:baseModel': {\n return DataModel;\n }\n case 'DataModel:mixins':\n case 'TypeDef:mixins': {\n return TypeDef;\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 default: {\n throw new Error(`${referenceId} is not a valid reference id.`);\n }\n }\n }\n\n getTypeMetaData(type: string): langium.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: 'binding' },\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 CollectionPredicateBinding: {\n return {\n name: CollectionPredicateBinding,\n properties: [\n { name: 'name' }\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 DataField: {\n return {\n name: DataField,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'comments', defaultValue: [] },\n { name: 'name' },\n { name: 'type' }\n ]\n };\n }\n case DataFieldAttribute: {\n return {\n name: DataFieldAttribute,\n properties: [\n { name: 'args', defaultValue: [] },\n { name: 'decl' }\n ]\n };\n }\n case DataFieldType: {\n return {\n name: DataFieldType,\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 DataModel: {\n return {\n name: DataModel,\n properties: [\n { name: 'attributes', defaultValue: [] },\n { name: 'baseModel' },\n { name: 'comments', defaultValue: [] },\n { name: 'fields', defaultValue: [] },\n { name: 'isView', defaultValue: false },\n { name: 'mixins', defaultValue: [] },\n { name: 'name' }\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 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: 'mixins', defaultValue: [] },\n { name: 'name' }\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"],"mappings":"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","names":["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","Argument","isArgument","ArrayExpr","isArrayExpr","Attribute","isAttribute","AttributeArg","isAttributeArg","AttributeParam","isAttributeParam","AttributeParamType","isAttributeParamType","BinaryExpr","isBinaryExpr","BooleanLiteral","isBooleanLiteral","CollectionPredicateBinding","isCollectionPredicateBinding","ConfigArrayExpr","isConfigArrayExpr","ConfigField","isConfigField","ConfigInvocationArg","isConfigInvocationArg","ConfigInvocationExpr","isConfigInvocationExpr","DataField","isDataField","DataFieldAttribute","isDataFieldAttribute","DataFieldType","isDataFieldType","DataModel","isDataModel","DataModelAttribute","isDataModelAttribute","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","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"]}
package/dist/ast.d.cts CHANGED
@@ -43,7 +43,7 @@ declare function isLiteralExpr(item: unknown): item is LiteralExpr;
43
43
  type MemberAccessTarget = DataField;
44
44
  declare const MemberAccessTarget = "MemberAccessTarget";
45
45
  declare function isMemberAccessTarget(item: unknown): item is MemberAccessTarget;
46
- type ReferenceTarget = DataField | EnumField | FunctionParam;
46
+ type ReferenceTarget = CollectionPredicateBinding | DataField | EnumField | FunctionParam;
47
47
  declare const ReferenceTarget = "ReferenceTarget";
48
48
  declare function isReferenceTarget(item: unknown): item is ReferenceTarget;
49
49
  type RegularID = 'abstract' | 'attribute' | 'datasource' | 'enum' | 'import' | 'in' | 'model' | 'plugin' | 'type' | 'view' | string;
@@ -109,6 +109,7 @@ declare function isAttributeParamType(item: unknown): item is AttributeParamType
109
109
  interface BinaryExpr extends langium.AstNode {
110
110
  readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;
111
111
  readonly $type: 'BinaryExpr';
112
+ binding?: CollectionPredicateBinding;
112
113
  left: Expression;
113
114
  operator: '!' | '!=' | '&&' | '<' | '<=' | '==' | '>' | '>=' | '?' | '^' | 'in' | '||';
114
115
  right: Expression;
@@ -122,6 +123,13 @@ interface BooleanLiteral extends langium.AstNode {
122
123
  }
123
124
  declare const BooleanLiteral = "BooleanLiteral";
124
125
  declare function isBooleanLiteral(item: unknown): item is BooleanLiteral;
126
+ interface CollectionPredicateBinding extends langium.AstNode {
127
+ readonly $container: BinaryExpr;
128
+ readonly $type: 'CollectionPredicateBinding';
129
+ name: RegularID;
130
+ }
131
+ declare const CollectionPredicateBinding = "CollectionPredicateBinding";
132
+ declare function isCollectionPredicateBinding(item: unknown): item is CollectionPredicateBinding;
125
133
  interface ConfigArrayExpr extends langium.AstNode {
126
134
  readonly $container: ConfigField;
127
135
  readonly $type: 'ConfigArrayExpr';
@@ -436,6 +444,7 @@ type ZModelAstType = {
436
444
  AttributeParamType: AttributeParamType;
437
445
  BinaryExpr: BinaryExpr;
438
446
  BooleanLiteral: BooleanLiteral;
447
+ CollectionPredicateBinding: CollectionPredicateBinding;
439
448
  ConfigArrayExpr: ConfigArrayExpr;
440
449
  ConfigExpr: ConfigExpr;
441
450
  ConfigField: ConfigField;
@@ -529,4 +538,4 @@ declare module 'langium' {
529
538
  }
530
539
  }
531
540
 
532
- export { AbstractDeclaration, Argument, ArrayExpr, Attribute, AttributeArg, AttributeParam$1 as AttributeParam, AttributeParamType, BinaryExpr, BinaryExprOperatorPriority, type Boolean, BooleanLiteral, type BuiltinType, ConfigArrayExpr, ConfigExpr, ConfigField, ConfigInvocationArg, ConfigInvocationExpr, DataField, DataFieldAttribute, DataFieldType, DataModel, DataModelAttribute, DataSource, Enum, EnumField, Expression, type ExpressionType, FieldInitializer, FunctionDecl, FunctionParam, FunctionParamType, GeneratorDecl, type InheritableNode, InternalAttribute, InvocationExpr, LiteralExpr, MemberAccessExpr, MemberAccessTarget, Model, ModelImport, NullExpr, NumberLiteral, ObjectExpr, Plugin, PluginField, Procedure, ProcedureParam, ReferenceArg, ReferenceExpr, ReferenceTarget, type RegularID, type RegularIDWithTypeNames, type ResolvedShape, type ResolvedType, StringLiteral, ThisExpr, TypeDeclaration, TypeDef, UnaryExpr, UnsupportedFieldType, ZModelAstReflection, type ZModelAstType, type ZModelKeywordNames, type ZModelTerminalNames, ZModelTerminals, type ZModelTokenNames, isAbstractDeclaration, isArgument, isArrayExpr, isAttribute, isAttributeArg, isAttributeParam, isAttributeParamType, isBinaryExpr, isBoolean, isBooleanLiteral, isBuiltinType, isConfigArrayExpr, isConfigExpr, isConfigField, isConfigInvocationArg, isConfigInvocationExpr, isDataField, isDataFieldAttribute, isDataFieldType, isDataModel, isDataModelAttribute, isDataSource, isEnum, isEnumField, isExpression, isExpressionType, isFieldInitializer, isFunctionDecl, isFunctionParam, isFunctionParamType, isGeneratorDecl, isInternalAttribute, isInvocationExpr, isLiteralExpr, isMemberAccessExpr, isMemberAccessTarget, isModel, isModelImport, isNullExpr, isNumberLiteral, isObjectExpr, isPlugin, isPluginField, isProcedure, isProcedureParam, isReferenceArg, isReferenceExpr, isReferenceTarget, isRegularID, isRegularIDWithTypeNames, isStringLiteral, isThisExpr, isTypeDeclaration, isTypeDef, isUnaryExpr, isUnsupportedFieldType, reflection };
541
+ export { AbstractDeclaration, Argument, ArrayExpr, Attribute, AttributeArg, AttributeParam$1 as AttributeParam, AttributeParamType, BinaryExpr, BinaryExprOperatorPriority, type Boolean, BooleanLiteral, type BuiltinType, CollectionPredicateBinding, ConfigArrayExpr, ConfigExpr, ConfigField, ConfigInvocationArg, ConfigInvocationExpr, DataField, DataFieldAttribute, DataFieldType, DataModel, DataModelAttribute, DataSource, Enum, EnumField, Expression, type ExpressionType, FieldInitializer, FunctionDecl, FunctionParam, FunctionParamType, GeneratorDecl, type InheritableNode, InternalAttribute, InvocationExpr, LiteralExpr, MemberAccessExpr, MemberAccessTarget, Model, ModelImport, NullExpr, NumberLiteral, ObjectExpr, Plugin, PluginField, Procedure, ProcedureParam, ReferenceArg, ReferenceExpr, ReferenceTarget, type RegularID, type RegularIDWithTypeNames, type ResolvedShape, type ResolvedType, StringLiteral, ThisExpr, TypeDeclaration, TypeDef, UnaryExpr, UnsupportedFieldType, ZModelAstReflection, type ZModelAstType, type ZModelKeywordNames, type ZModelTerminalNames, ZModelTerminals, type ZModelTokenNames, isAbstractDeclaration, isArgument, isArrayExpr, isAttribute, isAttributeArg, isAttributeParam, isAttributeParamType, isBinaryExpr, isBoolean, isBooleanLiteral, isBuiltinType, isCollectionPredicateBinding, isConfigArrayExpr, isConfigExpr, isConfigField, isConfigInvocationArg, isConfigInvocationExpr, isDataField, isDataFieldAttribute, isDataFieldType, isDataModel, isDataModelAttribute, isDataSource, isEnum, isEnumField, isExpression, isExpressionType, isFieldInitializer, isFunctionDecl, isFunctionParam, isFunctionParamType, isGeneratorDecl, isInternalAttribute, isInvocationExpr, isLiteralExpr, isMemberAccessExpr, isMemberAccessTarget, isModel, isModelImport, isNullExpr, isNumberLiteral, isObjectExpr, isPlugin, isPluginField, isProcedure, isProcedureParam, isReferenceArg, isReferenceExpr, isReferenceTarget, isRegularID, isRegularIDWithTypeNames, isStringLiteral, isThisExpr, isTypeDeclaration, isTypeDef, isUnaryExpr, isUnsupportedFieldType, reflection };
package/dist/ast.d.ts CHANGED
@@ -43,7 +43,7 @@ declare function isLiteralExpr(item: unknown): item is LiteralExpr;
43
43
  type MemberAccessTarget = DataField;
44
44
  declare const MemberAccessTarget = "MemberAccessTarget";
45
45
  declare function isMemberAccessTarget(item: unknown): item is MemberAccessTarget;
46
- type ReferenceTarget = DataField | EnumField | FunctionParam;
46
+ type ReferenceTarget = CollectionPredicateBinding | DataField | EnumField | FunctionParam;
47
47
  declare const ReferenceTarget = "ReferenceTarget";
48
48
  declare function isReferenceTarget(item: unknown): item is ReferenceTarget;
49
49
  type RegularID = 'abstract' | 'attribute' | 'datasource' | 'enum' | 'import' | 'in' | 'model' | 'plugin' | 'type' | 'view' | string;
@@ -109,6 +109,7 @@ declare function isAttributeParamType(item: unknown): item is AttributeParamType
109
109
  interface BinaryExpr extends langium.AstNode {
110
110
  readonly $container: Argument | ArrayExpr | AttributeArg | BinaryExpr | FieldInitializer | FunctionDecl | MemberAccessExpr | ReferenceArg | UnaryExpr;
111
111
  readonly $type: 'BinaryExpr';
112
+ binding?: CollectionPredicateBinding;
112
113
  left: Expression;
113
114
  operator: '!' | '!=' | '&&' | '<' | '<=' | '==' | '>' | '>=' | '?' | '^' | 'in' | '||';
114
115
  right: Expression;
@@ -122,6 +123,13 @@ interface BooleanLiteral extends langium.AstNode {
122
123
  }
123
124
  declare const BooleanLiteral = "BooleanLiteral";
124
125
  declare function isBooleanLiteral(item: unknown): item is BooleanLiteral;
126
+ interface CollectionPredicateBinding extends langium.AstNode {
127
+ readonly $container: BinaryExpr;
128
+ readonly $type: 'CollectionPredicateBinding';
129
+ name: RegularID;
130
+ }
131
+ declare const CollectionPredicateBinding = "CollectionPredicateBinding";
132
+ declare function isCollectionPredicateBinding(item: unknown): item is CollectionPredicateBinding;
125
133
  interface ConfigArrayExpr extends langium.AstNode {
126
134
  readonly $container: ConfigField;
127
135
  readonly $type: 'ConfigArrayExpr';
@@ -436,6 +444,7 @@ type ZModelAstType = {
436
444
  AttributeParamType: AttributeParamType;
437
445
  BinaryExpr: BinaryExpr;
438
446
  BooleanLiteral: BooleanLiteral;
447
+ CollectionPredicateBinding: CollectionPredicateBinding;
439
448
  ConfigArrayExpr: ConfigArrayExpr;
440
449
  ConfigExpr: ConfigExpr;
441
450
  ConfigField: ConfigField;
@@ -529,4 +538,4 @@ declare module 'langium' {
529
538
  }
530
539
  }
531
540
 
532
- export { AbstractDeclaration, Argument, ArrayExpr, Attribute, AttributeArg, AttributeParam$1 as AttributeParam, AttributeParamType, BinaryExpr, BinaryExprOperatorPriority, type Boolean, BooleanLiteral, type BuiltinType, ConfigArrayExpr, ConfigExpr, ConfigField, ConfigInvocationArg, ConfigInvocationExpr, DataField, DataFieldAttribute, DataFieldType, DataModel, DataModelAttribute, DataSource, Enum, EnumField, Expression, type ExpressionType, FieldInitializer, FunctionDecl, FunctionParam, FunctionParamType, GeneratorDecl, type InheritableNode, InternalAttribute, InvocationExpr, LiteralExpr, MemberAccessExpr, MemberAccessTarget, Model, ModelImport, NullExpr, NumberLiteral, ObjectExpr, Plugin, PluginField, Procedure, ProcedureParam, ReferenceArg, ReferenceExpr, ReferenceTarget, type RegularID, type RegularIDWithTypeNames, type ResolvedShape, type ResolvedType, StringLiteral, ThisExpr, TypeDeclaration, TypeDef, UnaryExpr, UnsupportedFieldType, ZModelAstReflection, type ZModelAstType, type ZModelKeywordNames, type ZModelTerminalNames, ZModelTerminals, type ZModelTokenNames, isAbstractDeclaration, isArgument, isArrayExpr, isAttribute, isAttributeArg, isAttributeParam, isAttributeParamType, isBinaryExpr, isBoolean, isBooleanLiteral, isBuiltinType, isConfigArrayExpr, isConfigExpr, isConfigField, isConfigInvocationArg, isConfigInvocationExpr, isDataField, isDataFieldAttribute, isDataFieldType, isDataModel, isDataModelAttribute, isDataSource, isEnum, isEnumField, isExpression, isExpressionType, isFieldInitializer, isFunctionDecl, isFunctionParam, isFunctionParamType, isGeneratorDecl, isInternalAttribute, isInvocationExpr, isLiteralExpr, isMemberAccessExpr, isMemberAccessTarget, isModel, isModelImport, isNullExpr, isNumberLiteral, isObjectExpr, isPlugin, isPluginField, isProcedure, isProcedureParam, isReferenceArg, isReferenceExpr, isReferenceTarget, isRegularID, isRegularIDWithTypeNames, isStringLiteral, isThisExpr, isTypeDeclaration, isTypeDef, isUnaryExpr, isUnsupportedFieldType, reflection };
541
+ export { AbstractDeclaration, Argument, ArrayExpr, Attribute, AttributeArg, AttributeParam$1 as AttributeParam, AttributeParamType, BinaryExpr, BinaryExprOperatorPriority, type Boolean, BooleanLiteral, type BuiltinType, CollectionPredicateBinding, ConfigArrayExpr, ConfigExpr, ConfigField, ConfigInvocationArg, ConfigInvocationExpr, DataField, DataFieldAttribute, DataFieldType, DataModel, DataModelAttribute, DataSource, Enum, EnumField, Expression, type ExpressionType, FieldInitializer, FunctionDecl, FunctionParam, FunctionParamType, GeneratorDecl, type InheritableNode, InternalAttribute, InvocationExpr, LiteralExpr, MemberAccessExpr, MemberAccessTarget, Model, ModelImport, NullExpr, NumberLiteral, ObjectExpr, Plugin, PluginField, Procedure, ProcedureParam, ReferenceArg, ReferenceExpr, ReferenceTarget, type RegularID, type RegularIDWithTypeNames, type ResolvedShape, type ResolvedType, StringLiteral, ThisExpr, TypeDeclaration, TypeDef, UnaryExpr, UnsupportedFieldType, ZModelAstReflection, type ZModelAstType, type ZModelKeywordNames, type ZModelTerminalNames, ZModelTerminals, type ZModelTokenNames, isAbstractDeclaration, isArgument, isArrayExpr, isAttribute, isAttributeArg, isAttributeParam, isAttributeParamType, isBinaryExpr, isBoolean, isBooleanLiteral, isBuiltinType, isCollectionPredicateBinding, isConfigArrayExpr, isConfigExpr, isConfigField, isConfigInvocationArg, isConfigInvocationExpr, isDataField, isDataFieldAttribute, isDataFieldType, isDataModel, isDataModelAttribute, isDataSource, isEnum, isEnumField, isExpression, isExpressionType, isFieldInitializer, isFunctionDecl, isFunctionParam, isFunctionParamType, isGeneratorDecl, isInternalAttribute, isInvocationExpr, isLiteralExpr, isMemberAccessExpr, isMemberAccessTarget, isModel, isModelImport, isNullExpr, isNumberLiteral, isObjectExpr, isPlugin, isPluginField, isProcedure, isProcedureParam, isReferenceArg, isReferenceExpr, isReferenceTarget, isRegularID, isRegularIDWithTypeNames, isStringLiteral, isThisExpr, isTypeDeclaration, isTypeDef, isUnaryExpr, isUnsupportedFieldType, reflection };
package/dist/ast.js CHANGED
@@ -110,6 +110,11 @@ function isBooleanLiteral(item) {
110
110
  return reflection.isInstance(item, BooleanLiteral);
111
111
  }
112
112
  __name(isBooleanLiteral, "isBooleanLiteral");
113
+ var CollectionPredicateBinding = "CollectionPredicateBinding";
114
+ function isCollectionPredicateBinding(item) {
115
+ return reflection.isInstance(item, CollectionPredicateBinding);
116
+ }
117
+ __name(isCollectionPredicateBinding, "isCollectionPredicateBinding");
113
118
  var ConfigArrayExpr = "ConfigArrayExpr";
114
119
  function isConfigArrayExpr(item) {
115
120
  return reflection.isInstance(item, ConfigArrayExpr);
@@ -305,6 +310,7 @@ var ZModelAstReflection = class extends langium.AbstractAstReflection {
305
310
  AttributeParamType,
306
311
  BinaryExpr,
307
312
  BooleanLiteral,
313
+ CollectionPredicateBinding,
308
314
  ConfigArrayExpr,
309
315
  ConfigExpr,
310
316
  ConfigField,
@@ -374,6 +380,11 @@ var ZModelAstReflection = class extends langium.AbstractAstReflection {
374
380
  case StringLiteral: {
375
381
  return this.isSubtype(LiteralExpr, supertype);
376
382
  }
383
+ case CollectionPredicateBinding:
384
+ case EnumField:
385
+ case FunctionParam: {
386
+ return this.isSubtype(ReferenceTarget, supertype);
387
+ }
377
388
  case ConfigArrayExpr: {
378
389
  return this.isSubtype(ConfigExpr, supertype);
379
390
  }
@@ -385,10 +396,6 @@ var ZModelAstReflection = class extends langium.AbstractAstReflection {
385
396
  case TypeDef: {
386
397
  return this.isSubtype(AbstractDeclaration, supertype) || this.isSubtype(TypeDeclaration, supertype);
387
398
  }
388
- case EnumField:
389
- case FunctionParam: {
390
- return this.isSubtype(ReferenceTarget, supertype);
391
- }
392
399
  case InvocationExpr:
393
400
  case LiteralExpr: {
394
401
  return this.isSubtype(ConfigExpr, supertype) || this.isSubtype(Expression, supertype);
@@ -540,6 +547,9 @@ var ZModelAstReflection = class extends langium.AbstractAstReflection {
540
547
  return {
541
548
  name: BinaryExpr,
542
549
  properties: [
550
+ {
551
+ name: "binding"
552
+ },
543
553
  {
544
554
  name: "left"
545
555
  },
@@ -562,6 +572,16 @@ var ZModelAstReflection = class extends langium.AbstractAstReflection {
562
572
  ]
563
573
  };
564
574
  }
575
+ case CollectionPredicateBinding: {
576
+ return {
577
+ name: CollectionPredicateBinding,
578
+ properties: [
579
+ {
580
+ name: "name"
581
+ }
582
+ ]
583
+ };
584
+ }
565
585
  case ConfigArrayExpr: {
566
586
  return {
567
587
  name: ConfigArrayExpr,
@@ -1161,6 +1181,7 @@ export {
1161
1181
  BinaryExpr,
1162
1182
  BinaryExprOperatorPriority,
1163
1183
  BooleanLiteral,
1184
+ CollectionPredicateBinding,
1164
1185
  ConfigArrayExpr,
1165
1186
  ConfigExpr,
1166
1187
  ConfigField,
@@ -1216,6 +1237,7 @@ export {
1216
1237
  isBoolean,
1217
1238
  isBooleanLiteral,
1218
1239
  isBuiltinType,
1240
+ isCollectionPredicateBinding,
1219
1241
  isConfigArrayExpr,
1220
1242
  isConfigExpr,
1221
1243
  isConfigField,