zenstack 1.0.0-alpha.23 → 1.0.0-alpha.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +79 -9
  2. package/cli/cli-error.js +3 -5
  3. package/cli/cli-error.js.map +1 -1
  4. package/cli/cli-util.js +123 -105
  5. package/cli/cli-util.js.map +1 -1
  6. package/cli/index.js +105 -63
  7. package/cli/index.js.map +1 -1
  8. package/cli/plugin-runner.js +130 -127
  9. package/cli/plugin-runner.js.map +1 -1
  10. package/language-server/constants.js +5 -13
  11. package/language-server/constants.js.map +1 -1
  12. package/language-server/main.js +8 -15
  13. package/language-server/main.js.map +1 -1
  14. package/language-server/types.js +3 -1
  15. package/language-server/types.js.map +1 -1
  16. package/language-server/utils.js +13 -16
  17. package/language-server/utils.js.map +1 -1
  18. package/language-server/validator/attribute-validator.js +3 -7
  19. package/language-server/validator/attribute-validator.js.map +1 -1
  20. package/language-server/validator/datamodel-validator.js +293 -347
  21. package/language-server/validator/datamodel-validator.js.map +1 -1
  22. package/language-server/validator/datasource-validator.js +61 -71
  23. package/language-server/validator/datasource-validator.js.map +1 -1
  24. package/language-server/validator/enum-validator.js +6 -10
  25. package/language-server/validator/enum-validator.js.map +1 -1
  26. package/language-server/validator/expression-validator.js +25 -31
  27. package/language-server/validator/expression-validator.js.map +1 -1
  28. package/language-server/validator/schema-validator.js +18 -25
  29. package/language-server/validator/schema-validator.js.map +1 -1
  30. package/language-server/validator/utils.js +86 -85
  31. package/language-server/validator/utils.js.map +1 -1
  32. package/language-server/validator/zmodel-validator.js +55 -58
  33. package/language-server/validator/zmodel-validator.js.map +1 -1
  34. package/language-server/zmodel-formatter.js +40 -21
  35. package/language-server/zmodel-formatter.js.map +1 -1
  36. package/language-server/zmodel-linker.js +328 -331
  37. package/language-server/zmodel-linker.js.map +1 -1
  38. package/language-server/zmodel-module.js +50 -59
  39. package/language-server/zmodel-module.js.map +1 -1
  40. package/language-server/zmodel-scope.js +35 -25
  41. package/language-server/zmodel-scope.js.map +1 -1
  42. package/language-server/zmodel-workspace-manager.js +30 -18
  43. package/language-server/zmodel-workspace-manager.js.map +1 -1
  44. package/package.json +8 -12
  45. package/plugins/access-policy/expression-writer.js +301 -292
  46. package/plugins/access-policy/expression-writer.js.map +1 -1
  47. package/plugins/access-policy/index.js +20 -11
  48. package/plugins/access-policy/index.js.map +1 -1
  49. package/plugins/access-policy/policy-guard-generator.js +327 -321
  50. package/plugins/access-policy/policy-guard-generator.js.map +1 -1
  51. package/plugins/access-policy/typescript-expression-transformer.js +94 -95
  52. package/plugins/access-policy/typescript-expression-transformer.js.map +1 -1
  53. package/plugins/access-policy/utils.js +7 -9
  54. package/plugins/access-policy/utils.js.map +1 -1
  55. package/plugins/access-policy/zod-schema-generator.js +143 -159
  56. package/plugins/access-policy/zod-schema-generator.js.map +1 -1
  57. package/plugins/model-meta/index.js +97 -102
  58. package/plugins/model-meta/index.js.map +1 -1
  59. package/plugins/plugin-utils.js +34 -40
  60. package/plugins/plugin-utils.js.map +1 -1
  61. package/plugins/prisma/indent-string.js +4 -8
  62. package/plugins/prisma/indent-string.js.map +1 -1
  63. package/plugins/prisma/index.js +20 -11
  64. package/plugins/prisma/index.js.map +1 -1
  65. package/plugins/prisma/prisma-builder.js +235 -213
  66. package/plugins/prisma/prisma-builder.js.map +1 -1
  67. package/plugins/prisma/schema-generator.js +205 -192
  68. package/plugins/prisma/schema-generator.js.map +1 -1
  69. package/plugins/prisma/zmodel-code-generator.js +109 -114
  70. package/plugins/prisma/zmodel-code-generator.js.map +1 -1
  71. package/telemetry.js +107 -90
  72. package/telemetry.js.map +1 -1
  73. package/types.js +3 -1
  74. package/types.js.map +1 -1
  75. package/utils/ast-utils.js +67 -67
  76. package/utils/ast-utils.js.map +1 -1
  77. package/utils/exec-utils.js +6 -15
  78. package/utils/exec-utils.js.map +1 -1
  79. package/utils/pkg-utils.js +38 -35
  80. package/utils/pkg-utils.js.map +1 -1
  81. package/utils/version-utils.js +9 -10
  82. package/utils/version-utils.js.map +1 -1
  83. package/global.d.js +0 -1
  84. package/global.d.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"datamodel-validator.js","names":["DataModelValidator","validate","dm","accept","validateDuplicatedDeclarations","fields","validateFields","validateAttributes","idFields","filter","f","attributes","find","attr","decl","ref","name","length","allows","denies","hasFieldValidation","analyzePolicies","node","type","optional","array","SCALAR_TYPES","includes","forEach","field","validateField","validateAttributeApplication","isDataModel","reference","validateRelationField","targetDecl","$container","isAttribute","isDataModelField","isValidAttributeTarget","filledParams","Set","arg","args","paramDecl","params","p","default","has","assignableToAttributeParam","add","$resolvedParam","missingParams","pluralize","map","join","attrDecl","targetField","fieldTypes","value","items","item","target","allowed","allowedType","parseRelation","relAttr","references","valid","isLiteralExpr","i","$resolvedType","thisRelation","oppositeModel","oppositeFields","fieldRel","oppositeField","oppositeRelation","relationOwner","refField","a"],"sources":["../../../src/language-server/validator/datamodel-validator.ts"],"sourcesContent":["import {\n ArrayExpr,\n Attribute,\n AttributeParam,\n DataModel,\n DataModelAttribute,\n DataModelField,\n DataModelFieldAttribute,\n isAttribute,\n isDataModel,\n isDataModelField,\n isLiteralExpr,\n ReferenceExpr,\n} from '@zenstackhq/language/ast';\nimport { ValidationAcceptor } from 'langium';\nimport pluralize from 'pluralize';\nimport { analyzePolicies } from '../../utils/ast-utils';\nimport { SCALAR_TYPES } from '../constants';\nimport { AstValidator } from '../types';\nimport { assignableToAttributeParam, validateDuplicatedDeclarations } from './utils';\n\n/**\n * Validates data model declarations.\n */\nexport default class DataModelValidator implements AstValidator<DataModel> {\n validate(dm: DataModel, accept: ValidationAcceptor): void {\n validateDuplicatedDeclarations(dm.fields, accept);\n this.validateFields(dm, accept);\n this.validateAttributes(dm, accept);\n }\n\n private validateFields(dm: DataModel, accept: ValidationAcceptor) {\n const idFields = dm.fields.filter((f) => f.attributes.find((attr) => attr.decl.ref?.name === '@id'));\n if (idFields.length === 0) {\n const { allows, denies, hasFieldValidation } = analyzePolicies(dm);\n if (allows.length > 0 || denies.length > 0 || hasFieldValidation) {\n // TODO: relax this requirement to require only @unique fields\n // when access policies or field valdaition is used, require an @id field\n accept('error', 'Model must include a field with @id attribute', {\n node: dm,\n });\n }\n } else if (idFields.length > 1) {\n accept('error', 'Model can include at most one field with @id attribute', {\n node: dm,\n });\n } else {\n if (idFields[0].type.optional) {\n accept('error', 'Field with @id attribute must not be optional', { node: idFields[0] });\n }\n\n if (idFields[0].type.array || !idFields[0].type.type || !SCALAR_TYPES.includes(idFields[0].type.type)) {\n accept('error', 'Field with @id attribute must be of scalar type', { node: idFields[0] });\n }\n }\n\n dm.fields.forEach((field) => this.validateField(field, accept));\n }\n\n private validateField(field: DataModelField, accept: ValidationAcceptor): void {\n if (field.type.array && field.type.optional) {\n accept('error', 'Optional lists are not supported. Use either `Type[]` or `Type?`', { node: field.type });\n }\n\n field.attributes.forEach((attr) => this.validateAttributeApplication(attr, accept));\n\n if (isDataModel(field.type.reference?.ref)) {\n this.validateRelationField(field, accept);\n }\n }\n\n private validateAttributes(dm: DataModel, accept: ValidationAcceptor) {\n dm.attributes.forEach((attr) => {\n this.validateAttributeApplication(attr, accept);\n });\n }\n\n private validateAttributeApplication(\n attr: DataModelAttribute | DataModelFieldAttribute,\n accept: ValidationAcceptor\n ) {\n const decl = attr.decl.ref;\n if (!decl) {\n return;\n }\n\n const targetDecl = attr.$container;\n if (decl.name === '@@@targetField' && !isAttribute(targetDecl)) {\n accept('error', `attribute \"${decl.name}\" can only be used on attribute declarations`, { node: attr });\n return;\n }\n\n if (isDataModelField(targetDecl) && !this.isValidAttributeTarget(decl, targetDecl)) {\n accept('error', `attribute \"${decl.name}\" cannot be used on this type of field`, { node: attr });\n }\n\n const filledParams = new Set<AttributeParam>();\n\n for (const arg of attr.args) {\n let paramDecl: AttributeParam | undefined;\n if (!arg.name) {\n paramDecl = decl.params.find((p) => p.default && !filledParams.has(p));\n if (!paramDecl) {\n accept('error', `Unexpected unnamed argument`, {\n node: arg,\n });\n return false;\n }\n } else {\n paramDecl = decl.params.find((p) => p.name === arg.name);\n if (!paramDecl) {\n accept('error', `Attribute \"${decl.name}\" doesn't have a parameter named \"${arg.name}\"`, {\n node: arg,\n });\n return false;\n }\n }\n\n if (!assignableToAttributeParam(arg, paramDecl, attr)) {\n accept('error', `Value is not assignable to parameter`, {\n node: arg,\n });\n return false;\n }\n\n if (filledParams.has(paramDecl)) {\n accept('error', `Parameter \"${paramDecl.name}\" is already provided`, { node: arg });\n return false;\n }\n filledParams.add(paramDecl);\n arg.$resolvedParam = paramDecl;\n }\n\n const missingParams = decl.params.filter((p) => !p.type.optional && !filledParams.has(p));\n if (missingParams.length > 0) {\n accept(\n 'error',\n `Required ${pluralize('parameter', missingParams.length)} not provided: ${missingParams\n .map((p) => p.name)\n .join(', ')}`,\n { node: attr }\n );\n return false;\n }\n\n return true;\n }\n\n private isValidAttributeTarget(attrDecl: Attribute, targetDecl: DataModelField) {\n const targetField = attrDecl.attributes.find((attr) => attr.decl.ref?.name === '@@@targetField');\n if (!targetField) {\n // no field type constraint\n return true;\n }\n\n const fieldTypes = (targetField.args[0].value as ArrayExpr).items.map(\n (item) => (item as ReferenceExpr).target.ref?.name\n );\n\n let allowed = false;\n for (const allowedType of fieldTypes) {\n switch (allowedType) {\n case 'StringField':\n allowed = allowed || targetDecl.type.type === 'String';\n break;\n case 'IntField':\n allowed = allowed || targetDecl.type.type === 'Int';\n break;\n case 'FloatField':\n allowed = allowed || targetDecl.type.type === 'Float';\n break;\n case 'DecimalField':\n allowed = allowed || targetDecl.type.type === 'Decimal';\n break;\n case 'BooleanField':\n allowed = allowed || targetDecl.type.type === 'Boolean';\n break;\n case 'DateTimeField':\n allowed = allowed || targetDecl.type.type === 'DateTime';\n break;\n case 'JsonField':\n allowed = allowed || targetDecl.type.type === 'Json';\n break;\n case 'BytesField':\n allowed = allowed || targetDecl.type.type === 'Bytes';\n break;\n case 'ModelField':\n allowed = allowed || isDataModel(targetDecl.type.reference?.ref);\n break;\n default:\n break;\n }\n if (allowed) {\n break;\n }\n }\n\n return allowed;\n }\n\n private parseRelation(field: DataModelField, accept?: ValidationAcceptor) {\n const relAttr = field.attributes.find((attr) => attr.decl.ref?.name === '@relation');\n\n let name: string | undefined;\n let fields: ReferenceExpr[] | undefined;\n let references: ReferenceExpr[] | undefined;\n let valid = true;\n\n if (!relAttr) {\n return { attr: relAttr, name, fields, references, valid: true };\n }\n\n for (const arg of relAttr.args) {\n if (!arg.name || arg.name === 'name') {\n if (isLiteralExpr(arg.value)) {\n name = arg.value.value as string;\n }\n } else if (arg.name === 'fields') {\n fields = (arg.value as ArrayExpr).items as ReferenceExpr[];\n if (fields.length === 0) {\n if (accept) {\n accept('error', `\"fields\" value cannot be emtpy`, {\n node: arg,\n });\n }\n valid = false;\n }\n } else if (arg.name === 'references') {\n references = (arg.value as ArrayExpr).items as ReferenceExpr[];\n if (references.length === 0) {\n if (accept) {\n accept('error', `\"references\" value cannot be emtpy`, {\n node: arg,\n });\n }\n valid = false;\n }\n }\n }\n\n if (!fields || !references) {\n if (accept) {\n accept('error', `Both \"fields\" and \"references\" must be provided`, { node: relAttr });\n }\n } else {\n // validate \"fields\" and \"references\" typing consistency\n if (fields.length !== references.length) {\n if (accept) {\n accept('error', `\"references\" and \"fields\" must have the same length`, { node: relAttr });\n }\n } else {\n for (let i = 0; i < fields.length; i++) {\n if (!fields[i].$resolvedType) {\n if (accept) {\n accept('error', `field reference is unresolved`, { node: fields[i] });\n }\n }\n if (!references[i].$resolvedType) {\n if (accept) {\n accept('error', `field reference is unresolved`, { node: references[i] });\n }\n }\n\n if (\n fields[i].$resolvedType?.decl !== references[i].$resolvedType?.decl ||\n fields[i].$resolvedType?.array !== references[i].$resolvedType?.array\n ) {\n if (accept) {\n accept('error', `values of \"references\" and \"fields\" must have the same type`, {\n node: relAttr,\n });\n }\n }\n }\n }\n }\n\n return { attr: relAttr, name, fields, references, valid };\n }\n\n private validateRelationField(field: DataModelField, accept: ValidationAcceptor) {\n const thisRelation = this.parseRelation(field, accept);\n if (!thisRelation.valid) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const oppositeModel = field.type.reference!.ref! as DataModel;\n\n let oppositeFields = oppositeModel.fields.filter((f) => f.type.reference?.ref === field.$container);\n oppositeFields = oppositeFields.filter((f) => {\n const fieldRel = this.parseRelation(f);\n return fieldRel.valid && fieldRel.name === thisRelation.name;\n });\n\n if (oppositeFields.length === 0) {\n accept(\n 'error',\n `The relation field \"${field.name}\" on model \"${field.$container.name}\" is missing an opposite relation field on model \"${oppositeModel.name}\"`,\n { node: field }\n );\n return;\n } else if (oppositeFields.length > 1) {\n oppositeFields.forEach((f) =>\n accept(\n 'error',\n `Fields ${oppositeFields.map((f) => '\"' + f.name + '\"').join(', ')} on model \"${\n oppositeModel.name\n }\" refer to the same relation to model \"${field.$container.name}\"`,\n { node: f }\n )\n );\n return;\n }\n\n const oppositeField = oppositeFields[0];\n const oppositeRelation = this.parseRelation(oppositeField);\n\n let relationOwner: DataModelField;\n\n if (thisRelation?.references?.length && thisRelation.fields?.length) {\n if (oppositeRelation?.references || oppositeRelation?.fields) {\n accept('error', '\"fields\" and \"references\" must be provided only on one side of relation field', {\n node: oppositeField,\n });\n return;\n } else {\n relationOwner = oppositeField;\n }\n } else if (oppositeRelation?.references?.length && oppositeRelation.fields?.length) {\n if (thisRelation?.references || thisRelation?.fields) {\n accept('error', '\"fields\" and \"references\" must be provided only on one side of relation field', {\n node: field,\n });\n return;\n } else {\n relationOwner = field;\n }\n } else {\n [field, oppositeField].forEach((f) =>\n accept(\n 'error',\n 'Field for one side of relation must carry @relation attribute with both \"fields\" and \"references\" fields',\n { node: f }\n )\n );\n return;\n }\n\n if (!relationOwner.type.array && !relationOwner.type.optional) {\n accept('error', 'Relation field needs to be list or optional', {\n node: relationOwner,\n });\n return;\n }\n\n if (relationOwner !== field && !relationOwner.type.array) {\n // one-to-one relation requires defining side's reference field to be @unique\n // e.g.:\n // model User {\n // id String @id @default(cuid())\n // data UserData?\n // }\n // model UserData {\n // id String @id @default(cuid())\n // user User @relation(fields: [userId], references: [id])\n // userId String\n // }\n //\n // UserData.userId field needs to be @unique\n\n thisRelation.fields?.forEach((ref) => {\n const refField = ref.target.ref as DataModelField;\n if (refField && !refField.attributes.find((a) => a.decl.ref?.name === '@unique')) {\n accept(\n 'error',\n `Field \"${refField.name}\" is part of a one-to-one relation and must be marked as @unique`,\n { node: refField }\n );\n }\n });\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"datamodel-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/datamodel-validator.ts"],"names":[],"mappings":"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"}
@@ -1,85 +1,75 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _ast = require("@zenstackhq/language/ast");
8
- var _utils = require("./utils");
9
- var _constants = require("../constants");
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ast_1 = require("@zenstackhq/language/ast");
4
+ const utils_1 = require("./utils");
5
+ const constants_1 = require("../constants");
10
6
  const supportedFields = ['provider', 'url', 'shadowDatabaseUrl', 'relationMode'];
11
-
12
7
  /**
13
8
  * Validates data source declarations.
14
9
  */
15
10
  class DataSourceValidator {
16
- validate(ds, accept) {
17
- (0, _utils.validateDuplicatedDeclarations)(ds.fields, accept);
18
- this.validateFields(ds, accept);
19
- this.validateProvider(ds, accept);
20
- this.validateUrl(ds, accept);
21
- this.validateRelationMode(ds, accept);
22
- }
23
- validateFields(ds, accept) {
24
- ds.fields.forEach(f => {
25
- if (!supportedFields.includes(f.name)) {
26
- accept('error', `Unexpected field "${f.name}"`, {
27
- node: f
28
- });
29
- }
30
- });
31
- }
32
- validateProvider(ds, accept) {
33
- const provider = ds.fields.find(f => f.name === 'provider');
34
- if (!provider) {
35
- accept('error', 'datasource must include a "provider" field', {
36
- node: ds
37
- });
38
- return;
11
+ validate(ds, accept) {
12
+ (0, utils_1.validateDuplicatedDeclarations)(ds.fields, accept);
13
+ this.validateFields(ds, accept);
14
+ this.validateProvider(ds, accept);
15
+ this.validateUrl(ds, accept);
16
+ this.validateRelationMode(ds, accept);
39
17
  }
40
- const value = (0, _utils.getStringLiteral)(provider.value);
41
- if (!value) {
42
- accept('error', '"provider" must be set to a string literal', {
43
- node: provider.value
44
- });
45
- } else if (!_constants.SUPPORTED_PROVIDERS.includes(value)) {
46
- accept('error', `Provider "${value}" is not supported. Choose from ${_constants.SUPPORTED_PROVIDERS.map(p => '"' + p + '"').join(' | ')}.`, {
47
- node: provider.value
48
- });
18
+ validateFields(ds, accept) {
19
+ ds.fields.forEach((f) => {
20
+ if (!supportedFields.includes(f.name)) {
21
+ accept('error', `Unexpected field "${f.name}"`, { node: f });
22
+ }
23
+ });
49
24
  }
50
- }
51
- validateUrl(ds, accept) {
52
- const url = ds.fields.find(f => f.name === 'url');
53
- if (!url) {
54
- accept('error', 'datasource must include a "url" field', {
55
- node: ds
56
- });
25
+ validateProvider(ds, accept) {
26
+ const provider = ds.fields.find((f) => f.name === 'provider');
27
+ if (!provider) {
28
+ accept('error', 'datasource must include a "provider" field', {
29
+ node: ds,
30
+ });
31
+ return;
32
+ }
33
+ const value = (0, utils_1.getStringLiteral)(provider.value);
34
+ if (!value) {
35
+ accept('error', '"provider" must be set to a string literal', {
36
+ node: provider.value,
37
+ });
38
+ }
39
+ else if (!constants_1.SUPPORTED_PROVIDERS.includes(value)) {
40
+ accept('error', `Provider "${value}" is not supported. Choose from ${constants_1.SUPPORTED_PROVIDERS.map((p) => '"' + p + '"').join(' | ')}.`, { node: provider.value });
41
+ }
57
42
  }
58
- for (const fieldName of ['url', 'shadowDatabaseUrl']) {
59
- var _field$value$function;
60
- const field = ds.fields.find(f => f.name === fieldName);
61
- if (!field) {
62
- continue;
63
- }
64
- const value = (0, _utils.getStringLiteral)(field.value);
65
- if (!value && !((0, _ast.isInvocationExpr)(field.value) && ((_field$value$function = field.value.function.ref) === null || _field$value$function === void 0 ? void 0 : _field$value$function.name) === 'env')) {
66
- accept('error', `"${fieldName}" must be set to a string literal or an invocation of "env" function`, {
67
- node: field.value
68
- });
69
- }
43
+ validateUrl(ds, accept) {
44
+ var _a;
45
+ const url = ds.fields.find((f) => f.name === 'url');
46
+ if (!url) {
47
+ accept('error', 'datasource must include a "url" field', {
48
+ node: ds,
49
+ });
50
+ }
51
+ for (const fieldName of ['url', 'shadowDatabaseUrl']) {
52
+ const field = ds.fields.find((f) => f.name === fieldName);
53
+ if (!field) {
54
+ continue;
55
+ }
56
+ const value = (0, utils_1.getStringLiteral)(field.value);
57
+ if (!value && !((0, ast_1.isInvocationExpr)(field.value) && ((_a = field.value.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'env')) {
58
+ accept('error', `"${fieldName}" must be set to a string literal or an invocation of "env" function`, {
59
+ node: field.value,
60
+ });
61
+ }
62
+ }
70
63
  }
71
- }
72
- validateRelationMode(ds, accept) {
73
- const field = ds.fields.find(f => f.name === 'relationMode');
74
- if (field) {
75
- const val = (0, _utils.getStringLiteral)(field.value);
76
- if (!val || !['foreignKeys', 'prisma'].includes(val)) {
77
- accept('error', '"relationMode" must be set to "foreignKeys" or "prisma"', {
78
- node: field.value
79
- });
80
- }
64
+ validateRelationMode(ds, accept) {
65
+ const field = ds.fields.find((f) => f.name === 'relationMode');
66
+ if (field) {
67
+ const val = (0, utils_1.getStringLiteral)(field.value);
68
+ if (!val || !['foreignKeys', 'prisma'].includes(val)) {
69
+ accept('error', '"relationMode" must be set to "foreignKeys" or "prisma"', { node: field.value });
70
+ }
71
+ }
81
72
  }
82
- }
83
73
  }
84
74
  exports.default = DataSourceValidator;
85
75
  //# sourceMappingURL=datasource-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"datasource-validator.js","names":["supportedFields","DataSourceValidator","validate","ds","accept","validateDuplicatedDeclarations","fields","validateFields","validateProvider","validateUrl","validateRelationMode","forEach","f","includes","name","node","provider","find","value","getStringLiteral","SUPPORTED_PROVIDERS","map","p","join","url","fieldName","field","isInvocationExpr","function","ref","val"],"sources":["../../../src/language-server/validator/datasource-validator.ts"],"sourcesContent":["import { DataSource, isInvocationExpr } from '@zenstackhq/language/ast';\nimport { AstValidator } from '../types';\nimport { ValidationAcceptor } from 'langium';\nimport { getStringLiteral, validateDuplicatedDeclarations } from './utils';\nimport { SUPPORTED_PROVIDERS } from '../constants';\n\nconst supportedFields = ['provider', 'url', 'shadowDatabaseUrl', 'relationMode'];\n\n/**\n * Validates data source declarations.\n */\nexport default class DataSourceValidator implements AstValidator<DataSource> {\n validate(ds: DataSource, accept: ValidationAcceptor): void {\n validateDuplicatedDeclarations(ds.fields, accept);\n this.validateFields(ds, accept);\n this.validateProvider(ds, accept);\n this.validateUrl(ds, accept);\n this.validateRelationMode(ds, accept);\n }\n\n private validateFields(ds: DataSource, accept: ValidationAcceptor) {\n ds.fields.forEach((f) => {\n if (!supportedFields.includes(f.name)) {\n accept('error', `Unexpected field \"${f.name}\"`, { node: f });\n }\n });\n }\n\n private validateProvider(ds: DataSource, accept: ValidationAcceptor) {\n const provider = ds.fields.find((f) => f.name === 'provider');\n if (!provider) {\n accept('error', 'datasource must include a \"provider\" field', {\n node: ds,\n });\n return;\n }\n\n const value = getStringLiteral(provider.value);\n if (!value) {\n accept('error', '\"provider\" must be set to a string literal', {\n node: provider.value,\n });\n } else if (!SUPPORTED_PROVIDERS.includes(value)) {\n accept(\n 'error',\n `Provider \"${value}\" is not supported. Choose from ${SUPPORTED_PROVIDERS.map((p) => '\"' + p + '\"').join(\n ' | '\n )}.`,\n { node: provider.value }\n );\n }\n }\n\n private validateUrl(ds: DataSource, accept: ValidationAcceptor) {\n const url = ds.fields.find((f) => f.name === 'url');\n if (!url) {\n accept('error', 'datasource must include a \"url\" field', {\n node: ds,\n });\n }\n\n for (const fieldName of ['url', 'shadowDatabaseUrl']) {\n const field = ds.fields.find((f) => f.name === fieldName);\n if (!field) {\n continue;\n }\n const value = getStringLiteral(field.value);\n if (!value && !(isInvocationExpr(field.value) && field.value.function.ref?.name === 'env')) {\n accept('error', `\"${fieldName}\" must be set to a string literal or an invocation of \"env\" function`, {\n node: field.value,\n });\n }\n }\n }\n\n private validateRelationMode(ds: DataSource, accept: ValidationAcceptor) {\n const field = ds.fields.find((f) => f.name === 'relationMode');\n if (field) {\n const val = getStringLiteral(field.value);\n if (!val || !['foreignKeys', 'prisma'].includes(val)) {\n accept('error', '\"relationMode\" must be set to \"foreignKeys\" or \"prisma\"', { node: field.value });\n }\n }\n }\n}\n"],"mappings":";;;;;;AAAA;AAGA;AACA;AAEA,MAAMA,eAAe,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,mBAAmB,EAAE,cAAc,CAAC;;AAEhF;AACA;AACA;AACe,MAAMC,mBAAmB,CAAqC;EACzEC,QAAQ,CAACC,EAAc,EAAEC,MAA0B,EAAQ;IACvD,IAAAC,qCAA8B,EAACF,EAAE,CAACG,MAAM,EAAEF,MAAM,CAAC;IACjD,IAAI,CAACG,cAAc,CAACJ,EAAE,EAAEC,MAAM,CAAC;IAC/B,IAAI,CAACI,gBAAgB,CAACL,EAAE,EAAEC,MAAM,CAAC;IACjC,IAAI,CAACK,WAAW,CAACN,EAAE,EAAEC,MAAM,CAAC;IAC5B,IAAI,CAACM,oBAAoB,CAACP,EAAE,EAAEC,MAAM,CAAC;EACzC;EAEQG,cAAc,CAACJ,EAAc,EAAEC,MAA0B,EAAE;IAC/DD,EAAE,CAACG,MAAM,CAACK,OAAO,CAAEC,CAAC,IAAK;MACrB,IAAI,CAACZ,eAAe,CAACa,QAAQ,CAACD,CAAC,CAACE,IAAI,CAAC,EAAE;QACnCV,MAAM,CAAC,OAAO,EAAG,qBAAoBQ,CAAC,CAACE,IAAK,GAAE,EAAE;UAAEC,IAAI,EAAEH;QAAE,CAAC,CAAC;MAChE;IACJ,CAAC,CAAC;EACN;EAEQJ,gBAAgB,CAACL,EAAc,EAAEC,MAA0B,EAAE;IACjE,MAAMY,QAAQ,GAAGb,EAAE,CAACG,MAAM,CAACW,IAAI,CAAEL,CAAC,IAAKA,CAAC,CAACE,IAAI,KAAK,UAAU,CAAC;IAC7D,IAAI,CAACE,QAAQ,EAAE;MACXZ,MAAM,CAAC,OAAO,EAAE,4CAA4C,EAAE;QAC1DW,IAAI,EAAEZ;MACV,CAAC,CAAC;MACF;IACJ;IAEA,MAAMe,KAAK,GAAG,IAAAC,uBAAgB,EAACH,QAAQ,CAACE,KAAK,CAAC;IAC9C,IAAI,CAACA,KAAK,EAAE;MACRd,MAAM,CAAC,OAAO,EAAE,4CAA4C,EAAE;QAC1DW,IAAI,EAAEC,QAAQ,CAACE;MACnB,CAAC,CAAC;IACN,CAAC,MAAM,IAAI,CAACE,8BAAmB,CAACP,QAAQ,CAACK,KAAK,CAAC,EAAE;MAC7Cd,MAAM,CACF,OAAO,EACN,aAAYc,KAAM,mCAAkCE,8BAAmB,CAACC,GAAG,CAAEC,CAAC,IAAK,GAAG,GAAGA,CAAC,GAAG,GAAG,CAAC,CAACC,IAAI,CACnG,KAAK,CACP,GAAE,EACJ;QAAER,IAAI,EAAEC,QAAQ,CAACE;MAAM,CAAC,CAC3B;IACL;EACJ;EAEQT,WAAW,CAACN,EAAc,EAAEC,MAA0B,EAAE;IAC5D,MAAMoB,GAAG,GAAGrB,EAAE,CAACG,MAAM,CAACW,IAAI,CAAEL,CAAC,IAAKA,CAAC,CAACE,IAAI,KAAK,KAAK,CAAC;IACnD,IAAI,CAACU,GAAG,EAAE;MACNpB,MAAM,CAAC,OAAO,EAAE,uCAAuC,EAAE;QACrDW,IAAI,EAAEZ;MACV,CAAC,CAAC;IACN;IAEA,KAAK,MAAMsB,SAAS,IAAI,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE;MAAA;MAClD,MAAMC,KAAK,GAAGvB,EAAE,CAACG,MAAM,CAACW,IAAI,CAAEL,CAAC,IAAKA,CAAC,CAACE,IAAI,KAAKW,SAAS,CAAC;MACzD,IAAI,CAACC,KAAK,EAAE;QACR;MACJ;MACA,MAAMR,KAAK,GAAG,IAAAC,uBAAgB,EAACO,KAAK,CAACR,KAAK,CAAC;MAC3C,IAAI,CAACA,KAAK,IAAI,EAAE,IAAAS,qBAAgB,EAACD,KAAK,CAACR,KAAK,CAAC,IAAI,0BAAAQ,KAAK,CAACR,KAAK,CAACU,QAAQ,CAACC,GAAG,0DAAxB,sBAA0Bf,IAAI,MAAK,KAAK,CAAC,EAAE;QACxFV,MAAM,CAAC,OAAO,EAAG,IAAGqB,SAAU,sEAAqE,EAAE;UACjGV,IAAI,EAAEW,KAAK,CAACR;QAChB,CAAC,CAAC;MACN;IACJ;EACJ;EAEQR,oBAAoB,CAACP,EAAc,EAAEC,MAA0B,EAAE;IACrE,MAAMsB,KAAK,GAAGvB,EAAE,CAACG,MAAM,CAACW,IAAI,CAAEL,CAAC,IAAKA,CAAC,CAACE,IAAI,KAAK,cAAc,CAAC;IAC9D,IAAIY,KAAK,EAAE;MACP,MAAMI,GAAG,GAAG,IAAAX,uBAAgB,EAACO,KAAK,CAACR,KAAK,CAAC;MACzC,IAAI,CAACY,GAAG,IAAI,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,CAACjB,QAAQ,CAACiB,GAAG,CAAC,EAAE;QAClD1B,MAAM,CAAC,OAAO,EAAE,yDAAyD,EAAE;UAAEW,IAAI,EAAEW,KAAK,CAACR;QAAM,CAAC,CAAC;MACrG;IACJ;EACJ;AACJ;AAAC"}
1
+ {"version":3,"file":"datasource-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/datasource-validator.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,14 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _utils = require("./utils");
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("./utils");
8
4
  /**
9
5
  * Validates enum declarations.
10
6
  */
11
7
  class EnumValidator {
12
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
13
- validate(_enum, accept) {
14
- (0, _utils.validateDuplicatedDeclarations)(_enum.fields, accept);
15
- }
8
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
9
+ validate(_enum, accept) {
10
+ (0, utils_1.validateDuplicatedDeclarations)(_enum.fields, accept);
11
+ }
16
12
  }
17
13
  exports.default = EnumValidator;
18
14
  //# sourceMappingURL=enum-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enum-validator.js","names":["EnumValidator","validate","_enum","accept","validateDuplicatedDeclarations","fields"],"sources":["../../../src/language-server/validator/enum-validator.ts"],"sourcesContent":["import { Enum } from '@zenstackhq/language/ast';\nimport { AstValidator } from '../types';\nimport { ValidationAcceptor } from 'langium';\nimport { validateDuplicatedDeclarations } from './utils';\n\n/**\n * Validates enum declarations.\n */\nexport default class EnumValidator implements AstValidator<Enum> {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n validate(_enum: Enum, accept: ValidationAcceptor) {\n validateDuplicatedDeclarations(_enum.fields, accept);\n }\n}\n"],"mappings":";;;;;;AAGA;AAEA;AACA;AACA;AACe,MAAMA,aAAa,CAA+B;EAC7D;EACAC,QAAQ,CAACC,KAAW,EAAEC,MAA0B,EAAE;IAC9C,IAAAC,qCAA8B,EAACF,KAAK,CAACG,MAAM,EAAEF,MAAM,CAAC;EACxD;AACJ;AAAC"}
1
+ {"version":3,"file":"enum-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/enum-validator.ts"],"names":[],"mappings":";;AAGA,mCAAyD;AAEzD;;GAEG;AACH,MAAqB,aAAa;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,KAAW,EAAE,MAA0B;QAC5C,IAAA,sCAA8B,EAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;CACJ;AALD,gCAKC"}
@@ -1,40 +1,34 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _ast = require("@zenstackhq/language/ast");
8
- var _utils = require("../utils");
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ast_1 = require("@zenstackhq/language/ast");
4
+ const utils_1 = require("../utils");
9
5
  /**
10
6
  * Validates expressions.
11
7
  */
12
8
  class ExpressionValidator {
13
- validate(expr, accept) {
14
- if (!expr.$resolvedType) {
15
- if (this.isAuthInvocation(expr)) {
16
- // check was done at link time
17
- accept('error', 'auth() cannot be resolved because no "User" model is defined', {
18
- node: expr
19
- });
20
- } else if (this.isCollectionPredicate(expr)) {
21
- accept('error', 'collection predicate can only be used on an array of model type', {
22
- node: expr
23
- });
24
- } else {
25
- accept('error', 'expression cannot be resolved', {
26
- node: expr
27
- });
28
- }
9
+ validate(expr, accept) {
10
+ if (!expr.$resolvedType) {
11
+ if (this.isAuthInvocation(expr)) {
12
+ // check was done at link time
13
+ accept('error', 'auth() cannot be resolved because no "User" model is defined', { node: expr });
14
+ }
15
+ else if (this.isCollectionPredicate(expr)) {
16
+ accept('error', 'collection predicate can only be used on an array of model type', { node: expr });
17
+ }
18
+ else {
19
+ accept('error', 'expression cannot be resolved', {
20
+ node: expr,
21
+ });
22
+ }
23
+ }
24
+ }
25
+ isCollectionPredicate(expr) {
26
+ return (0, ast_1.isBinaryExpr)(expr) && ['?', '!', '^'].includes(expr.operator);
27
+ }
28
+ isAuthInvocation(expr) {
29
+ var _a;
30
+ return (0, ast_1.isInvocationExpr)(expr) && ((_a = expr.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'auth' && (0, utils_1.isFromStdlib)(expr.function.ref);
29
31
  }
30
- }
31
- isCollectionPredicate(expr) {
32
- return (0, _ast.isBinaryExpr)(expr) && ['?', '!', '^'].includes(expr.operator);
33
- }
34
- isAuthInvocation(expr) {
35
- var _expr$function$ref;
36
- return (0, _ast.isInvocationExpr)(expr) && ((_expr$function$ref = expr.function.ref) === null || _expr$function$ref === void 0 ? void 0 : _expr$function$ref.name) === 'auth' && (0, _utils.isFromStdlib)(expr.function.ref);
37
- }
38
32
  }
39
33
  exports.default = ExpressionValidator;
40
34
  //# sourceMappingURL=expression-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expression-validator.js","names":["ExpressionValidator","validate","expr","accept","$resolvedType","isAuthInvocation","node","isCollectionPredicate","isBinaryExpr","includes","operator","isInvocationExpr","function","ref","name","isFromStdlib"],"sources":["../../../src/language-server/validator/expression-validator.ts"],"sourcesContent":["import { Expression, isBinaryExpr, isInvocationExpr } from '@zenstackhq/language/ast';\nimport { AstValidator } from '../types';\nimport { isFromStdlib } from '../utils';\nimport { ValidationAcceptor } from 'langium';\n\n/**\n * Validates expressions.\n */\nexport default class ExpressionValidator implements AstValidator<Expression> {\n validate(expr: Expression, accept: ValidationAcceptor): void {\n if (!expr.$resolvedType) {\n if (this.isAuthInvocation(expr)) {\n // check was done at link time\n accept('error', 'auth() cannot be resolved because no \"User\" model is defined', { node: expr });\n } else if (this.isCollectionPredicate(expr)) {\n accept('error', 'collection predicate can only be used on an array of model type', { node: expr });\n } else {\n accept('error', 'expression cannot be resolved', {\n node: expr,\n });\n }\n }\n }\n\n private isCollectionPredicate(expr: Expression) {\n return isBinaryExpr(expr) && ['?', '!', '^'].includes(expr.operator);\n }\n\n private isAuthInvocation(expr: Expression) {\n return isInvocationExpr(expr) && expr.function.ref?.name === 'auth' && isFromStdlib(expr.function.ref);\n }\n}\n"],"mappings":";;;;;;AAAA;AAEA;AAGA;AACA;AACA;AACe,MAAMA,mBAAmB,CAAqC;EACzEC,QAAQ,CAACC,IAAgB,EAAEC,MAA0B,EAAQ;IACzD,IAAI,CAACD,IAAI,CAACE,aAAa,EAAE;MACrB,IAAI,IAAI,CAACC,gBAAgB,CAACH,IAAI,CAAC,EAAE;QAC7B;QACAC,MAAM,CAAC,OAAO,EAAE,8DAA8D,EAAE;UAAEG,IAAI,EAAEJ;QAAK,CAAC,CAAC;MACnG,CAAC,MAAM,IAAI,IAAI,CAACK,qBAAqB,CAACL,IAAI,CAAC,EAAE;QACzCC,MAAM,CAAC,OAAO,EAAE,iEAAiE,EAAE;UAAEG,IAAI,EAAEJ;QAAK,CAAC,CAAC;MACtG,CAAC,MAAM;QACHC,MAAM,CAAC,OAAO,EAAE,+BAA+B,EAAE;UAC7CG,IAAI,EAAEJ;QACV,CAAC,CAAC;MACN;IACJ;EACJ;EAEQK,qBAAqB,CAACL,IAAgB,EAAE;IAC5C,OAAO,IAAAM,iBAAY,EAACN,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAACO,QAAQ,CAACP,IAAI,CAACQ,QAAQ,CAAC;EACxE;EAEQL,gBAAgB,CAACH,IAAgB,EAAE;IAAA;IACvC,OAAO,IAAAS,qBAAgB,EAACT,IAAI,CAAC,IAAI,uBAAAA,IAAI,CAACU,QAAQ,CAACC,GAAG,uDAAjB,mBAAmBC,IAAI,MAAK,MAAM,IAAI,IAAAC,mBAAY,EAACb,IAAI,CAACU,QAAQ,CAACC,GAAG,CAAC;EAC1G;AACJ;AAAC"}
1
+ {"version":3,"file":"expression-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/expression-validator.ts"],"names":[],"mappings":";;AAAA,kDAAsF;AAEtF,oCAAwC;AAGxC;;GAEG;AACH,MAAqB,mBAAmB;IACpC,QAAQ,CAAC,IAAgB,EAAE,MAA0B;QACjD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;gBAC7B,8BAA8B;gBAC9B,MAAM,CAAC,OAAO,EAAE,8DAA8D,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aACnG;iBAAM,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE;gBACzC,MAAM,CAAC,OAAO,EAAE,iEAAiE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aACtG;iBAAM;gBACH,MAAM,CAAC,OAAO,EAAE,+BAA+B,EAAE;oBAC7C,IAAI,EAAE,IAAI;iBACb,CAAC,CAAC;aACN;SACJ;IACL,CAAC;IAEO,qBAAqB,CAAC,IAAgB;QAC1C,OAAO,IAAA,kBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzE,CAAC;IAEO,gBAAgB,CAAC,IAAgB;;QACrC,OAAO,IAAA,sBAAgB,EAAC,IAAI,CAAC,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,0CAAE,IAAI,MAAK,MAAM,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3G,CAAC;CACJ;AAvBD,sCAuBC"}
@@ -1,35 +1,28 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _constants = require("../constants");
8
- var _ast = require("@zenstackhq/language/ast");
9
- var _utils = require("./utils");
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const constants_1 = require("../constants");
4
+ const ast_1 = require("@zenstackhq/language/ast");
5
+ const utils_1 = require("./utils");
10
6
  /**
11
7
  * Validates toplevel schema.
12
8
  */
13
9
  class SchemaValidator {
14
- validate(model, accept) {
15
- var _model$$document;
16
- (0, _utils.validateDuplicatedDeclarations)(model.declarations, accept);
17
- if (!((_model$$document = model.$document) !== null && _model$$document !== void 0 && _model$$document.uri.path.endsWith(_constants.STD_LIB_MODULE_NAME))) {
18
- this.validateDataSources(model, accept);
10
+ validate(model, accept) {
11
+ var _a;
12
+ (0, utils_1.validateDuplicatedDeclarations)(model.declarations, accept);
13
+ if (!((_a = model.$document) === null || _a === void 0 ? void 0 : _a.uri.path.endsWith(constants_1.STD_LIB_MODULE_NAME))) {
14
+ this.validateDataSources(model, accept);
15
+ }
19
16
  }
20
- }
21
- validateDataSources(model, accept) {
22
- const dataSources = model.declarations.filter(d => (0, _ast.isDataSource)(d));
23
- if (dataSources.length === 0) {
24
- accept('error', 'Model must define a datasource', {
25
- node: model
26
- });
27
- } else if (dataSources.length > 1) {
28
- accept('error', 'Multiple datasource declarations are not allowed', {
29
- node: dataSources[1]
30
- });
17
+ validateDataSources(model, accept) {
18
+ const dataSources = model.declarations.filter((d) => (0, ast_1.isDataSource)(d));
19
+ if (dataSources.length === 0) {
20
+ accept('error', 'Model must define a datasource', { node: model });
21
+ }
22
+ else if (dataSources.length > 1) {
23
+ accept('error', 'Multiple datasource declarations are not allowed', { node: dataSources[1] });
24
+ }
31
25
  }
32
- }
33
26
  }
34
27
  exports.default = SchemaValidator;
35
28
  //# sourceMappingURL=schema-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-validator.js","names":["SchemaValidator","validate","model","accept","validateDuplicatedDeclarations","declarations","$document","uri","path","endsWith","STD_LIB_MODULE_NAME","validateDataSources","dataSources","filter","d","isDataSource","length","node"],"sources":["../../../src/language-server/validator/schema-validator.ts"],"sourcesContent":["import { STD_LIB_MODULE_NAME } from '../constants';\nimport { isDataSource, Model } from '@zenstackhq/language/ast';\nimport { AstValidator } from '../types';\nimport { ValidationAcceptor } from 'langium';\nimport { validateDuplicatedDeclarations } from './utils';\n\n/**\n * Validates toplevel schema.\n */\nexport default class SchemaValidator implements AstValidator<Model> {\n validate(model: Model, accept: ValidationAcceptor): void {\n validateDuplicatedDeclarations(model.declarations, accept);\n\n if (!model.$document?.uri.path.endsWith(STD_LIB_MODULE_NAME)) {\n this.validateDataSources(model, accept);\n }\n }\n\n private validateDataSources(model: Model, accept: ValidationAcceptor) {\n const dataSources = model.declarations.filter((d) => isDataSource(d));\n if (dataSources.length === 0) {\n accept('error', 'Model must define a datasource', { node: model });\n } else if (dataSources.length > 1) {\n accept('error', 'Multiple datasource declarations are not allowed', { node: dataSources[1] });\n }\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AAGA;AAEA;AACA;AACA;AACe,MAAMA,eAAe,CAAgC;EAChEC,QAAQ,CAACC,KAAY,EAAEC,MAA0B,EAAQ;IAAA;IACrD,IAAAC,qCAA8B,EAACF,KAAK,CAACG,YAAY,EAAEF,MAAM,CAAC;IAE1D,IAAI,sBAACD,KAAK,CAACI,SAAS,6CAAf,iBAAiBC,GAAG,CAACC,IAAI,CAACC,QAAQ,CAACC,8BAAmB,CAAC,GAAE;MAC1D,IAAI,CAACC,mBAAmB,CAACT,KAAK,EAAEC,MAAM,CAAC;IAC3C;EACJ;EAEQQ,mBAAmB,CAACT,KAAY,EAAEC,MAA0B,EAAE;IAClE,MAAMS,WAAW,GAAGV,KAAK,CAACG,YAAY,CAACQ,MAAM,CAAEC,CAAC,IAAK,IAAAC,iBAAY,EAACD,CAAC,CAAC,CAAC;IACrE,IAAIF,WAAW,CAACI,MAAM,KAAK,CAAC,EAAE;MAC1Bb,MAAM,CAAC,OAAO,EAAE,gCAAgC,EAAE;QAAEc,IAAI,EAAEf;MAAM,CAAC,CAAC;IACtE,CAAC,MAAM,IAAIU,WAAW,CAACI,MAAM,GAAG,CAAC,EAAE;MAC/Bb,MAAM,CAAC,OAAO,EAAE,kDAAkD,EAAE;QAAEc,IAAI,EAAEL,WAAW,CAAC,CAAC;MAAE,CAAC,CAAC;IACjG;EACJ;AACJ;AAAC"}
1
+ {"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/schema-validator.ts"],"names":[],"mappings":";;AAAA,4CAAmD;AACnD,kDAA+D;AAG/D,mCAAyD;AAEzD;;GAEG;AACH,MAAqB,eAAe;IAChC,QAAQ,CAAC,KAAY,EAAE,MAA0B;;QAC7C,IAAA,sCAA8B,EAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,CAAC,CAAA,MAAA,KAAK,CAAC,SAAS,0CAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,+BAAmB,CAAC,CAAA,EAAE;YAC1D,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC3C;IACL,CAAC;IAEO,mBAAmB,CAAC,KAAY,EAAE,MAA0B;QAChE,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,kBAAY,EAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,MAAM,CAAC,OAAO,EAAE,gCAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SACtE;aAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,MAAM,CAAC,OAAO,EAAE,kDAAkD,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACjG;IACL,CAAC;CACJ;AAjBD,kCAiBC"}