@contember/schema-utils 1.1.0-alpha.5 → 1.1.0-alpha.6

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 (75) hide show
  1. package/dist/src/acl/AllowAllPermissionFactory.d.ts.map +1 -1
  2. package/dist/src/acl/AllowAllPermissionFactory.js.map +1 -1
  3. package/dist/src/acl/index.js +5 -1
  4. package/dist/src/acl/index.js.map +1 -1
  5. package/dist/src/dataUtils.d.ts +2 -2
  6. package/dist/src/dataUtils.d.ts.map +1 -1
  7. package/dist/src/dataUtils.js +1 -1
  8. package/dist/src/dataUtils.js.map +1 -1
  9. package/dist/src/index.d.ts +2 -0
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/index.js +25 -2
  12. package/dist/src/index.js.map +1 -1
  13. package/dist/src/model/NamingHelper.d.ts +1 -1
  14. package/dist/src/model/NamingHelper.d.ts.map +1 -1
  15. package/dist/src/model/NamingHelper.js.map +1 -1
  16. package/dist/src/model/index.js +5 -1
  17. package/dist/src/model/index.js.map +1 -1
  18. package/dist/src/tsconfig.tsbuildinfo +1 -1
  19. package/dist/src/type-schema/acl.d.ts +8 -0
  20. package/dist/src/type-schema/acl.d.ts.map +1 -0
  21. package/dist/src/type-schema/acl.js +88 -0
  22. package/dist/src/type-schema/acl.js.map +1 -0
  23. package/dist/src/type-schema/index.d.ts +4 -0
  24. package/dist/src/type-schema/index.d.ts.map +1 -0
  25. package/dist/src/type-schema/index.js +20 -0
  26. package/dist/src/type-schema/index.js.map +1 -0
  27. package/dist/src/type-schema/model.d.ts +30 -0
  28. package/dist/src/type-schema/model.d.ts.map +1 -0
  29. package/dist/src/type-schema/model.js +148 -0
  30. package/dist/src/type-schema/model.js.map +1 -0
  31. package/dist/src/type-schema/validation.d.ts +15 -0
  32. package/dist/src/type-schema/validation.d.ts.map +1 -0
  33. package/dist/src/type-schema/validation.js +95 -0
  34. package/dist/src/type-schema/validation.js.map +1 -0
  35. package/dist/src/utils/index.js +5 -1
  36. package/dist/src/utils/index.js.map +1 -1
  37. package/dist/src/validation/AclValidator.d.ts +1 -2
  38. package/dist/src/validation/AclValidator.d.ts.map +1 -1
  39. package/dist/src/validation/AclValidator.js +22 -197
  40. package/dist/src/validation/AclValidator.js.map +1 -1
  41. package/dist/src/validation/ModelValidator.d.ts +1 -1
  42. package/dist/src/validation/ModelValidator.d.ts.map +1 -1
  43. package/dist/src/validation/ModelValidator.js +48 -219
  44. package/dist/src/validation/ModelValidator.js.map +1 -1
  45. package/dist/src/validation/SchemaValidator.d.ts.map +1 -1
  46. package/dist/src/validation/SchemaValidator.js +5 -19
  47. package/dist/src/validation/SchemaValidator.js.map +1 -1
  48. package/dist/src/validation/ValidationValidator.d.ts +1 -3
  49. package/dist/src/validation/ValidationValidator.d.ts.map +1 -1
  50. package/dist/src/validation/ValidationValidator.js +28 -201
  51. package/dist/src/validation/ValidationValidator.js.map +1 -1
  52. package/dist/src/validation/index.d.ts +2 -0
  53. package/dist/src/validation/index.d.ts.map +1 -1
  54. package/dist/src/validation/index.js +7 -1
  55. package/dist/src/validation/index.js.map +1 -1
  56. package/package.json +3 -2
  57. package/src/acl/AllowAllPermissionFactory.ts +2 -2
  58. package/src/dataUtils.ts +3 -3
  59. package/src/index.ts +8 -0
  60. package/src/model/NamingHelper.ts +1 -1
  61. package/src/tsconfig.json +3 -0
  62. package/src/type-schema/acl.ts +100 -0
  63. package/src/type-schema/index.ts +3 -0
  64. package/src/type-schema/model.ts +173 -0
  65. package/src/type-schema/validation.ts +100 -0
  66. package/src/validation/AclValidator.ts +42 -239
  67. package/src/validation/ModelValidator.ts +63 -263
  68. package/src/validation/SchemaValidator.ts +6 -21
  69. package/src/validation/ValidationValidator.ts +41 -222
  70. package/src/validation/index.ts +2 -0
  71. package/dist/src/validation/utils.d.ts +0 -18
  72. package/dist/src/validation/utils.d.ts.map +0 -1
  73. package/dist/src/validation/utils.js +0 -36
  74. package/dist/src/validation/utils.js.map +0 -1
  75. package/src/validation/utils.ts +0 -45
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ValidationValidator = void 0;
4
- const schema_1 = require("@contember/schema");
5
4
  const errors_1 = require("./errors");
