@contember/schema-definition 1.1.0-alpha.6 → 1.1.0-beta.0

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 (144) hide show
  1. package/dist/src/acl/{EntityPermissionsBuilder.d.ts → builder/EntityPermissionsBuilder.d.ts} +1 -1
  2. package/dist/src/acl/builder/EntityPermissionsBuilder.d.ts.map +1 -0
  3. package/dist/src/acl/{EntityPermissionsBuilder.js → builder/EntityPermissionsBuilder.js} +1 -1
  4. package/dist/src/acl/builder/EntityPermissionsBuilder.js.map +1 -0
  5. package/dist/src/acl/{EntitySelector.d.ts → builder/EntitySelector.d.ts} +0 -0
  6. package/dist/src/acl/builder/EntitySelector.d.ts.map +1 -0
  7. package/dist/src/acl/{EntitySelector.js → builder/EntitySelector.js} +0 -0
  8. package/dist/src/acl/builder/EntitySelector.js.map +1 -0
  9. package/dist/src/acl/{FieldPermissionsBuilder.d.ts → builder/FieldPermissionsBuilder.d.ts} +1 -1
  10. package/dist/src/acl/builder/FieldPermissionsBuilder.d.ts.map +1 -0
  11. package/dist/src/acl/{FieldPermissionsBuilder.js → builder/FieldPermissionsBuilder.js} +0 -0
  12. package/dist/src/acl/builder/FieldPermissionsBuilder.js.map +1 -0
  13. package/dist/src/acl/{FieldSelector.d.ts → builder/FieldSelector.d.ts} +0 -0
  14. package/dist/src/acl/builder/FieldSelector.d.ts.map +1 -0
  15. package/dist/src/acl/{FieldSelector.js → builder/FieldSelector.js} +0 -0
  16. package/dist/src/acl/builder/FieldSelector.js.map +1 -0
  17. package/dist/src/acl/{PermissionOverrider.d.ts → builder/PermissionOverrider.d.ts} +0 -0
  18. package/dist/src/acl/builder/PermissionOverrider.d.ts.map +1 -0
  19. package/dist/src/acl/{PermissionOverrider.js → builder/PermissionOverrider.js} +1 -1
  20. package/dist/src/acl/builder/PermissionOverrider.js.map +1 -0
  21. package/dist/src/acl/{PermissionsBuilder.d.ts → builder/PermissionsBuilder.d.ts} +1 -1
  22. package/dist/src/acl/builder/PermissionsBuilder.d.ts.map +1 -0
  23. package/dist/src/acl/{PermissionsBuilder.js → builder/PermissionsBuilder.js} +3 -1
  24. package/dist/src/acl/builder/PermissionsBuilder.js.map +1 -0
  25. package/dist/src/acl/{PredicateReference.d.ts → builder/PredicateReference.d.ts} +0 -0
  26. package/dist/src/acl/builder/PredicateReference.d.ts.map +1 -0
  27. package/dist/src/acl/{PredicateReference.js → builder/PredicateReference.js} +0 -0
  28. package/dist/src/acl/builder/PredicateReference.js.map +1 -0
  29. package/dist/src/acl/definition/customPrimary.d.ts +4 -0
  30. package/dist/src/acl/definition/customPrimary.d.ts.map +1 -0
  31. package/dist/src/acl/definition/customPrimary.js +16 -0
  32. package/dist/src/acl/definition/customPrimary.js.map +1 -0
  33. package/dist/src/acl/definition/index.d.ts +8 -0
  34. package/dist/src/acl/definition/index.d.ts.map +1 -0
  35. package/dist/src/acl/definition/index.js +29 -0
  36. package/dist/src/acl/definition/index.js.map +1 -0
  37. package/dist/src/acl/definition/internal/AclFactory.d.ts +18 -0
  38. package/dist/src/acl/definition/internal/AclFactory.d.ts.map +1 -0
  39. package/dist/src/acl/definition/internal/AclFactory.js +112 -0
  40. package/dist/src/acl/definition/internal/AclFactory.js.map +1 -0
  41. package/dist/src/acl/definition/internal/EntityPredicateResolver.d.ts +16 -0
  42. package/dist/src/acl/definition/internal/EntityPredicateResolver.d.ts.map +1 -0
  43. package/dist/src/acl/definition/internal/EntityPredicateResolver.js +130 -0
  44. package/dist/src/acl/definition/internal/EntityPredicateResolver.js.map +1 -0
  45. package/dist/src/acl/definition/internal/MetadataStore.d.ts +7 -0
  46. package/dist/src/acl/definition/internal/MetadataStore.d.ts.map +1 -0
  47. package/dist/src/acl/definition/internal/MetadataStore.js +22 -0
  48. package/dist/src/acl/definition/internal/MetadataStore.js.map +1 -0
  49. package/dist/src/acl/definition/internal/createPredicateName.d.ts +3 -0
  50. package/dist/src/acl/definition/internal/createPredicateName.d.ts.map +1 -0
  51. package/dist/src/acl/definition/internal/createPredicateName.js +9 -0
  52. package/dist/src/acl/definition/internal/createPredicateName.js.map +1 -0
  53. package/dist/src/acl/definition/internal/stores.d.ts +9 -0
  54. package/dist/src/acl/definition/internal/stores.d.ts.map +1 -0
  55. package/dist/src/acl/definition/internal/stores.js +8 -0
  56. package/dist/src/acl/definition/internal/stores.js.map +1 -0
  57. package/dist/src/acl/definition/permissions.d.ts +17 -0
  58. package/dist/src/acl/definition/permissions.d.ts.map +1 -0
  59. package/dist/src/acl/definition/permissions.js +13 -0
  60. package/dist/src/acl/definition/permissions.js.map +1 -0
  61. package/dist/src/acl/definition/references.d.ts +10 -0
  62. package/dist/src/acl/definition/references.d.ts.map +1 -0
  63. package/dist/src/acl/definition/references.js +27 -0
  64. package/dist/src/acl/definition/references.js.map +1 -0
  65. package/dist/src/acl/definition/roles.d.ts +13 -0
  66. package/dist/src/acl/definition/roles.d.ts.map +1 -0
  67. package/dist/src/acl/definition/roles.js +15 -0
  68. package/dist/src/acl/definition/roles.js.map +1 -0
  69. package/dist/src/acl/definition/variables.d.ts +11 -0
  70. package/dist/src/acl/definition/variables.d.ts.map +1 -0
  71. package/dist/src/acl/definition/variables.js +17 -0
  72. package/dist/src/acl/definition/variables.js.map +1 -0
  73. package/dist/src/createSchema.d.ts +3 -0
  74. package/dist/src/createSchema.d.ts.map +1 -0
  75. package/dist/src/createSchema.js +15 -0
  76. package/dist/src/createSchema.js.map +1 -0
  77. package/dist/src/index.d.ts +5 -4
  78. package/dist/src/index.d.ts.map +1 -1
  79. package/dist/src/index.js +7 -6
  80. package/dist/src/index.js.map +1 -1
  81. package/dist/src/model/definition/index.d.ts +2 -2
  82. package/dist/src/model/definition/index.d.ts.map +1 -1
  83. package/dist/src/model/definition/index.js +2 -1
  84. package/dist/src/model/definition/index.js.map +1 -1
  85. package/dist/src/tsconfig.tsbuildinfo +1 -1
  86. package/dist/src/utils/filterEntityDefinition.d.ts +4 -0
  87. package/dist/src/utils/filterEntityDefinition.d.ts.map +1 -0
  88. package/dist/src/utils/filterEntityDefinition.js +11 -0
  89. package/dist/src/utils/filterEntityDefinition.js.map +1 -0
  90. package/dist/src/utils/index.d.ts +1 -0
  91. package/dist/src/utils/index.d.ts.map +1 -1
  92. package/dist/src/utils/index.js +1 -0
  93. package/dist/src/utils/index.js.map +1 -1
  94. package/dist/src/validation/index.d.ts +1 -4
  95. package/dist/src/validation/index.d.ts.map +1 -1
  96. package/dist/src/validation/index.js +2 -3
  97. package/dist/src/validation/index.js.map +1 -1
  98. package/dist/tests/tsconfig.tsbuildinfo +1 -0
  99. package/dist/tests/unit/readAclDefinitions.test.d.ts +2 -0
  100. package/dist/tests/unit/readAclDefinitions.test.d.ts.map +1 -0
  101. package/dist/tests/unit/readAclDefinitions.test.js +449 -0
  102. package/dist/tests/unit/readAclDefinitions.test.js.map +1 -0
  103. package/package.json +4 -4
  104. package/src/acl/{EntityPermissionsBuilder.ts → builder/EntityPermissionsBuilder.ts} +2 -2
  105. package/src/acl/{EntitySelector.ts → builder/EntitySelector.ts} +0 -0
  106. package/src/acl/{FieldPermissionsBuilder.ts → builder/FieldPermissionsBuilder.ts} +1 -1
  107. package/src/acl/{FieldSelector.ts → builder/FieldSelector.ts} +0 -0
  108. package/src/acl/{PermissionOverrider.ts → builder/PermissionOverrider.ts} +1 -1
  109. package/src/acl/{PermissionsBuilder.ts → builder/PermissionsBuilder.ts} +1 -1
  110. package/src/acl/{PredicateReference.ts → builder/PredicateReference.ts} +0 -0
  111. package/src/acl/definition/customPrimary.ts +13 -0
  112. package/src/acl/definition/index.ts +16 -0
  113. package/src/acl/definition/internal/AclFactory.ts +130 -0
  114. package/src/acl/definition/internal/EntityPredicateResolver.ts +149 -0
  115. package/src/acl/definition/internal/MetadataStore.ts +23 -0
  116. package/src/acl/definition/internal/createPredicateName.ts +6 -0
  117. package/src/acl/definition/internal/stores.ts +13 -0
  118. package/src/acl/definition/permissions.ts +29 -0
  119. package/src/acl/definition/references.ts +21 -0
  120. package/src/acl/definition/roles.ts +19 -0
  121. package/src/acl/definition/variables.ts +27 -0
  122. package/src/createSchema.ts +12 -0
  123. package/src/index.ts +5 -5
  124. package/src/model/definition/index.ts +4 -3
  125. package/src/utils/filterEntityDefinition.ts +8 -0
  126. package/src/utils/index.ts +1 -0
  127. package/src/validation/index.ts +3 -3
  128. package/tests/tsconfig.json +13 -0
  129. package/tests/unit/readAclDefinitions.test.ts +406 -0
  130. package/tsconfig.json +4 -1
  131. package/dist/src/acl/EntityPermissionsBuilder.d.ts.map +0 -1
  132. package/dist/src/acl/EntityPermissionsBuilder.js.map +0 -1
  133. package/dist/src/acl/EntitySelector.d.ts.map +0 -1
  134. package/dist/src/acl/EntitySelector.js.map +0 -1
  135. package/dist/src/acl/FieldPermissionsBuilder.d.ts.map +0 -1
  136. package/dist/src/acl/FieldPermissionsBuilder.js.map +0 -1
  137. package/dist/src/acl/FieldSelector.d.ts.map +0 -1
  138. package/dist/src/acl/FieldSelector.js.map +0 -1
  139. package/dist/src/acl/PermissionOverrider.d.ts.map +0 -1
  140. package/dist/src/acl/PermissionOverrider.js.map +0 -1
  141. package/dist/src/acl/PermissionsBuilder.d.ts.map +0 -1
  142. package/dist/src/acl/PermissionsBuilder.js.map +0 -1
  143. package/dist/src/acl/PredicateReference.d.ts.map +0 -1
  144. package/dist/src/acl/PredicateReference.js.map +0 -1
