@contember/engine-content-api 1.0.0-rc.9 → 1.0.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 (81) hide show
  1. package/dist/src/acl/Authorizator.d.ts +8 -3
  2. package/dist/src/acl/Authorizator.d.ts.map +1 -1
  3. package/dist/src/acl/Authorizator.js +46 -0
  4. package/dist/src/acl/Authorizator.js.map +1 -1
  5. package/dist/src/acl/index.d.ts +0 -1
  6. package/dist/src/acl/index.d.ts.map +1 -1
  7. package/dist/src/acl/index.js +0 -1
  8. package/dist/src/acl/index.js.map +1 -1
  9. package/dist/src/introspection/IntrospectionSchemaFactory.js +2 -2
  10. package/dist/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
  11. package/dist/src/mapper/select/SelectBuilder.d.ts.map +1 -1
  12. package/dist/src/mapper/select/SelectBuilder.js +1 -3
  13. package/dist/src/mapper/select/SelectBuilder.js.map +1 -1
  14. package/dist/src/resolvers/MutationResolver.d.ts.map +1 -1
  15. package/dist/src/resolvers/MutationResolver.js +4 -3
  16. package/dist/src/resolvers/MutationResolver.js.map +1 -1
  17. package/dist/src/schema/EntityTypeProvider.js +3 -3
  18. package/dist/src/schema/EntityTypeProvider.js.map +1 -1
  19. package/dist/src/schema/FieldAccessVisitor.js +2 -2
  20. package/dist/src/schema/FieldAccessVisitor.js.map +1 -1
  21. package/dist/src/schema/MutationProvider.js +2 -2
  22. package/dist/src/schema/MutationProvider.js.map +1 -1
  23. package/dist/src/schema/QueryProvider.js +1 -1
  24. package/dist/src/schema/QueryProvider.js.map +1 -1
  25. package/dist/src/schema/WhereTypeProvider.js +2 -2
  26. package/dist/src/schema/WhereTypeProvider.js.map +1 -1
  27. package/dist/src/schema/entities/FieldTypeVisitor.d.ts +5 -3
  28. package/dist/src/schema/entities/FieldTypeVisitor.d.ts.map +1 -1
  29. package/dist/src/schema/entities/FieldTypeVisitor.js +13 -2
  30. package/dist/src/schema/entities/FieldTypeVisitor.js.map +1 -1
  31. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js +1 -1
  32. package/dist/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
  33. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js +3 -3
  34. package/dist/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  35. package/dist/src/schema/mutations/EntityInputProvider.js +1 -1
  36. package/dist/src/schema/mutations/EntityInputProvider.js.map +1 -1
  37. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js +1 -1
  38. package/dist/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
  39. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  40. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js +5 -5
  41. package/dist/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  42. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +1 -1
  43. package/dist/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
  44. package/dist/src/tsconfig.tsbuildinfo +1 -1
  45. package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js +45 -2
  46. package/dist/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.js.map +1 -1
  47. package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js +45 -1
  48. package/dist/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.js.map +1 -1
  49. package/dist/tests/cases/integration/graphQlSchema/schema-acl-predicate.gql +110 -0
  50. package/dist/tests/cases/integration/graphQlSchema/schema-acl-predicate2.gql +110 -0
  51. package/dist/tests/src/test.js +1 -1
  52. package/dist/tests/src/test.js.map +1 -1
  53. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  54. package/package.json +10 -10
  55. package/src/acl/Authorizator.ts +48 -4
  56. package/src/acl/index.ts +0 -1
  57. package/src/introspection/IntrospectionSchemaFactory.ts +2 -2
  58. package/src/mapper/select/SelectBuilder.ts +1 -3
  59. package/src/resolvers/MutationResolver.ts +4 -3
  60. package/src/schema/EntityTypeProvider.ts +3 -3
  61. package/src/schema/FieldAccessVisitor.ts +2 -2
  62. package/src/schema/MutationProvider.ts +2 -2
  63. package/src/schema/QueryProvider.ts +1 -1
  64. package/src/schema/WhereTypeProvider.ts +2 -2
  65. package/src/schema/entities/FieldTypeVisitor.ts +17 -8
  66. package/src/schema/mutations/CreateEntityInputFieldVisitor.ts +1 -1
  67. package/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.ts +3 -3
  68. package/src/schema/mutations/EntityInputProvider.ts +1 -1
  69. package/src/schema/mutations/UpdateEntityInputFieldVisitor.ts +1 -1
  70. package/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.ts +5 -9
  71. package/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.ts +1 -1
  72. package/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.ts +49 -2
  73. package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +57 -2
  74. package/tests/cases/integration/graphQlSchema/schema-acl-predicate.gql +110 -0
  75. package/tests/cases/integration/graphQlSchema/schema-acl-predicate2.gql +110 -0
  76. package/tests/src/test.ts +2 -2
  77. package/dist/src/acl/StaticAuthorizator.d.ts +0 -9
  78. package/dist/src/acl/StaticAuthorizator.d.ts.map +0 -1
  79. package/dist/src/acl/StaticAuthorizator.js +0 -32
  80. package/dist/src/acl/StaticAuthorizator.js.map +0 -1
  81. package/src/acl/StaticAuthorizator.ts +0 -29