6
- const utils_1 = require("./utils");
7
5
  const model_1 = require("../model");
8
6
  class ValidationValidator {
9
7
  constructor(model) {
@@ -11,32 +9,19 @@ class ValidationValidator {
11
9
  }
12
10
  validate(schema) {
13
11
  const errorBuilder = new errors_1.ErrorBuilder([], ['validation']);
14
- let validSchema;
15
- if (!(0, utils_1.isObject)(schema)) {
16
- errorBuilder.add('Must be an object');
17
- validSchema = { roles: {} };
18
- }
19
- else {
20
- validSchema = {};
21
- for (const entityName in schema) {
22
- const entity = this.model.entities[entityName];
23
- const entityErrorBuilder = errorBuilder.for(entityName);
24
- if (!entity) {
25
- entityErrorBuilder.add('Entity not found');
26
- }
27
- else {
28
- validSchema[entityName] = this.validateEntityRules(entityErrorBuilder, schema[entityName], entity);
29
- }
12
+ for (const entityName in schema) {
13
+ const entity = this.model.entities[entityName];
14
+ const entityErrorBuilder = errorBuilder.for(entityName);
15
+ if (!entity) {
16
+ entityErrorBuilder.add('Entity not found');
17
+ }
18
+ else {
19
+ this.validateEntityRules(entityErrorBuilder, schema[entityName], entity);
30
20
  }
31
21
  }
32
- return [validSchema, errorBuilder.errors];
22
+ return errorBuilder.errors;
33
23
  }
34
24
  validateEntityRules(errorBuilder, entitySchema, entity) {
35
- if (!(0, utils_1.isObject)(entitySchema)) {
36
- errorBuilder.add('Must be an object');
37
- return {};
38
- }
39
- const validRules = {};
40
25
  for (const fieldName in entitySchema) {
41
26
  const field = entity.fields[fieldName];
42
27
  const fieldErrorBuilder = errorBuilder.for(fieldName);
@@ -44,30 +29,16 @@ class ValidationValidator {
44
29
  fieldErrorBuilder.add('Field not found');
45
30
  }
46
31
  else {
47
- validRules[fieldName] = this.validateFieldRules(fieldErrorBuilder, entitySchema[fieldName], entity, field);
32
+ this.validateFieldRules(fieldErrorBuilder, entitySchema[fieldName], entity, field);
48
33
  }
49
34
  }
50
- return validRules;
51
35
  }
52
36
  validateFieldRules(errorBuilder, fieldSchema, entity, field) {
53
- if (!(0, utils_1.isArray)(fieldSchema)) {
54
- errorBuilder.add('Must be an array');
55
- return [];
56
- }
57
- const validRules = [];
58
37
  for (const i in fieldSchema) {
59
- const rule = this.validateFieldRule(errorBuilder.for(i), fieldSchema[i], entity, field);
60
- if (rule !== undefined) {
61
- validRules.push(rule);
62
- }
38
+ this.validateFieldRule(errorBuilder.for(i), fieldSchema[i], entity, field);
63
39
  }
64
- return validRules;
65
40
  }
66
41
  validateFieldRule(errorBuilder, rule, entity, field) {
67
- if (!(0, utils_1.isObject)(rule)) {
68
- errorBuilder.add('Must be an object');
69
- return undefined;
70
- }
71
42
  const errorMessage = (0, model_1.acceptFieldVisitor)(this.model, entity, field, {
72
43
  visitColumn: () => null,
73
44
  visitHasOne: () => null,
@@ -76,144 +47,43 @@ class ValidationValidator {
76
47
  },
77
48
  });
78
49
  if (errorMessage) {
79
- errorBuilder.add(errorMessage);
80
- return undefined;
50
+ return errorBuilder.add(errorMessage);
81
51
  }
82
- const validMessage = this.validateFieldRuleMessage(errorBuilder.for('message'), rule.message);
83
- if (!validMessage) {
84
- return undefined;
85
- }
86
- const validValidator = this.validateValidator(errorBuilder.for('validator'), rule.validator, entity, field);
87
- if (!validValidator) {
88
- return undefined;
89
- }
90
- return { message: validMessage, validator: validValidator };
91
- }
92
- validateFieldRuleMessage(errorBuilder, message) {
93
- if (!(0, utils_1.isObject)(message)) {
94
- errorBuilder.add('Must be an object');
95
- return undefined;
96
- }
97
- if (!(0, utils_1.hasStringProperty)(message, 'text')) {
98
- errorBuilder.for('text').add('Must be a string');
99
- return undefined;
100
- }
101
- let validMessage = { text: message.text };
102
- if (message.parameters) {
103
- if (!(0, utils_1.hasArrayProperty)(message, 'parameters')) {
104
- errorBuilder.for('parameters').add('Must be an array');
105
- return undefined;
106
- }
107
- validMessage.parameters = message.parameters;
108
- }
109
- return validMessage;
52
+ this.validateValidator(errorBuilder.for('validator'), rule.validator, entity, field);
110
53
  }
111
54
  validateValidator(errorBuilder, validator, entity, field) {
112
- if (!(0, utils_1.isObject)(validator)) {
113
- errorBuilder.add('Must be an object');
114
- return undefined;
115
- }
116
55
  const validatorCast = validator;
117
56
  switch (validatorCast.operation) {
118
57
  case 'and':
119
- const andArgs = validatorCast.args
120
- .map((it, index) => this.validateValidatorArgument(errorBuilder.for(String(index)), it, entity, field))
121
- .filter((it) => it !== undefined);
122
- return { operation: 'and', args: andArgs };
123
58
  case 'or':
124
- const orArgs = validatorCast.args
125
- .map((it, index) => this.validateValidatorArgument(errorBuilder.for(String(index)), it, entity, field))
126
- .filter((it) => it !== undefined);
127
- return { operation: 'or', args: orArgs };
59
+ return validatorCast.args
60
+ .forEach((it, index) => this.validateValidatorArgument(errorBuilder.for(String(index)), it, entity, field));
128
61
  case 'conditional':
129
- const argA = this.validateValidatorArgument(errorBuilder.for('condition'), validatorCast.args[0], entity, field);
130
- const argB = this.validateValidatorArgument(errorBuilder.for('rule'), validatorCast.args[1], entity, field);
131
- if (argA === undefined || argB === undefined) {
132
- return undefined;
133
- }
134
- return { operation: 'conditional', args: [argA, argB] };
62
+ this.validateValidatorArgument(errorBuilder.for('condition'), validatorCast.args[0], entity, field);
63
+ this.validateValidatorArgument(errorBuilder.for('rule'), validatorCast.args[1], entity, field);
64
+ return;
135
65
  case 'pattern':
136
- const patternLiteral = this.validateLiteralArgument(errorBuilder, validatorCast.args[0]);
137
- if (!patternLiteral) {
138
- return undefined;
139
- }
140
- if (!(0, utils_1.isArray)(patternLiteral.value) ||
141
- patternLiteral.value.length !== 2 ||
142
- typeof patternLiteral.value[0] !== 'string' ||
143
- typeof patternLiteral.value[1] !== 'string') {
144
- errorBuilder.add('Invalid pattern value');
145
- return undefined;
146
- }
147
- return { operation: 'pattern', args: [patternLiteral] };
148
66
  case 'lengthRange':
149
- const lengthArgA = this.validateLiteralArgument(errorBuilder.for('min'), validatorCast.args[0]);
150
- const lengthArgB = this.validateLiteralArgument(errorBuilder.for('max'), validatorCast.args[1]);
151
- if (lengthArgA === undefined || lengthArgB === undefined) {
152
- return undefined;
153
- }
154
- return {
155
- operation: 'lengthRange',
156
- args: [lengthArgA, lengthArgB],
157
- };
158
67
  case 'range':
159
- const rangeArgA = this.validateLiteralArgument(errorBuilder.for('min'), validatorCast.args[0]);
160
- const rangeArgB = this.validateLiteralArgument(errorBuilder.for('max'), validatorCast.args[1]);
161
- if (rangeArgA === undefined || rangeArgB === undefined) {
162
- return undefined;
163
- }
164
- return {
165
- operation: 'range',
166
- args: [rangeArgA, rangeArgB],
167
- };
168
68
  case 'equals':
169
- const eqArg = this.validateLiteralArgument(errorBuilder, validatorCast.args[0]);
170
- if (eqArg === undefined) {
171
- return undefined;
172
- }
173
- return {
174
- operation: 'equals',
175
- args: [eqArg],
176
- };
177
- case 'not':
178
- const notArg = this.validateValidatorArgument(errorBuilder, validatorCast.args[0], entity, field);
179
- if (notArg === undefined) {
180
- return undefined;
181
- }
182
- return { operation: 'not', args: [notArg] };
183
69
  case 'empty':
184
- return { operation: 'empty', args: [] };
185
70
  case 'defined':
186
- return { operation: 'defined', args: [] };
71
+ return;
72
+ case 'not':
73
+ return this.validateValidatorArgument(errorBuilder, validatorCast.args[0], entity, field);
187
74
  case 'inContext':
188
75
  const pathArgResult = this.validatePathArgument(errorBuilder.for('path'), validatorCast.args[0], entity);
189
76
  if (pathArgResult === undefined) {
190
77
  return undefined;
191
78
  }
192
- const [pathArg, inField] = pathArgResult;
193
- const inValidatorArg = this.validateValidatorArgument(errorBuilder.for('validator'), validatorCast.args[1], entity, inField);
194
- if (inValidatorArg === undefined) {
195
- return undefined;
196
- }
197
- return { operation: 'inContext', args: [pathArg, inValidatorArg] };
79
+ return this.validateValidatorArgument(errorBuilder.for('validator'), validatorCast.args[1], entity, pathArgResult);
198
80
  case 'every':
199
- const everyArg = this.validateValidatorArgument(errorBuilder, validatorCast.args[0], entity, field);
200
- if (everyArg === undefined) {
201
- return undefined;
202
- }
203
- return { operation: 'every', args: [everyArg] };
204
81
  case 'any':
205
- const anyArg = this.validateValidatorArgument(errorBuilder, validatorCast.args[0], entity, field);
206
- if (anyArg === undefined) {
207
- return undefined;
208
- }
209
- return { operation: 'any', args: [anyArg] };
82
+ return this.validateValidatorArgument(errorBuilder, validatorCast.args[0], entity, field);
210
83
  case 'filter':
211
- const filterArgA = this.validateValidatorArgument(errorBuilder.for('filter'), validatorCast.args[0], entity, field);
212
- const filterArgB = this.validateValidatorArgument(errorBuilder.for('validator'), validatorCast.args[1], entity, field);
213
- if (filterArgA === undefined || filterArgB === undefined) {
214
- return undefined;
215
- }
216
- return { operation: 'filter', args: [filterArgA, filterArgB] };
84
+ this.validateValidatorArgument(errorBuilder.for('filter'), validatorCast.args[0], entity, field);
85
+ this.validateValidatorArgument(errorBuilder.for('validator'), validatorCast.args[1], entity, field);
86
+ return;
217
87
  default:
218
88
  ((_) => {
219
89
  errorBuilder.for('operation', `Operation ${validatorCast.operation} is not an valid option`);
@@ -221,52 +91,9 @@ class ValidationValidator {
221
91
  }
222
92
  }
223
93
  validateValidatorArgument(errorBuilder, argument, entity, field) {
224
- if (!(0, utils_1.isObject)(argument)) {
225
- errorBuilder.add('Must be an object');
226
- return undefined;
227
- }
228
- if (!(0, utils_1.hasStringProperty)(argument, 'type') || argument.type !== schema_1.Validation.ArgumentType.validator) {
229
- errorBuilder.for('type').add(`Invalid value ${argument.type}`);
230
- return undefined;
231
- }
232
- const validator = this.validateValidator(errorBuilder.for('validator'), argument.validator, entity, field);
233
- if (!validator) {
234
- return undefined;
235
- }
236
- return { validator, type: argument.type };
237
- }
238
- validateLiteralArgument(errorBuilder, argument) {
239
- if (!(0, utils_1.isObject)(argument)) {
240
- errorBuilder.add('Must be an object');
241
- return undefined;
242
- }
243
- if (!(0, utils_1.hasStringProperty)(argument, 'type') || argument.type !== schema_1.Validation.ArgumentType.literal) {
244
- errorBuilder.for('type').add(`Invalid value ${argument.type}`);
245
- return undefined;
246
- }
247
- if (!('value' in argument)) {
248
- errorBuilder.for('value').add('Undefined literal value');
249
- return undefined;
250
- }
251
- return { type: argument.type, value: argument.value };
94
+ this.validateValidator(errorBuilder.for('validator'), argument.validator, entity, field);
252
95
  }
253
96
  validatePathArgument(errorBuilder, argument, entity) {
254
- if (!(0, utils_1.isObject)(argument)) {
255
- errorBuilder.add('Must be an object');
256
- return undefined;
257
- }
258
- if (!(0, utils_1.hasStringProperty)(argument, 'type') || argument.type !== schema_1.Validation.ArgumentType.path) {
259
- errorBuilder.for('type').add(`Invalid value ${argument.type}`);
260
- return undefined;
261
- }
262
- if (!(0, utils_1.hasArrayProperty)(argument, 'path')) {
263
- errorBuilder.add('Undefined path');
264
- return undefined;
265
- }
266
- if (!(0, utils_1.everyIs)(argument.path, (it) => typeof it === 'string')) {
267
- errorBuilder.add('Invalid path');
268
- return undefined;
269
- }
270
97
  const isRelation = (0, model_1.acceptFieldVisitor)(this.model, entity, argument.path[0], {
271
98
  visitColumn: () => false,
272
99
  visitRelation: () => true,
@@ -275,7 +102,7 @@ class ValidationValidator {
275
102
  errorBuilder.add('Rules depending on relations are currently not supported.');
276
103
  return undefined;
277
104
  }
278
- return [{ type: argument.type, path: argument.path }, entity.fields[argument.path[0]]];
105
+ return entity.fields[argument.path[0]];
279
106
  }
280
107
  }
281
108
  exports.ValidationValidator = ValidationValidator;
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationValidator.js","sourceRoot":"","sources":["../../../src/validation/ValidationValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ValidationValidator.js","sourceRoot":"","sources":["../../../src/validation/ValidationValidator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export * from './AclValidator';
2
+ export * from './ModelValidator';
3
+ export * from './ValidationValidator';
2
4
  export * from './errors';
3
5
  export * from './SchemaValidator';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA"}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -11,6 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./AclValidator"), exports);
18
+ __exportStar(require("./ModelValidator"), exports);
19
+ __exportStar(require("./ValidationValidator"), exports);
14
20
  __exportStar(require("./errors"), exports);
15
21
  __exportStar(require("./SchemaValidator"), exports);
16
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA8B;AAC9B,2CAAwB;AACxB,oDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,mDAAgC;AAChC,wDAAqC;AACrC,2CAAwB;AACxB,oDAAiC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/schema-utils",
3
- "version": "1.1.0-alpha.5",
3
+ "version": "1.1.0-alpha.6",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/src/index.js",
6
6
  "typings": "dist/src/index.d.ts",
@@ -8,7 +8,8 @@
8
8
  "test": "echo 'No tests'"
9
9
  },
10
10
  "dependencies": {
11
- "@contember/schema": "^1.1.0-alpha.5"
11
+ "@contember/schema": "^1.1.0-alpha.6",
12
+ "@contember/typesafe": "^1.1.0-alpha.6"
12
13
  },
13
14
  "devDependencies": {
14
15
  "@types/node": "^17.0.5"
@@ -1,4 +1,4 @@
1
- import { Acl, Model } from '@contember/schema'
1
+ import { Acl, Model, Writable } from '@contember/schema'
2
2
 
3
3
  export class AllowAllPermissionFactory {
4
4
  constructor(
@@ -11,7 +11,7 @@ export class AllowAllPermissionFactory {
11
11
  ) {}
12
12
 
13
13
  create(schema: Pick<Model.Schema, 'entities'>, allowCustomPrimary = false): Acl.Permissions {
14
- const permissions: Acl.Permissions = {}
14
+ const permissions: Writable<Acl.Permissions> = {}
15
15
  for (let entityName in schema.entities) {
16
16
  if (!schema.entities.hasOwnProperty(entityName)) {
17
17
  continue
package/src/dataUtils.ts CHANGED
@@ -37,11 +37,11 @@ export const resolveDefaultValue = (column: Model.AnyColumn, providers: Pick<Pro
37
37
  throw new NoDataError(`No data for column ${column.name}`)
38
38
  }
39
39
 
40
- export const resolvePrimaryGenerator = (column: Model.AnyColumn, providers: Providers): (() => Input.PrimaryValue) => {
40
+ export const resolvePrimaryGenerator = (column: Model.AnyColumn, providers: Providers): (() => Input.PrimaryValue | undefined) => {
41
41
  if (column.type === Model.ColumnType.Uuid) {
42
42
  return providers.uuid
43
43
  }
44
- throw new Error('not implemented')
44
+ return () => undefined
45
45
  }
46
46
 
47
47
  export const resolveColumnValue = (
@@ -55,7 +55,7 @@ export const resolveColumnValue = (
55
55
  input: Input.ColumnValue | undefined
56
56
  },
57
57
  providers: Providers,
58
- ): Value.AtomicValue => {
58
+ ): Value.AtomicValue | undefined => {
59
59
  if (input !== undefined) {
60
60
  return input as Value.AtomicValue
61
61
  }
package/src/index.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { Schema } from '@contember/schema'
2
2
  import { emptyModelSchema } from './model'
3
+ import * as Typesafe from '@contember/typesafe'
4
+ import { aclSchema, modelSchema, validationSchema } from './type-schema'
3
5
 
4
6
  export * from './model'
5
7
  export * from './acl'
@@ -14,3 +16,9 @@ export const emptySchema: Schema = {
14
16
  acl: { roles: {} },
15
17
  validation: {},
16
18
  }
19
+
20
+ export const schemaType: Typesafe.Type<Schema> = Typesafe.object({
21
+ model: modelSchema,
22
+ acl: aclSchema,
23
+ validation: validationSchema,
24
+ })
@@ -10,7 +10,7 @@ export class NamingHelper {
10
10
  return 'fk_' + fromTable + '_' + fromColumn + '_' + uniqueSuffix.slice(0, 6)
11
11
  }
12
12
 
13
- public static createUniqueConstraintName = (entityName: string, fields: string[]): string => {
13
+ public static createUniqueConstraintName = (entityName: string, fields: readonly string[]): string => {
14
14
  const uniqueSuffix = crypto
15
15
  .createHash('sha256')
16
16
  .update(JSON.stringify([entityName, ...fields]), 'ascii')
package/src/tsconfig.json CHANGED
@@ -7,6 +7,9 @@
7
7
  "references": [
8
8
  {
9
9
  "path": "../../schema/src"
10
+ },
11
+ {
12
+ "path": "../../typesafe/src"
10
13
  }
11
14
  ]
12
15
  }
@@ -0,0 +1,100 @@
1
+ import { Acl, Model } from '@contember/schema'
2
+ import * as Typesafe from '@contember/typesafe'
3
+
4
+ const tenantPermissionsSchema = Typesafe.partial({
5
+ invite: Typesafe.boolean,
6
+ unmanagedInvite: Typesafe.boolean,
7
+ manage: Typesafe.record(Typesafe.string, Typesafe.partial({
8
+ variables: Typesafe.union(
9
+ Typesafe.literal(true),
10
+ Typesafe.record(
11
+ Typesafe.string,
12
+ Typesafe.union(Typesafe.literal(true), Typesafe.string),
13
+ ),
14
+ ),
15
+ })),
16
+ })
17
+ const tenantSchemaCheck: Typesafe.Equals<Acl.TenantPermissions, ReturnType<typeof tenantPermissionsSchema>> = true
18
+
19
+ const systemPermissionsSchema = Typesafe.partial({
20
+ history: Typesafe.union(Typesafe.boolean, Typesafe.enumeration('any', 'none')),
21
+ migrate: Typesafe.boolean,
22
+ assumeIdentity: Typesafe.boolean,
23
+ })
24
+ const systemSchemaCheck: Typesafe.Equals<Acl.SystemPermissions, ReturnType<typeof systemPermissionsSchema>> = true
25
+
26
+ const variablesSchema = Typesafe.record(
27
+ Typesafe.string,
28
+ Typesafe.union(
29
+ Typesafe.object({
30
+ type: Typesafe.literal(Acl.VariableType.entity),
31
+ entityName: Typesafe.string,
32
+ }),
33
+ Typesafe.object({
34
+ type: Typesafe.literal(Acl.VariableType.predefined),
35
+ value: Typesafe.enumeration('identityID', 'personID'),
36
+ }),
37
+ ),
38
+ )
39
+
40
+ const variableSchemaCheck: Typesafe.Equals<Acl.Variables, ReturnType<typeof variablesSchema>> = true
41
+
42
+ const fieldPermissionsSchema = Typesafe.record(
43
+ Typesafe.string,
44
+ Typesafe.union(Typesafe.string, Typesafe.boolean),
45
+ )
46
+ const predicatesSchema = Typesafe.record(
47
+ Typesafe.string,
48
+ (v, p): Acl.PredicateDefinition => Typesafe.anyJsonObject(v, p) as Acl.PredicateDefinition,
49
+ )
50
+
51
+ const predicatesSchemaCheck: Typesafe.Equals<Acl.PredicateMap, ReturnType<typeof predicatesSchema>> = true
52
+
53
+ const entityOperationsSchema = Typesafe.partial({
54
+ read: fieldPermissionsSchema,
55
+ create: fieldPermissionsSchema,
56
+ update: fieldPermissionsSchema,
57
+ delete: Typesafe.union(Typesafe.string, Typesafe.boolean),
58
+ customPrimary: Typesafe.boolean,
59
+ })
60
+ const opSchemaCheck: Typesafe.Equals<Acl.EntityOperations, ReturnType<typeof entityOperationsSchema>> = true
61
+ const entitiesSchema = Typesafe.record(
62
+ Typesafe.string,
63
+ Typesafe.object({
64
+ predicates: predicatesSchema,
65
+ operations: entityOperationsSchema,
66
+ }),
67
+ )
68
+ const entitiesSchemaCheck: Typesafe.Equals<Acl.Permissions, ReturnType<typeof entitiesSchema>> = true
69
+
70
+ const baseRolePermissionsSchema = Typesafe.intersection(
71
+ Typesafe.object({
72
+ variables: variablesSchema,
73
+ entities: entitiesSchema,
74
+ }),
75
+ Typesafe.partial({
76
+ inherits: Typesafe.array(Typesafe.string),
77
+ implicit: Typesafe.boolean,
78
+ stages: Typesafe.union(
79
+ Typesafe.literal('*'),
80
+ Typesafe.array(Typesafe.string),
81
+ ),
82
+ tenant: tenantPermissionsSchema,
83
+ system: systemPermissionsSchema,
84
+ }),
85
+ )
86
+ const baseRolePermissionsCheck: Typesafe.Equals<Acl.BaseRolePermissions, ReturnType<typeof baseRolePermissionsSchema>> = true
87
+
88
+ export const aclSchema = Typesafe.object({
89
+ roles: Typesafe.record(
90
+ Typesafe.string,
91
+ (v, p): Acl.RolePermissions => {
92
+ const main: Acl.BaseRolePermissions = baseRolePermissionsSchema(v, p)
93
+ return {
94
+ ...(v as any),
95
+ ...main,
96
+ }
97
+ },
98
+ ),
99
+ })
100
+ const aclSchemaCheck: Typesafe.Equals<Acl.Schema, ReturnType<typeof aclSchema>> = true
@@ -0,0 +1,3 @@
1
+ export * from './acl'
2
+ export * from './model'
3
+ export * from './validation'