@contember/schema-definition 1.1.0-alpha.7 → 1.1.0-alpha.8

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 @@
1
+ {"version":3,"file":"createPredicateName.d.ts","sourceRoot":"","sources":["../../../../../src/acl/definition/internal/createPredicateName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,eAAO,MAAM,mBAAmB,SAAU,cAAc,WAGvD,CAAA"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPredicateName = void 0;
4
+ const createPredicateName = (when) => {
5
+ const json = JSON.stringify(when);
6
+ return json.replace(/[^A-Za-z0-9]+/g, '_').slice(0, 30).replace(/^_|_$/g, '');
7
+ };
8
+ exports.createPredicateName = createPredicateName;
9
+ //# sourceMappingURL=createPredicateName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPredicateName.js","sourceRoot":"","sources":["../../../../../src/acl/definition/internal/createPredicateName.ts"],"names":[],"mappings":";;;AAEO,MAAM,mBAAmB,GAAG,CAAC,IAAoB,EAAE,EAAE;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACjC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AAC9E,CAAC,CAAA;AAHY,QAAA,mBAAmB,uBAG/B"}
@@ -0,0 +1,9 @@
1
+ import { Role } from '../roles';
2
+ import { AllowDefinition } from '../permissions';
3
+ export declare const allowCustomPrimaryStore: import("./MetadataStore").MetadataStore<Role<string>[]>;
4
+ export declare const allowCustomPrimaryAllRolesStore: import("./MetadataStore").MetadataStore<boolean>;
5
+ export declare type EntityPermissionsDefinition = AllowDefinition<any> & {
6
+ role: Role<string>;
7
+ };
8
+ export declare const allowDefinitionsStore: import("./MetadataStore").MetadataStore<EntityPermissionsDefinition[]>;
9
+ //# sourceMappingURL=stores.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../../../../../src/acl/definition/internal/stores.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,eAAO,MAAM,uBAAuB,yDAAkC,CAAA;AACtE,eAAO,MAAM,+BAA+B,kDAAsC,CAAA;AAElF,oBAAY,2BAA2B,GACpC,eAAe,CAAC,GAAG,CAAC,GACpB;IACD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;CAClB,CAAA;AACF,eAAO,MAAM,qBAAqB,wEAAyD,CAAA"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.allowDefinitionsStore = exports.allowCustomPrimaryAllRolesStore = exports.allowCustomPrimaryStore = void 0;
4
+ const MetadataStore_1 = require("./MetadataStore");
5
+ exports.allowCustomPrimaryStore = (0, MetadataStore_1.createMetadataStore)([]);
6
+ exports.allowCustomPrimaryAllRolesStore = (0, MetadataStore_1.createMetadataStore)(false);
7
+ exports.allowDefinitionsStore = (0, MetadataStore_1.createMetadataStore)([]);
8
+ //# sourceMappingURL=stores.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stores.js","sourceRoot":"","sources":["../../../../../src/acl/definition/internal/stores.ts"],"names":[],"mappings":";;;AAAA,mDAAqD;AAIxC,QAAA,uBAAuB,GAAG,IAAA,mCAAmB,EAAS,EAAE,CAAC,CAAA;AACzD,QAAA,+BAA+B,GAAG,IAAA,mCAAmB,EAAU,KAAK,CAAC,CAAA;AAOrE,QAAA,qBAAqB,GAAG,IAAA,mCAAmB,EAAgC,EAAE,CAAC,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { Acl } from '@contember/schema';
2
+ import { Role } from './roles';
3
+ import { VariableDefinition } from './variables';
4
+ import { PredicateEvaluationReference } from './references';
5
+ import { DecoratorFunction } from '../../model/definition/types';
6
+ export declare type PredicateExtra = PredicateEvaluationReference | VariableDefinition;
7
+ export declare type WhenDefinition = Acl.PredicateDefinition<PredicateExtra>;
8
+ export interface AllowDefinition<E> {
9
+ when?: WhenDefinition;
10
+ name?: string;
11
+ create?: true | (keyof E)[];
12
+ update?: true | (keyof E)[];
13
+ read?: true | (keyof E)[];
14
+ delete?: true;
15
+ }
16
+ export declare const allow: <E, R extends Role<string>>(role: R | R[], args: AllowDefinition<E>) => DecoratorFunction<E>;
17
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../../src/acl/definition/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,EAAE,iBAAiB,EAAqB,MAAM,8BAA8B,CAAA;AAEnF,oBAAY,cAAc,GAAG,4BAA4B,GAAG,kBAAkB,CAAA;AAC9E,oBAAY,cAAc,GAAG,GAAG,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAA;AAEpE,MAAM,WAAW,eAAe,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;IAC3B,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;IAC3B,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE,IAAI,CAAA;CACb;AAED,eAAO,MAAM,KAAK,8FAMjB,CAAA"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.allow = void 0;
4
+ const stores_1 = require("./internal/stores");
5
+ const allow = (role, args) => {
6
+ return (entity) => {
7
+ (Array.isArray(role) ? role : [role]).forEach(role => {
8
+ stores_1.allowDefinitionsStore.update(entity, val => [...val, { ...args, role }]);
9
+ });
10
+ };
11
+ };
12
+ exports.allow = allow;
13
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../../src/acl/definition/permissions.ts"],"names":[],"mappings":";;;AAIA,8CAAyD;AAelD,MAAM,KAAK,GAAG,CAA4B,IAAa,EAAE,IAAwB,EAAwB,EAAE;IACjH,OAAO,CAAC,MAA4B,EAAE,EAAE;QACvC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpD,8BAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;IACH,CAAC,CAAA;AACF,CAAC,CAAA;AANY,QAAA,KAAK,SAMjB"}
@@ -0,0 +1,10 @@
1
+ export declare class PredicateEvaluationReference {
2
+ readonly operation: 'update' | 'delete' | 'create' | 'read';
3
+ readonly field?: string | undefined;
4
+ constructor(operation: 'update' | 'delete' | 'create' | 'read', field?: string | undefined);
5
+ }
6
+ export declare const canUpdate: (field: string) => PredicateEvaluationReference;
7
+ export declare const canRead: (field: string) => PredicateEvaluationReference;
8
+ export declare const canCreate: (field: string) => PredicateEvaluationReference;
9
+ export declare const canDelete: () => PredicateEvaluationReference;
10
+ //# sourceMappingURL=references.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../../../src/acl/definition/references.ts"],"names":[],"mappings":"AAAA,qBAAa,4BAA4B;aAEvB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM;aAClD,KAAK,CAAC;gBADN,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,EAClD,KAAK,CAAC,oBAAQ;CAG/B;AAED,eAAO,MAAM,SAAS,UAAW,MAAM,iCAEtC,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,MAAM,iCAEpC,CAAA;AACD,eAAO,MAAM,SAAS,UAAW,MAAM,iCAEtC,CAAA;AACD,eAAO,MAAM,SAAS,oCAErB,CAAA"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canDelete = exports.canCreate = exports.canRead = exports.canUpdate = exports.PredicateEvaluationReference = void 0;
4
+ class PredicateEvaluationReference {
5
+ constructor(operation, field) {
6
+ this.operation = operation;
7
+ this.field = field;
8
+ }
9
+ }
10
+ exports.PredicateEvaluationReference = PredicateEvaluationReference;
11
+ const canUpdate = (field) => {
12
+ return new PredicateEvaluationReference('update', field);
13
+ };
14
+ exports.canUpdate = canUpdate;
15
+ const canRead = (field) => {
16
+ return new PredicateEvaluationReference('read', field);
17
+ };
18
+ exports.canRead = canRead;
19
+ const canCreate = (field) => {
20
+ return new PredicateEvaluationReference('create', field);
21
+ };
22
+ exports.canCreate = canCreate;
23
+ const canDelete = () => {
24
+ return new PredicateEvaluationReference('delete');
25
+ };
26
+ exports.canDelete = canDelete;
27
+ //# sourceMappingURL=references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../../../src/acl/definition/references.ts"],"names":[],"mappings":";;;AAAA,MAAa,4BAA4B;IACxC,YACiB,SAAkD,EAClD,KAAc;QADd,cAAS,GAAT,SAAS,CAAyC;QAClD,UAAK,GAAL,KAAK,CAAS;IAE/B,CAAC;CACD;AAND,oEAMC;AAEM,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE;IAC1C,OAAO,IAAI,4BAA4B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC,CAAA;AAFY,QAAA,SAAS,aAErB;AAEM,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,OAAO,IAAI,4BAA4B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AACvD,CAAC,CAAA;AAFY,QAAA,OAAO,WAEnB;AACM,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE;IAC1C,OAAO,IAAI,4BAA4B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC,CAAA;AAFY,QAAA,SAAS,aAErB;AACM,MAAM,SAAS,GAAG,GAAG,EAAE;IAC7B,OAAO,IAAI,4BAA4B,CAAC,QAAQ,CAAC,CAAA;AAClD,CAAC,CAAA;AAFY,QAAA,SAAS,aAErB"}
@@ -0,0 +1,13 @@
1
+ import { Acl } from '@contember/schema';
2
+ export interface RoleOptions {
3
+ stages?: Acl.StagesDefinition;
4
+ tenant?: Acl.TenantPermissions;
5
+ system?: Acl.SystemPermissions;
6
+ }
7
+ export declare class Role<Name extends string = string> {
8
+ readonly name: Name;
9
+ readonly options: RoleOptions;
10
+ constructor(name: Name, options: RoleOptions);
11
+ }
12
+ export declare const createRole: <Name extends string>(name: Name, options?: RoleOptions) => Role<Name>;
13
+ //# sourceMappingURL=roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../../../src/acl/definition/roles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAEvC,MAAM,WAAW,WAAW;IAC3B,MAAM,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAA;IAC7B,MAAM,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAA;IAC9B,MAAM,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAA;CAC9B;AAED,qBAAa,IAAI,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;aAE5B,IAAI,EAAE,IAAI;aACV,OAAO,EAAE,WAAW;gBADpB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,WAAW;CAGrC;AAED,eAAO,MAAM,UAAU,8CAA8C,WAAW,eAE/E,CAAA"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRole = exports.Role = void 0;
4
+ class Role {
5
+ constructor(name, options) {
6
+ this.name = name;
7
+ this.options = options;
8
+ }
9
+ }
10
+ exports.Role = Role;
11
+ const createRole = (name, options = {}) => {
12
+ return new Role(name, options);
13
+ };
14
+ exports.createRole = createRole;
15
+ //# sourceMappingURL=roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../../src/acl/definition/roles.ts"],"names":[],"mappings":";;;AAQA,MAAa,IAAI;IAChB,YACiB,IAAU,EACV,OAAoB;QADpB,SAAI,GAAJ,IAAI,CAAM;QACV,YAAO,GAAP,OAAO,CAAa;IAErC,CAAC;CACD;AAND,oBAMC;AAEM,MAAM,UAAU,GAAG,CAAsB,IAAU,EAAE,UAAuB,EAAE,EAAc,EAAE;IACpG,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC/B,CAAC,CAAA;AAFY,QAAA,UAAU,cAEtB"}
@@ -0,0 +1,11 @@
1
+ import { Role } from './roles';
2
+ export declare class EntityVariableDefinition<Name extends string, Roles extends Role<string>> {
3
+ readonly name: Name;
4
+ readonly entityName: string;
5
+ readonly roles: Roles[];
6
+ readonly type: "entity";
7
+ constructor(name: Name, entityName: string, roles: Roles[]);
8
+ }
9
+ export declare type VariableDefinition = EntityVariableDefinition<string, Role<string>>;
10
+ export declare const createEntityVariable: <R extends Role<string>, Name extends string>(name: Name, entityName: string, roles: R | R[]) => EntityVariableDefinition<Name, R>;
11
+ //# sourceMappingURL=variables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../../src/acl/definition/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,qBAAa,wBAAwB,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC;aAInE,IAAI,EAAE,IAAI;aACV,UAAU,EAAE,MAAM;aAClB,KAAK,EAAE,KAAK,EAAE;IAL/B,SAAgB,IAAI,WAAoB;gBAGvB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,KAAK,EAAE;CAG/B;AAED,oBAAY,kBAAkB,GAC3B,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;AAEjD,eAAO,MAAM,oBAAoB,wEAEpB,MAAM,sDAQlB,CAAA"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEntityVariable = exports.EntityVariableDefinition = void 0;
4
+ class EntityVariableDefinition {
5
+ constructor(name, entityName, roles) {
6
+ this.name = name;
7
+ this.entityName = entityName;
8
+ this.roles = roles;
9
+ this.type = 'entity';
10
+ }
11
+ }
12
+ exports.EntityVariableDefinition = EntityVariableDefinition;
13
+ const createEntityVariable = (name, entityName, roles) => {
14
+ return new EntityVariableDefinition(name, entityName, Array.isArray(roles) ? roles : [roles]);
15
+ };
16
+ exports.createEntityVariable = createEntityVariable;
17
+ //# sourceMappingURL=variables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variables.js","sourceRoot":"","sources":["../../../../src/acl/definition/variables.ts"],"names":[],"mappings":";;;AAEA,MAAa,wBAAwB;IAGpC,YACiB,IAAU,EACV,UAAkB,EAClB,KAAc;QAFd,SAAI,GAAJ,IAAI,CAAM;QACV,eAAU,GAAV,UAAU,CAAQ;QAClB,UAAK,GAAL,KAAK,CAAS;QALf,SAAI,GAAG,QAAiB,CAAA;IAOxC,CAAC;CACD;AATD,4DASC;AAKM,MAAM,oBAAoB,GAAG,CACnC,IAAU,EACV,UAAkB,EAClB,KAAc,EACsB,EAAE;IACtC,OAAO,IAAI,wBAAwB,CAClC,IAAI,EACJ,UAAU,EACV,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACtC,CAAA;AACF,CAAC,CAAA;AAVY,QAAA,oBAAoB,wBAUhC"}
@@ -0,0 +1,3 @@
1
+ import { Schema } from '@contember/schema';
2
+ export declare const createSchema: (definitions: Record<string, any>, modifyCallback?: ((schema: Schema) => Schema) | undefined) => Schema;
3
+ //# sourceMappingURL=createSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSchema.d.ts","sourceRoot":"","sources":["../../src/createSchema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,eAAO,MAAM,YAAY,gBAAiB,OAAO,MAAM,EAAE,GAAG,CAAC,6BAA4B,MAAM,KAAK,MAAM,kBAAG,MAM5G,CAAA"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSchema = void 0;
4
+ const model_1 = require("./model");
5
+ const InputValidation = require("./validation");
6
+ const AclDefinition = require("./acl/definition");
7
+ const createSchema = (definitions, modifyCallback) => {
8
+ const model = model_1.SchemaDefinition.createModel(definitions);
9
+ const validation = InputValidation.parseDefinition(definitions);
10
+ const acl = AclDefinition.createAcl(definitions, model);
11
+ const schema = { model, validation, acl };
12
+ return modifyCallback ? modifyCallback(schema) : schema;
13
+ };
14
+ exports.createSchema = createSchema;
15
+ //# sourceMappingURL=createSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSchema.js","sourceRoot":"","sources":["../../src/createSchema.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAC1C,gDAA+C;AAC/C,kDAAiD;AAG1C,MAAM,YAAY,GAAG,CAAC,WAAgC,EAAE,cAA2C,EAAU,EAAE;IACrH,MAAM,KAAK,GAAG,wBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IACvD,MAAM,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;IAC/D,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IACvD,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IACzC,OAAO,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;AACxD,CAAC,CAAA;AANY,QAAA,YAAY,gBAMxB"}
@@ -1,6 +1,7 @@
1
- import { AllowAllPermissionFactory } from '@contember/schema-utils';
1
+ export { AllowAllPermissionFactory } from '@contember/schema-utils';
2
+ export { PermissionsBuilder } from './acl/builder/PermissionsBuilder';
3
+ export * as InputValidation from './validation';
4
+ export * as AclDefinition from './acl/definition';
5
+ export * from './createSchema';
2
6
  export * from './model';
3
- import PermissionsBuilder from './acl/PermissionsBuilder';
4
- import * as InputValidation from './validation';
5
- export { AllowAllPermissionFactory, PermissionsBuilder, InputValidation };
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACnE,cAAc,SAAS,CAAA;AACvB,OAAO,kBAAkB,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,eAAe,MAAM,cAAc,CAAA;AAE/C,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,KAAK,eAAe,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA"}
package/dist/src/index.js CHANGED
@@ -14,12 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.InputValidation = exports.PermissionsBuilder = exports.AllowAllPermissionFactory = void 0;
18
- const schema_utils_1 = require("@contember/schema-utils");
17
+ exports.AclDefinition = exports.InputValidation = exports.PermissionsBuilder = exports.AllowAllPermissionFactory = void 0;
18
+ var schema_utils_1 = require("@contember/schema-utils");
19
19
  Object.defineProperty(exports, "AllowAllPermissionFactory", { enumerable: true, get: function () { return schema_utils_1.AllowAllPermissionFactory; } });
20
+ var PermissionsBuilder_1 = require("./acl/builder/PermissionsBuilder");
21
+ Object.defineProperty(exports, "PermissionsBuilder", { enumerable: true, get: function () { return PermissionsBuilder_1.PermissionsBuilder; } });
22
+ exports.InputValidation = require("./validation");
23
+ exports.AclDefinition = require("./acl/definition");
24
+ __exportStar(require("./createSchema"), exports);
20
25
  __exportStar(require("./model"), exports);
21
- const PermissionsBuilder_1 = require("./acl/PermissionsBuilder");
22
- exports.PermissionsBuilder = PermissionsBuilder_1.default;
23
- const InputValidation = require("./validation");
24
- exports.InputValidation = InputValidation;
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAAmE;AAK1D,0GALA,wCAAyB,OAKA;AAJlC,0CAAuB;AACvB,iEAAyD;AAGrB,6BAH7B,4BAAkB,CAG6B;AAFtD,gDAA+C;AAES,0CAAe"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAAmE;AAA1D,yHAAA,yBAAyB,OAAA;AAClC,uEAAqE;AAA5D,wHAAA,kBAAkB,OAAA;AAC3B,kDAA+C;AAC/C,oDAAiD;AACjD,iDAA8B;AAC9B,0CAAuB"}
@@ -1,4 +1,4 @@
1
- import { EntityConstructor, Interface } from './types';
1
+ import { Interface } from './types';
2
2
  import { Model } from '@contember/schema';
3
3
  import { EnumDefinition } from './EnumDefinition';
4
4
  import 'reflect-metadata';
@@ -13,7 +13,7 @@ export declare abstract class Entity {
13
13
  [key: string]: Interface<FieldDefinition<any>> | undefined;
14
14
  }
15
15
  export declare type ModelDefinition<M> = {
16
- [K in keyof M]: EnumDefinition | EntityConstructor;
16
+ [K in keyof M]: unknown;
17
17
  };
18
18
  export declare function createModel<M extends ModelDefinition<M>>(definitions: M): Model.Schema;
19
19
  export declare const OnDelete: typeof Model.OnDelete;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/model/definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,OAAO,kBAAkB,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE5D,8BAAsB,MAAM;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAA;CAC1D;AAED,oBAAY,eAAe,CAAC,CAAC,IAAI;KAC/B,CAAC,IAAI,MAAM,CAAC,GAAG,cAAc,GAAG,iBAAiB;CAClD,CAAA;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAWtF;AAED,eAAO,MAAM,QAAQ,uBAAiB,CAAA;AACtC,eAAO,MAAM,cAAc,6BAAuB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/model/definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,OAAO,kBAAkB,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGpD,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE5D,8BAAsB,MAAM;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAA;CAC1D;AAED,oBAAY,eAAe,CAAC,CAAC,IAAI;KAC/B,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO;CACvB,CAAA;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAWtF;AAED,eAAO,MAAM,QAAQ,uBAAiB,CAAA;AACtC,eAAO,MAAM,cAAc,6BAAuB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -21,6 +21,7 @@ Object.defineProperty(exports, "EnumDefinition", { enumerable: true, get: functi
21
21
  const internal_1 = require("./internal");
22
22
  const NamingConventions_1 = require("./NamingConventions");
23
23
  require("reflect-metadata");
24
+ const utils_1 = require("../../utils");
24
25
  __exportStar(require("./fieldDefinitions"), exports);
25
26
  __exportStar(require("./EventLogDefinition"), exports);
26
27
  __exportStar(require("./EnumDefinition"), exports);
@@ -37,7 +38,7 @@ function createModel(definitions) {
37
38
  if (definition instanceof EnumDefinition_1.EnumDefinition) {
38
39
  schemaBuilder.addEnum(name, definition);
39
40
  }
40
- else {
41
+ else if ((0, utils_1.isEntityConstructor)(definition)) {
41
42
  schemaBuilder.addEntity(name, definition);
42
43
  }
43
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/model/definition/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,8CAAyC;AACzC,qDAAiD;AAoCxC,+FApCA,+BAAc,OAoCA;AAnCvB,yCAA0C;AAC1C,2DAA8D;AAC9D,4BAAyB;AAGzB,qDAAkC;AAClC,uDAAoC;AACpC,mDAAgC;AAChC,qDAAkC;AAClC,mDAAgC;AAChC,2CAA4D;AAAnD,0GAAA,YAAY,OAAA;AAErB,MAAsB,MAAM;CAE3B;AAFD,wBAEC;AAMD,SAAgB,WAAW,CAA+B,WAAc;IACvE,MAAM,aAAa,GAAG,IAAI,wBAAa,CAAC,IAAI,4CAAwB,EAAE,CAAC,CAAA;IACvE,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAC7D,IAAI,UAAU,YAAY,+BAAc,EAAE;YACzC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;SACvC;aAAM;YACN,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,UAAiB,CAAC,CAAA;SAChD;KACD;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,EAAE,CAAA;IAC3C,OAAO,MAAM,CAAA;AACd,CAAC;AAXD,kCAWC;AAEY,QAAA,QAAQ,GAAG,cAAK,CAAC,QAAQ,CAAA;AACzB,QAAA,cAAc,GAAG,cAAK,CAAC,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/model/definition/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,8CAAyC;AACzC,qDAAiD;AAqCxC,+FArCA,+BAAc,OAqCA;AApCvB,yCAA0C;AAC1C,2DAA8D;AAC9D,4BAAyB;AAEzB,uCAAiD;AAEjD,qDAAkC;AAClC,uDAAoC;AACpC,mDAAgC;AAChC,qDAAkC;AAClC,mDAAgC;AAChC,2CAA4D;AAAnD,0GAAA,YAAY,OAAA;AAErB,MAAsB,MAAM;CAE3B;AAFD,wBAEC;AAMD,SAAgB,WAAW,CAA+B,WAAc;IACvE,MAAM,aAAa,GAAG,IAAI,wBAAa,CAAC,IAAI,4CAAwB,EAAE,CAAC,CAAA;IACvE,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAC7D,IAAI,UAAU,YAAY,+BAAc,EAAE;YACzC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;SACvC;aAAM,IAAI,IAAA,2BAAmB,EAAC,UAAU,CAAC,EAAE;YAC3C,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;SACzC;KACD;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,EAAE,CAAA;IAC3C,OAAO,MAAM,CAAA;AACd,CAAC;AAXD,kCAWC;AAEY,QAAA,QAAQ,GAAG,cAAK,CAAC,QAAQ,CAAA;AACzB,QAAA,cAAc,GAAG,cAAK,CAAC,cAAc,CAAA"}