@contember/schema-utils 1.2.0-alpha.9 → 1.2.0-beta.2
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/src/acl/PredicateDefinitionProcessor.js +2 -2
- package/dist/src/acl/PredicateDefinitionProcessor.js.map +1 -1
- package/dist/src/definition-generator/TsDefinitionGenerator.d.ts +26 -0
- package/dist/src/definition-generator/TsDefinitionGenerator.d.ts.map +1 -0
- package/dist/src/definition-generator/TsDefinitionGenerator.js +246 -0
- package/dist/src/definition-generator/TsDefinitionGenerator.js.map +1 -0
- package/dist/src/definition-generator/index.d.ts +2 -0
- package/dist/src/definition-generator/index.d.ts.map +1 -0
- package/dist/src/definition-generator/index.js +18 -0
- package/dist/src/definition-generator/index.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lax/LaxSchemaConverter.d.ts +10 -0
- package/dist/src/lax/LaxSchemaConverter.d.ts.map +1 -0
- package/dist/src/lax/LaxSchemaConverter.js +204 -0
- package/dist/src/lax/LaxSchemaConverter.js.map +1 -0
- package/dist/src/lax/index.d.ts +3 -0
- package/dist/src/lax/index.d.ts.map +1 -0
- package/dist/src/lax/index.js +6 -0
- package/dist/src/lax/index.js.map +1 -0
- package/dist/src/lax/schema.d.ts +284 -0
- package/dist/src/lax/schema.d.ts.map +1 -0
- package/dist/src/lax/schema.js +67 -0
- package/dist/src/lax/schema.js.map +1 -0
- package/dist/src/model/NamingConventions.d.ts +17 -0
- package/dist/src/model/NamingConventions.d.ts.map +1 -0
- package/dist/src/model/NamingConventions.js +29 -0
- package/dist/src/model/NamingConventions.js.map +1 -0
- package/dist/src/model/NamingHelper.d.ts +2 -0
- package/dist/src/model/NamingHelper.d.ts.map +1 -1
- package/dist/src/model/NamingHelper.js +10 -2
- package/dist/src/model/NamingHelper.js.map +1 -1
- package/dist/src/model/index.d.ts +2 -0
- package/dist/src/model/index.d.ts.map +1 -1
- package/dist/src/model/index.js +2 -0
- package/dist/src/model/index.js.map +1 -1
- package/dist/src/model/modelUtils.d.ts +1 -0
- package/dist/src/model/modelUtils.d.ts.map +1 -1
- package/dist/src/model/modelUtils.js +69 -46
- package/dist/src/model/modelUtils.js.map +1 -1
- package/dist/src/model/resolveDefaultColumnType.d.ts +3 -0
- package/dist/src/model/resolveDefaultColumnType.d.ts.map +1 -0
- package/dist/src/model/resolveDefaultColumnType.js +29 -0
- package/dist/src/model/resolveDefaultColumnType.js.map +1 -0
- package/dist/src/schemaNormalizer.d.ts.map +1 -1
- package/dist/src/schemaNormalizer.js +1 -0
- package/dist/src/schemaNormalizer.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/type-schema/acl.d.ts.map +1 -1
- package/dist/src/type-schema/acl.js +15 -4
- package/dist/src/type-schema/acl.js.map +1 -1
- package/dist/src/type-schema/index.d.ts +1 -0
- package/dist/src/type-schema/index.d.ts.map +1 -1
- package/dist/src/type-schema/index.js +1 -0
- package/dist/src/type-schema/index.js.map +1 -1
- package/dist/src/type-schema/model.js +1 -1
- package/dist/src/type-schema/model.js.map +1 -1
- package/dist/src/type-schema/settings.d.ts +10 -0
- package/dist/src/type-schema/settings.d.ts.map +1 -0
- package/dist/src/type-schema/settings.js +32 -0
- package/dist/src/type-schema/settings.js.map +1 -0
- package/dist/src/validation/AclValidator.d.ts.map +1 -1
- package/dist/src/validation/AclValidator.js +11 -11
- package/dist/src/validation/AclValidator.js.map +1 -1
- package/dist/src/validation/MembershipResolver.d.ts.map +1 -1
- package/dist/src/validation/MembershipResolver.js +12 -3
- package/dist/src/validation/MembershipResolver.js.map +1 -1
- package/dist/src/validation/ModelValidator.d.ts.map +1 -1
- package/dist/src/validation/ModelValidator.js +77 -43
- package/dist/src/validation/ModelValidator.js.map +1 -1
- package/dist/src/validation/SchemaValidator.d.ts +6 -2
- package/dist/src/validation/SchemaValidator.d.ts.map +1 -1
- package/dist/src/validation/SchemaValidator.js +7 -2
- package/dist/src/validation/SchemaValidator.js.map +1 -1
- package/dist/src/validation/ValidationValidator.js +4 -4
- package/dist/src/validation/ValidationValidator.js.map +1 -1
- package/dist/src/validation/errors.d.ts +3 -1
- package/dist/src/validation/errors.d.ts.map +1 -1
- package/dist/src/validation/errors.js +2 -2
- package/dist/src/validation/errors.js.map +1 -1
- package/dist/tests/cases/unit/laxSchemaConverter.test.d.ts +2 -0
- package/dist/tests/cases/unit/laxSchemaConverter.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/laxSchemaConverter.test.js +118 -0
- package/dist/tests/cases/unit/laxSchemaConverter.test.js.map +1 -0
- package/dist/tests/cases/unit/membershipResolver.test.js +19 -0
- package/dist/tests/cases/unit/membershipResolver.test.js.map +1 -1
- package/dist/tests/cases/unit/modelValidator.test.d.ts +2 -0
- package/dist/tests/cases/unit/modelValidator.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/modelValidator.test.js +141 -0
- package/dist/tests/cases/unit/modelValidator.test.js.map +1 -0
- package/dist/tests/cases/unit/schemas/basic.d.ts +5 -0
- package/dist/tests/cases/unit/schemas/basic.d.ts.map +1 -0
- package/dist/tests/cases/unit/schemas/basic.js +11 -0
- package/dist/tests/cases/unit/schemas/basic.js.map +1 -0
- package/dist/tests/cases/unit/schemas/enum.d.ts +7 -0
- package/dist/tests/cases/unit/schemas/enum.d.ts.map +1 -0
- package/dist/tests/cases/unit/schemas/enum.js +13 -0
- package/dist/tests/cases/unit/schemas/enum.js.map +1 -0
- package/dist/tests/cases/unit/schemas/relations.d.ts +15 -0
- package/dist/tests/cases/unit/schemas/relations.d.ts.map +1 -0
- package/dist/tests/cases/unit/schemas/relations.js +27 -0
- package/dist/tests/cases/unit/schemas/relations.js.map +1 -0
- package/dist/tests/cases/unit/schemas/unique.d.ts +5 -0
- package/dist/tests/cases/unit/schemas/unique.d.ts.map +1 -0
- package/dist/tests/cases/unit/schemas/unique.js +20 -0
- package/dist/tests/cases/unit/schemas/unique.js.map +1 -0
- package/dist/tests/cases/unit/tsDefinitionGenerator.test.d.ts +2 -0
- package/dist/tests/cases/unit/tsDefinitionGenerator.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/tsDefinitionGenerator.test.js +56 -0
- package/dist/tests/cases/unit/tsDefinitionGenerator.test.js.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/acl/PredicateDefinitionProcessor.ts +2 -2
- package/src/definition-generator/TsDefinitionGenerator.ts +275 -0
- package/src/definition-generator/index.ts +1 -0
- package/src/index.ts +5 -1
- package/src/lax/LaxSchemaConverter.ts +213 -0
- package/src/lax/index.ts +9 -0
- package/src/lax/schema.ts +62 -0
- package/src/model/NamingConventions.ts +53 -0
- package/src/model/NamingHelper.ts +11 -1
- package/src/model/index.ts +2 -0
- package/src/model/modelUtils.ts +76 -71
- package/src/model/resolveDefaultColumnType.ts +25 -0
- package/src/schemaNormalizer.ts +1 -0
- package/src/type-schema/acl.ts +30 -11
- package/src/type-schema/index.ts +1 -0
- package/src/type-schema/model.ts +1 -1
- package/src/type-schema/settings.ts +8 -0
- package/src/validation/AclValidator.ts +10 -11
- package/src/validation/MembershipResolver.ts +10 -3
- package/src/validation/ModelValidator.ts +77 -45
- package/src/validation/SchemaValidator.ts +17 -4
- package/src/validation/ValidationValidator.ts +4 -4
- package/src/validation/errors.ts +25 -2
- package/tests/cases/unit/__snapshots__/laxSchemaConverter.test.ts.snap +310 -0
- package/tests/cases/unit/laxSchemaConverter.test.ts +137 -0
- package/tests/cases/unit/membershipResolver.test.ts +22 -0
- package/tests/cases/unit/modelValidator.test.ts +143 -0
- package/tests/cases/unit/schemas/.eslintignore +1 -0
- package/tests/cases/unit/schemas/basic.ts +5 -0
- package/tests/cases/unit/schemas/enum.ts +8 -0
- package/tests/cases/unit/schemas/relations.ts +17 -0
- package/tests/cases/unit/schemas/unique.ts +6 -0
- package/tests/cases/unit/tsDefinitionGenerator.test.ts +31 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl.js","sourceRoot":"","sources":["../../../src/type-schema/acl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAA8C;AAC9C,8DAA+C;
|
|
1
|
+
{"version":3,"file":"acl.js","sourceRoot":"","sources":["../../../src/type-schema/acl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/type-schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/type-schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA"}
|
|
@@ -17,5 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./acl"), exports);
|
|
18
18
|
__exportStar(require("./condition"), exports);
|
|
19
19
|
__exportStar(require("./model"), exports);
|
|
20
|
+
__exportStar(require("./settings"), exports);
|
|
20
21
|
__exportStar(require("./validation"), exports);
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-schema/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAqB;AACrB,8CAA2B;AAC3B,0CAAuB;AACvB,+CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-schema/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAqB;AACrB,8CAA2B;AAC3B,0CAAuB;AACvB,6CAA0B;AAC1B,+CAA4B"}
|
|
@@ -117,7 +117,7 @@ const columnSchema = Typesafe.intersection(Typesafe.object({
|
|
|
117
117
|
sequence: intersectionSchema,
|
|
118
118
|
}));
|
|
119
119
|
const columnSchemaCheck = true;
|
|
120
|
-
const fieldSchema = Typesafe.
|
|
120
|
+
const fieldSchema = Typesafe.partiallyDiscriminatedUnion('type', oneHasOneInverseRelationSchema, oneHasOneOwningRelationSchema, oneHasManyRelationSchema, manyHasOneRelationSchema, manyHasManyInverseRelationSchema, manyHasManyOwningRelationSchema, columnSchema);
|
|
121
121
|
const viewSchemaInner = Typesafe.intersection(Typesafe.object({
|
|
122
122
|
sql: Typesafe.string,
|
|
123
123
|
}), Typesafe.partial({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/type-schema/model.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/type-schema/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as Typesafe from '@contember/typesafe';
|
|
2
|
+
export declare const settingsSchema: {
|
|
3
|
+
(input: unknown, path?: PropertyKey[] | undefined): {
|
|
4
|
+
readonly useExistsInHasManyFilter?: boolean | undefined;
|
|
5
|
+
};
|
|
6
|
+
inner: {
|
|
7
|
+
useExistsInHasManyFilter: Typesafe.Type<boolean>;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/type-schema/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAG/C,eAAO,MAAM,cAAc;;;;;;;CAEzB,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.settingsSchema = void 0;
|
|
27
|
+
const Typesafe = __importStar(require("@contember/typesafe"));
|
|
28
|
+
exports.settingsSchema = Typesafe.partial({
|
|
29
|
+
useExistsInHasManyFilter: Typesafe.boolean,
|
|
30
|
+
});
|
|
31
|
+
const settingSchemaCheck = true;
|
|
32
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/type-schema/settings.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAA+C;AAGlC,QAAA,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC9C,wBAAwB,EAAE,QAAQ,CAAC,OAAO;CAC1C,CAAC,CAAA;AAEF,MAAM,kBAAkB,GAAwE,IAAI,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AclValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/AclValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,EAAgB,eAAe,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"AclValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/AclValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,EAAgB,eAAe,EAAE,MAAM,UAAU,CAAA;AAIxD,qBAAa,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK,CAAC,MAAM;IAEzC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,eAAe,EAAE;IAMtD,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,2BAA2B;IAmCnC,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,iBAAiB;CAYzB"}
|
|
@@ -4,7 +4,7 @@ exports.AclValidator = void 0;
|
|
|
4
4
|
const acl_1 = require("../acl");
|
|
5
5
|
const model_1 = require("../model");
|
|
6
6
|
const errors_1 = require("./errors");
|
|
7
|
-
const
|
|
7
|
+
const type_schema_1 = require("../type-schema");
|
|
8
8
|
class AclValidator {
|
|
9
9
|
constructor(model) {
|
|
10
10
|
this.model = model;
|
|
@@ -34,7 +34,7 @@ class AclValidator {
|
|
|
34
34
|
}
|
|
35
35
|
for (const inheritsFrom of inherits) {
|
|
36
36
|
if (!roles.includes(inheritsFrom)) {
|
|
37
|
-
errorBuilder.for(inheritsFrom).add('Referenced role not exists.');
|
|
37
|
+
errorBuilder.for(inheritsFrom).add('ACL_UNDEFINED_ROLE', 'Referenced role not exists.');
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -50,7 +50,7 @@ class AclValidator {
|
|
|
50
50
|
switch (variable.type) {
|
|
51
51
|
case 'entity':
|
|
52
52
|
if (!this.model.entities[variable.entityName]) {
|
|
53
|
-
errorBuilder.add(`Entity "${variable.entityName}" not found`);
|
|
53
|
+
errorBuilder.add('ACL_UNDEFINED_ENTITY', `Entity "${variable.entityName}" not found`);
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
@@ -62,7 +62,7 @@ class AclValidator {
|
|
|
62
62
|
continue;
|
|
63
63
|
}
|
|
64
64
|
if (!this.model.entities[entityName]) {
|
|
65
|
-
errorBuilder.add(`Entity ${entityName} not found`);
|
|
65
|
+
errorBuilder.add('ACL_UNDEFINED_ENTITY', `Entity ${entityName} not found`);
|
|
66
66
|
continue;
|
|
67
67
|
}
|
|
68
68
|
const entity = (0, model_1.getEntity)(this.model, entityName);
|
|
@@ -87,27 +87,27 @@ class AclValidator {
|
|
|
87
87
|
handleColumn: ctx => {
|
|
88
88
|
if (typeof ctx.value === 'string') {
|
|
89
89
|
if (!variables[ctx.value]) {
|
|
90
|
-
errorBuilder.for(...ctx.path).add(`Undefined variable ${ctx.value}`);
|
|
90
|
+
errorBuilder.for(...ctx.path).add('ACL_UNDEFINED_VARIABLE', `Undefined variable ${ctx.value}`);
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
else {
|
|
94
94
|
try {
|
|
95
|
-
(0,
|
|
95
|
+
(0, type_schema_1.conditionSchema)(ctx.column.type)(ctx.value);
|
|
96
96
|
}
|
|
97
97
|
catch (e) {
|
|
98
|
-
errorBuilder.for(...ctx.path).add(`Invalid condition (${e.message}): ${JSON.stringify(ctx.value)}`);
|
|
98
|
+
errorBuilder.for(...ctx.path).add('ACL_INVALID_CONDITION', `Invalid condition (${e.message}): ${JSON.stringify(ctx.value)}`);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
return ctx.value;
|
|
102
102
|
},
|
|
103
103
|
handleRelation: ctx => {
|
|
104
104
|
if (typeof ctx.value === 'string' && !variables[ctx.value]) {
|
|
105
|
-
errorBuilder.for(...ctx.path).add(`Undefined variable ${ctx.value}`);
|
|
105
|
+
errorBuilder.for(...ctx.path).add('ACL_UNDEFINED_VARIABLE', `Undefined variable ${ctx.value}`);
|
|
106
106
|
}
|
|
107
107
|
return ctx.value;
|
|
108
108
|
},
|
|
109
109
|
handleUndefinedField: ctx => {
|
|
110
|
-
errorBuilder.for(...ctx.path).add(`Undefined field ${ctx.name} on entity ${ctx.entity.name}`);
|
|
110
|
+
errorBuilder.for(...ctx.path).add('ACL_UNDEFINED_FIELD', `Undefined field ${ctx.name} on entity ${ctx.entity.name}`);
|
|
111
111
|
return ctx.value;
|
|
112
112
|
},
|
|
113
113
|
});
|
|
@@ -129,7 +129,7 @@ class AclValidator {
|
|
|
129
129
|
continue;
|
|
130
130
|
}
|
|
131
131
|
if (!entity.fields[field]) {
|
|
132
|
-
errorBuilder.add(`Field ${field} not found on entity ${entity.name}`);
|
|
132
|
+
errorBuilder.add('ACL_UNDEFINED_FIELD', `Field ${field} not found on entity ${entity.name}`);
|
|
133
133
|
}
|
|
134
134
|
this.validatePredicate(permissions[field], predicates, errorBuilder.for(field));
|
|
135
135
|
}
|
|
@@ -139,7 +139,7 @@ class AclValidator {
|
|
|
139
139
|
return;
|
|
140
140
|
}
|
|
141
141
|
if (!predicates[predicate]) {
|
|
142
|
-
errorBuilder.add(`Predicate ${predicate} not found`);
|
|
142
|
+
errorBuilder.add('ACL_UNDEFINED_PREDICATE', `Predicate ${predicate} not found`);
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AclValidator.js","sourceRoot":"","sources":["../../../src/validation/AclValidator.ts"],"names":[],"mappings":";;;AACA,gCAAqD;AACrD,oCAAoC;AACpC,qCAAwD;AACxD,
|
|
1
|
+
{"version":3,"file":"AclValidator.js","sourceRoot":"","sources":["../../../src/validation/AclValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MembershipResolver.d.ts","sourceRoot":"","sources":["../../../src/validation/MembershipResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"MembershipResolver.d.ts","sourceRoot":"","sources":["../../../src/validation/MembershipResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAM9C,qBAAa,kBAAkB;IAC9B,OAAc,eAAe;;MAAyD;IAEtF,OAAO,CACN,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,WAAW,EAAE,SAAS,GAAG,CAAC,UAAU,EAAE,EACtC,QAAQ,EAAE;QACT,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;KACjB,GACC,oBAAoB;IA+BvB,OAAO,CAAC,uBAAuB;CAyD/B;AAED,qBAAa,oBAAoB;aAEf,MAAM,EAAE,yBAAyB,EAAE;aACnC,WAAW,EAAE,gBAAgB,EAAE;gBAD/B,MAAM,EAAE,yBAAyB,EAAE,EACnC,WAAW,EAAE,gBAAgB,EAAE;CAGhD;AAED,qBAAa,yBAAyB;aAEpB,IAAI,EAAE,MAAM;aACZ,KAAK,EAAE,6BAA6B;aACpC,QAAQ,CAAC;gBAFT,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,6BAA6B,EACpC,QAAQ,CAAC,oBAAQ;CAGlC;AAED,oBAAY,6BAA6B;IACxC,cAAc,iBAAiB;IAC/B,kBAAkB,qBAAqB;IACvC,cAAc,kBAAkB;IAChC,gBAAgB,oBAAoB;CACpC;AAGD,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,SAAS,wBAAwB,EAAE,CAAA;CACvD"}
|
|
@@ -4,6 +4,7 @@ exports.MembershipValidationErrorType = exports.MembershipValidationError = expo
|
|
|
4
4
|
const schema_1 = require("@contember/schema");
|
|
5
5
|
const acl_1 = require("../acl");
|
|
6
6
|
const type_schema_1 = require("../type-schema");
|
|
7
|
+
const utils_1 = require("../utils");
|
|
7
8
|
class MembershipResolver {
|
|
8
9
|
resolve(acl, memberships, identity) {
|
|
9
10
|
const errors = [];
|
|
@@ -33,7 +34,6 @@ class MembershipResolver {
|
|
|
33
34
|
const errors = [];
|
|
34
35
|
const parsedVariables = [];
|
|
35
36
|
for (const [name, variable] of Object.entries(roleVariables)) {
|
|
36
|
-
const inputVariable = membership.variables.find(it => it.name === name);
|
|
37
37
|
if (variable.type === schema_1.Acl.VariableType.predefined) {
|
|
38
38
|
switch (variable.value) {
|
|
39
39
|
case 'identityID':
|
|
@@ -52,9 +52,15 @@ class MembershipResolver {
|
|
|
52
52
|
}
|
|
53
53
|
continue;
|
|
54
54
|
}
|
|
55
|
+
const inputVariable = membership.variables.find(it => it.name === name);
|
|
55
56
|
if (!inputVariable) {
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
if (variable.fallback) {
|
|
58
|
+
parsedVariables.push({ name, condition: variable.fallback });
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
errors.push(new MembershipValidationError(membership.role, MembershipValidationErrorType.VARIABLE_EMPTY, name));
|
|
62
|
+
parsedVariables.push({ name, condition: { never: true } });
|
|
63
|
+
}
|
|
58
64
|
continue;
|
|
59
65
|
}
|
|
60
66
|
if (variable.type === schema_1.Acl.VariableType.entity) {
|
|
@@ -73,6 +79,9 @@ class MembershipResolver {
|
|
|
73
79
|
parsedVariables.push({ name, condition: { never: true } });
|
|
74
80
|
}
|
|
75
81
|
}
|
|
82
|
+
else {
|
|
83
|
+
(0, utils_1.assertNever)(variable);
|
|
84
|
+
}
|
|
76
85
|
}
|
|
77
86
|
return [errors, parsedVariables];
|
|
78
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MembershipResolver.js","sourceRoot":"","sources":["../../../src/validation/MembershipResolver.ts"],"names":[],"mappings":";;;AAAA,8CAA8C;AAC9C,gCAAyC;AACzC,gDAAgD;
|
|
1
|
+
{"version":3,"file":"MembershipResolver.js","sourceRoot":"","sources":["../../../src/validation/MembershipResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/ModelValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAgB,eAAe,EAAE,MAAM,UAAU,CAAA;AAOxD,qBAAa,cAAc;IACd,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK,CAAC,MAAM;IAEzC,QAAQ,IAAI,eAAe,EAAE;IAQpC,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"ModelValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/ModelValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAgB,eAAe,EAAE,MAAM,UAAU,CAAA;AAOxD,qBAAa,cAAc;IACd,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK,CAAC,MAAM;IAEzC,QAAQ,IAAI,eAAe,EAAE;IAQpC,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;IAyHxB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,kBAAkB;CA6E1B"}
|
|
@@ -29,7 +29,7 @@ class ModelValidator {
|
|
|
29
29
|
for (const [entityName, entity] of Object.entries(entities)) {
|
|
30
30
|
const entityErrors = errors.for(entityName);
|
|
31
31
|
if (entity.name !== entityName) {
|
|
32
|
-
entityErrors.add(`Entity name "${entity.name}" does not match the name in a map "${entityName}"`);
|
|
32
|
+
entityErrors.add('MODEL_NAME_MISMATCH', `Entity name "${entity.name}" does not match the name in a map "${entityName}"`);
|
|
33
33
|
}
|
|
34
34
|
this.validateEntity(entity, entityErrors);
|
|
35
35
|
}
|
|
@@ -40,7 +40,7 @@ class ModelValidator {
|
|
|
40
40
|
const fieldErrors = errors.for(fieldName);
|
|
41
41
|
this.validateField(entity, field, fieldErrors);
|
|
42
42
|
if (field.name !== fieldName) {
|
|
43
|
-
fieldErrors.add(`Field name "${field.name}" does not match the name in a map "${fieldName}"`);
|
|
43
|
+
fieldErrors.add('MODEL_NAME_MISMATCH', `Field name "${field.name}" does not match the name in a map "${fieldName}"`);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
this.validateUniqueConstraints(entity.unique, new Set(Object.keys(entity.fields)), errors.for('unique'));
|
|
@@ -49,12 +49,12 @@ class ModelValidator {
|
|
|
49
49
|
for (const [constraintName, constraint] of Object.entries(uniqueConstraints)) {
|
|
50
50
|
const uniqueErrors = errors.for(constraintName);
|
|
51
51
|
if (constraint.name !== constraintName) {
|
|
52
|
-
uniqueErrors.add(`Constraint name ${constraint.name} does not match the name in a map "${constraintName}"`);
|
|
52
|
+
uniqueErrors.add('MODEL_NAME_MISMATCH', `Constraint name ${constraint.name} does not match the name in a map "${constraintName}"`);
|
|
53
53
|
continue;
|
|
54
54
|
}
|
|
55
55
|
for (const field of constraint.fields) {
|
|
56
56
|
if (!fields.has(field)) {
|
|
57
|
-
uniqueErrors.add(`Referenced field ${field} in a constraint does not exists`);
|
|
57
|
+
uniqueErrors.add('MODEL_UNDEFINED_FIELD', `Referenced field ${field} in a constraint does not exists`);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -64,6 +64,11 @@ class ModelValidator {
|
|
|
64
64
|
if (isRelation(field)) {
|
|
65
65
|
this.validateRelation(partialEntity, field, errors);
|
|
66
66
|
}
|
|
67
|
+
else {
|
|
68
|
+
if (field.sequence && field.nullable) {
|
|
69
|
+
errors.add('MODEL_INVALID_COLUMN_DEFINITION', 'Column with sequence cannot be nullable.');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
67
72
|
}
|
|
68
73
|
validateRelation(partialEntity, field, errors) {
|
|
69
74
|
var _a;
|
|
@@ -71,7 +76,7 @@ class ModelValidator {
|
|
|
71
76
|
const targetEntityName = field.target;
|
|
72
77
|
const targetEntity = this.model.entities[targetEntityName] || undefined;
|
|
73
78
|
if (!targetEntity) {
|
|
74
|
-
return errors.add(`Target entity ${targetEntityName} not found`);
|
|
79
|
+
return errors.add('MODEL_UNDEFINED_ENTITY', `Target entity ${targetEntityName} not found`);
|
|
75
80
|
}
|
|
76
81
|
if (((it) => 'orderBy' in it)(field)) {
|
|
77
82
|
(_a = field.orderBy) === null || _a === void 0 ? void 0 : _a.forEach(it => {
|
|
@@ -80,13 +85,13 @@ class ModelValidator {
|
|
|
80
85
|
const orderByField = entity.fields[it.path[i]];
|
|
81
86
|
const pathStr = it.path.slice(0, i + 1).join('.');
|
|
82
87
|
if (!orderByField) {
|
|
83
|
-
errors.add(`Invalid orderBy of ${entityName}::${field.name}: field ${pathStr} is not defined`);
|
|
88
|
+
errors.add('ACL_UNDEFINED_FIELD', `Invalid orderBy of ${entityName}::${field.name}: field ${pathStr} is not defined`);
|
|
84
89
|
return;
|
|
85
90
|
}
|
|
86
91
|
if (i + 1 < it.path.length) {
|
|
87
92
|
const targetEntity = (0, model_1.getTargetEntity)(this.model, entity, orderByField.name);
|
|
88
93
|
if (!targetEntity) {
|
|
89
|
-
errors.add(`Invalid orderBy of ${entityName}::${field.name}: field ${pathStr} is not a relation`);
|
|
94
|
+
errors.add('MODEL_RELATION_REQUIRED', `Invalid orderBy of ${entityName}::${field.name}: field ${pathStr} is not a relation`);
|
|
90
95
|
return;
|
|
91
96
|
}
|
|
92
97
|
entity = targetEntity;
|
|
@@ -96,16 +101,16 @@ class ModelValidator {
|
|
|
96
101
|
}
|
|
97
102
|
if (partialEntity.view) {
|
|
98
103
|
if (field.type === schema_1.Model.RelationType.ManyHasMany) {
|
|
99
|
-
return errors.add('Many-has-many relation is not allowed on a view entity.');
|
|
104
|
+
return errors.add('MODEL_INVALID_VIEW_USAGE', 'Many-has-many relation is not allowed on a view entity.');
|
|
100
105
|
}
|
|
101
106
|
if (!targetEntity.view &&
|
|
102
107
|
field.type === schema_1.Model.RelationType.OneHasMany) {
|
|
103
|
-
return errors.add('One-has-many relation fields on views must point to a view entity.');
|
|
108
|
+
return errors.add('MODEL_INVALID_VIEW_USAGE', 'One-has-many relation fields on views must point to a view entity.');
|
|
104
109
|
}
|
|
105
110
|
if (!targetEntity.view &&
|
|
106
111
|
field.type === schema_1.Model.RelationType.OneHasOne &&
|
|
107
112
|
!('joiningColumn' in field)) {
|
|
108
|
-
return errors.add('One-has-one relation fields on views must be owning or point to a view entity.');
|
|
113
|
+
return errors.add('MODEL_INVALID_VIEW_USAGE', 'One-has-one relation fields on views must be owning or point to a view entity.');
|
|
109
114
|
}
|
|
110
115
|
}
|
|
111
116
|
if ((0, model_1.isInverseRelation)(field)) {
|
|
@@ -113,120 +118,128 @@ class ModelValidator {
|
|
|
113
118
|
const targetField = targetEntity.fields[ownedBy];
|
|
114
119
|
const relationDescription = `Target relation ${targetEntityName}::${ownedBy}:`;
|
|
115
120
|
if (!targetField) {
|
|
116
|
-
return errors.add(`${relationDescription} not exists`);
|
|
121
|
+
return errors.add('MODEL_UNDEFINED_FIELD', `${relationDescription} not exists`);
|
|
117
122
|
}
|
|
118
123
|
if (!isRelation(targetField)) {
|
|
119
|
-
return errors.add(`${relationDescription} not a relation`);
|
|
124
|
+
return errors.add('MODEL_RELATION_REQUIRED', `${relationDescription} not a relation`);
|
|
120
125
|
}
|
|
121
126
|
if (targetField.target !== entityName) {
|
|
122
|
-
return errors.add(`${relationDescription} back reference to entity ${entityName} expected, but ${targetField.target} given`);
|
|
127
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} back reference to entity ${entityName} expected, but ${targetField.target} given`);
|
|
123
128
|
}
|
|
124
129
|
if (!(0, model_1.isOwningRelation)(targetField)) {
|
|
125
|
-
errors.add(`${relationDescription} not an owning relation`);
|
|
130
|
+
errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} not an owning relation`);
|
|
126
131
|
return;
|
|
127
132
|
}
|
|
128
133
|
if (!targetField.inversedBy) {
|
|
129
|
-
return errors.add(`${relationDescription} inverse relation is not set`);
|
|
134
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} inverse relation is not set`);
|
|
130
135
|
}
|
|
131
136
|
if (targetField.inversedBy !== field.name) {
|
|
132
|
-
return errors.add(`${relationDescription} back reference ${entityName}::${field.name} exepcted, ${targetField.target}::${targetField.inversedBy} given`);
|
|
137
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} back reference ${entityName}::${field.name} exepcted, ${targetField.target}::${targetField.inversedBy} given`);
|
|
133
138
|
}
|
|
134
139
|
if (field.type === schema_1.Model.RelationType.OneHasOne && targetField.type !== schema_1.Model.RelationType.OneHasOne) {
|
|
135
|
-
return errors.add(`${relationDescription} "OneHasOne" type expected, "${targetField.type}" given`);
|
|
140
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} "OneHasOne" type expected, "${targetField.type}" given`);
|
|
136
141
|
}
|
|
137
142
|
if (field.type === schema_1.Model.RelationType.OneHasMany && targetField.type !== schema_1.Model.RelationType.ManyHasOne) {
|
|
138
|
-
return errors.add(`${relationDescription} "ManyHasOne" type expected, "${targetField.type}" given`);
|
|
143
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} "ManyHasOne" type expected, "${targetField.type}" given`);
|
|
139
144
|
}
|
|
140
145
|
if (field.type === schema_1.Model.RelationType.ManyHasMany && targetField.type !== schema_1.Model.RelationType.ManyHasMany) {
|
|
141
|
-
return errors.add(`${relationDescription} "ManyHasMany" type expected, "${targetField.type}" given`);
|
|
146
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} "ManyHasMany" type expected, "${targetField.type}" given`);
|
|
142
147
|
}
|
|
143
148
|
}
|
|
144
149
|
else {
|
|
145
150
|
const inversedBy = field.inversedBy;
|
|
146
151
|
if (targetEntity.view) {
|
|
147
152
|
if ('joiningColumn' in field) {
|
|
148
|
-
return errors.add(`View entity ${targetEntity.name} cannot be referenced from an owning relation. Try switching the owning side.`);
|
|
153
|
+
return errors.add('MODEL_INVALID_VIEW_USAGE', `View entity ${targetEntity.name} cannot be referenced from an owning relation. Try switching the owning side.`);
|
|
149
154
|
}
|
|
150
155
|
}
|
|
151
156
|
if (inversedBy) {
|
|
152
157
|
const targetField = targetEntity.fields[inversedBy];
|
|
153
158
|
const relationDescription = `Target relation ${targetEntityName}::${inversedBy}:`;
|
|
154
159
|
if (!targetField) {
|
|
155
|
-
return errors.add(`${relationDescription} not exists`);
|
|
160
|
+
return errors.add('MODEL_UNDEFINED_FIELD', `${relationDescription} not exists`);
|
|
156
161
|
}
|
|
157
162
|
if (!isRelation(targetField)) {
|
|
158
|
-
return errors.add(`${relationDescription} not a relation`);
|
|
163
|
+
return errors.add('MODEL_RELATION_REQUIRED', `${relationDescription} not a relation`);
|
|
159
164
|
}
|
|
160
165
|
if (targetField.target !== entityName) {
|
|
161
|
-
return errors.add(`${relationDescription} back reference to entity ${entityName} expected, but ${targetField.target} given`);
|
|
166
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} back reference to entity ${entityName} expected, but ${targetField.target} given`);
|
|
162
167
|
}
|
|
163
168
|
if (!(0, model_1.isInverseRelation)(targetField)) {
|
|
164
|
-
return errors.add(`${relationDescription} not an inverse relation`);
|
|
169
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} not an inverse relation`);
|
|
165
170
|
}
|
|
166
171
|
if (!targetField.ownedBy) {
|
|
167
|
-
return errors.add(`${relationDescription} owning relation is not set`);
|
|
172
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} owning relation is not set`);
|
|
168
173
|
}
|
|
169
174
|
if (targetField.ownedBy !== field.name) {
|
|
170
|
-
return errors.add(`${relationDescription} back reference ${entityName}::${field.name} exepcted, ${targetField.target}::${targetField.ownedBy} given`);
|
|
175
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} back reference ${entityName}::${field.name} exepcted, ${targetField.target}::${targetField.ownedBy} given`);
|
|
171
176
|
}
|
|
172
177
|
if (field.type === schema_1.Model.RelationType.OneHasOne && targetField.type !== schema_1.Model.RelationType.OneHasOne) {
|
|
173
|
-
return errors.add(`${relationDescription} "OneHasOne" type expected, "${targetField.type}" given`);
|
|
178
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} "OneHasOne" type expected, "${targetField.type}" given`);
|
|
174
179
|
}
|
|
175
180
|
if (field.type === schema_1.Model.RelationType.ManyHasOne && targetField.type !== schema_1.Model.RelationType.OneHasMany) {
|
|
176
|
-
return errors.add(`${relationDescription} "ManyHasOne" type expected, "${targetField.type}" given`);
|
|
181
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} "ManyHasOne" type expected, "${targetField.type}" given`);
|
|
177
182
|
}
|
|
178
183
|
if (field.type === schema_1.Model.RelationType.ManyHasMany && targetField.type !== schema_1.Model.RelationType.ManyHasMany) {
|
|
179
|
-
return errors.add(`${relationDescription} "ManyHasMany" type expected, "${targetField.type}" given`);
|
|
184
|
+
return errors.add('MODEL_INVALID_RELATION_DEFINITION', `${relationDescription} "ManyHasMany" type expected, "${targetField.type}" given`);
|
|
180
185
|
}
|
|
181
186
|
}
|
|
182
187
|
}
|
|
183
188
|
}
|
|
184
189
|
validateIdentifier(value, errorBuilder) {
|
|
185
190
|
if (!value.match(IDENTIFIER_PATTERN)) {
|
|
186
|
-
return errorBuilder.add(`${value} must match pattern ${IDENTIFIER_PATTERN.source}`);
|
|
191
|
+
return errorBuilder.add('MODEL_INVALID_IDENTIFIER', `${value} must match pattern ${IDENTIFIER_PATTERN.source}`);
|
|
187
192
|
}
|
|
188
193
|
if (RESERVED_WORDS.includes(value)) {
|
|
189
|
-
errorBuilder.add(`${value} is reserved word`);
|
|
194
|
+
errorBuilder.add('MODEL_INVALID_IDENTIFIER', `${value} is reserved word`);
|
|
190
195
|
}
|
|
191
196
|
}
|
|
192
197
|
validateCollisions(entities, errorBuilder) {
|
|
193
|
-
const
|
|
198
|
+
const relationNames = {};
|
|
194
199
|
const aliasedTypes = new Map();
|
|
200
|
+
const entityNames = new Set(entities.map(it => it.name));
|
|
195
201
|
for (const entity of entities) {
|
|
196
|
-
const description = `entity ${entity.name}`;
|
|
197
|
-
if (
|
|
202
|
+
const description = `table name ${entity.tableName} of entity ${entity.name}`;
|
|
203
|
+
if (relationNames[entity.tableName]) {
|
|
198
204
|
errorBuilder
|
|
199
205
|
.for(entity.name)
|
|
200
|
-
.add(
|
|
206
|
+
.add('MODEL_NAME_COLLISION', `${description} collides with a ${relationNames[entity.tableName]}`);
|
|
201
207
|
}
|
|
202
208
|
else {
|
|
203
|
-
|
|
209
|
+
relationNames[entity.tableName] = description;
|
|
210
|
+
}
|
|
211
|
+
if (entity.name.endsWith('Meta')) {
|
|
212
|
+
const baseName = entity.name.substring(0, entity.name.length - 4);
|
|
213
|
+
if (entityNames.has(baseName)) {
|
|
214
|
+
errorBuilder.for(entity.name)
|
|
215
|
+
.add('MODEL_NAME_COLLISION', `entity ${entity.name} collides with entity ${baseName}, because a GraphQL type with "Meta" suffix is created for every entity`);
|
|
216
|
+
}
|
|
204
217
|
}
|
|
205
218
|
}
|
|
206
219
|
for (const entity of entities) {
|
|
207
220
|
const entityErrorBuilder = errorBuilder.for(entity.name);
|
|
208
221
|
(0, model_1.acceptEveryFieldVisitor)(this.model, entity, {
|
|
209
|
-
visitManyHasManyOwning: (entity, relation) => {
|
|
222
|
+
visitManyHasManyOwning: ({ entity, relation }) => {
|
|
210
223
|
const joiningTable = relation.joiningTable;
|
|
211
|
-
const description = `relation ${entity.name}::${relation.name}`;
|
|
212
|
-
if (
|
|
224
|
+
const description = `joining table name ${joiningTable.tableName} of relation ${entity.name}::${relation.name}`;
|
|
225
|
+
if (relationNames[joiningTable.tableName]) {
|
|
213
226
|
entityErrorBuilder
|
|
214
227
|
.for(relation.name)
|
|
215
|
-
.add(
|
|
228
|
+
.add('MODEL_NAME_COLLISION', `${description} collides with a ${relationNames[joiningTable.tableName]}.` +
|
|
216
229
|
'Consider using plural for a relation name or change the joining table name using .joiningTable(...) in schema definition.');
|
|
217
230
|
}
|
|
218
231
|
else {
|
|
219
|
-
|
|
232
|
+
relationNames[joiningTable.tableName] = description;
|
|
220
233
|
}
|
|
221
234
|
},
|
|
222
|
-
visitColumn: (entity, column) => {
|
|
235
|
+
visitColumn: ({ entity, column }) => {
|
|
223
236
|
if (!column.typeAlias) {
|
|
224
237
|
return;
|
|
225
238
|
}
|
|
226
239
|
if (aliasedTypes.has(column.typeAlias) && aliasedTypes.get(column.typeAlias) !== column.type) {
|
|
227
240
|
errorBuilder
|
|
228
241
|
.for(column.name)
|
|
229
|
-
.add(`Type alias ${column.typeAlias} already exists for base type ${column.type}`);
|
|
242
|
+
.add('MODEL_NAME_COLLISION', `Type alias ${column.typeAlias} already exists for base type ${column.type}`);
|
|
230
243
|
}
|
|
231
244
|
aliasedTypes.set(column.typeAlias, column.type);
|
|
232
245
|
},
|
|
@@ -237,6 +250,27 @@ class ModelValidator {
|
|
|
237
250
|
visitManyHasOne: () => { },
|
|
238
251
|
});
|
|
239
252
|
}
|
|
253
|
+
for (const entity of entities) {
|
|
254
|
+
const entityErrorBuilder = errorBuilder.for(entity.name);
|
|
255
|
+
for (const index of Object.values(entity.indexes)) {
|
|
256
|
+
const description = `index name ${index.name} of entity ${entity.name}`;
|
|
257
|
+
if (relationNames[index.name]) {
|
|
258
|
+
entityErrorBuilder.add('MODEL_NAME_COLLISION', `${description} collides with ${relationNames[index.name]}`);
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
relationNames[index.name] = description;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
for (const unique of Object.values(entity.unique)) {
|
|
265
|
+
const description = `unique index name ${unique.name} of entity ${entity.name}`;
|
|
266
|
+
if (relationNames[unique.name]) {
|
|
267
|
+
entityErrorBuilder.add('MODEL_NAME_COLLISION', `${description} collides with ${relationNames[unique.name]}`);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
relationNames[unique.name] = description;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
240
274
|
}
|
|
241
275
|
}
|
|
242
276
|
exports.ModelValidator = ModelValidator;
|