@@ -0,0 +1,449 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const vitest_1 = require("vitest");
10
+ const src_1 = require("../../src");
11
+ var SimpleModel;
12
+ (function (SimpleModel) {
13
+ SimpleModel.publicRole = src_1.AclDefinition.createRole('public');
14
+ let Book = class Book {
15
+ constructor() {
16
+ this.title = src_1.SchemaDefinition.stringColumn();
17
+ }
18
+ };
19
+ Book = __decorate([
20
+ src_1.AclDefinition.allow(SimpleModel.publicRole, { read: true })
21
+ ], Book);
22
+ SimpleModel.Book = Book;
23
+ })(SimpleModel || (SimpleModel = {}));
24
+ (0, vitest_1.test)('simple definitions', () => {
25
+ const schema = (0, src_1.createSchema)(SimpleModel);
26
+ (0, vitest_1.expect)(schema.acl.roles.public.entities.Book).toMatchInlineSnapshot(`
27
+ {
28
+ "operations": {
29
+ "read": {
30
+ "title": true,
31
+ },
32
+ },
33
+ "predicates": {},
34
+ }
35
+ `);
36
+ });
37
+ var ModelWithPredicate;
38
+ (function (ModelWithPredicate) {
39
+ ModelWithPredicate.publicRole = src_1.AclDefinition.createRole('public');
40
+ let Book = class Book {
41
+ constructor() {
42
+ this.title = src_1.SchemaDefinition.stringColumn();
43
+ this.isPublished = src_1.SchemaDefinition.boolColumn();
44
+ }
45
+ };
46
+ Book = __decorate([
47
+ src_1.AclDefinition.allow(ModelWithPredicate.publicRole, {
48
+ when: { isPublished: { eq: true } },
49
+ read: true,
50
+ })
51
+ ], Book);
52
+ ModelWithPredicate.Book = Book;
53
+ })(ModelWithPredicate || (ModelWithPredicate = {}));
54
+ (0, vitest_1.test)('definition with a predicate', () => {
55
+ const schema = (0, src_1.createSchema)(ModelWithPredicate);
56
+ (0, vitest_1.expect)(schema.acl.roles.public.entities.Book).toMatchInlineSnapshot(`
57
+ {
58
+ "operations": {
59
+ "read": {
60
+ "isPublished": "isPublished_eq_true",
61
+ "title": "isPublished_eq_true",
62
+ },
63
+ },
64
+ "predicates": {
65
+ "isPublished_eq_true": {
66
+ "isPublished": {
67
+ "eq": true,
68
+ },
69
+ },
70
+ },
71
+ }
72
+ `);
73
+ });
74
+ var ModelWithPredicateOnField;
75
+ (function (ModelWithPredicateOnField) {
76
+ ModelWithPredicateOnField.publicRole = src_1.AclDefinition.createRole('public');
77
+ let Book = class Book {
78
+ constructor() {
79
+ this.title = src_1.SchemaDefinition.stringColumn();
80
+ this.isPublished = src_1.SchemaDefinition.boolColumn();
81
+ }
82
+ };
83
+ Book = __decorate([
84
+ src_1.AclDefinition.allow(ModelWithPredicateOnField.publicRole, {
85
+ when: { isPublished: { eq: true } },
86
+ read: ['title'],
87
+ })
88
+ ], Book);
89
+ ModelWithPredicateOnField.Book = Book;
90
+ })(ModelWithPredicateOnField || (ModelWithPredicateOnField = {}));
91
+ (0, vitest_1.test)('definition with a predicate on field', () => {
92
+ const schema = (0, src_1.createSchema)(ModelWithPredicateOnField);
93
+ (0, vitest_1.expect)(schema.acl.roles.public.entities.Book).toMatchInlineSnapshot(`
94
+ {
95
+ "operations": {
96
+ "read": {
97
+ "title": "isPublished_eq_true",
98
+ },
99
+ },
100
+ "predicates": {
101
+ "isPublished_eq_true": {
102
+ "isPublished": {
103
+ "eq": true,
104
+ },
105
+ },
106
+ },
107
+ }
108
+ `);
109
+ });
110
+ var ModelWithModificationAcl;
111
+ (function (ModelWithModificationAcl) {
112
+ ModelWithModificationAcl.publicRole = src_1.AclDefinition.createRole('public');
113
+ let Book = class Book {
114
+ constructor() {
115
+ this.title = src_1.SchemaDefinition.stringColumn();
116
+ this.isPublished = src_1.SchemaDefinition.boolColumn();
117
+ }
118
+ };
119
+ Book = __decorate([
120
+ src_1.AclDefinition.allow(ModelWithModificationAcl.publicRole, {
121
+ when: { isPublished: { eq: true } },
122
+ create: true,
123
+ update: true,
124
+ delete: true,
125
+ })
126
+ ], Book);
127
+ ModelWithModificationAcl.Book = Book;
128
+ })(ModelWithModificationAcl || (ModelWithModificationAcl = {}));
129
+ (0, vitest_1.test)('definition with update, create, delete predicates', () => {
130
+ const schema = (0, src_1.createSchema)(ModelWithModificationAcl);
131
+ (0, vitest_1.expect)(schema.acl.roles.public.entities.Book).toMatchInlineSnapshot(`
132
+ {
133
+ "operations": {
134
+ "create": {
135
+ "isPublished": "isPublished_eq_true",
136
+ "title": "isPublished_eq_true",
137
+ },
138
+ "delete": "isPublished_eq_true",
139
+ "update": {
140
+ "isPublished": "isPublished_eq_true",
141
+ "title": "isPublished_eq_true",
142
+ },
143
+ },
144
+ "predicates": {
145
+ "isPublished_eq_true": {
146
+ "isPublished": {
147
+ "eq": true,
148
+ },
149
+ },
150
+ },
151
+ }
152
+ `);
153
+ });
154
+ var ModelWithMultiplePredicates;
155
+ (function (ModelWithMultiplePredicates) {
156
+ ModelWithMultiplePredicates.publicRole = src_1.AclDefinition.createRole('public');
157
+ let Book = class Book {
158
+ constructor() {
159
+ this.title = src_1.SchemaDefinition.stringColumn();
160
+ this.isPublished = src_1.SchemaDefinition.boolColumn();
161
+ }
162
+ };
163
+ Book = __decorate([
164
+ src_1.AclDefinition.allow(ModelWithMultiplePredicates.publicRole, {
165
+ when: { isPublished: { eq: true } },
166
+ read: ['title'],
167
+ }),
168
+ src_1.AclDefinition.allow(ModelWithMultiplePredicates.publicRole, {
169
+ when: { isPublished: { eq: false } },
170
+ read: ['title'],
171
+ })
172
+ ], Book);
173
+ ModelWithMultiplePredicates.Book = Book;
174
+ })(ModelWithMultiplePredicates || (ModelWithMultiplePredicates = {}));
175
+ (0, vitest_1.test)('definition with multiple predicates on a single field', () => {
176
+ const schema = (0, src_1.createSchema)(ModelWithMultiplePredicates);
177
+ (0, vitest_1.expect)(schema.acl.roles.public.entities.Book).toMatchInlineSnapshot(`
178
+ {
179
+ "operations": {
180
+ "read": {
181
+ "title": "or_isPublished_eq_false_isPub",
182
+ },
183
+ },
184
+ "predicates": {
185
+ "or_isPublished_eq_false_isPub": {
186
+ "or": [
187
+ {
188
+ "isPublished": {
189
+ "eq": false,
190
+ },
191
+ },
192
+ {
193
+ "isPublished": {
194
+ "eq": true,
195
+ },
196
+ },
197
+ ],
198
+ },
199
+ },
200
+ }
201
+ `);
202
+ });
203
+ var ModelWithMultipleRolesForSinglePredicate;
204
+ (function (ModelWithMultipleRolesForSinglePredicate) {
205
+ ModelWithMultipleRolesForSinglePredicate.publicRole = src_1.AclDefinition.createRole('public');
206
+ ModelWithMultipleRolesForSinglePredicate.adminRole = src_1.AclDefinition.createRole('admin');
207
+ let Book = class Book {
208
+ constructor() {
209
+ this.title = src_1.SchemaDefinition.stringColumn();
210
+ this.isPublished = src_1.SchemaDefinition.boolColumn();
211
+ }
212
+ };
213
+ Book = __decorate([
214
+ src_1.AclDefinition.allow([ModelWithMultipleRolesForSinglePredicate.publicRole, ModelWithMultipleRolesForSinglePredicate.adminRole], {
215
+ read: ['title'],
216
+ })
217
+ ], Book);
218
+ ModelWithMultipleRolesForSinglePredicate.Book = Book;
219
+ })(ModelWithMultipleRolesForSinglePredicate || (ModelWithMultipleRolesForSinglePredicate = {}));
220
+ (0, vitest_1.test)('definition with multiple roles in single predicate', () => {
221
+ const schema = (0, src_1.createSchema)(ModelWithMultipleRolesForSinglePredicate);
222
+ (0, vitest_1.expect)(schema.acl.roles).toMatchInlineSnapshot(`
223
+ {
224
+ "admin": {
225
+ "entities": {
226
+ "Book": {
227
+ "operations": {
228
+ "read": {
229
+ "title": true,
230
+ },
231
+ },
232
+ "predicates": {},
233
+ },
234
+ },
235
+ "stages": "*",
236
+ "variables": {},
237
+ },
238
+ "public": {
239
+ "entities": {
240
+ "Book": {
241
+ "operations": {
242
+ "read": {
243
+ "title": true,
244
+ },
245
+ },
246
+ "predicates": {},
247
+ },
248
+ },
249
+ "stages": "*",
250
+ "variables": {},
251
+ },
252
+ }
253
+ `);
254
+ });
255
+ var ModelWithAclPredicateReferences;
256
+ (function (ModelWithAclPredicateReferences) {
257
+ ModelWithAclPredicateReferences.publicRole = src_1.AclDefinition.createRole('public');
258
+ let Book = class Book {
259
+ constructor() {
260
+ this.title = src_1.SchemaDefinition.stringColumn();
261
+ this.isPublished = src_1.SchemaDefinition.boolColumn();
262
+ }
263
+ };
264
+ Book = __decorate([
265
+ src_1.AclDefinition.allow(ModelWithAclPredicateReferences.publicRole, {
266
+ when: { isPublished: { eq: true } },
267
+ read: ['title'],
268
+ })
269
+ ], Book);
270
+ ModelWithAclPredicateReferences.Book = Book;
271
+ let BookReview = class BookReview {
272
+ constructor() {
273
+ this.book = src_1.SchemaDefinition.manyHasOne(Book);
274
+ this.content = src_1.SchemaDefinition.stringColumn();
275
+ }
276
+ };
277
+ BookReview = __decorate([
278
+ src_1.AclDefinition.allow(ModelWithAclPredicateReferences.publicRole, {
279
+ when: { book: src_1.AclDefinition.canRead('title') },
280
+ read: ['content'],
281
+ })
282
+ ], BookReview);
283
+ ModelWithAclPredicateReferences.BookReview = BookReview;
284
+ })(ModelWithAclPredicateReferences || (ModelWithAclPredicateReferences = {}));
285
+ (0, vitest_1.test)('definition with predicate references', () => {
286
+ const schema = (0, src_1.createSchema)(ModelWithAclPredicateReferences);
287
+ (0, vitest_1.expect)(schema.acl.roles.public.entities).toMatchInlineSnapshot(`
288
+ {
289
+ "Book": {
290
+ "operations": {
291
+ "read": {
292
+ "title": "isPublished_eq_true",
293
+ },
294
+ },
295
+ "predicates": {
296
+ "isPublished_eq_true": {
297
+ "isPublished": {
298
+ "eq": true,
299
+ },
300
+ },
301
+ },
302
+ },
303
+ "BookReview": {
304
+ "operations": {
305
+ "read": {
306
+ "content": "book_isPublished_eq_true",
307
+ },
308
+ },
309
+ "predicates": {
310
+ "book_isPublished_eq_true": {
311
+ "book": {
312
+ "isPublished": {
313
+ "eq": true,
314
+ },
315
+ },
316
+ },
317
+ },
318
+ },
319
+ }
320
+ `);
321
+ });
322
+ var ModelWithVariables;
323
+ (function (ModelWithVariables) {
324
+ ModelWithVariables.managerRole = src_1.AclDefinition.createRole('manager');
325
+ ModelWithVariables.bookIdVariable = src_1.AclDefinition.createEntityVariable('bookId', 'Book', ModelWithVariables.managerRole);
326
+ let Book = class Book {
327
+ constructor() {
328
+ this.title = src_1.SchemaDefinition.stringColumn();
329
+ }
330
+ };
331
+ Book = __decorate([
332
+ src_1.AclDefinition.allow(ModelWithVariables.managerRole, {
333
+ when: { id: ModelWithVariables.bookIdVariable },
334
+ read: ['title'],
335
+ })
336
+ ], Book);
337
+ ModelWithVariables.Book = Book;
338
+ })(ModelWithVariables || (ModelWithVariables = {}));
339
+ (0, vitest_1.test)('definition with variables', () => {
340
+ const schema = (0, src_1.createSchema)(ModelWithVariables);
341
+ (0, vitest_1.expect)(schema.acl.roles.manager).toMatchInlineSnapshot(`
342
+ {
343
+ "entities": {
344
+ "Book": {
345
+ "operations": {
346
+ "read": {
347
+ "title": "id_bookId",
348
+ },
349
+ },
350
+ "predicates": {
351
+ "id_bookId": {
352
+ "id": "bookId",
353
+ },
354
+ },
355
+ },
356
+ },
357
+ "stages": "*",
358
+ "variables": {
359
+ "bookId": {
360
+ "entityName": "Book",
361
+ "type": "entity",
362
+ },
363
+ },
364
+ }
365
+ `);
366
+ });
367
+ var ModelWithAllowCustomPrimary;
368
+ (function (ModelWithAllowCustomPrimary) {
369
+ ModelWithAllowCustomPrimary.publicRole = src_1.AclDefinition.createRole('public');
370
+ let Book = class Book {
371
+ constructor() {
372
+ this.title = src_1.SchemaDefinition.stringColumn();
373
+ }
374
+ };
375
+ Book = __decorate([
376
+ src_1.AclDefinition.allowCustomPrimary(ModelWithAllowCustomPrimary.publicRole)
377
+ ], Book);
378
+ ModelWithAllowCustomPrimary.Book = Book;
379
+ })(ModelWithAllowCustomPrimary || (ModelWithAllowCustomPrimary = {}));
380
+ (0, vitest_1.test)('allow custom primary', () => {
381
+ const schema = (0, src_1.createSchema)(ModelWithAllowCustomPrimary);
382
+ (0, vitest_1.expect)(schema.acl.roles.public.entities.Book).toMatchInlineSnapshot(`
383
+ {
384
+ "operations": {
385
+ "customPrimary": true,
386
+ },
387
+ "predicates": {},
388
+ }
389
+ `);
390
+ });
391
+ var ModelWithAllowCustomPrimaryAllRoles;
392
+ (function (ModelWithAllowCustomPrimaryAllRoles) {
393
+ ModelWithAllowCustomPrimaryAllRoles.publicRole = src_1.AclDefinition.createRole('public');
394
+ let Book = class Book {
395
+ constructor() {
396
+ this.title = src_1.SchemaDefinition.stringColumn();
397
+ }
398
+ };
399
+ Book = __decorate([
400
+ src_1.AclDefinition.allowCustomPrimary()
401
+ ], Book);
402
+ ModelWithAllowCustomPrimaryAllRoles.Book = Book;
403
+ })(ModelWithAllowCustomPrimaryAllRoles || (ModelWithAllowCustomPrimaryAllRoles = {}));
404
+ (0, vitest_1.test)('allow custom primary', () => {
405
+ const schema = (0, src_1.createSchema)(ModelWithAllowCustomPrimaryAllRoles);
406
+ (0, vitest_1.expect)(schema.acl.roles.public.entities.Book).toMatchInlineSnapshot(`
407
+ {
408
+ "operations": {
409
+ "customPrimary": true,
410
+ },
411
+ "predicates": {},
412
+ }
413
+ `);
414
+ });
415
+ var ModelWithInvalidAclPredicateReferences;
416
+ (function (ModelWithInvalidAclPredicateReferences) {
417
+ ModelWithInvalidAclPredicateReferences.publicRole = src_1.AclDefinition.createRole('public');
418
+ let Book = class Book {
419
+ constructor() {
420
+ this.title = src_1.SchemaDefinition.stringColumn();
421
+ this.isPublished = src_1.SchemaDefinition.boolColumn();
422
+ }
423
+ };
424
+ Book = __decorate([
425
+ src_1.AclDefinition.allow(ModelWithInvalidAclPredicateReferences.publicRole, {
426
+ when: { isPublished: { eq: true } },
427
+ read: ['title'],
428
+ })
429
+ ], Book);
430
+ ModelWithInvalidAclPredicateReferences.Book = Book;
431
+ let BookReview = class BookReview {
432
+ constructor() {
433
+ this.book = src_1.SchemaDefinition.manyHasOne(Book);
434
+ this.content = src_1.SchemaDefinition.stringColumn();
435
+ }
436
+ };
437
+ BookReview = __decorate([
438
+ src_1.AclDefinition.allow(ModelWithInvalidAclPredicateReferences.publicRole, {
439
+ when: { content: src_1.AclDefinition.canRead('title') },
440
+ read: ['content'],
441
+ })
442
+ ], BookReview);
443
+ ModelWithInvalidAclPredicateReferences.BookReview = BookReview;
444
+ })(ModelWithInvalidAclPredicateReferences || (ModelWithInvalidAclPredicateReferences = {}));
445
+ (0, vitest_1.test)('definition with invalid predicate references', () => {
446
+ (0, vitest_1.expect)(() => (0, src_1.createSchema)(ModelWithInvalidAclPredicateReferences)).toThrow('Predicate references are allowed only on relations. \n' +
447
+ 'You cannot use "canRead("title")" on a column "content" of entity "BookReview".');
448
+ });
449
+ //# sourceMappingURL=readAclDefinitions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readAclDefinitions.test.js","sourceRoot":"","sources":["../../../tests/unit/readAclDefinitions.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@contember/schema-definition",
3
- "version": "1.1.0-alpha.6",
3
+ "version": "1.1.0-beta.0",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/src/index.js",
6
6
  "typings": "dist/src/index.d.ts",
