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.
- package/README.md +79 -9
- package/cli/cli-error.js +3 -5
- package/cli/cli-error.js.map +1 -1
- package/cli/cli-util.js +123 -105
- package/cli/cli-util.js.map +1 -1
- package/cli/index.js +105 -63
- package/cli/index.js.map +1 -1
- package/cli/plugin-runner.js +130 -127
- package/cli/plugin-runner.js.map +1 -1
- package/language-server/constants.js +5 -13
- package/language-server/constants.js.map +1 -1
- package/language-server/main.js +8 -15
- package/language-server/main.js.map +1 -1
- package/language-server/types.js +3 -1
- package/language-server/types.js.map +1 -1
- package/language-server/utils.js +13 -16
- package/language-server/utils.js.map +1 -1
- package/language-server/validator/attribute-validator.js +3 -7
- package/language-server/validator/attribute-validator.js.map +1 -1
- package/language-server/validator/datamodel-validator.js +293 -347
- package/language-server/validator/datamodel-validator.js.map +1 -1
- package/language-server/validator/datasource-validator.js +61 -71
- package/language-server/validator/datasource-validator.js.map +1 -1
- package/language-server/validator/enum-validator.js +6 -10
- package/language-server/validator/enum-validator.js.map +1 -1
- package/language-server/validator/expression-validator.js +25 -31
- package/language-server/validator/expression-validator.js.map +1 -1
- package/language-server/validator/schema-validator.js +18 -25
- package/language-server/validator/schema-validator.js.map +1 -1
- package/language-server/validator/utils.js +86 -85
- package/language-server/validator/utils.js.map +1 -1
- package/language-server/validator/zmodel-validator.js +55 -58
- package/language-server/validator/zmodel-validator.js.map +1 -1
- package/language-server/zmodel-formatter.js +40 -21
- package/language-server/zmodel-formatter.js.map +1 -1
- package/language-server/zmodel-linker.js +328 -331
- package/language-server/zmodel-linker.js.map +1 -1
- package/language-server/zmodel-module.js +50 -59
- package/language-server/zmodel-module.js.map +1 -1
- package/language-server/zmodel-scope.js +35 -25
- package/language-server/zmodel-scope.js.map +1 -1
- package/language-server/zmodel-workspace-manager.js +30 -18
- package/language-server/zmodel-workspace-manager.js.map +1 -1
- package/package.json +8 -12
- package/plugins/access-policy/expression-writer.js +301 -292
- package/plugins/access-policy/expression-writer.js.map +1 -1
- package/plugins/access-policy/index.js +20 -11
- package/plugins/access-policy/index.js.map +1 -1
- package/plugins/access-policy/policy-guard-generator.js +327 -321
- package/plugins/access-policy/policy-guard-generator.js.map +1 -1
- package/plugins/access-policy/typescript-expression-transformer.js +94 -95
- package/plugins/access-policy/typescript-expression-transformer.js.map +1 -1
- package/plugins/access-policy/utils.js +7 -9
- package/plugins/access-policy/utils.js.map +1 -1
- package/plugins/access-policy/zod-schema-generator.js +143 -159
- package/plugins/access-policy/zod-schema-generator.js.map +1 -1
- package/plugins/model-meta/index.js +97 -102
- package/plugins/model-meta/index.js.map +1 -1
- package/plugins/plugin-utils.js +34 -40
- package/plugins/plugin-utils.js.map +1 -1
- package/plugins/prisma/indent-string.js +4 -8
- package/plugins/prisma/indent-string.js.map +1 -1
- package/plugins/prisma/index.js +20 -11
- package/plugins/prisma/index.js.map +1 -1
- package/plugins/prisma/prisma-builder.js +235 -213
- package/plugins/prisma/prisma-builder.js.map +1 -1
- package/plugins/prisma/schema-generator.js +205 -192
- package/plugins/prisma/schema-generator.js.map +1 -1
- package/plugins/prisma/zmodel-code-generator.js +109 -114
- package/plugins/prisma/zmodel-code-generator.js.map +1 -1
- package/telemetry.js +107 -90
- package/telemetry.js.map +1 -1
- package/types.js +3 -1
- package/types.js.map +1 -1
- package/utils/ast-utils.js +67 -67
- package/utils/ast-utils.js.map +1 -1
- package/utils/exec-utils.js +6 -15
- package/utils/exec-utils.js.map +1 -1
- package/utils/pkg-utils.js +38 -35
- package/utils/pkg-utils.js.map +1 -1
- package/utils/version-utils.js +9 -10
- package/utils/version-utils.js.map +1 -1
- package/global.d.js +0 -1
- 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
|
-
|
|
4
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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","
|
|
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
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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","
|
|
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
|
-
|
|
4
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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","
|
|
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
|
-
|
|
4
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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","
|
|
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"}
|