@@ -0,0 +1,110 @@
1
+ type Query {
2
+ getTest(by: TestUniqueWhere!, filter: TestWhere): Test
3
+ listTest(filter: TestWhere, orderBy: [TestOrderBy!], offset: Int, limit: Int): [Test!]!
4
+ paginateTest(filter: TestWhere, orderBy: [TestOrderBy!], skip: Int, first: Int): TestConnection!
5
+ transaction: QueryTransaction
6
+ _info: Info
7
+ }
8
+
9
+ type Test {
10
+ _meta: TestMeta
11
+ id: UUID!
12
+ a: String!
13
+ }
14
+
15
+ type TestMeta {
16
+ id: FieldMeta
17
+ a: FieldMeta
18
+ }
19
+
20
+ type FieldMeta {
21
+ readable: Boolean
22
+ updatable: Boolean
23
+ }
24
+
25
+ scalar UUID
26
+
27
+ input TestUniqueWhere {
28
+ id: UUID
29
+ }
30
+
31
+ input TestWhere {
32
+ id: UUIDCondition
33
+ a: StringCondition
34
+ and: [TestWhere]
35
+ or: [TestWhere]
36
+ not: TestWhere
37
+ }
38
+
39
+ input UUIDCondition {
40
+ and: [UUIDCondition!]
41
+ or: [UUIDCondition!]
42
+ not: UUIDCondition
43
+ null: Boolean
44
+ isNull: Boolean
45
+ eq: UUID
46
+ notEq: UUID
47
+ in: [UUID!]
48
+ notIn: [UUID!]
49
+ lt: UUID
50
+ lte: UUID
51
+ gt: UUID
52
+ gte: UUID
53
+ }
54
+
55
+ input StringCondition {
56
+ and: [StringCondition!]
57
+ or: [StringCondition!]
58
+ not: StringCondition
59
+ null: Boolean
60
+ isNull: Boolean
61
+ eq: String
62
+ notEq: String
63
+ in: [String!]
64
+ notIn: [String!]
65
+ lt: String
66
+ lte: String
67
+ gt: String
68
+ gte: String
69
+ contains: String
70
+ startsWith: String
71
+ endsWith: String
72
+ containsCI: String
73
+ startsWithCI: String
74
+ endsWithCI: String
75
+ }
76
+
77
+ input TestOrderBy {
78
+ _random: Boolean
79
+ _randomSeeded: Int
80
+ id: OrderDirection
81
+ a: OrderDirection
82
+ }
83
+
84
+ enum OrderDirection {
85
+ asc
86
+ desc
87
+ }
88
+
89
+ type TestConnection {
90
+ pageInfo: PageInfo!
91
+ edges: [TestEdge!]!
92
+ }
93
+
94
+ type PageInfo {
95
+ totalCount: Int!
96
+ }
97
+
98
+ type TestEdge {
99
+ node: Test!
100
+ }
101
+
102
+ type QueryTransaction {
103
+ getTest(by: TestUniqueWhere!, filter: TestWhere): Test
104
+ listTest(filter: TestWhere, orderBy: [TestOrderBy!], offset: Int, limit: Int): [Test!]!
105
+ paginateTest(filter: TestWhere, orderBy: [TestOrderBy!], skip: Int, first: Int): TestConnection!
106
+ }
107
+
108
+ type Info {
109
+ description: String
110
+ }
package/tests/src/test.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Acl, Model, Schema, Validation } from '@contember/schema'
2
- import { ExecutionContainerFactory, GraphQlSchemaBuilderFactory, StaticAuthorizator } from '../../src'
2
+ import { ExecutionContainerFactory, GraphQlSchemaBuilderFactory, Authorizator } from '../../src'
3
3
  import { AllowAllPermissionFactory, emptySchema } from '@contember/schema-utils'
4
4
  import { executeGraphQlTest } from './testGraphql'
5
5
  import { Client } from '@contember/database'