7
7
  "scripts": {
8
- "test": "echo 'No tests'"
8
+ "test": "vitest"
9
9
  },
10
10
  "dependencies": {
11
- "@contember/schema": "^1.1.0-alpha.6",
12
- "@contember/schema-utils": "^1.1.0-alpha.6",
11
+ "@contember/schema": "^1.1.0-beta.0",
12
+ "@contember/schema-utils": "^1.1.0-beta.0",
13
13
  "reflect-metadata": "^0.1.13"
14
14
  },
15
15
  "devDependencies": {}
@@ -1,9 +1,9 @@
1
- import { tuple } from '../utils'
1
+ import { tuple } from '../../utils'
2
2
  import EntitySelector from './EntitySelector'
3
3
  import { Acl, Model, Writable } from '@contember/schema'
4
4
  import FieldSelector from './FieldSelector'
5
5
  import FieldPermissionsBuilder from './FieldPermissionsBuilder'
6
- import PermissionsBuilder from './PermissionsBuilder'
6
+ import { PermissionsBuilder } from './PermissionsBuilder'
7
7
  import PredicateReference, { resolvePredicateReference } from './PredicateReference'
8
8
 
9
9
  export default class EntityPermissionsBuilder {
@@ -2,7 +2,7 @@ import FieldSelector from './FieldSelector'
2
2
  import EntityPermissionsBuilder from './EntityPermissionsBuilder'
3
3
  import { Acl, Model, Writable } from '@contember/schema'
4
4
  import EntitySelector from './EntitySelector'
5
- import PermissionsBuilder from './PermissionsBuilder'
5
+ import { PermissionsBuilder } from './PermissionsBuilder'
6
6
 
7
7
  export default class FieldPermissionsBuilder {
8
8
  public constructor(
@@ -1,5 +1,5 @@
1
1
  import { Acl } from '@contember/schema'
2
- import { tuple } from '../utils'
2
+ import { tuple } from '../../utils'
3
3
 
4
4
  export default class PermissionOverrider {
5
5
  public override(original: Acl.Permissions, overrides: Acl.Permissions): Acl.Permissions {
@@ -58,4 +58,4 @@ namespace PermissionsBuilder {
58
58
  }
59
59
  export const predicateReference = (name: Acl.PredicateReference) => new Reference(name)
60
60
  }
61
- export default PermissionsBuilder
61
+ export { PermissionsBuilder }
@@ -0,0 +1,13 @@
1
+ import { Role } from './roles'
2
+ import { allowCustomPrimaryAllRolesStore, allowCustomPrimaryStore } from './internal/stores'
3
+ import { DecoratorFunction, EntityConstructor } from '../../model/definition/types'
4
+
5
+ export const allowCustomPrimary = (role?: Role | Role[]): DecoratorFunction<any> => {
6
+ return (entity: EntityConstructor) => {
7
+ if (!role) {
8
+ allowCustomPrimaryAllRolesStore.update(entity, () => true)
9
+ } else {
10
+ allowCustomPrimaryStore.update(entity, val => [...val, ...(Array.isArray(role) ? role : [role])])
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,16 @@
1
+ import { Acl, Model } from '@contember/schema'
2
+ import { AclFactory } from './internal/AclFactory'
3
+
4
+ export * from './customPrimary'
5
+ export * from './permissions'
6
+ export * from './references'
7
+ export * from './roles'
8
+ export * from './variables'
9
+
10
+ export const createAcl = (
11
+ exportedDefinitions: Record<string, any>,
12
+ model: Model.Schema,
13
+ ): Acl.Schema => {
14
+ const aclFactory = new AclFactory(model)
15
+ return aclFactory.create(exportedDefinitions)
16
+ }