@@ -89,7 +89,7 @@ export const failedTransaction = (executes: SqlQuery[]): SqlQuery[] => {
89
89
 
90
90
  export const execute = async (test: Test) => {
91
91
  const permissions: Acl.Permissions = test.permissions || new AllowAllPermissionFactory().create(test.schema)
92
- const authorizator = new StaticAuthorizator(permissions)
92
+ const authorizator = new Authorizator(permissions)
93
93
  const builder = new GraphQlSchemaBuilderFactory().create(test.schema, authorizator)
94
94
  const graphQLSchema = builder.build()
95
95
 
@@ -1,9 +0,0 @@
1
- import { Acl } from '@contember/schema';
2
- import { Authorizator } from './Authorizator';
3
- export declare class StaticAuthorizator implements Authorizator {
4
- private readonly permissions;
5
- constructor(permissions: Acl.Permissions);
6
- isAllowed(operation: Acl.Operation, entity: string, field?: string): boolean;
7
- isCustomPrimaryAllowed(entity: string): boolean;
8
- }
9
- //# sourceMappingURL=StaticAuthorizator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StaticAuthorizator.d.ts","sourceRoot":"","sources":["../../../src/acl/StaticAuthorizator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,qBAAa,kBAAmB,YAAW,YAAY;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,GAAG,CAAC,WAAW;IAEzD,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO;IAmB5E,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAG/C"}
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StaticAuthorizator = void 0;
4
- const schema_1 = require("@contember/schema");
5
- class StaticAuthorizator {
6
- constructor(permissions) {
7
- this.permissions = permissions;
8
- }
9
- isAllowed(operation, entity, field) {
10
- if (!this.permissions[entity]) {
11
- return false;
12
- }
13
- const entityPermissions = this.permissions[entity];
14
- if (operation === schema_1.Acl.Operation.delete) {
15
- return !!entityPermissions.operations.delete;
16
- }
17
- const fieldPermissions = entityPermissions.operations[operation];
18
- if (!fieldPermissions) {
19
- return false;
20
- }
21
- if (field) {
22
- return !!fieldPermissions[field];
23
- }
24
- return Object.values(fieldPermissions).filter(it => !!it).length > 0;
25
- }
26
- isCustomPrimaryAllowed(entity) {
27
- var _a, _b, _c;
28
- return ((_c = (_b = (_a = this.permissions) === null || _a === void 0 ? void 0 : _a[entity]) === null || _b === void 0 ? void 0 : _b.operations) === null || _c === void 0 ? void 0 : _c.customPrimary) || false;
29
- }
30
- }
31
- exports.StaticAuthorizator = StaticAuthorizator;
32
- //# sourceMappingURL=StaticAuthorizator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StaticAuthorizator.js","sourceRoot":"","sources":["../../../src/acl/StaticAuthorizator.ts"],"names":[],"mappings":";;;AAAA,8CAAuC;AAGvC,MAAa,kBAAkB;IAC9B,YAA6B,WAA4B;QAA5B,gBAAW,GAAX,WAAW,CAAiB;IAAG,CAAC;IAE7D,SAAS,CAAC,SAAwB,EAAE,MAAc,EAAE,KAAc;QACjE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YAC9B,OAAO,KAAK,CAAA;SACZ;QACD,MAAM,iBAAiB,GAA0B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAEzE,IAAI,SAAS,KAAK,YAAG,CAAC,SAAS,CAAC,MAAM,EAAE;YACvC,OAAO,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAA;SAC5C;QACD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChE,IAAI,CAAC,gBAAgB,EAAE;YACtB,OAAO,KAAK,CAAA;SACZ;QACD,IAAI,KAAK,EAAE;YACV,OAAO,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;SAChC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IACrE,CAAC;IAED,sBAAsB,CAAC,MAAc;;QACpC,OAAO,CAAA,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,0CAAG,MAAM,CAAC,0CAAE,UAAU,0CAAE,aAAa,KAAI,KAAK,CAAA;IACtE,CAAC;CACD;AAzBD,gDAyBC"}
@@ -1,29 +0,0 @@
1
- import { Acl } from '@contember/schema'
2
- import { Authorizator } from './Authorizator'
3
-
4
- export class StaticAuthorizator implements Authorizator {
5
- constructor(private readonly permissions: Acl.Permissions) {}
6
-
7
- isAllowed(operation: Acl.Operation, entity: string, field?: string): boolean {
8
- if (!this.permissions[entity]) {
9
- return false
10
- }
11
- const entityPermissions: Acl.EntityPermissions = this.permissions[entity]
12
-
13
- if (operation === Acl.Operation.delete) {
14
- return !!entityPermissions.operations.delete
15
- }
16
- const fieldPermissions = entityPermissions.operations[operation]
17
- if (!fieldPermissions) {
18
- return false
19
- }
20
- if (field) {
21
- return !!fieldPermissions[field]
22
- }
23
- return Object.values(fieldPermissions).filter(it => !!it).length > 0
24
- }
25
-
26
- isCustomPrimaryAllowed(entity: string): boolean {
27
- return this.permissions?.[entity]?.operations?.customPrimary || false
28
- }
29
- }