@contember/engine-content-api 2.1.0-alpha.1 → 2.1.0-alpha.3

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 (164) hide show
  1. package/dist/development/index.cjs +1 -0
  2. package/dist/development/index.cjs.map +1 -1
  3. package/dist/development/index.js +1 -0
  4. package/dist/development/index.js.map +1 -1
  5. package/dist/development/src/ExecutionContainer.cjs +5 -3
  6. package/dist/development/src/ExecutionContainer.cjs.map +1 -1
  7. package/dist/development/src/ExecutionContainer.js +5 -3
  8. package/dist/development/src/ExecutionContainer.js.map +1 -1
  9. package/dist/development/src/acl/Authorizator.cjs +5 -1
  10. package/dist/development/src/acl/Authorizator.cjs.map +1 -1
  11. package/dist/development/src/acl/Authorizator.js +5 -1
  12. package/dist/development/src/acl/Authorizator.js.map +1 -1
  13. package/dist/development/src/input-validation/dependencies/DependencyCollector.cjs +3 -0
  14. package/dist/development/src/input-validation/dependencies/DependencyCollector.cjs.map +1 -1
  15. package/dist/development/src/input-validation/dependencies/DependencyCollector.js +3 -0
  16. package/dist/development/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
  17. package/dist/development/src/mapper/Mapper.cjs +1 -0
  18. package/dist/development/src/mapper/Mapper.cjs.map +1 -1
  19. package/dist/development/src/mapper/Mapper.js +1 -0
  20. package/dist/development/src/mapper/Mapper.js.map +1 -1
  21. package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs +30 -3
  22. package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
  23. package/dist/development/src/mapper/select/handlers/FieldsVisitor.js +30 -3
  24. package/dist/development/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
  25. package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.cjs +6 -2
  26. package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.cjs.map +1 -1
  27. package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.js +6 -2
  28. package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
  29. package/dist/development/src/resolvers/MutationResolver.cjs +1 -0
  30. package/dist/development/src/resolvers/MutationResolver.cjs.map +1 -1
  31. package/dist/development/src/resolvers/MutationResolver.js +1 -0
  32. package/dist/development/src/resolvers/MutationResolver.js.map +1 -1
  33. package/dist/development/src/resolvers/RefreshViewResolver.cjs +20 -0
  34. package/dist/development/src/resolvers/RefreshViewResolver.cjs.map +1 -0
  35. package/dist/development/src/resolvers/RefreshViewResolver.js +20 -0
  36. package/dist/development/src/resolvers/RefreshViewResolver.js.map +1 -0
  37. package/dist/development/src/schema/GraphQlSchemaBuilder.cjs +6 -1
  38. package/dist/development/src/schema/GraphQlSchemaBuilder.cjs.map +1 -1
  39. package/dist/development/src/schema/GraphQlSchemaBuilder.js +6 -1
  40. package/dist/development/src/schema/GraphQlSchemaBuilder.js.map +1 -1
  41. package/dist/development/src/schema/GraphQlSchemaBuilderFactory.cjs +2 -1
  42. package/dist/development/src/schema/GraphQlSchemaBuilderFactory.cjs.map +1 -1
  43. package/dist/development/src/schema/GraphQlSchemaBuilderFactory.js +2 -1
  44. package/dist/development/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
  45. package/dist/development/src/schema/RefreshViewMutationProvider.cjs +35 -0
  46. package/dist/development/src/schema/RefreshViewMutationProvider.cjs.map +1 -0
  47. package/dist/development/src/schema/RefreshViewMutationProvider.js +35 -0
  48. package/dist/development/src/schema/RefreshViewMutationProvider.js.map +1 -0
  49. package/dist/development/src/utils/viewComputedId.cjs +16 -0
  50. package/dist/development/src/utils/viewComputedId.cjs.map +1 -0
  51. package/dist/development/src/utils/viewComputedId.js +16 -0
  52. package/dist/development/src/utils/viewComputedId.js.map +1 -0
  53. package/dist/production/index.cjs +1 -0
  54. package/dist/production/index.cjs.map +1 -1
  55. package/dist/production/index.js +1 -0
  56. package/dist/production/index.js.map +1 -1
  57. package/dist/production/src/ExecutionContainer.cjs +5 -3
  58. package/dist/production/src/ExecutionContainer.cjs.map +1 -1
  59. package/dist/production/src/ExecutionContainer.js +5 -3
  60. package/dist/production/src/ExecutionContainer.js.map +1 -1
  61. package/dist/production/src/acl/Authorizator.cjs +5 -1
  62. package/dist/production/src/acl/Authorizator.cjs.map +1 -1
  63. package/dist/production/src/acl/Authorizator.js +5 -1
  64. package/dist/production/src/acl/Authorizator.js.map +1 -1
  65. package/dist/production/src/input-validation/dependencies/DependencyCollector.cjs +3 -0
  66. package/dist/production/src/input-validation/dependencies/DependencyCollector.cjs.map +1 -1
  67. package/dist/production/src/input-validation/dependencies/DependencyCollector.js +3 -0
  68. package/dist/production/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
  69. package/dist/production/src/mapper/Mapper.cjs +1 -0
  70. package/dist/production/src/mapper/Mapper.cjs.map +1 -1
  71. package/dist/production/src/mapper/Mapper.js +1 -0
  72. package/dist/production/src/mapper/Mapper.js.map +1 -1
  73. package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs +30 -3
  74. package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
  75. package/dist/production/src/mapper/select/handlers/FieldsVisitor.js +30 -3
  76. package/dist/production/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
  77. package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.cjs +6 -2
  78. package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.cjs.map +1 -1
  79. package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.js +6 -2
  80. package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
  81. package/dist/production/src/resolvers/MutationResolver.cjs +1 -0
  82. package/dist/production/src/resolvers/MutationResolver.cjs.map +1 -1
  83. package/dist/production/src/resolvers/MutationResolver.js +1 -0
  84. package/dist/production/src/resolvers/MutationResolver.js.map +1 -1
  85. package/dist/production/src/resolvers/RefreshViewResolver.cjs +20 -0
  86. package/dist/production/src/resolvers/RefreshViewResolver.cjs.map +1 -0
  87. package/dist/production/src/resolvers/RefreshViewResolver.js +20 -0
  88. package/dist/production/src/resolvers/RefreshViewResolver.js.map +1 -0
  89. package/dist/production/src/schema/GraphQlSchemaBuilder.cjs +6 -1
  90. package/dist/production/src/schema/GraphQlSchemaBuilder.cjs.map +1 -1
  91. package/dist/production/src/schema/GraphQlSchemaBuilder.js +6 -1
  92. package/dist/production/src/schema/GraphQlSchemaBuilder.js.map +1 -1
  93. package/dist/production/src/schema/GraphQlSchemaBuilderFactory.cjs +2 -1
  94. package/dist/production/src/schema/GraphQlSchemaBuilderFactory.cjs.map +1 -1
  95. package/dist/production/src/schema/GraphQlSchemaBuilderFactory.js +2 -1
  96. package/dist/production/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
  97. package/dist/production/src/schema/RefreshViewMutationProvider.cjs +35 -0
  98. package/dist/production/src/schema/RefreshViewMutationProvider.cjs.map +1 -0
  99. package/dist/production/src/schema/RefreshViewMutationProvider.js +35 -0
  100. package/dist/production/src/schema/RefreshViewMutationProvider.js.map +1 -0
  101. package/dist/production/src/utils/viewComputedId.cjs +16 -0
  102. package/dist/production/src/utils/viewComputedId.cjs.map +1 -0
  103. package/dist/production/src/utils/viewComputedId.js +16 -0
  104. package/dist/production/src/utils/viewComputedId.js.map +1 -0
  105. package/dist/tests/cases/integration/graphQlRequests/validation/utils.d.ts.map +1 -1
  106. package/dist/tests/src/tags.d.ts.map +1 -1
  107. package/dist/tests/src/test.d.ts.map +1 -1
  108. package/dist/tests/src/testGraphql.d.ts.map +1 -1
  109. package/dist/tests/src/testUuid.d.ts.map +1 -1
  110. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  111. package/dist/types/ExecutionContainer.d.ts +8 -2
  112. package/dist/types/ExecutionContainer.d.ts.map +1 -1
  113. package/dist/types/acl/Authorizator.d.ts +3 -1
  114. package/dist/types/acl/Authorizator.d.ts.map +1 -1
  115. package/dist/types/acl/VariableUtils.d.ts.map +1 -1
  116. package/dist/types/input-validation/ValidationContext.d.ts.map +1 -1
  117. package/dist/types/input-validation/ValidationEvaluation.d.ts.map +1 -1
  118. package/dist/types/input-validation/ValidationPath.d.ts.map +1 -1
  119. package/dist/types/introspection/introspection.schema.d.ts.map +1 -1
  120. package/dist/types/mapper/ColumnValue.d.ts.map +1 -1
  121. package/dist/types/mapper/ErrorUtils.d.ts.map +1 -1
  122. package/dist/types/mapper/EventManager.d.ts.map +1 -1
  123. package/dist/types/mapper/MutationProcessorHelper.d.ts.map +1 -1
  124. package/dist/types/mapper/Result.d.ts.map +1 -1
  125. package/dist/types/mapper/delete/helpers.d.ts.map +1 -1
  126. package/dist/types/mapper/select/handlers/FieldsVisitor.d.ts +4 -1
  127. package/dist/types/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
  128. package/dist/types/mapper/select/handlers/FieldsVisitorFactory.d.ts +5 -2
  129. package/dist/types/mapper/select/handlers/FieldsVisitorFactory.d.ts.map +1 -1
  130. package/dist/types/mapper/select/optimizer/WhereReplacer.d.ts.map +1 -1
  131. package/dist/types/mapper/select/optimizer/helpers.d.ts.map +1 -1
  132. package/dist/types/resolvers/ReadHelpers.d.ts.map +1 -1
  133. package/dist/types/resolvers/RefreshViewResolver.d.ts +11 -0
  134. package/dist/types/resolvers/RefreshViewResolver.d.ts.map +1 -0
  135. package/dist/types/schema/GraphQlSchemaBuilder.d.ts +3 -1
  136. package/dist/types/schema/GraphQlSchemaBuilder.d.ts.map +1 -1
  137. package/dist/types/schema/GraphQlSchemaBuilderFactory.d.ts +3 -0
  138. package/dist/types/schema/GraphQlSchemaBuilderFactory.d.ts.map +1 -1
  139. package/dist/types/schema/OperationExtension.d.ts.map +1 -1
  140. package/dist/types/schema/RefreshViewMutationProvider.d.ts +11 -0
  141. package/dist/types/schema/RefreshViewMutationProvider.d.ts.map +1 -0
  142. package/dist/types/schema/utils.d.ts.map +1 -1
  143. package/dist/types/tsconfig.tsbuildinfo +1 -1
  144. package/dist/types/utils/isIt.d.ts.map +1 -1
  145. package/dist/types/utils/paginationUtils.d.ts.map +1 -1
  146. package/dist/types/utils/promises.d.ts.map +1 -1
  147. package/dist/types/utils/singletonFactory.d.ts.map +1 -1
  148. package/dist/types/utils/strings.d.ts.map +1 -1
  149. package/dist/types/utils/tuple.d.ts.map +1 -1
  150. package/dist/types/utils/uniqueWhereFields.d.ts.map +1 -1
  151. package/dist/types/utils/viewComputedId.d.ts +2 -0
  152. package/dist/types/utils/viewComputedId.d.ts.map +1 -0
  153. package/package.json +11 -11
  154. package/src/ExecutionContainer.ts +8 -4
  155. package/src/acl/Authorizator.ts +5 -0
  156. package/src/mapper/select/handlers/FieldsVisitor.ts +33 -1
  157. package/src/mapper/select/handlers/FieldsVisitorFactory.ts +6 -1
  158. package/src/resolvers/RefreshViewResolver.ts +23 -0
  159. package/src/schema/GraphQlSchemaBuilder.ts +8 -0
  160. package/src/schema/GraphQlSchemaBuilderFactory.ts +5 -2
  161. package/src/schema/RefreshViewMutationProvider.ts +40 -0
  162. package/src/utils/viewComputedId.ts +23 -0
  163. package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +1 -1
  164. package/tests/src/test.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"GraphQlSchemaBuilderFactory.js","sources":["../../../../../packages/engine-content-api/src/schema/GraphQlSchemaBuilderFactory.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { EntityTypeProvider } from './EntityTypeProvider'\nimport { ColumnTypeResolver } from './ColumnTypeResolver'\nimport { EnumsProvider } from './EnumsProvider'\nimport { QueryProvider } from './QueryProvider'\nimport { MutationProvider } from './MutationProvider'\nimport { WhereTypeProvider } from './WhereTypeProvider'\nimport { ConditionTypeProvider } from './ConditionTypeProvider'\nimport { GraphQlSchemaBuilder } from './GraphQlSchemaBuilder'\nimport { CreateEntityInputFieldVisitor, EntityInputType } from './mutations'\nimport { CreateEntityRelationInputProvider } from './mutations'\nimport { CreateEntityRelationInputFieldVisitor } from './mutations'\nimport { Accessor } from '../utils'\nimport { UpdateEntityRelationInputFieldVisitor } from './mutations'\nimport { UpdateEntityRelationInputProvider } from './mutations'\nimport { UpdateEntityInputFieldVisitor } from './mutations'\nimport { EntityInputProvider } from './mutations'\nimport { UpdateEntityRelationAllowedOperationsVisitor } from './mutations'\nimport { CreateEntityRelationAllowedOperationsVisitor } from './mutations'\nimport { OrderByTypeProvider } from './OrderByTypeProvider'\nimport { HasManyToHasOneReducer } from '../extensions'\nimport { HasManyToHasOneRelationReducerFieldVisitor } from '../extensions'\nimport { ValidationQueriesProvider } from './ValidationQueriesProvider'\nimport { CustomTypesProvider } from './CustomTypesProvider'\nimport { ResultSchemaTypeProvider } from './ResultSchemaTypeProvider'\nimport { Authorizator } from '../acl'\nimport { PaginatedFieldConfigFactory } from './PaginatedFieldConfigFactory'\nimport { PaginatedHasManyFieldProvider } from '../extensions/paginatedHasMany/PaginatedHasManyFieldProvider'\nimport { PaginatedHasManyFieldProviderVisitor } from '../extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor'\nimport { Builder } from '@contember/dic'\nimport { ConnectOrCreateRelationInputProvider } from './mutations/ConnectOrCreateRelationInputProvider'\n\nexport class GraphQlSchemaBuilderFactory {\n\tconstructor() {}\n\n\tpublic create(schema: Model.Schema, authorizator: Authorizator): GraphQlSchemaBuilder {\n\t\treturn this.createContainerBuilder(schema, authorizator).build().graphQlSchemaBuilder\n\t}\n\n\tpublic createContainerBuilder(schema: Model.Schema, authorizator: Authorizator) {\n\t\treturn new Builder({})\n\t\t\t.addService('schema', () =>\n\t\t\t\tschema)\n\t\t\t.addService('authorizator', () =>\n\t\t\t\tauthorizator)\n\t\t\t.addService('customTypesProvider', ({}) =>\n\t\t\t\tnew CustomTypesProvider())\n\t\t\t.addService('enumsProvider', ({ schema }) =>\n\t\t\t\tnew EnumsProvider(schema))\n\t\t\t.addService('columnTypeResolver', ({ schema, enumsProvider, customTypesProvider }) =>\n\t\t\t\tnew ColumnTypeResolver(schema, enumsProvider, customTypesProvider))\n\t\t\t.addService('conditionTypeProvider', ({ columnTypeResolver }) =>\n\t\t\t\tnew ConditionTypeProvider(columnTypeResolver))\n\t\t\t.addService('whereTypeProvider', ({ schema, authorizator, columnTypeResolver, conditionTypeProvider }) =>\n\t\t\t\tnew WhereTypeProvider(schema, authorizator, columnTypeResolver, conditionTypeProvider))\n\t\t\t.addService('orderByTypeProvider', ({ schema, authorizator }) =>\n\t\t\t\tnew OrderByTypeProvider(schema, authorizator))\n\t\t\t.addService('entityTypeProvider', ({ schema, authorizator, columnTypeResolver, whereTypeProvider, orderByTypeProvider }) =>\n\t\t\t\tnew EntityTypeProvider(schema, authorizator, columnTypeResolver, whereTypeProvider, orderByTypeProvider))\n\t\t\t.addService('paginatedFieldConfigFactory', ({ whereTypeProvider, orderByTypeProvider, entityTypeProvider }) =>\n\t\t\t\tnew PaginatedFieldConfigFactory(whereTypeProvider, orderByTypeProvider, entityTypeProvider))\n\t\t\t.addService('hasManyToOneReducerVisitor', ({ schema, authorizator, entityTypeProvider, whereTypeProvider }) =>\n\t\t\t\tnew HasManyToHasOneRelationReducerFieldVisitor(schema, authorizator, entityTypeProvider, whereTypeProvider))\n\t\t\t.addService('hasManyToOneReducer', ({ schema, hasManyToOneReducerVisitor }) =>\n\t\t\t\tnew HasManyToHasOneReducer(schema, hasManyToOneReducerVisitor))\n\t\t\t.addService('paginatedHasManyFieldProviderVisitor', ({ paginatedFieldConfigFactory }) =>\n\t\t\t\tnew PaginatedHasManyFieldProviderVisitor(paginatedFieldConfigFactory))\n\t\t\t.addService('paginatedHasManyFieldProvider', ({ schema, paginatedHasManyFieldProviderVisitor }) =>\n\t\t\t\tnew PaginatedHasManyFieldProvider(schema, paginatedHasManyFieldProviderVisitor))\n\t\t\t.addService('queryProvider', ({ authorizator, whereTypeProvider, orderByTypeProvider, entityTypeProvider, paginatedFieldConfigFactory }) =>\n\t\t\t\tnew QueryProvider(authorizator, whereTypeProvider, orderByTypeProvider, entityTypeProvider, paginatedFieldConfigFactory))\n\t\t\t.addService('createEntityInputProviderAccessor', ({}) =>\n\t\t\t\tnew Accessor<EntityInputProvider<EntityInputType.create>>())\n\t\t\t.addService('createEntityRelationAllowedOperationsVisitor', ({ authorizator }) =>\n\t\t\t\tnew CreateEntityRelationAllowedOperationsVisitor(authorizator))\n\t\t\t.addService('connectOrCreateRelationInputProvider', ({ schema, whereTypeProvider, createEntityInputProviderAccessor }) =>\n\t\t\t\t new ConnectOrCreateRelationInputProvider(schema, whereTypeProvider, createEntityInputProviderAccessor))\n\t\t\t.addService('createEntityRelationInputFieldVisitor', ({ schema,\twhereTypeProvider, createEntityInputProviderAccessor, createEntityRelationAllowedOperationsVisitor, connectOrCreateRelationInputProvider }) =>\n\t\t\t\tnew CreateEntityRelationInputFieldVisitor(schema, whereTypeProvider, createEntityInputProviderAccessor, createEntityRelationAllowedOperationsVisitor, connectOrCreateRelationInputProvider))\n\t\t\t.addService('createEntityRelationInputProvider', ({ schema, createEntityRelationInputFieldVisitor }) =>\n\t\t\t\tnew CreateEntityRelationInputProvider(schema, createEntityRelationInputFieldVisitor))\n\t\t\t.addService('createEntityInputFieldVisitor', ({ schema, authorizator, columnTypeResolver, createEntityRelationInputProvider }) =>\n\t\t\t\tnew CreateEntityInputFieldVisitor(schema, authorizator, columnTypeResolver, createEntityRelationInputProvider))\n\t\t\t.addService('createEntityInputProvider', ({ schema, authorizator, createEntityInputFieldVisitor }) =>\n\t\t\t\tnew EntityInputProvider(EntityInputType.create, schema, authorizator, createEntityInputFieldVisitor))\n\t\t\t.addService('updateEntityInputProviderAccessor', ({}) =>\n\t\t\t\tnew Accessor<EntityInputProvider<EntityInputType.update>>())\n\t\t\t.addService('updateEntityRelationAllowedOperationsVisitor', ({ authorizator }) =>\n\t\t\t\tnew UpdateEntityRelationAllowedOperationsVisitor(authorizator))\n\t\t\t.addService('updateEntityRelationInputFieldVisitor', ({ schema, authorizator, whereTypeProvider, updateEntityInputProviderAccessor, createEntityInputProvider, updateEntityRelationAllowedOperationsVisitor, connectOrCreateRelationInputProvider }) =>\n\t\t\t\tnew UpdateEntityRelationInputFieldVisitor(schema, authorizator, whereTypeProvider, updateEntityInputProviderAccessor, createEntityInputProvider, updateEntityRelationAllowedOperationsVisitor, connectOrCreateRelationInputProvider))\n\t\t\t.addService('updateEntityRelationInputProvider', ({ schema, updateEntityRelationInputFieldVisitor }) =>\n\t\t\t\tnew UpdateEntityRelationInputProvider(schema, updateEntityRelationInputFieldVisitor))\n\t\t\t.addService('updateEntityInputFieldVisitor', ({ authorizator, columnTypeResolver, updateEntityRelationInputProvider }) =>\n\t\t\t\tnew UpdateEntityInputFieldVisitor(authorizator, columnTypeResolver, updateEntityRelationInputProvider))\n\t\t\t.addService('updateEntityInputProvider', ({ schema, authorizator, updateEntityInputFieldVisitor }) =>\n\t\t\t\tnew EntityInputProvider(EntityInputType.update, schema, authorizator, updateEntityInputFieldVisitor))\n\t\t\t.addService('resultSchemaTypeProvider', ({}) =>\n\t\t\t\tnew ResultSchemaTypeProvider())\n\t\t\t.addService('mutationProvider', ({ authorizator, whereTypeProvider, entityTypeProvider, createEntityInputProvider, updateEntityInputProvider, resultSchemaTypeProvider }) =>\n\t\t\t\tnew MutationProvider(authorizator, whereTypeProvider, entityTypeProvider, createEntityInputProvider, updateEntityInputProvider, resultSchemaTypeProvider))\n\t\t\t.addService('validationQueriesProvider', ({ whereTypeProvider, createEntityInputProvider, updateEntityInputProvider, resultSchemaTypeProvider }) =>\n\t\t\t\tnew ValidationQueriesProvider(whereTypeProvider, createEntityInputProvider, updateEntityInputProvider, resultSchemaTypeProvider))\n\t\t\t.addService('graphQlSchemaBuilder', ({ schema, queryProvider, validationQueriesProvider, mutationProvider, resultSchemaTypeProvider }) =>\n\t\t\t\tnew GraphQlSchemaBuilder(schema, queryProvider, validationQueriesProvider, mutationProvider, resultSchemaTypeProvider))\n\t\t\t.setupService('createEntityInputProvider', (it, { createEntityInputProviderAccessor }) => {\n\t\t\t\tcreateEntityInputProviderAccessor.set(it)\n\t\t\t})\n\t\t\t.setupService('updateEntityInputProvider', (it, { updateEntityInputProviderAccessor }) => {\n\t\t\t\tupdateEntityInputProviderAccessor.set(it)\n\t\t\t})\n\t\t\t.setupService('entityTypeProvider', (it, { hasManyToOneReducer }) => {\n\t\t\t\tit.registerEntityFieldProvider(HasManyToHasOneReducer.extensionName, hasManyToOneReducer)\n\t\t\t})\n\t\t\t.setupService('entityTypeProvider', (it, { paginatedHasManyFieldProvider }) => {\n\t\t\t\tit.registerEntityFieldProvider(PaginatedHasManyFieldProvider.extensionName, paginatedHasManyFieldProvider)\n\t\t\t})\n\t}\n}\n"],"names":["schema","authorizator"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCO,MAAM,4BAA4B;AAAA,EACxC,cAAc;AAAA,EAAA;AAAA,EAEP,OAAO,QAAsB,cAAkD;AACrF,WAAO,KAAK,uBAAuB,QAAQ,YAAY,EAAE,QAAQ;AAAA,EAAA;AAAA,EAG3D,uBAAuB,QAAsB,cAA4B;AACxE,WAAA,IAAI,QAAQ,EAAE,EACnB,WAAW,UAAU,MACrB,MAAM,EACN,WAAW,gBAAgB,MAC3B,YAAY,EACZ,WAAW,uBAAuB,CAAC,OACnC,IAAI,oBAAqB,CAAA,EACzB,WAAW,iBAAiB,CAAC,EAAE,QAAAA,QAAO,MACtC,IAAI,cAAcA,OAAM,CAAC,EACzB,WAAW,sBAAsB,CAAC,EAAE,QAAAA,SAAQ,eAAe,oBAAoB,MAC/E,IAAI,mBAAmBA,SAAQ,eAAe,mBAAmB,CAAC,EAClE,WAAW,yBAAyB,CAAC,EAAE,mBAAA,MACvC,IAAI,sBAAsB,kBAAkB,CAAC,EAC7C,WAAW,qBAAqB,CAAC,EAAE,QAAAA,SAAQ,cAAAC,eAAc,oBAAoB,4BAC7E,IAAI,kBAAkBD,SAAQC,eAAc,oBAAoB,qBAAqB,CAAC,EACtF,WAAW,uBAAuB,CAAC,EAAE,QAAAD,SAAQ,cAAAC,oBAC7C,IAAI,oBAAoBD,SAAQC,aAAY,CAAC,EAC7C,WAAW,sBAAsB,CAAC,EAAE,QAAAD,SAAQ,cAAAC,eAAc,oBAAoB,mBAAmB,oBAAoB,MACrH,IAAI,mBAAmBD,SAAQC,eAAc,oBAAoB,mBAAmB,mBAAmB,CAAC,EACxG,WAAW,+BAA+B,CAAC,EAAE,mBAAmB,qBAAqB,mBAAmB,MACxG,IAAI,4BAA4B,mBAAmB,qBAAqB,kBAAkB,CAAC,EAC3F,WAAW,8BAA8B,CAAC,EAAE,QAAAD,SAAQ,cAAAC,eAAc,oBAAoB,kBAAA,MACtF,IAAI,2CAA2CD,SAAQC,eAAc,oBAAoB,iBAAiB,CAAC,EAC3G,WAAW,uBAAuB,CAAC,EAAE,QAAAD,SAAQ,iCAC7C,IAAI,uBAAuBA,SAAQ,0BAA0B,CAAC,EAC9D,WAAW,wCAAwC,CAAC,EAAE,4BAA4B,MAClF,IAAI,qCAAqC,2BAA2B,CAAC,EACrE,WAAW,iCAAiC,CAAC,EAAE,QAAAA,SAAQ,qCAAqC,MAC5F,IAAI,8BAA8BA,SAAQ,oCAAoC,CAAC,EAC/E,WAAW,iBAAiB,CAAC,EAAE,cAAAC,eAAc,mBAAmB,qBAAqB,oBAAoB,4BACzG,MAAA,IAAI,cAAcA,eAAc,mBAAmB,qBAAqB,oBAAoB,2BAA2B,CAAC,EACxH,WAAW,qCAAqC,CAAC,CAAC,MAClD,IAAI,SAAA,CAAuD,EAC3D,WAAW,gDAAgD,CAAC,EAAE,cAAAA,cAAAA,MAC9D,IAAI,6CAA6CA,aAAY,CAAC,EAC9D,WAAW,wCAAwC,CAAC,EAAE,QAAAD,SAAQ,mBAAmB,kCAAA,MAChF,IAAI,qCAAqCA,SAAQ,mBAAmB,iCAAiC,CAAC,EACvG,WAAW,yCAAyC,CAAC,EAAE,QAAAA,SAAQ,mBAAmB,mCAAmC,8CAA8C,qCAAqC,MACxM,IAAI,sCAAsCA,SAAQ,mBAAmB,mCAAmC,8CAA8C,oCAAoC,CAAC,EAC3L,WAAW,qCAAqC,CAAC,EAAE,QAAAA,SAAQ,4CAC3D,IAAI,kCAAkCA,SAAQ,qCAAqC,CAAC,EACpF,WAAW,iCAAiC,CAAC,EAAE,QAAAA,SAAQ,cAAAC,eAAc,oBAAoB,kCAAkC,MAC3H,IAAI,8BAA8BD,SAAQC,eAAc,oBAAoB,iCAAiC,CAAC,EAC9G,WAAW,6BAA6B,CAAC,EAAE,QAAAD,SAAQ,cAAAC,eAAc,oCACjE,IAAI,oBAAoB,gBAAgB,QAAQD,SAAQC,eAAc,6BAA6B,CAAC,EACpG,WAAW,qCAAqC,CAAC,CACjD,MAAA,IAAI,SAAsD,CAAC,EAC3D,WAAW,gDAAgD,CAAC,EAAE,cAAAA,cAAa,MAC3E,IAAI,6CAA6CA,aAAY,CAAC,EAC9D,WAAW,yCAAyC,CAAC,EAAE,QAAAD,SAAQ,cAAAC,eAAc,mBAAmB,mCAAmC,2BAA2B,8CAA8C,qCAAqC,MACjP,IAAI,sCAAsCD,SAAQC,eAAc,mBAAmB,mCAAmC,2BAA2B,8CAA8C,oCAAoC,CAAC,EACpO,WAAW,qCAAqC,CAAC,EAAE,QAAAD,SAAQ,4CAC3D,IAAI,kCAAkCA,SAAQ,qCAAqC,CAAC,EACpF,WAAW,iCAAiC,CAAC,EAAE,cAAAC,eAAc,oBAAoB,wCACjF,IAAI,8BAA8BA,eAAc,oBAAoB,iCAAiC,CAAC,EACtG,WAAW,6BAA6B,CAAC,EAAE,QAAAD,SAAQ,cAAAC,eAAc,oCACjE,IAAI,oBAAoB,gBAAgB,QAAQD,SAAQC,eAAc,6BAA6B,CAAC,EACpG,WAAW,4BAA4B,CAAC,OACxC,IAAI,yBAA0B,CAAA,EAC9B,WAAW,oBAAoB,CAAC,EAAE,cAAAA,eAAc,mBAAmB,oBAAoB,2BAA2B,2BAA2B,yBAAyB,MACtK,IAAI,iBAAiBA,eAAc,mBAAmB,oBAAoB,2BAA2B,2BAA2B,wBAAwB,CAAC,EACzJ,WAAW,6BAA6B,CAAC,EAAE,mBAAmB,2BAA2B,2BAA2B,yBAAA,MACpH,IAAI,0BAA0B,mBAAmB,2BAA2B,2BAA2B,wBAAwB,CAAC,EAChI,WAAW,wBAAwB,CAAC,EAAE,QAAAD,SAAQ,eAAe,2BAA2B,kBAAkB,yBAC1G,MAAA,IAAI,qBAAqBA,SAAQ,eAAe,2BAA2B,kBAAkB,wBAAwB,CAAC,EACtH,aAAa,6BAA6B,CAAC,IAAI,EAAE,kCAAA,MAAwC;AACzF,wCAAkC,IAAI,EAAE;AAAA,IAAA,CACxC,EACA,aAAa,6BAA6B,CAAC,IAAI,EAAE,wCAAwC;AACzF,wCAAkC,IAAI,EAAE;AAAA,IAAA,CACxC,EACA,aAAa,sBAAsB,CAAC,IAAI,EAAE,0BAA0B;AACjE,SAAA,4BAA4B,uBAAuB,eAAe,mBAAmB;AAAA,IAAA,CACxF,EACA,aAAa,sBAAsB,CAAC,IAAI,EAAE,oCAAoC;AAC3E,SAAA,4BAA4B,8BAA8B,eAAe,6BAA6B;AAAA,IAAA,CACzG;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"GraphQlSchemaBuilderFactory.js","sources":["../../../../../packages/engine-content-api/src/schema/GraphQlSchemaBuilderFactory.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { EntityTypeProvider } from './EntityTypeProvider'\nimport { ColumnTypeResolver } from './ColumnTypeResolver'\nimport { EnumsProvider } from './EnumsProvider'\nimport { QueryProvider } from './QueryProvider'\nimport { MutationProvider } from './MutationProvider'\nimport { WhereTypeProvider } from './WhereTypeProvider'\nimport { ConditionTypeProvider } from './ConditionTypeProvider'\nimport { GraphQlSchemaBuilder } from './GraphQlSchemaBuilder'\nimport { CreateEntityInputFieldVisitor, EntityInputType } from './mutations'\nimport { CreateEntityRelationInputProvider } from './mutations'\nimport { CreateEntityRelationInputFieldVisitor } from './mutations'\nimport { Accessor } from '../utils'\nimport { UpdateEntityRelationInputFieldVisitor } from './mutations'\nimport { UpdateEntityRelationInputProvider } from './mutations'\nimport { UpdateEntityInputFieldVisitor } from './mutations'\nimport { EntityInputProvider } from './mutations'\nimport { UpdateEntityRelationAllowedOperationsVisitor } from './mutations'\nimport { CreateEntityRelationAllowedOperationsVisitor } from './mutations'\nimport { OrderByTypeProvider } from './OrderByTypeProvider'\nimport { HasManyToHasOneReducer } from '../extensions'\nimport { HasManyToHasOneRelationReducerFieldVisitor } from '../extensions'\nimport { ValidationQueriesProvider } from './ValidationQueriesProvider'\nimport { CustomTypesProvider } from './CustomTypesProvider'\nimport { ResultSchemaTypeProvider } from './ResultSchemaTypeProvider'\nimport { Authorizator } from '../acl'\nimport { PaginatedFieldConfigFactory } from './PaginatedFieldConfigFactory'\nimport { PaginatedHasManyFieldProvider } from '../extensions/paginatedHasMany/PaginatedHasManyFieldProvider'\nimport { PaginatedHasManyFieldProviderVisitor } from '../extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor'\nimport { Builder } from '@contember/dic'\nimport { ConnectOrCreateRelationInputProvider } from './mutations/ConnectOrCreateRelationInputProvider'\nimport { RefreshViewMutationProvider } from './RefreshViewMutationProvider'\n\nexport class GraphQlSchemaBuilderFactory {\n\tconstructor() {}\n\n\tpublic create(schema: Model.Schema, authorizator: Authorizator): GraphQlSchemaBuilder {\n\t\treturn this.createContainerBuilder(schema, authorizator).build().graphQlSchemaBuilder\n\t}\n\n\tpublic createContainerBuilder(schema: Model.Schema, authorizator: Authorizator) {\n\t\treturn new Builder({})\n\t\t\t.addService('schema', () =>\n\t\t\t\tschema)\n\t\t\t.addService('authorizator', () =>\n\t\t\t\tauthorizator)\n\t\t\t.addService('customTypesProvider', ({}) =>\n\t\t\t\tnew CustomTypesProvider())\n\t\t\t.addService('enumsProvider', ({ schema }) =>\n\t\t\t\tnew EnumsProvider(schema))\n\t\t\t.addService('columnTypeResolver', ({ schema, enumsProvider, customTypesProvider }) =>\n\t\t\t\tnew ColumnTypeResolver(schema, enumsProvider, customTypesProvider))\n\t\t\t.addService('conditionTypeProvider', ({ columnTypeResolver }) =>\n\t\t\t\tnew ConditionTypeProvider(columnTypeResolver))\n\t\t\t.addService('whereTypeProvider', ({ schema, authorizator, columnTypeResolver, conditionTypeProvider }) =>\n\t\t\t\tnew WhereTypeProvider(schema, authorizator, columnTypeResolver, conditionTypeProvider))\n\t\t\t.addService('orderByTypeProvider', ({ schema, authorizator }) =>\n\t\t\t\tnew OrderByTypeProvider(schema, authorizator))\n\t\t\t.addService('entityTypeProvider', ({ schema, authorizator, columnTypeResolver, whereTypeProvider, orderByTypeProvider }) =>\n\t\t\t\tnew EntityTypeProvider(schema, authorizator, columnTypeResolver, whereTypeProvider, orderByTypeProvider))\n\t\t\t.addService('paginatedFieldConfigFactory', ({ whereTypeProvider, orderByTypeProvider, entityTypeProvider }) =>\n\t\t\t\tnew PaginatedFieldConfigFactory(whereTypeProvider, orderByTypeProvider, entityTypeProvider))\n\t\t\t.addService('hasManyToOneReducerVisitor', ({ schema, authorizator, entityTypeProvider, whereTypeProvider }) =>\n\t\t\t\tnew HasManyToHasOneRelationReducerFieldVisitor(schema, authorizator, entityTypeProvider, whereTypeProvider))\n\t\t\t.addService('hasManyToOneReducer', ({ schema, hasManyToOneReducerVisitor }) =>\n\t\t\t\tnew HasManyToHasOneReducer(schema, hasManyToOneReducerVisitor))\n\t\t\t.addService('paginatedHasManyFieldProviderVisitor', ({ paginatedFieldConfigFactory }) =>\n\t\t\t\tnew PaginatedHasManyFieldProviderVisitor(paginatedFieldConfigFactory))\n\t\t\t.addService('paginatedHasManyFieldProvider', ({ schema, paginatedHasManyFieldProviderVisitor }) =>\n\t\t\t\tnew PaginatedHasManyFieldProvider(schema, paginatedHasManyFieldProviderVisitor))\n\t\t\t.addService('queryProvider', ({ authorizator, whereTypeProvider, orderByTypeProvider, entityTypeProvider, paginatedFieldConfigFactory }) =>\n\t\t\t\tnew QueryProvider(authorizator, whereTypeProvider, orderByTypeProvider, entityTypeProvider, paginatedFieldConfigFactory))\n\t\t\t.addService('createEntityInputProviderAccessor', ({}) =>\n\t\t\t\tnew Accessor<EntityInputProvider<EntityInputType.create>>())\n\t\t\t.addService('createEntityRelationAllowedOperationsVisitor', ({ authorizator }) =>\n\t\t\t\tnew CreateEntityRelationAllowedOperationsVisitor(authorizator))\n\t\t\t.addService('connectOrCreateRelationInputProvider', ({ schema, whereTypeProvider, createEntityInputProviderAccessor }) =>\n\t\t\t\t new ConnectOrCreateRelationInputProvider(schema, whereTypeProvider, createEntityInputProviderAccessor))\n\t\t\t.addService('createEntityRelationInputFieldVisitor', ({ schema,\twhereTypeProvider, createEntityInputProviderAccessor, createEntityRelationAllowedOperationsVisitor, connectOrCreateRelationInputProvider }) =>\n\t\t\t\tnew CreateEntityRelationInputFieldVisitor(schema, whereTypeProvider, createEntityInputProviderAccessor, createEntityRelationAllowedOperationsVisitor, connectOrCreateRelationInputProvider))\n\t\t\t.addService('createEntityRelationInputProvider', ({ schema, createEntityRelationInputFieldVisitor }) =>\n\t\t\t\tnew CreateEntityRelationInputProvider(schema, createEntityRelationInputFieldVisitor))\n\t\t\t.addService('createEntityInputFieldVisitor', ({ schema, authorizator, columnTypeResolver, createEntityRelationInputProvider }) =>\n\t\t\t\tnew CreateEntityInputFieldVisitor(schema, authorizator, columnTypeResolver, createEntityRelationInputProvider))\n\t\t\t.addService('createEntityInputProvider', ({ schema, authorizator, createEntityInputFieldVisitor }) =>\n\t\t\t\tnew EntityInputProvider(EntityInputType.create, schema, authorizator, createEntityInputFieldVisitor))\n\t\t\t.addService('updateEntityInputProviderAccessor', ({}) =>\n\t\t\t\tnew Accessor<EntityInputProvider<EntityInputType.update>>())\n\t\t\t.addService('updateEntityRelationAllowedOperationsVisitor', ({ authorizator }) =>\n\t\t\t\tnew UpdateEntityRelationAllowedOperationsVisitor(authorizator))\n\t\t\t.addService('updateEntityRelationInputFieldVisitor', ({ schema, authorizator, whereTypeProvider, updateEntityInputProviderAccessor, createEntityInputProvider, updateEntityRelationAllowedOperationsVisitor, connectOrCreateRelationInputProvider }) =>\n\t\t\t\tnew UpdateEntityRelationInputFieldVisitor(schema, authorizator, whereTypeProvider, updateEntityInputProviderAccessor, createEntityInputProvider, updateEntityRelationAllowedOperationsVisitor, connectOrCreateRelationInputProvider))\n\t\t\t.addService('updateEntityRelationInputProvider', ({ schema, updateEntityRelationInputFieldVisitor }) =>\n\t\t\t\tnew UpdateEntityRelationInputProvider(schema, updateEntityRelationInputFieldVisitor))\n\t\t\t.addService('updateEntityInputFieldVisitor', ({ authorizator, columnTypeResolver, updateEntityRelationInputProvider }) =>\n\t\t\t\tnew UpdateEntityInputFieldVisitor(authorizator, columnTypeResolver, updateEntityRelationInputProvider))\n\t\t\t.addService('updateEntityInputProvider', ({ schema, authorizator, updateEntityInputFieldVisitor }) =>\n\t\t\t\tnew EntityInputProvider(EntityInputType.update, schema, authorizator, updateEntityInputFieldVisitor))\n\t\t\t.addService('resultSchemaTypeProvider', ({}) =>\n\t\t\t\tnew ResultSchemaTypeProvider())\n\t\t\t.addService('mutationProvider', ({ authorizator, whereTypeProvider, entityTypeProvider, createEntityInputProvider, updateEntityInputProvider, resultSchemaTypeProvider }) =>\n\t\t\t\tnew MutationProvider(authorizator, whereTypeProvider, entityTypeProvider, createEntityInputProvider, updateEntityInputProvider, resultSchemaTypeProvider))\n\t\t\t.addService('validationQueriesProvider', ({ whereTypeProvider, createEntityInputProvider, updateEntityInputProvider, resultSchemaTypeProvider }) =>\n\t\t\t\tnew ValidationQueriesProvider(whereTypeProvider, createEntityInputProvider, updateEntityInputProvider, resultSchemaTypeProvider))\n\t\t\t.addService('refreshViewMutationProvider', ({ schema, authorizator }) =>\n\t\t\t\tnew RefreshViewMutationProvider(schema, authorizator))\n\t\t\t.addService('graphQlSchemaBuilder', ({ schema, queryProvider, validationQueriesProvider, mutationProvider, resultSchemaTypeProvider, refreshViewMutationProvider }) =>\n\t\t\t\tnew GraphQlSchemaBuilder(schema, queryProvider, validationQueriesProvider, mutationProvider, resultSchemaTypeProvider, refreshViewMutationProvider))\n\t\t\t.setupService('createEntityInputProvider', (it, { createEntityInputProviderAccessor }) => {\n\t\t\t\tcreateEntityInputProviderAccessor.set(it)\n\t\t\t})\n\t\t\t.setupService('updateEntityInputProvider', (it, { updateEntityInputProviderAccessor }) => {\n\t\t\t\tupdateEntityInputProviderAccessor.set(it)\n\t\t\t})\n\t\t\t.setupService('entityTypeProvider', (it, { hasManyToOneReducer }) => {\n\t\t\t\tit.registerEntityFieldProvider(HasManyToHasOneReducer.extensionName, hasManyToOneReducer)\n\t\t\t})\n\t\t\t.setupService('entityTypeProvider', (it, { paginatedHasManyFieldProvider }) => {\n\t\t\t\tit.registerEntityFieldProvider(PaginatedHasManyFieldProvider.extensionName, paginatedHasManyFieldProvider)\n\t\t\t})\n\t}\n}\n"],"names":["schema","authorizator"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const graphql = require("graphql");
4
+ class RefreshViewMutationProvider {
5
+ constructor(schema, authorizator) {
6
+ this.schema = schema;
7
+ this.authorizator = authorizator;
8
+ }
9
+ getMutation() {
10
+ const materializedViews = Object.values(this.schema.entities).filter((it) => it.view?.materialized).filter((it) => this.authorizator.isRefreshMaterializedViewAllowed(it.name));
11
+ if (materializedViews.length === 0) {
12
+ return void 0;
13
+ }
14
+ const materializedViewsEnum = new graphql.GraphQLEnumType({
15
+ name: "_MaterializedView",
16
+ values: Object.fromEntries(materializedViews.map((it) => [it.name, { value: it.name }]))
17
+ });
18
+ return {
19
+ type: new graphql.GraphQLObjectType({
20
+ name: "RefreshMaterializedViewResponse",
21
+ fields: {
22
+ ok: { type: graphql.GraphQLBoolean }
23
+ }
24
+ }),
25
+ args: {
26
+ name: { type: materializedViewsEnum }
27
+ },
28
+ resolve: async (parent, args, context) => {
29
+ return await context.executionContainer.refreshViewResolver.resolve(args.name);
30
+ }
31
+ };
32
+ }
33
+ }
34
+ exports.RefreshViewMutationProvider = RefreshViewMutationProvider;
35
+ //# sourceMappingURL=RefreshViewMutationProvider.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefreshViewMutationProvider.cjs","sources":["../../../../../packages/engine-content-api/src/schema/RefreshViewMutationProvider.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { GraphQLBoolean, GraphQLEnumType, GraphQLFieldConfig, GraphQLObjectType } from 'graphql'\nimport { Context } from '../types'\nimport { Authorizator } from '../acl'\n\nexport class RefreshViewMutationProvider {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly authorizator: Authorizator,\n\t) {\n\t}\n\tgetMutation(): GraphQLFieldConfig<any, Context, any> | undefined {\n\t\tconst materializedViews = Object.values(this.schema.entities)\n\t\t\t.filter(it => it.view?.materialized)\n\t\t\t.filter(it => this.authorizator.isRefreshMaterializedViewAllowed(it.name))\n\t\tif (materializedViews.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst materializedViewsEnum = new GraphQLEnumType({\n\t\t\tname: '_MaterializedView',\n\t\t\tvalues: Object.fromEntries(materializedViews.map(it => [it.name, { value: it.name }])),\n\t\t})\n\n\t\treturn {\n\t\t\ttype: new GraphQLObjectType({\n\t\t\t\tname: 'RefreshMaterializedViewResponse',\n\t\t\t\tfields: {\n\t\t\t\t\tok: { type: GraphQLBoolean },\n\t\t\t\t},\n\t\t\t}),\n\t\t\targs: {\n\t\t\t\tname: { type: materializedViewsEnum },\n\t\t\t},\n\t\t\tresolve: async (parent, args, context) => {\n\t\t\t\treturn await context.executionContainer.refreshViewResolver.resolve(args.name)\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":["GraphQLEnumType","GraphQLObjectType","GraphQLBoolean"],"mappings":";;;AAKO,MAAM,4BAA4B;AAAA,EACxC,YACkB,QACA,cAChB;AAFgB,SAAA,SAAA;AACA,SAAA,eAAA;AAAA,EAAA;AAAA,EAGlB,cAAiE;AAC1D,UAAA,oBAAoB,OAAO,OAAO,KAAK,OAAO,QAAQ,EAC1D,OAAO,CAAM,OAAA,GAAG,MAAM,YAAY,EAClC,OAAO,CAAM,OAAA,KAAK,aAAa,iCAAiC,GAAG,IAAI,CAAC;AACtE,QAAA,kBAAkB,WAAW,GAAG;AAC5B,aAAA;AAAA,IAAA;AAGF,UAAA,wBAAwB,IAAIA,wBAAgB;AAAA,MACjD,MAAM;AAAA,MACN,QAAQ,OAAO,YAAY,kBAAkB,IAAI,CAAM,OAAA,CAAC,GAAG,MAAM,EAAE,OAAO,GAAG,KAAM,CAAA,CAAC,CAAC;AAAA,IAAA,CACrF;AAEM,WAAA;AAAA,MACN,MAAM,IAAIC,QAAAA,kBAAkB;AAAA,QAC3B,MAAM;AAAA,QACN,QAAQ;AAAA,UACP,IAAI,EAAE,MAAMC,QAAe,eAAA;AAAA,QAAA;AAAA,MAC5B,CACA;AAAA,MACD,MAAM;AAAA,QACL,MAAM,EAAE,MAAM,sBAAsB;AAAA,MACrC;AAAA,MACA,SAAS,OAAO,QAAQ,MAAM,YAAY;AACzC,eAAO,MAAM,QAAQ,mBAAmB,oBAAoB,QAAQ,KAAK,IAAI;AAAA,MAAA;AAAA,IAE/E;AAAA,EAAA;AAEF;;"}
@@ -0,0 +1,35 @@
1
+ import { GraphQLEnumType, GraphQLObjectType, GraphQLBoolean } from "graphql";
2
+ class RefreshViewMutationProvider {
3
+ constructor(schema, authorizator) {
4
+ this.schema = schema;
5
+ this.authorizator = authorizator;
6
+ }
7
+ getMutation() {
8
+ const materializedViews = Object.values(this.schema.entities).filter((it) => it.view?.materialized).filter((it) => this.authorizator.isRefreshMaterializedViewAllowed(it.name));
9
+ if (materializedViews.length === 0) {
10
+ return void 0;
11
+ }
12
+ const materializedViewsEnum = new GraphQLEnumType({
13
+ name: "_MaterializedView",
14
+ values: Object.fromEntries(materializedViews.map((it) => [it.name, { value: it.name }]))
15
+ });
16
+ return {
17
+ type: new GraphQLObjectType({
18
+ name: "RefreshMaterializedViewResponse",
19
+ fields: {
20
+ ok: { type: GraphQLBoolean }
21
+ }
22
+ }),
23
+ args: {
24
+ name: { type: materializedViewsEnum }
25
+ },
26
+ resolve: async (parent, args, context) => {
27
+ return await context.executionContainer.refreshViewResolver.resolve(args.name);
28
+ }
29
+ };
30
+ }
31
+ }
32
+ export {
33
+ RefreshViewMutationProvider
34
+ };
35
+ //# sourceMappingURL=RefreshViewMutationProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefreshViewMutationProvider.js","sources":["../../../../../packages/engine-content-api/src/schema/RefreshViewMutationProvider.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { GraphQLBoolean, GraphQLEnumType, GraphQLFieldConfig, GraphQLObjectType } from 'graphql'\nimport { Context } from '../types'\nimport { Authorizator } from '../acl'\n\nexport class RefreshViewMutationProvider {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly authorizator: Authorizator,\n\t) {\n\t}\n\tgetMutation(): GraphQLFieldConfig<any, Context, any> | undefined {\n\t\tconst materializedViews = Object.values(this.schema.entities)\n\t\t\t.filter(it => it.view?.materialized)\n\t\t\t.filter(it => this.authorizator.isRefreshMaterializedViewAllowed(it.name))\n\t\tif (materializedViews.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst materializedViewsEnum = new GraphQLEnumType({\n\t\t\tname: '_MaterializedView',\n\t\t\tvalues: Object.fromEntries(materializedViews.map(it => [it.name, { value: it.name }])),\n\t\t})\n\n\t\treturn {\n\t\t\ttype: new GraphQLObjectType({\n\t\t\t\tname: 'RefreshMaterializedViewResponse',\n\t\t\t\tfields: {\n\t\t\t\t\tok: { type: GraphQLBoolean },\n\t\t\t\t},\n\t\t\t}),\n\t\t\targs: {\n\t\t\t\tname: { type: materializedViewsEnum },\n\t\t\t},\n\t\t\tresolve: async (parent, args, context) => {\n\t\t\t\treturn await context.executionContainer.refreshViewResolver.resolve(args.name)\n\t\t\t},\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";AAKO,MAAM,4BAA4B;AAAA,EACxC,YACkB,QACA,cAChB;AAFgB,SAAA,SAAA;AACA,SAAA,eAAA;AAAA,EAAA;AAAA,EAGlB,cAAiE;AAC1D,UAAA,oBAAoB,OAAO,OAAO,KAAK,OAAO,QAAQ,EAC1D,OAAO,CAAM,OAAA,GAAG,MAAM,YAAY,EAClC,OAAO,CAAM,OAAA,KAAK,aAAa,iCAAiC,GAAG,IAAI,CAAC;AACtE,QAAA,kBAAkB,WAAW,GAAG;AAC5B,aAAA;AAAA,IAAA;AAGF,UAAA,wBAAwB,IAAI,gBAAgB;AAAA,MACjD,MAAM;AAAA,MACN,QAAQ,OAAO,YAAY,kBAAkB,IAAI,CAAM,OAAA,CAAC,GAAG,MAAM,EAAE,OAAO,GAAG,KAAM,CAAA,CAAC,CAAC;AAAA,IAAA,CACrF;AAEM,WAAA;AAAA,MACN,MAAM,IAAI,kBAAkB;AAAA,QAC3B,MAAM;AAAA,QACN,QAAQ;AAAA,UACP,IAAI,EAAE,MAAM,eAAe;AAAA,QAAA;AAAA,MAC5B,CACA;AAAA,MACD,MAAM;AAAA,QACL,MAAM,EAAE,MAAM,sBAAsB;AAAA,MACrC;AAAA,MACA,SAAS,OAAO,QAAQ,MAAM,YAAY;AACzC,eAAO,MAAM,QAAQ,mBAAmB,oBAAoB,QAAQ,KAAK,IAAI;AAAA,MAAA;AAAA,IAE/E;AAAA,EAAA;AAEF;"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const crypto = require("node:crypto");
4
+ const viewComputedId = (inputs) => {
5
+ let uuidBytes;
6
+ uuidBytes = crypto.createHash("md5").update(inputs.join("\0")).digest();
7
+ uuidBytes[6] = uuidBytes[6] & 15 | 128;
8
+ uuidBytes[8] = uuidBytes[8] & 63 | 128;
9
+ return formatUUID(uuidBytes);
10
+ };
11
+ const formatUUID = (buf) => {
12
+ const hex = buf.toString("hex");
13
+ return hex.substring(0, 8) + "-" + hex.substring(8, 12) + "-" + hex.substring(12, 16) + "-" + hex.substring(16, 20) + "-" + hex.substring(20);
14
+ };
15
+ exports.viewComputedId = viewComputedId;
16
+ //# sourceMappingURL=viewComputedId.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewComputedId.cjs","sources":["../../../../../packages/engine-content-api/src/utils/viewComputedId.ts"],"sourcesContent":["import crypto from 'node:crypto'\n\nexport const viewComputedId = (inputs: (string)[]): string => {\n\tlet uuidBytes: Buffer\n\tuuidBytes = crypto.createHash('md5').update(inputs.join('\\x00')).digest()\n\n\t// Set the version (v8) in the high nibble of byte 6.\n\tuuidBytes[6] = (uuidBytes[6] & 0x0f) | 0x80 // 0x80 = 1000 0000 (version 8)\n\n\t// Set the variant (RFC 4122) in byte 8.\n\tuuidBytes[8] = (uuidBytes[8] & 0x3f) | 0x80\n\n\treturn formatUUID(uuidBytes)\n}\n\nconst formatUUID = (buf: Buffer): string => {\n\tconst hex = buf.toString('hex')\n\treturn hex.substring(0, 8)\n\t\t+ '-' + hex.substring(8, 12)\n\t\t+ '-' + hex.substring(12, 16)\n\t\t+ '-' + hex.substring(16, 20)\n\t\t+ '-' + hex.substring(20)\n}\n"],"names":[],"mappings":";;;AAEa,MAAA,iBAAiB,CAAC,WAA+B;AACzD,MAAA;AACQ,cAAA,OAAO,WAAW,KAAK,EAAE,OAAO,OAAO,KAAK,IAAM,CAAC,EAAE,OAAO;AAGxE,YAAU,CAAC,IAAK,UAAU,CAAC,IAAI,KAAQ;AAGvC,YAAU,CAAC,IAAK,UAAU,CAAC,IAAI,KAAQ;AAEvC,SAAO,WAAW,SAAS;AAC5B;AAEA,MAAM,aAAa,CAAC,QAAwB;AACrC,QAAA,MAAM,IAAI,SAAS,KAAK;AACvB,SAAA,IAAI,UAAU,GAAG,CAAC,IACtB,MAAM,IAAI,UAAU,GAAG,EAAE,IACzB,MAAM,IAAI,UAAU,IAAI,EAAE,IAC1B,MAAM,IAAI,UAAU,IAAI,EAAE,IAC1B,MAAM,IAAI,UAAU,EAAE;AAC1B;;"}
@@ -0,0 +1,16 @@
1
+ import crypto__default from "node:crypto";
2
+ const viewComputedId = (inputs) => {
3
+ let uuidBytes;
4
+ uuidBytes = crypto__default.createHash("md5").update(inputs.join("\0")).digest();
5
+ uuidBytes[6] = uuidBytes[6] & 15 | 128;
6
+ uuidBytes[8] = uuidBytes[8] & 63 | 128;
7
+ return formatUUID(uuidBytes);
8
+ };
9
+ const formatUUID = (buf) => {
10
+ const hex = buf.toString("hex");
11
+ return hex.substring(0, 8) + "-" + hex.substring(8, 12) + "-" + hex.substring(12, 16) + "-" + hex.substring(16, 20) + "-" + hex.substring(20);
12
+ };
13
+ export {
14
+ viewComputedId
15
+ };
16
+ //# sourceMappingURL=viewComputedId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewComputedId.js","sources":["../../../../../packages/engine-content-api/src/utils/viewComputedId.ts"],"sourcesContent":["import crypto from 'node:crypto'\n\nexport const viewComputedId = (inputs: (string)[]): string => {\n\tlet uuidBytes: Buffer\n\tuuidBytes = crypto.createHash('md5').update(inputs.join('\\x00')).digest()\n\n\t// Set the version (v8) in the high nibble of byte 6.\n\tuuidBytes[6] = (uuidBytes[6] & 0x0f) | 0x80 // 0x80 = 1000 0000 (version 8)\n\n\t// Set the variant (RFC 4122) in byte 8.\n\tuuidBytes[8] = (uuidBytes[8] & 0x3f) | 0x80\n\n\treturn formatUUID(uuidBytes)\n}\n\nconst formatUUID = (buf: Buffer): string => {\n\tconst hex = buf.toString('hex')\n\treturn hex.substring(0, 8)\n\t\t+ '-' + hex.substring(8, 12)\n\t\t+ '-' + hex.substring(12, 16)\n\t\t+ '-' + hex.substring(16, 20)\n\t\t+ '-' + hex.substring(20)\n}\n"],"names":["crypto"],"mappings":";AAEa,MAAA,iBAAiB,CAAC,WAA+B;AACzD,MAAA;AACQ,cAAAA,gBAAO,WAAW,KAAK,EAAE,OAAO,OAAO,KAAK,IAAM,CAAC,EAAE,OAAO;AAGxE,YAAU,CAAC,IAAK,UAAU,CAAC,IAAI,KAAQ;AAGvC,YAAU,CAAC,IAAK,UAAU,CAAC,IAAI,KAAQ;AAEvC,SAAO,WAAW,SAAS;AAC5B;AAEA,MAAM,aAAa,CAAC,QAAwB;AACrC,QAAA,MAAM,IAAI,SAAS,KAAK;AACvB,SAAA,IAAI,UAAU,GAAG,CAAC,IACtB,MAAM,IAAI,UAAU,GAAG,EAAE,IACzB,MAAM,IAAI,UAAU,IAAI,EAAE,IAC1B,MAAM,IAAI,UAAU,IAAI,EAAE,IAC1B,MAAM,IAAI,UAAU,EAAE;AAC1B;"}
@@ -58,6 +58,7 @@ const ExecutionContainer = require("./src/ExecutionContainer.cjs");
58
58
  const graphql = require("graphql");
59
59
  require("@contember/database");
60
60
  const EventManager = require("./src/mapper/EventManager.cjs");
61
+ require("node:crypto");
61
62
  const Path = require("./src/mapper/select/Path.cjs");
62
63
  require("@contember/logger");
63
64
  const WhereBuilder = require("./src/mapper/select/WhereBuilder.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -56,6 +56,7 @@ import { ExecutionContainerFactory } from "./src/ExecutionContainer.js";
56
56
  import { graphql } from "graphql";
57
57
  import "@contember/database";
58
58
  import { AfterCommitEvent, AfterInsertEvent, AfterJunctionUpdateEvent, AfterUpdateEvent, BeforeCommitEvent, BeforeDeleteEvent, BeforeInsertEvent, BeforeJunctionUpdateEvent, BeforeUpdateEvent, EventManager } from "./src/mapper/EventManager.js";
59
+ import "node:crypto";
59
60
  import { Path, PathFactory } from "./src/mapper/select/Path.js";
60
61
  import "@contember/logger";
61
62
  import { WhereBuilder } from "./src/mapper/select/WhereBuilder.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,6 +6,7 @@ const PredicateFactory = require("./acl/PredicateFactory.cjs");
6
6
  const PredicatesInjector = require("./acl/PredicatesInjector.cjs");
7
7
  const VariableInjector = require("./acl/VariableInjector.cjs");
8
8
  require("@contember/database");
9
+ require("node:crypto");
9
10
  const FieldsVisitorFactory = require("./mapper/select/handlers/FieldsVisitorFactory.cjs");
10
11
  const MetaHandler = require("./mapper/select/handlers/MetaHandler.cjs");
11
12
  const ConditionBuilder = require("./mapper/select/ConditionBuilder.cjs");
@@ -44,6 +45,7 @@ const QueryAstFactory = require("./input-validation/QueryAstFactory.cjs");
44
45
  require("./input-validation/ValidationContext.cjs");
45
46
  const ValidationDataSelector = require("./input-validation/ValidationDataSelector.cjs");
46
47
  require("./input-validation/ValidationEvaluation.cjs");
48
+ const RefreshViewResolver = require("./resolvers/RefreshViewResolver.cjs");
47
49
  const MapperFactory = require("./mapper/MapperFactory.cjs");
48
50
  var __defProp = Object.defineProperty;
49
51
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -65,7 +67,7 @@ class ExecutionContainerFactory {
65
67
  pathFactory,
66
68
  whereOptimized,
67
69
  (schema2.settings.content?.useExistsInHasManyFilter ?? schema2.settings.useExistsInHasManyFilter) === true
68
- )).addService("orderByBuilder", ({ joinBuilder, schema: schema2 }) => new OrderByBuilder.OrderByBuilder(schema2.model, joinBuilder)).addService("relationFetcher", ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) => new RelationFetcher.RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory)).addService("fieldsVisitorFactory", ({ relationFetcher, predicateFactory, schema: schema2 }) => new FieldsVisitorFactory.FieldsVisitorFactory(relationFetcher, predicateFactory, schema2.settings.content ?? {})).addService("metaHandler", ({ whereBuilder, predicateFactory }) => new MetaHandler.MetaHandler(whereBuilder, predicateFactory)).addService("uniqueWhereExpander", ({ schema: schema2 }) => new UniqueWhereExpander.UniqueWhereExpander(schema2.model)).addService("hasManyToHasOneReducer", ({ uniqueWhereExpander, schema: schema2 }) => new HasManyToHasOneReducerExecutionHandler.HasManyToHasOneReducerExecutionHandler(schema2.model, uniqueWhereExpander)).addService("paginatedHasManyExecutionHandler", ({ relationFetcher, schema: schema2 }) => new PaginatedHasManyExecutionHandler.PaginatedHasManyExecutionHandler(schema2.model, relationFetcher)).addService("selectHandlers", ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({
70
+ )).addService("orderByBuilder", ({ joinBuilder, schema: schema2 }) => new OrderByBuilder.OrderByBuilder(schema2.model, joinBuilder)).addService("relationFetcher", ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) => new RelationFetcher.RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory)).addService("fieldsVisitorFactory", ({ relationFetcher, predicateFactory, schema: schema2, providers }) => new FieldsVisitorFactory.FieldsVisitorFactory(schema2.model, relationFetcher, predicateFactory, schema2.settings.content ?? {}, providers)).addService("metaHandler", ({ whereBuilder, predicateFactory }) => new MetaHandler.MetaHandler(whereBuilder, predicateFactory)).addService("uniqueWhereExpander", ({ schema: schema2 }) => new UniqueWhereExpander.UniqueWhereExpander(schema2.model)).addService("hasManyToHasOneReducer", ({ uniqueWhereExpander, schema: schema2 }) => new HasManyToHasOneReducerExecutionHandler.HasManyToHasOneReducerExecutionHandler(schema2.model, uniqueWhereExpander)).addService("paginatedHasManyExecutionHandler", ({ relationFetcher, schema: schema2 }) => new PaginatedHasManyExecutionHandler.PaginatedHasManyExecutionHandler(schema2.model, relationFetcher)).addService("selectHandlers", ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({
69
71
  [HasManyToHasOneReducer.HasManyToHasOneReducer.extensionName]: hasManyToHasOneReducer,
70
72
  [PaginatedHasManyFieldProvider.PaginatedHasManyFieldProvider.extensionName]: paginatedHasManyExecutionHandler
71
73
  })).addService("selectBuilderFactory", ({ whereBuilder, orderByBuilder, fieldsVisitorFactory, metaHandler, selectHandlers, pathFactory, predicateFactory, schema: schema2 }) => new class {
@@ -101,10 +103,10 @@ class ExecutionContainerFactory {
101
103
  pathFactory,
102
104
  providers
103
105
  );
104
- }).addService("queryAstFactory", () => new GraphQlQueryAstFactory.GraphQlQueryAstFactory()).addService("readResolver", ({ mapperFactory, queryAstFactory }) => new ReadResolver.ReadResolver(mapperFactory, queryAstFactory)).addService("validationDependencyCollector", () => new DependencyCollector.DependencyCollector()).addService("validationQueryAstFactory", ({ schema: schema2 }) => new QueryAstFactory.QueryAstFactory(schema2.model)).addService("dataSelector", ({ validationQueryAstFactory, schema: schema2 }) => new ValidationDataSelector.ValidationDataSelector(schema2.model, validationQueryAstFactory)).addService("columnValueResolver", ({ providers }) => new ColumnValueResolver.ColumnValueResolver(providers)).addService("entityRulesResolver", ({ schema: schema2 }) => new EntityRulesResolver.EntityRulesResolver(schema2.validation, schema2.model)).addService("inputPreValidator", ({ entityRulesResolver, columnValueResolver, dataSelector, schema: schema2 }) => new InputPreValidator.InputPreValidator(schema2.model, entityRulesResolver, columnValueResolver, dataSelector)).addService("mutationResolver", ({ mapperFactory, inputPreValidator, queryAstFactory, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new MutationResolver.MutationResolver(schema2.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata2)).addService("validationResolver", ({ inputPreValidator, mapperFactory }) => new ValidationResolver.ValidationResolver(mapperFactory, inputPreValidator));
106
+ }).addService("queryAstFactory", () => new GraphQlQueryAstFactory.GraphQlQueryAstFactory()).addService("readResolver", ({ mapperFactory, queryAstFactory }) => new ReadResolver.ReadResolver(mapperFactory, queryAstFactory)).addService("validationDependencyCollector", () => new DependencyCollector.DependencyCollector()).addService("validationQueryAstFactory", ({ schema: schema2 }) => new QueryAstFactory.QueryAstFactory(schema2.model)).addService("dataSelector", ({ validationQueryAstFactory, schema: schema2 }) => new ValidationDataSelector.ValidationDataSelector(schema2.model, validationQueryAstFactory)).addService("columnValueResolver", ({ providers }) => new ColumnValueResolver.ColumnValueResolver(providers)).addService("entityRulesResolver", ({ schema: schema2 }) => new EntityRulesResolver.EntityRulesResolver(schema2.validation, schema2.model)).addService("inputPreValidator", ({ entityRulesResolver, columnValueResolver, dataSelector, schema: schema2 }) => new InputPreValidator.InputPreValidator(schema2.model, entityRulesResolver, columnValueResolver, dataSelector)).addService("mutationResolver", ({ mapperFactory, inputPreValidator, queryAstFactory, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new MutationResolver.MutationResolver(schema2.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata2)).addService("validationResolver", ({ inputPreValidator, mapperFactory }) => new ValidationResolver.ValidationResolver(mapperFactory, inputPreValidator)).addService("refreshViewResolver", ({ schema: schema2, mapperFactory }) => new RefreshViewResolver.RefreshViewResolver(schema2, mapperFactory));
105
107
  }
106
108
  create(args) {
107
- return this.createBuilder(args).build().pick("validationResolver", "readResolver", "mutationResolver");
109
+ return this.createBuilder(args).build().pick("validationResolver", "readResolver", "mutationResolver", "refreshViewResolver");
108
110
  }
109
111
  }
110
112
  exports.ExecutionContainerFactory = ExecutionContainerFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionContainer.cjs","sources":["../../../../packages/engine-content-api/src/ExecutionContainer.ts"],"sourcesContent":["import { PredicateFactory, PredicatesInjector, VariableInjector } from './acl'\nimport {\n\tConditionBuilder,\n\tFieldsVisitorFactory,\n\tJoinBuilder,\n\tMetaHandler,\n\tOrderByBuilder,\n\tRelationFetcher,\n\tWhereBuilder,\n} from './mapper/select'\nimport { UniqueWhereExpander } from './inputProcessing'\nimport { HasManyToHasOneReducer, HasManyToHasOneReducerExecutionHandler } from './extensions'\nimport {\n\tDeleteExecutor,\n\tInsertBuilderFactory,\n\tInserter,\n\tJunctionConnectHandler,\n\tJunctionDisconnectHandler,\n\tJunctionTableManager,\n\tMapperFactory,\n\tPathFactory,\n\tSelectBuilder,\n\tSelectBuilderFactory,\n\tSelectHydrator,\n\tUpdateBuilderFactory,\n\tUpdater,\n} from './mapper'\nimport { Builder } from '@contember/dic'\nimport { Acl, Model, Schema } from '@contember/schema'\nimport { Client, DatabaseMetadata, SelectBuilder as DbSelectBuilder } from '@contember/database'\nimport { Providers } from '@contember/schema-utils'\nimport { PaginatedHasManyExecutionHandler } from './extensions/paginatedHasMany/PaginatedHasManyExecutionHandler'\nimport { PaginatedHasManyFieldProvider } from './extensions/paginatedHasMany/PaginatedHasManyFieldProvider'\nimport { WhereOptimizer } from './mapper/select/optimizer/WhereOptimizer'\nimport { ConditionOptimizer } from './mapper/select/optimizer/ConditionOptimizer'\nimport { GraphQlQueryAstFactory, MutationResolver, ReadResolver, ValidationResolver } from './resolvers'\nimport {\n\tColumnValueResolver,\n\tDependencyCollector,\n\tEntityRulesResolver, InputPreValidator,\n\tQueryAstFactory,\n\tValidationDataSelector,\n} from './input-validation'\n\nexport type ExecutionContainerArgs = {\n\tschema: Schema\n\tschemaMeta: { id?: number }\n\tschemaDatabaseMetadata: DatabaseMetadata\n\tdb: Client\n\tidentityId: string\n\tidentityVariables: Acl.VariablesMap\n\tpermissions: Acl.Permissions\n\tsystemSchema: string\n\tproject: { slug: string }\n\tstage: { id: string; slug: string }\n}\n\nexport interface ExecutionContainer {\n\treadResolver: ReadResolver\n\tmutationResolver: MutationResolver\n\tvalidationResolver: ValidationResolver\n}\n\nexport type ExecutionContainerBuilder = ReturnType<ExecutionContainerFactory['createBuilderInternal']>\nexport type ExecutionContainerHook = (builder: ExecutionContainerBuilder) => ExecutionContainerBuilder\n\nexport class ExecutionContainerFactory {\n\tpublic readonly hooks: ExecutionContainerHook[] = []\n\n\tconstructor(\n\t\tprivate readonly providers: Providers,\n\t) {\n\t}\n\n\tcreateBuilder(args: ExecutionContainerArgs): ExecutionContainerBuilder {\n\t\tconst builder = this.createBuilderInternal(args)\n\t\treturn this.hooks.reduce((acc, cb) => cb(acc), builder)\n\t}\n\n\tcreateBuilderInternal({ permissions, identityVariables, identityId, db, schema, schemaMeta, systemSchema, stage, project, schemaDatabaseMetadata }: ExecutionContainerArgs) {\n\t\treturn new Builder({})\n\t\t\t.addService('systemSchema', () =>\n\t\t\t\tsystemSchema)\n\t\t\t.addService('db', () =>\n\t\t\t\tdb)\n\t\t\t.addService('project', () =>\n\t\t\t\tproject)\n\t\t\t.addService('stage', () =>\n\t\t\t\tstage)\n\t\t\t.addService('schema', () =>\n\t\t\t\tschema)\n\t\t\t.addService('schemaMeta', () =>\n\t\t\t\tschemaMeta)\n\t\t\t.addService('schemaDatabaseMetadata', () =>\n\t\t\t\tschemaDatabaseMetadata)\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('variableInjector', ({ schema }) =>\n\t\t\t\tnew VariableInjector(schema.model, identityVariables))\n\t\t\t.addService('predicateFactory', ({ variableInjector, schema }) =>\n\t\t\t\tnew PredicateFactory(permissions, schema.model, variableInjector))\n\t\t\t.addService('predicatesInjector', ({ predicateFactory, schema }) =>\n\t\t\t\tnew PredicatesInjector(schema.model, predicateFactory))\n\t\t\t.addService('joinBuilder', ({ schema }) =>\n\t\t\t\tnew JoinBuilder(schema.model))\n\t\t\t.addService('conditionBuilder', () =>\n\t\t\t\tnew ConditionBuilder())\n\t\t\t.addService('pathFactory', () =>\n\t\t\t\tnew PathFactory())\n\t\t\t.addService('whereOptimized', ({ schema }) =>\n\t\t\t\tnew WhereOptimizer(schema.model, new ConditionOptimizer()))\n\t\t\t.addService('whereBuilder', ({ joinBuilder, conditionBuilder, pathFactory, whereOptimized, schema }) =>\n\t\t\t\tnew WhereBuilder(\n\t\t\t\t\tschema.model,\n\t\t\t\t\tjoinBuilder,\n\t\t\t\t\tconditionBuilder,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\twhereOptimized,\n\t\t\t\t\t(schema.settings.content?.useExistsInHasManyFilter ?? schema.settings.useExistsInHasManyFilter) === true,\n\t\t\t\t))\n\t\t\t.addService('orderByBuilder', ({ joinBuilder, schema }) =>\n\t\t\t\tnew OrderByBuilder(schema.model, joinBuilder))\n\t\t\t.addService('relationFetcher', ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) =>\n\t\t\t\tnew RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory))\n\t\t\t.addService('fieldsVisitorFactory', ({ relationFetcher, predicateFactory, schema }) =>\n\t\t\t\tnew FieldsVisitorFactory(relationFetcher, predicateFactory, schema.settings.content ?? {}))\n\t\t\t.addService('metaHandler', ({ whereBuilder, predicateFactory }) =>\n\t\t\t\tnew MetaHandler(whereBuilder, predicateFactory))\n\t\t\t.addService('uniqueWhereExpander', ({ schema }) =>\n\t\t\t\tnew UniqueWhereExpander(schema.model))\n\t\t\t.addService('hasManyToHasOneReducer', ({ uniqueWhereExpander, schema }) =>\n\t\t\t\tnew HasManyToHasOneReducerExecutionHandler(schema.model, uniqueWhereExpander))\n\t\t\t.addService('paginatedHasManyExecutionHandler', ({ relationFetcher, schema }) =>\n\t\t\t\tnew PaginatedHasManyExecutionHandler(schema.model, relationFetcher))\n\t\t\t.addService('selectHandlers', ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({\n\t\t\t\t[HasManyToHasOneReducer.extensionName]: hasManyToHasOneReducer,\n\t\t\t\t[PaginatedHasManyFieldProvider.extensionName]: paginatedHasManyExecutionHandler,\n\t\t\t}))\n\t\t\t.addService('selectBuilderFactory', ({ whereBuilder, orderByBuilder, fieldsVisitorFactory, metaHandler, selectHandlers, pathFactory, predicateFactory, schema }) =>\n\t\t\t\tnew (class implements SelectBuilderFactory {\n\t\t\t\t\tcreate(qb: DbSelectBuilder, hydrator: SelectHydrator, relationPath: Model.AnyRelationContext[]): SelectBuilder {\n\t\t\t\t\t\treturn new SelectBuilder(\n\t\t\t\t\t\t\tschema.model,\n\t\t\t\t\t\t\twhereBuilder,\n\t\t\t\t\t\t\torderByBuilder,\n\t\t\t\t\t\t\tmetaHandler,\n\t\t\t\t\t\t\tqb,\n\t\t\t\t\t\t\thydrator,\n\t\t\t\t\t\t\tfieldsVisitorFactory,\n\t\t\t\t\t\t\tselectHandlers,\n\t\t\t\t\t\t\tpathFactory,\n\t\t\t\t\t\t\trelationPath,\n\t\t\t\t\t\t\tpredicateFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})())\n\t\t\t.addService('insertBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew InsertBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('updateBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew UpdateBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('connectJunctionHandler', () =>\n\t\t\t\tnew JunctionConnectHandler())\n\t\t\t.addService('disconnectJunctionHandler', ({}) =>\n\t\t\t\tnew JunctionDisconnectHandler())\n\t\t\t.addService('junctionTableManager', ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema }) =>\n\t\t\t\tnew JunctionTableManager(schema.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory))\n\t\t\t.addService('deleteExecutor', ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema }) =>\n\t\t\t\tnew DeleteExecutor(schema.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory))\n\t\t\t.addService('updater', ({ predicateFactory, updateBuilderFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Updater(schema.model, schemaDatabaseMetadata, predicateFactory, updateBuilderFactory))\n\t\t\t.addService('inserter', ({ insertBuilderFactory, providers, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Inserter(schema.model, schemaDatabaseMetadata, insertBuilderFactory, providers, { uuidVersion: schema.settings.content?.uuidVersion }))\n\t\t\t.addService('mapperFactory', ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema, schemaDatabaseMetadata }) => {\n\t\t\t\treturn new MapperFactory(\n\t\t\t\t\tdb,\n\t\t\t\t\tidentityId,\n\t\t\t\t\tschema.model,\n\t\t\t\t\tschemaDatabaseMetadata,\n\t\t\t\t\tpredicatesInjector,\n\t\t\t\t\tselectBuilderFactory,\n\t\t\t\t\tuniqueWhereExpander,\n\t\t\t\t\twhereBuilder,\n\t\t\t\t\tjunctionTableManager,\n\t\t\t\t\tdeleteExecutor,\n\t\t\t\t\tupdater,\n\t\t\t\t\tinserter,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\tproviders,\n\t\t\t\t)\n\t\t\t})\n\n\t\t\t.addService('queryAstFactory', () =>\n\t\t\t\tnew GraphQlQueryAstFactory())\n\t\t\t.addService('readResolver', ({ mapperFactory, queryAstFactory }) =>\n\t\t\t\tnew ReadResolver(mapperFactory, queryAstFactory))\n\t\t\t.addService('validationDependencyCollector', () =>\n\t\t\t\tnew DependencyCollector())\n\t\t\t.addService('validationQueryAstFactory', ({ schema }) =>\n\t\t\t\tnew QueryAstFactory(schema.model))\n\t\t\t.addService('dataSelector', ({ validationQueryAstFactory, schema }) =>\n\t\t\t\tnew ValidationDataSelector(schema.model, validationQueryAstFactory))\n\t\t\t.addService('columnValueResolver', ({ providers }) =>\n\t\t\t\tnew ColumnValueResolver(providers))\n\t\t\t.addService('entityRulesResolver', ({ schema }) =>\n\t\t\t\tnew EntityRulesResolver(schema.validation, schema.model))\n\t\t\t.addService('inputPreValidator', ({ entityRulesResolver, columnValueResolver, dataSelector, schema }) =>\n\t\t\t\tnew InputPreValidator(schema.model, entityRulesResolver, columnValueResolver, dataSelector))\n\t\t\t.addService('mutationResolver', ({ mapperFactory, inputPreValidator, queryAstFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew MutationResolver(schema.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata))\n\t\t\t.addService('validationResolver', ({ inputPreValidator, mapperFactory }) =>\n\t\t\t\tnew ValidationResolver(mapperFactory, inputPreValidator))\n\t}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver')\n\t}\n}\n\n"],"names":["Builder","schema","VariableInjector","PredicateFactory","PredicatesInjector","JoinBuilder","ConditionBuilder","PathFactory","WhereOptimizer","ConditionOptimizer","WhereBuilder","OrderByBuilder","RelationFetcher","FieldsVisitorFactory","MetaHandler","UniqueWhereExpander","HasManyToHasOneReducerExecutionHandler","PaginatedHasManyExecutionHandler","HasManyToHasOneReducer","PaginatedHasManyFieldProvider","SelectBuilder","InsertBuilderFactory","UpdateBuilderFactory","JunctionConnectHandler","JunctionDisconnectHandler","JunctionTableManager","DeleteExecutor","schemaDatabaseMetadata","Updater","Inserter","MapperFactory","GraphQlQueryAstFactory","ReadResolver","DependencyCollector","QueryAstFactory","ValidationDataSelector","ColumnValueResolver","EntityRulesResolver","InputPreValidator","MutationResolver","ValidationResolver"],"mappings":"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"}
1
+ {"version":3,"file":"ExecutionContainer.cjs","sources":["../../../../packages/engine-content-api/src/ExecutionContainer.ts"],"sourcesContent":["import { PredicateFactory, PredicatesInjector, VariableInjector } from './acl'\nimport {\n\tConditionBuilder,\n\tFieldsVisitorFactory,\n\tJoinBuilder,\n\tMetaHandler,\n\tOrderByBuilder,\n\tRelationFetcher,\n\tWhereBuilder,\n} from './mapper/select'\nimport { UniqueWhereExpander } from './inputProcessing'\nimport { HasManyToHasOneReducer, HasManyToHasOneReducerExecutionHandler } from './extensions'\nimport {\n\tDeleteExecutor,\n\tInsertBuilderFactory,\n\tInserter,\n\tJunctionConnectHandler,\n\tJunctionDisconnectHandler,\n\tJunctionTableManager,\n\tMapperFactory,\n\tPathFactory,\n\tSelectBuilder,\n\tSelectBuilderFactory,\n\tSelectHydrator,\n\tUpdateBuilderFactory,\n\tUpdater,\n} from './mapper'\nimport { Builder } from '@contember/dic'\nimport { Acl, Model, Schema } from '@contember/schema'\nimport { Client, DatabaseMetadata, SelectBuilder as DbSelectBuilder } from '@contember/database'\nimport { ParsedMembership, Providers } from '@contember/schema-utils'\nimport { PaginatedHasManyExecutionHandler } from './extensions/paginatedHasMany/PaginatedHasManyExecutionHandler'\nimport { PaginatedHasManyFieldProvider } from './extensions/paginatedHasMany/PaginatedHasManyFieldProvider'\nimport { WhereOptimizer } from './mapper/select/optimizer/WhereOptimizer'\nimport { ConditionOptimizer } from './mapper/select/optimizer/ConditionOptimizer'\nimport { GraphQlQueryAstFactory, MutationResolver, ReadResolver, ValidationResolver } from './resolvers'\nimport {\n\tColumnValueResolver,\n\tDependencyCollector,\n\tEntityRulesResolver, InputPreValidator,\n\tQueryAstFactory,\n\tValidationDataSelector,\n} from './input-validation'\nimport { RefreshViewResolver } from './resolvers/RefreshViewResolver'\n\nexport type ExecutionContainerArgs = {\n\tschema: Schema\n\tschemaMeta: { id?: number }\n\tschemaDatabaseMetadata: DatabaseMetadata\n\tdb: Client\n\tidentityId: string\n\tidentityVariables: Acl.VariablesMap\n\tpermissions: Acl.Permissions\n\tsystemSchema: string\n\tproject: { slug: string }\n\tstage: { id: string; slug: string }\n}\n\nexport interface ExecutionContainer {\n\treadResolver: ReadResolver\n\tmutationResolver: MutationResolver\n\tvalidationResolver: ValidationResolver\n\trefreshViewResolver: RefreshViewResolver\n}\n\nexport type ExecutionContainerBuilder = ReturnType<ExecutionContainerFactory['createBuilderInternal']>\nexport type ExecutionContainerHook = (builder: ExecutionContainerBuilder) => ExecutionContainerBuilder\n\nexport class ExecutionContainerFactory {\n\tpublic readonly hooks: ExecutionContainerHook[] = []\n\n\tconstructor(\n\t\tprivate readonly providers: Providers,\n\t) {\n\t}\n\n\tcreateBuilder(args: ExecutionContainerArgs): ExecutionContainerBuilder {\n\t\tconst builder = this.createBuilderInternal(args)\n\t\treturn this.hooks.reduce((acc, cb) => cb(acc), builder)\n\t}\n\n\tcreateBuilderInternal({ permissions, identityVariables, identityId, db, schema, schemaMeta, systemSchema, stage, project, schemaDatabaseMetadata }: ExecutionContainerArgs) {\n\t\treturn new Builder({})\n\t\t\t.addService('systemSchema', () =>\n\t\t\t\tsystemSchema)\n\t\t\t.addService('db', () =>\n\t\t\t\tdb)\n\t\t\t.addService('project', () =>\n\t\t\t\tproject)\n\t\t\t.addService('stage', () =>\n\t\t\t\tstage)\n\t\t\t.addService('schema', () =>\n\t\t\t\tschema)\n\t\t\t.addService('schemaMeta', () =>\n\t\t\t\tschemaMeta)\n\t\t\t.addService('schemaDatabaseMetadata', () =>\n\t\t\t\tschemaDatabaseMetadata)\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('variableInjector', ({ schema }) =>\n\t\t\t\tnew VariableInjector(schema.model, identityVariables))\n\t\t\t.addService('predicateFactory', ({ variableInjector, schema }) =>\n\t\t\t\tnew PredicateFactory(permissions, schema.model, variableInjector))\n\t\t\t.addService('predicatesInjector', ({ predicateFactory, schema }) =>\n\t\t\t\tnew PredicatesInjector(schema.model, predicateFactory))\n\t\t\t.addService('joinBuilder', ({ schema }) =>\n\t\t\t\tnew JoinBuilder(schema.model))\n\t\t\t.addService('conditionBuilder', () =>\n\t\t\t\tnew ConditionBuilder())\n\t\t\t.addService('pathFactory', () =>\n\t\t\t\tnew PathFactory())\n\t\t\t.addService('whereOptimized', ({ schema }) =>\n\t\t\t\tnew WhereOptimizer(schema.model, new ConditionOptimizer()))\n\t\t\t.addService('whereBuilder', ({ joinBuilder, conditionBuilder, pathFactory, whereOptimized, schema }) =>\n\t\t\t\tnew WhereBuilder(\n\t\t\t\t\tschema.model,\n\t\t\t\t\tjoinBuilder,\n\t\t\t\t\tconditionBuilder,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\twhereOptimized,\n\t\t\t\t\t(schema.settings.content?.useExistsInHasManyFilter ?? schema.settings.useExistsInHasManyFilter) === true,\n\t\t\t\t))\n\t\t\t.addService('orderByBuilder', ({ joinBuilder, schema }) =>\n\t\t\t\tnew OrderByBuilder(schema.model, joinBuilder))\n\t\t\t.addService('relationFetcher', ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) =>\n\t\t\t\tnew RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory))\n\t\t\t.addService('fieldsVisitorFactory', ({ relationFetcher, predicateFactory, schema, providers }) =>\n\t\t\t\tnew FieldsVisitorFactory(schema.model, relationFetcher, predicateFactory, schema.settings.content ?? {}, providers))\n\t\t\t.addService('metaHandler', ({ whereBuilder, predicateFactory }) =>\n\t\t\t\tnew MetaHandler(whereBuilder, predicateFactory))\n\t\t\t.addService('uniqueWhereExpander', ({ schema }) =>\n\t\t\t\tnew UniqueWhereExpander(schema.model))\n\t\t\t.addService('hasManyToHasOneReducer', ({ uniqueWhereExpander, schema }) =>\n\t\t\t\tnew HasManyToHasOneReducerExecutionHandler(schema.model, uniqueWhereExpander))\n\t\t\t.addService('paginatedHasManyExecutionHandler', ({ relationFetcher, schema }) =>\n\t\t\t\tnew PaginatedHasManyExecutionHandler(schema.model, relationFetcher))\n\t\t\t.addService('selectHandlers', ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({\n\t\t\t\t[HasManyToHasOneReducer.extensionName]: hasManyToHasOneReducer,\n\t\t\t\t[PaginatedHasManyFieldProvider.extensionName]: paginatedHasManyExecutionHandler,\n\t\t\t}))\n\t\t\t.addService('selectBuilderFactory', ({ whereBuilder, orderByBuilder, fieldsVisitorFactory, metaHandler, selectHandlers, pathFactory, predicateFactory, schema }) =>\n\t\t\t\tnew (class implements SelectBuilderFactory {\n\t\t\t\t\tcreate(qb: DbSelectBuilder, hydrator: SelectHydrator, relationPath: Model.AnyRelationContext[]): SelectBuilder {\n\t\t\t\t\t\treturn new SelectBuilder(\n\t\t\t\t\t\t\tschema.model,\n\t\t\t\t\t\t\twhereBuilder,\n\t\t\t\t\t\t\torderByBuilder,\n\t\t\t\t\t\t\tmetaHandler,\n\t\t\t\t\t\t\tqb,\n\t\t\t\t\t\t\thydrator,\n\t\t\t\t\t\t\tfieldsVisitorFactory,\n\t\t\t\t\t\t\tselectHandlers,\n\t\t\t\t\t\t\tpathFactory,\n\t\t\t\t\t\t\trelationPath,\n\t\t\t\t\t\t\tpredicateFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})())\n\t\t\t.addService('insertBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew InsertBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('updateBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew UpdateBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('connectJunctionHandler', () =>\n\t\t\t\tnew JunctionConnectHandler())\n\t\t\t.addService('disconnectJunctionHandler', ({}) =>\n\t\t\t\tnew JunctionDisconnectHandler())\n\t\t\t.addService('junctionTableManager', ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema }) =>\n\t\t\t\tnew JunctionTableManager(schema.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory))\n\t\t\t.addService('deleteExecutor', ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema }) =>\n\t\t\t\tnew DeleteExecutor(schema.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory))\n\t\t\t.addService('updater', ({ predicateFactory, updateBuilderFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Updater(schema.model, schemaDatabaseMetadata, predicateFactory, updateBuilderFactory))\n\t\t\t.addService('inserter', ({ insertBuilderFactory, providers, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Inserter(schema.model, schemaDatabaseMetadata, insertBuilderFactory, providers, { uuidVersion: schema.settings.content?.uuidVersion }))\n\t\t\t.addService('mapperFactory', ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema, schemaDatabaseMetadata }) => {\n\t\t\t\treturn new MapperFactory(\n\t\t\t\t\tdb,\n\t\t\t\t\tidentityId,\n\t\t\t\t\tschema.model,\n\t\t\t\t\tschemaDatabaseMetadata,\n\t\t\t\t\tpredicatesInjector,\n\t\t\t\t\tselectBuilderFactory,\n\t\t\t\t\tuniqueWhereExpander,\n\t\t\t\t\twhereBuilder,\n\t\t\t\t\tjunctionTableManager,\n\t\t\t\t\tdeleteExecutor,\n\t\t\t\t\tupdater,\n\t\t\t\t\tinserter,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\tproviders,\n\t\t\t\t)\n\t\t\t})\n\n\t\t\t.addService('queryAstFactory', () =>\n\t\t\t\tnew GraphQlQueryAstFactory())\n\t\t\t.addService('readResolver', ({ mapperFactory, queryAstFactory }) =>\n\t\t\t\tnew ReadResolver(mapperFactory, queryAstFactory))\n\t\t\t.addService('validationDependencyCollector', () =>\n\t\t\t\tnew DependencyCollector())\n\t\t\t.addService('validationQueryAstFactory', ({ schema }) =>\n\t\t\t\tnew QueryAstFactory(schema.model))\n\t\t\t.addService('dataSelector', ({ validationQueryAstFactory, schema }) =>\n\t\t\t\tnew ValidationDataSelector(schema.model, validationQueryAstFactory))\n\t\t\t.addService('columnValueResolver', ({ providers }) =>\n\t\t\t\tnew ColumnValueResolver(providers))\n\t\t\t.addService('entityRulesResolver', ({ schema }) =>\n\t\t\t\tnew EntityRulesResolver(schema.validation, schema.model))\n\t\t\t.addService('inputPreValidator', ({ entityRulesResolver, columnValueResolver, dataSelector, schema }) =>\n\t\t\t\tnew InputPreValidator(schema.model, entityRulesResolver, columnValueResolver, dataSelector))\n\t\t\t.addService('mutationResolver', ({ mapperFactory, inputPreValidator, queryAstFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew MutationResolver(schema.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata))\n\t\t\t.addService('validationResolver', ({ inputPreValidator, mapperFactory }) =>\n\t\t\t\tnew ValidationResolver(mapperFactory, inputPreValidator))\n\t\t\t.addService('refreshViewResolver', ({ schema, mapperFactory }) =>\n\t\t\t\tnew RefreshViewResolver(schema, mapperFactory))\n\t}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver', 'refreshViewResolver')\n\t}\n}\n\n"],"names":["Builder","schema","VariableInjector","PredicateFactory","PredicatesInjector","JoinBuilder","ConditionBuilder","PathFactory","WhereOptimizer","ConditionOptimizer","WhereBuilder","OrderByBuilder","RelationFetcher","FieldsVisitorFactory","MetaHandler","UniqueWhereExpander","HasManyToHasOneReducerExecutionHandler","PaginatedHasManyExecutionHandler","HasManyToHasOneReducer","PaginatedHasManyFieldProvider","SelectBuilder","InsertBuilderFactory","UpdateBuilderFactory","JunctionConnectHandler","JunctionDisconnectHandler","JunctionTableManager","DeleteExecutor","schemaDatabaseMetadata","Updater","Inserter","MapperFactory","GraphQlQueryAstFactory","ReadResolver","DependencyCollector","QueryAstFactory","ValidationDataSelector","ColumnValueResolver","EntityRulesResolver","InputPreValidator","MutationResolver","ValidationResolver","RefreshViewResolver"],"mappings":"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"}
@@ -4,6 +4,7 @@ import { PredicateFactory } from "./acl/PredicateFactory.js";
4
4
  import { PredicatesInjector } from "./acl/PredicatesInjector.js";
5
5
  import { VariableInjector } from "./acl/VariableInjector.js";
6
6
  import "@contember/database";
7
+ import "node:crypto";
7
8
  import { FieldsVisitorFactory } from "./mapper/select/handlers/FieldsVisitorFactory.js";
8
9
  import { MetaHandler } from "./mapper/select/handlers/MetaHandler.js";
9
10
  import { ConditionBuilder } from "./mapper/select/ConditionBuilder.js";
@@ -42,6 +43,7 @@ import { QueryAstFactory } from "./input-validation/QueryAstFactory.js";
42
43
  import "./input-validation/ValidationContext.js";
43
44
  import { ValidationDataSelector } from "./input-validation/ValidationDataSelector.js";
44
45
  import "./input-validation/ValidationEvaluation.js";
46
+ import { RefreshViewResolver } from "./resolvers/RefreshViewResolver.js";
45
47
  import { MapperFactory } from "./mapper/MapperFactory.js";
46
48
  var __defProp = Object.defineProperty;
47
49
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -63,7 +65,7 @@ class ExecutionContainerFactory {
63
65
  pathFactory,
64
66
  whereOptimized,
65
67
  (schema2.settings.content?.useExistsInHasManyFilter ?? schema2.settings.useExistsInHasManyFilter) === true
66
- )).addService("orderByBuilder", ({ joinBuilder, schema: schema2 }) => new OrderByBuilder(schema2.model, joinBuilder)).addService("relationFetcher", ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) => new RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory)).addService("fieldsVisitorFactory", ({ relationFetcher, predicateFactory, schema: schema2 }) => new FieldsVisitorFactory(relationFetcher, predicateFactory, schema2.settings.content ?? {})).addService("metaHandler", ({ whereBuilder, predicateFactory }) => new MetaHandler(whereBuilder, predicateFactory)).addService("uniqueWhereExpander", ({ schema: schema2 }) => new UniqueWhereExpander(schema2.model)).addService("hasManyToHasOneReducer", ({ uniqueWhereExpander, schema: schema2 }) => new HasManyToHasOneReducerExecutionHandler(schema2.model, uniqueWhereExpander)).addService("paginatedHasManyExecutionHandler", ({ relationFetcher, schema: schema2 }) => new PaginatedHasManyExecutionHandler(schema2.model, relationFetcher)).addService("selectHandlers", ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({
68
+ )).addService("orderByBuilder", ({ joinBuilder, schema: schema2 }) => new OrderByBuilder(schema2.model, joinBuilder)).addService("relationFetcher", ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) => new RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory)).addService("fieldsVisitorFactory", ({ relationFetcher, predicateFactory, schema: schema2, providers }) => new FieldsVisitorFactory(schema2.model, relationFetcher, predicateFactory, schema2.settings.content ?? {}, providers)).addService("metaHandler", ({ whereBuilder, predicateFactory }) => new MetaHandler(whereBuilder, predicateFactory)).addService("uniqueWhereExpander", ({ schema: schema2 }) => new UniqueWhereExpander(schema2.model)).addService("hasManyToHasOneReducer", ({ uniqueWhereExpander, schema: schema2 }) => new HasManyToHasOneReducerExecutionHandler(schema2.model, uniqueWhereExpander)).addService("paginatedHasManyExecutionHandler", ({ relationFetcher, schema: schema2 }) => new PaginatedHasManyExecutionHandler(schema2.model, relationFetcher)).addService("selectHandlers", ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({
67
69
  [HasManyToHasOneReducer.extensionName]: hasManyToHasOneReducer,
68
70
  [PaginatedHasManyFieldProvider.extensionName]: paginatedHasManyExecutionHandler
69
71
  })).addService("selectBuilderFactory", ({ whereBuilder, orderByBuilder, fieldsVisitorFactory, metaHandler, selectHandlers, pathFactory, predicateFactory, schema: schema2 }) => new class {
@@ -99,10 +101,10 @@ class ExecutionContainerFactory {
99
101
  pathFactory,
100
102
  providers
101
103
  );
102
- }).addService("queryAstFactory", () => new GraphQlQueryAstFactory()).addService("readResolver", ({ mapperFactory, queryAstFactory }) => new ReadResolver(mapperFactory, queryAstFactory)).addService("validationDependencyCollector", () => new DependencyCollector()).addService("validationQueryAstFactory", ({ schema: schema2 }) => new QueryAstFactory(schema2.model)).addService("dataSelector", ({ validationQueryAstFactory, schema: schema2 }) => new ValidationDataSelector(schema2.model, validationQueryAstFactory)).addService("columnValueResolver", ({ providers }) => new ColumnValueResolver(providers)).addService("entityRulesResolver", ({ schema: schema2 }) => new EntityRulesResolver(schema2.validation, schema2.model)).addService("inputPreValidator", ({ entityRulesResolver, columnValueResolver, dataSelector, schema: schema2 }) => new InputPreValidator(schema2.model, entityRulesResolver, columnValueResolver, dataSelector)).addService("mutationResolver", ({ mapperFactory, inputPreValidator, queryAstFactory, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new MutationResolver(schema2.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata2)).addService("validationResolver", ({ inputPreValidator, mapperFactory }) => new ValidationResolver(mapperFactory, inputPreValidator));
104
+ }).addService("queryAstFactory", () => new GraphQlQueryAstFactory()).addService("readResolver", ({ mapperFactory, queryAstFactory }) => new ReadResolver(mapperFactory, queryAstFactory)).addService("validationDependencyCollector", () => new DependencyCollector()).addService("validationQueryAstFactory", ({ schema: schema2 }) => new QueryAstFactory(schema2.model)).addService("dataSelector", ({ validationQueryAstFactory, schema: schema2 }) => new ValidationDataSelector(schema2.model, validationQueryAstFactory)).addService("columnValueResolver", ({ providers }) => new ColumnValueResolver(providers)).addService("entityRulesResolver", ({ schema: schema2 }) => new EntityRulesResolver(schema2.validation, schema2.model)).addService("inputPreValidator", ({ entityRulesResolver, columnValueResolver, dataSelector, schema: schema2 }) => new InputPreValidator(schema2.model, entityRulesResolver, columnValueResolver, dataSelector)).addService("mutationResolver", ({ mapperFactory, inputPreValidator, queryAstFactory, schema: schema2, schemaDatabaseMetadata: schemaDatabaseMetadata2 }) => new MutationResolver(schema2.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata2)).addService("validationResolver", ({ inputPreValidator, mapperFactory }) => new ValidationResolver(mapperFactory, inputPreValidator)).addService("refreshViewResolver", ({ schema: schema2, mapperFactory }) => new RefreshViewResolver(schema2, mapperFactory));
103
105
  }
104
106
  create(args) {
105
- return this.createBuilder(args).build().pick("validationResolver", "readResolver", "mutationResolver");
107
+ return this.createBuilder(args).build().pick("validationResolver", "readResolver", "mutationResolver", "refreshViewResolver");
106
108
  }
107
109
  }
108
110
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionContainer.js","sources":["../../../../packages/engine-content-api/src/ExecutionContainer.ts"],"sourcesContent":["import { PredicateFactory, PredicatesInjector, VariableInjector } from './acl'\nimport {\n\tConditionBuilder,\n\tFieldsVisitorFactory,\n\tJoinBuilder,\n\tMetaHandler,\n\tOrderByBuilder,\n\tRelationFetcher,\n\tWhereBuilder,\n} from './mapper/select'\nimport { UniqueWhereExpander } from './inputProcessing'\nimport { HasManyToHasOneReducer, HasManyToHasOneReducerExecutionHandler } from './extensions'\nimport {\n\tDeleteExecutor,\n\tInsertBuilderFactory,\n\tInserter,\n\tJunctionConnectHandler,\n\tJunctionDisconnectHandler,\n\tJunctionTableManager,\n\tMapperFactory,\n\tPathFactory,\n\tSelectBuilder,\n\tSelectBuilderFactory,\n\tSelectHydrator,\n\tUpdateBuilderFactory,\n\tUpdater,\n} from './mapper'\nimport { Builder } from '@contember/dic'\nimport { Acl, Model, Schema } from '@contember/schema'\nimport { Client, DatabaseMetadata, SelectBuilder as DbSelectBuilder } from '@contember/database'\nimport { Providers } from '@contember/schema-utils'\nimport { PaginatedHasManyExecutionHandler } from './extensions/paginatedHasMany/PaginatedHasManyExecutionHandler'\nimport { PaginatedHasManyFieldProvider } from './extensions/paginatedHasMany/PaginatedHasManyFieldProvider'\nimport { WhereOptimizer } from './mapper/select/optimizer/WhereOptimizer'\nimport { ConditionOptimizer } from './mapper/select/optimizer/ConditionOptimizer'\nimport { GraphQlQueryAstFactory, MutationResolver, ReadResolver, ValidationResolver } from './resolvers'\nimport {\n\tColumnValueResolver,\n\tDependencyCollector,\n\tEntityRulesResolver, InputPreValidator,\n\tQueryAstFactory,\n\tValidationDataSelector,\n} from './input-validation'\n\nexport type ExecutionContainerArgs = {\n\tschema: Schema\n\tschemaMeta: { id?: number }\n\tschemaDatabaseMetadata: DatabaseMetadata\n\tdb: Client\n\tidentityId: string\n\tidentityVariables: Acl.VariablesMap\n\tpermissions: Acl.Permissions\n\tsystemSchema: string\n\tproject: { slug: string }\n\tstage: { id: string; slug: string }\n}\n\nexport interface ExecutionContainer {\n\treadResolver: ReadResolver\n\tmutationResolver: MutationResolver\n\tvalidationResolver: ValidationResolver\n}\n\nexport type ExecutionContainerBuilder = ReturnType<ExecutionContainerFactory['createBuilderInternal']>\nexport type ExecutionContainerHook = (builder: ExecutionContainerBuilder) => ExecutionContainerBuilder\n\nexport class ExecutionContainerFactory {\n\tpublic readonly hooks: ExecutionContainerHook[] = []\n\n\tconstructor(\n\t\tprivate readonly providers: Providers,\n\t) {\n\t}\n\n\tcreateBuilder(args: ExecutionContainerArgs): ExecutionContainerBuilder {\n\t\tconst builder = this.createBuilderInternal(args)\n\t\treturn this.hooks.reduce((acc, cb) => cb(acc), builder)\n\t}\n\n\tcreateBuilderInternal({ permissions, identityVariables, identityId, db, schema, schemaMeta, systemSchema, stage, project, schemaDatabaseMetadata }: ExecutionContainerArgs) {\n\t\treturn new Builder({})\n\t\t\t.addService('systemSchema', () =>\n\t\t\t\tsystemSchema)\n\t\t\t.addService('db', () =>\n\t\t\t\tdb)\n\t\t\t.addService('project', () =>\n\t\t\t\tproject)\n\t\t\t.addService('stage', () =>\n\t\t\t\tstage)\n\t\t\t.addService('schema', () =>\n\t\t\t\tschema)\n\t\t\t.addService('schemaMeta', () =>\n\t\t\t\tschemaMeta)\n\t\t\t.addService('schemaDatabaseMetadata', () =>\n\t\t\t\tschemaDatabaseMetadata)\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('variableInjector', ({ schema }) =>\n\t\t\t\tnew VariableInjector(schema.model, identityVariables))\n\t\t\t.addService('predicateFactory', ({ variableInjector, schema }) =>\n\t\t\t\tnew PredicateFactory(permissions, schema.model, variableInjector))\n\t\t\t.addService('predicatesInjector', ({ predicateFactory, schema }) =>\n\t\t\t\tnew PredicatesInjector(schema.model, predicateFactory))\n\t\t\t.addService('joinBuilder', ({ schema }) =>\n\t\t\t\tnew JoinBuilder(schema.model))\n\t\t\t.addService('conditionBuilder', () =>\n\t\t\t\tnew ConditionBuilder())\n\t\t\t.addService('pathFactory', () =>\n\t\t\t\tnew PathFactory())\n\t\t\t.addService('whereOptimized', ({ schema }) =>\n\t\t\t\tnew WhereOptimizer(schema.model, new ConditionOptimizer()))\n\t\t\t.addService('whereBuilder', ({ joinBuilder, conditionBuilder, pathFactory, whereOptimized, schema }) =>\n\t\t\t\tnew WhereBuilder(\n\t\t\t\t\tschema.model,\n\t\t\t\t\tjoinBuilder,\n\t\t\t\t\tconditionBuilder,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\twhereOptimized,\n\t\t\t\t\t(schema.settings.content?.useExistsInHasManyFilter ?? schema.settings.useExistsInHasManyFilter) === true,\n\t\t\t\t))\n\t\t\t.addService('orderByBuilder', ({ joinBuilder, schema }) =>\n\t\t\t\tnew OrderByBuilder(schema.model, joinBuilder))\n\t\t\t.addService('relationFetcher', ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) =>\n\t\t\t\tnew RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory))\n\t\t\t.addService('fieldsVisitorFactory', ({ relationFetcher, predicateFactory, schema }) =>\n\t\t\t\tnew FieldsVisitorFactory(relationFetcher, predicateFactory, schema.settings.content ?? {}))\n\t\t\t.addService('metaHandler', ({ whereBuilder, predicateFactory }) =>\n\t\t\t\tnew MetaHandler(whereBuilder, predicateFactory))\n\t\t\t.addService('uniqueWhereExpander', ({ schema }) =>\n\t\t\t\tnew UniqueWhereExpander(schema.model))\n\t\t\t.addService('hasManyToHasOneReducer', ({ uniqueWhereExpander, schema }) =>\n\t\t\t\tnew HasManyToHasOneReducerExecutionHandler(schema.model, uniqueWhereExpander))\n\t\t\t.addService('paginatedHasManyExecutionHandler', ({ relationFetcher, schema }) =>\n\t\t\t\tnew PaginatedHasManyExecutionHandler(schema.model, relationFetcher))\n\t\t\t.addService('selectHandlers', ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({\n\t\t\t\t[HasManyToHasOneReducer.extensionName]: hasManyToHasOneReducer,\n\t\t\t\t[PaginatedHasManyFieldProvider.extensionName]: paginatedHasManyExecutionHandler,\n\t\t\t}))\n\t\t\t.addService('selectBuilderFactory', ({ whereBuilder, orderByBuilder, fieldsVisitorFactory, metaHandler, selectHandlers, pathFactory, predicateFactory, schema }) =>\n\t\t\t\tnew (class implements SelectBuilderFactory {\n\t\t\t\t\tcreate(qb: DbSelectBuilder, hydrator: SelectHydrator, relationPath: Model.AnyRelationContext[]): SelectBuilder {\n\t\t\t\t\t\treturn new SelectBuilder(\n\t\t\t\t\t\t\tschema.model,\n\t\t\t\t\t\t\twhereBuilder,\n\t\t\t\t\t\t\torderByBuilder,\n\t\t\t\t\t\t\tmetaHandler,\n\t\t\t\t\t\t\tqb,\n\t\t\t\t\t\t\thydrator,\n\t\t\t\t\t\t\tfieldsVisitorFactory,\n\t\t\t\t\t\t\tselectHandlers,\n\t\t\t\t\t\t\tpathFactory,\n\t\t\t\t\t\t\trelationPath,\n\t\t\t\t\t\t\tpredicateFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})())\n\t\t\t.addService('insertBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew InsertBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('updateBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew UpdateBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('connectJunctionHandler', () =>\n\t\t\t\tnew JunctionConnectHandler())\n\t\t\t.addService('disconnectJunctionHandler', ({}) =>\n\t\t\t\tnew JunctionDisconnectHandler())\n\t\t\t.addService('junctionTableManager', ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema }) =>\n\t\t\t\tnew JunctionTableManager(schema.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory))\n\t\t\t.addService('deleteExecutor', ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema }) =>\n\t\t\t\tnew DeleteExecutor(schema.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory))\n\t\t\t.addService('updater', ({ predicateFactory, updateBuilderFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Updater(schema.model, schemaDatabaseMetadata, predicateFactory, updateBuilderFactory))\n\t\t\t.addService('inserter', ({ insertBuilderFactory, providers, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Inserter(schema.model, schemaDatabaseMetadata, insertBuilderFactory, providers, { uuidVersion: schema.settings.content?.uuidVersion }))\n\t\t\t.addService('mapperFactory', ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema, schemaDatabaseMetadata }) => {\n\t\t\t\treturn new MapperFactory(\n\t\t\t\t\tdb,\n\t\t\t\t\tidentityId,\n\t\t\t\t\tschema.model,\n\t\t\t\t\tschemaDatabaseMetadata,\n\t\t\t\t\tpredicatesInjector,\n\t\t\t\t\tselectBuilderFactory,\n\t\t\t\t\tuniqueWhereExpander,\n\t\t\t\t\twhereBuilder,\n\t\t\t\t\tjunctionTableManager,\n\t\t\t\t\tdeleteExecutor,\n\t\t\t\t\tupdater,\n\t\t\t\t\tinserter,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\tproviders,\n\t\t\t\t)\n\t\t\t})\n\n\t\t\t.addService('queryAstFactory', () =>\n\t\t\t\tnew GraphQlQueryAstFactory())\n\t\t\t.addService('readResolver', ({ mapperFactory, queryAstFactory }) =>\n\t\t\t\tnew ReadResolver(mapperFactory, queryAstFactory))\n\t\t\t.addService('validationDependencyCollector', () =>\n\t\t\t\tnew DependencyCollector())\n\t\t\t.addService('validationQueryAstFactory', ({ schema }) =>\n\t\t\t\tnew QueryAstFactory(schema.model))\n\t\t\t.addService('dataSelector', ({ validationQueryAstFactory, schema }) =>\n\t\t\t\tnew ValidationDataSelector(schema.model, validationQueryAstFactory))\n\t\t\t.addService('columnValueResolver', ({ providers }) =>\n\t\t\t\tnew ColumnValueResolver(providers))\n\t\t\t.addService('entityRulesResolver', ({ schema }) =>\n\t\t\t\tnew EntityRulesResolver(schema.validation, schema.model))\n\t\t\t.addService('inputPreValidator', ({ entityRulesResolver, columnValueResolver, dataSelector, schema }) =>\n\t\t\t\tnew InputPreValidator(schema.model, entityRulesResolver, columnValueResolver, dataSelector))\n\t\t\t.addService('mutationResolver', ({ mapperFactory, inputPreValidator, queryAstFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew MutationResolver(schema.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata))\n\t\t\t.addService('validationResolver', ({ inputPreValidator, mapperFactory }) =>\n\t\t\t\tnew ValidationResolver(mapperFactory, inputPreValidator))\n\t}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver')\n\t}\n}\n\n"],"names":["schema","schemaDatabaseMetadata"],"mappings":"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"}
1
+ {"version":3,"file":"ExecutionContainer.js","sources":["../../../../packages/engine-content-api/src/ExecutionContainer.ts"],"sourcesContent":["import { PredicateFactory, PredicatesInjector, VariableInjector } from './acl'\nimport {\n\tConditionBuilder,\n\tFieldsVisitorFactory,\n\tJoinBuilder,\n\tMetaHandler,\n\tOrderByBuilder,\n\tRelationFetcher,\n\tWhereBuilder,\n} from './mapper/select'\nimport { UniqueWhereExpander } from './inputProcessing'\nimport { HasManyToHasOneReducer, HasManyToHasOneReducerExecutionHandler } from './extensions'\nimport {\n\tDeleteExecutor,\n\tInsertBuilderFactory,\n\tInserter,\n\tJunctionConnectHandler,\n\tJunctionDisconnectHandler,\n\tJunctionTableManager,\n\tMapperFactory,\n\tPathFactory,\n\tSelectBuilder,\n\tSelectBuilderFactory,\n\tSelectHydrator,\n\tUpdateBuilderFactory,\n\tUpdater,\n} from './mapper'\nimport { Builder } from '@contember/dic'\nimport { Acl, Model, Schema } from '@contember/schema'\nimport { Client, DatabaseMetadata, SelectBuilder as DbSelectBuilder } from '@contember/database'\nimport { ParsedMembership, Providers } from '@contember/schema-utils'\nimport { PaginatedHasManyExecutionHandler } from './extensions/paginatedHasMany/PaginatedHasManyExecutionHandler'\nimport { PaginatedHasManyFieldProvider } from './extensions/paginatedHasMany/PaginatedHasManyFieldProvider'\nimport { WhereOptimizer } from './mapper/select/optimizer/WhereOptimizer'\nimport { ConditionOptimizer } from './mapper/select/optimizer/ConditionOptimizer'\nimport { GraphQlQueryAstFactory, MutationResolver, ReadResolver, ValidationResolver } from './resolvers'\nimport {\n\tColumnValueResolver,\n\tDependencyCollector,\n\tEntityRulesResolver, InputPreValidator,\n\tQueryAstFactory,\n\tValidationDataSelector,\n} from './input-validation'\nimport { RefreshViewResolver } from './resolvers/RefreshViewResolver'\n\nexport type ExecutionContainerArgs = {\n\tschema: Schema\n\tschemaMeta: { id?: number }\n\tschemaDatabaseMetadata: DatabaseMetadata\n\tdb: Client\n\tidentityId: string\n\tidentityVariables: Acl.VariablesMap\n\tpermissions: Acl.Permissions\n\tsystemSchema: string\n\tproject: { slug: string }\n\tstage: { id: string; slug: string }\n}\n\nexport interface ExecutionContainer {\n\treadResolver: ReadResolver\n\tmutationResolver: MutationResolver\n\tvalidationResolver: ValidationResolver\n\trefreshViewResolver: RefreshViewResolver\n}\n\nexport type ExecutionContainerBuilder = ReturnType<ExecutionContainerFactory['createBuilderInternal']>\nexport type ExecutionContainerHook = (builder: ExecutionContainerBuilder) => ExecutionContainerBuilder\n\nexport class ExecutionContainerFactory {\n\tpublic readonly hooks: ExecutionContainerHook[] = []\n\n\tconstructor(\n\t\tprivate readonly providers: Providers,\n\t) {\n\t}\n\n\tcreateBuilder(args: ExecutionContainerArgs): ExecutionContainerBuilder {\n\t\tconst builder = this.createBuilderInternal(args)\n\t\treturn this.hooks.reduce((acc, cb) => cb(acc), builder)\n\t}\n\n\tcreateBuilderInternal({ permissions, identityVariables, identityId, db, schema, schemaMeta, systemSchema, stage, project, schemaDatabaseMetadata }: ExecutionContainerArgs) {\n\t\treturn new Builder({})\n\t\t\t.addService('systemSchema', () =>\n\t\t\t\tsystemSchema)\n\t\t\t.addService('db', () =>\n\t\t\t\tdb)\n\t\t\t.addService('project', () =>\n\t\t\t\tproject)\n\t\t\t.addService('stage', () =>\n\t\t\t\tstage)\n\t\t\t.addService('schema', () =>\n\t\t\t\tschema)\n\t\t\t.addService('schemaMeta', () =>\n\t\t\t\tschemaMeta)\n\t\t\t.addService('schemaDatabaseMetadata', () =>\n\t\t\t\tschemaDatabaseMetadata)\n\t\t\t.addService('providers', () =>\n\t\t\t\tthis.providers)\n\t\t\t.addService('variableInjector', ({ schema }) =>\n\t\t\t\tnew VariableInjector(schema.model, identityVariables))\n\t\t\t.addService('predicateFactory', ({ variableInjector, schema }) =>\n\t\t\t\tnew PredicateFactory(permissions, schema.model, variableInjector))\n\t\t\t.addService('predicatesInjector', ({ predicateFactory, schema }) =>\n\t\t\t\tnew PredicatesInjector(schema.model, predicateFactory))\n\t\t\t.addService('joinBuilder', ({ schema }) =>\n\t\t\t\tnew JoinBuilder(schema.model))\n\t\t\t.addService('conditionBuilder', () =>\n\t\t\t\tnew ConditionBuilder())\n\t\t\t.addService('pathFactory', () =>\n\t\t\t\tnew PathFactory())\n\t\t\t.addService('whereOptimized', ({ schema }) =>\n\t\t\t\tnew WhereOptimizer(schema.model, new ConditionOptimizer()))\n\t\t\t.addService('whereBuilder', ({ joinBuilder, conditionBuilder, pathFactory, whereOptimized, schema }) =>\n\t\t\t\tnew WhereBuilder(\n\t\t\t\t\tschema.model,\n\t\t\t\t\tjoinBuilder,\n\t\t\t\t\tconditionBuilder,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\twhereOptimized,\n\t\t\t\t\t(schema.settings.content?.useExistsInHasManyFilter ?? schema.settings.useExistsInHasManyFilter) === true,\n\t\t\t\t))\n\t\t\t.addService('orderByBuilder', ({ joinBuilder, schema }) =>\n\t\t\t\tnew OrderByBuilder(schema.model, joinBuilder))\n\t\t\t.addService('relationFetcher', ({ whereBuilder, orderByBuilder, predicatesInjector, pathFactory }) =>\n\t\t\t\tnew RelationFetcher(whereBuilder, orderByBuilder, predicatesInjector, pathFactory))\n\t\t\t.addService('fieldsVisitorFactory', ({ relationFetcher, predicateFactory, schema, providers }) =>\n\t\t\t\tnew FieldsVisitorFactory(schema.model, relationFetcher, predicateFactory, schema.settings.content ?? {}, providers))\n\t\t\t.addService('metaHandler', ({ whereBuilder, predicateFactory }) =>\n\t\t\t\tnew MetaHandler(whereBuilder, predicateFactory))\n\t\t\t.addService('uniqueWhereExpander', ({ schema }) =>\n\t\t\t\tnew UniqueWhereExpander(schema.model))\n\t\t\t.addService('hasManyToHasOneReducer', ({ uniqueWhereExpander, schema }) =>\n\t\t\t\tnew HasManyToHasOneReducerExecutionHandler(schema.model, uniqueWhereExpander))\n\t\t\t.addService('paginatedHasManyExecutionHandler', ({ relationFetcher, schema }) =>\n\t\t\t\tnew PaginatedHasManyExecutionHandler(schema.model, relationFetcher))\n\t\t\t.addService('selectHandlers', ({ hasManyToHasOneReducer, paginatedHasManyExecutionHandler }) => ({\n\t\t\t\t[HasManyToHasOneReducer.extensionName]: hasManyToHasOneReducer,\n\t\t\t\t[PaginatedHasManyFieldProvider.extensionName]: paginatedHasManyExecutionHandler,\n\t\t\t}))\n\t\t\t.addService('selectBuilderFactory', ({ whereBuilder, orderByBuilder, fieldsVisitorFactory, metaHandler, selectHandlers, pathFactory, predicateFactory, schema }) =>\n\t\t\t\tnew (class implements SelectBuilderFactory {\n\t\t\t\t\tcreate(qb: DbSelectBuilder, hydrator: SelectHydrator, relationPath: Model.AnyRelationContext[]): SelectBuilder {\n\t\t\t\t\t\treturn new SelectBuilder(\n\t\t\t\t\t\t\tschema.model,\n\t\t\t\t\t\t\twhereBuilder,\n\t\t\t\t\t\t\torderByBuilder,\n\t\t\t\t\t\t\tmetaHandler,\n\t\t\t\t\t\t\tqb,\n\t\t\t\t\t\t\thydrator,\n\t\t\t\t\t\t\tfieldsVisitorFactory,\n\t\t\t\t\t\t\tselectHandlers,\n\t\t\t\t\t\t\tpathFactory,\n\t\t\t\t\t\t\trelationPath,\n\t\t\t\t\t\t\tpredicateFactory,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t})())\n\t\t\t.addService('insertBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew InsertBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('updateBuilderFactory', ({ whereBuilder, pathFactory, schema, predicateFactory }) =>\n\t\t\t\tnew UpdateBuilderFactory(schema.model, whereBuilder, pathFactory, predicateFactory))\n\t\t\t.addService('connectJunctionHandler', () =>\n\t\t\t\tnew JunctionConnectHandler())\n\t\t\t.addService('disconnectJunctionHandler', ({}) =>\n\t\t\t\tnew JunctionDisconnectHandler())\n\t\t\t.addService('junctionTableManager', ({ predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory, schema }) =>\n\t\t\t\tnew JunctionTableManager(schema.model, predicateFactory, whereBuilder, connectJunctionHandler, disconnectJunctionHandler, pathFactory))\n\t\t\t.addService('deleteExecutor', ({ predicateFactory, updateBuilderFactory, whereBuilder, pathFactory, schema }) =>\n\t\t\t\tnew DeleteExecutor(schema.model, predicateFactory, whereBuilder, updateBuilderFactory, pathFactory))\n\t\t\t.addService('updater', ({ predicateFactory, updateBuilderFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Updater(schema.model, schemaDatabaseMetadata, predicateFactory, updateBuilderFactory))\n\t\t\t.addService('inserter', ({ insertBuilderFactory, providers, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew Inserter(schema.model, schemaDatabaseMetadata, insertBuilderFactory, providers, { uuidVersion: schema.settings.content?.uuidVersion }))\n\t\t\t.addService('mapperFactory', ({ predicatesInjector, selectBuilderFactory, uniqueWhereExpander, whereBuilder, junctionTableManager, deleteExecutor, updater, inserter, pathFactory, providers, schema, schemaDatabaseMetadata }) => {\n\t\t\t\treturn new MapperFactory(\n\t\t\t\t\tdb,\n\t\t\t\t\tidentityId,\n\t\t\t\t\tschema.model,\n\t\t\t\t\tschemaDatabaseMetadata,\n\t\t\t\t\tpredicatesInjector,\n\t\t\t\t\tselectBuilderFactory,\n\t\t\t\t\tuniqueWhereExpander,\n\t\t\t\t\twhereBuilder,\n\t\t\t\t\tjunctionTableManager,\n\t\t\t\t\tdeleteExecutor,\n\t\t\t\t\tupdater,\n\t\t\t\t\tinserter,\n\t\t\t\t\tpathFactory,\n\t\t\t\t\tproviders,\n\t\t\t\t)\n\t\t\t})\n\n\t\t\t.addService('queryAstFactory', () =>\n\t\t\t\tnew GraphQlQueryAstFactory())\n\t\t\t.addService('readResolver', ({ mapperFactory, queryAstFactory }) =>\n\t\t\t\tnew ReadResolver(mapperFactory, queryAstFactory))\n\t\t\t.addService('validationDependencyCollector', () =>\n\t\t\t\tnew DependencyCollector())\n\t\t\t.addService('validationQueryAstFactory', ({ schema }) =>\n\t\t\t\tnew QueryAstFactory(schema.model))\n\t\t\t.addService('dataSelector', ({ validationQueryAstFactory, schema }) =>\n\t\t\t\tnew ValidationDataSelector(schema.model, validationQueryAstFactory))\n\t\t\t.addService('columnValueResolver', ({ providers }) =>\n\t\t\t\tnew ColumnValueResolver(providers))\n\t\t\t.addService('entityRulesResolver', ({ schema }) =>\n\t\t\t\tnew EntityRulesResolver(schema.validation, schema.model))\n\t\t\t.addService('inputPreValidator', ({ entityRulesResolver, columnValueResolver, dataSelector, schema }) =>\n\t\t\t\tnew InputPreValidator(schema.model, entityRulesResolver, columnValueResolver, dataSelector))\n\t\t\t.addService('mutationResolver', ({ mapperFactory, inputPreValidator, queryAstFactory, schema, schemaDatabaseMetadata }) =>\n\t\t\t\tnew MutationResolver(schema.model, mapperFactory, inputPreValidator, queryAstFactory, schemaDatabaseMetadata))\n\t\t\t.addService('validationResolver', ({ inputPreValidator, mapperFactory }) =>\n\t\t\t\tnew ValidationResolver(mapperFactory, inputPreValidator))\n\t\t\t.addService('refreshViewResolver', ({ schema, mapperFactory }) =>\n\t\t\t\tnew RefreshViewResolver(schema, mapperFactory))\n\t}\n\n\tpublic create(args: ExecutionContainerArgs): ExecutionContainer {\n\t\treturn this.createBuilder(args).build().pick('validationResolver', 'readResolver', 'mutationResolver', 'refreshViewResolver')\n\t}\n}\n\n"],"names":["schema","schemaDatabaseMetadata"],"mappings":"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"}
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const schema = require("@contember/schema");
4
4
  class Authorizator {
5
- constructor(permissions, defaultCustomPrimary) {
5
+ constructor(permissions, defaultCustomPrimary, allowRefreshMaterializedView) {
6
6
  this.permissions = permissions;
7
7
  this.defaultCustomPrimary = defaultCustomPrimary;
8
+ this.allowRefreshMaterializedView = allowRefreshMaterializedView;
8
9
  }
9
10
  getEntityPermission(operation, entity) {
10
11
  if (!this.permissions[entity]) {
@@ -45,6 +46,9 @@ class Authorizator {
45
46
  isRootOperationDisallowed(entity, operation) {
46
47
  return this.permissions?.[entity]?.operations?.noRoot?.includes(operation) ?? false;
47
48
  }
49
+ isRefreshMaterializedViewAllowed(entity) {
50
+ return this.permissions?.[entity]?.operations?.refreshMaterializedView ?? this.allowRefreshMaterializedView;
51
+ }
48
52
  }
49
53
  exports.Authorizator = Authorizator;
50
54
  //# sourceMappingURL=Authorizator.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Authorizator.cjs","sources":["../../../../../packages/engine-content-api/src/acl/Authorizator.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\n\nexport type AuthorizationResult = 'yes' | 'no' | 'maybe'\n\nexport class Authorizator {\n\tconstructor(\n\t\tprivate readonly permissions: Acl.Permissions,\n\t\tprivate readonly defaultCustomPrimary: boolean,\n\t) {\n\t}\n\n\tgetEntityPermission(operation: Acl.Operation, entity: string): AuthorizationResult {\n\t\tif (!this.permissions[entity]) {\n\t\t\treturn 'no'\n\t\t}\n\t\tconst entityPermissions: Acl.EntityPermissions = this.permissions[entity]\n\n\t\tif (operation === Acl.Operation.delete) {\n\t\t\treturn this.predicateToResult(entityPermissions.operations.delete)\n\t\t}\n\t\tconst fieldPermissions = entityPermissions.operations[operation]\n\t\tif (!fieldPermissions) {\n\t\t\treturn 'no'\n\t\t}\n\t\treturn Object.values(fieldPermissions).filter(it => !!it).length > 0 ? 'yes' : 'no'\n\t}\n\n\tgetFieldPredicate(operation: Acl.Operation.create | Acl.Operation.read | Acl.Operation.update, entity: string, field: string): Acl.Predicate {\n\t\treturn this.permissions[entity]?.operations[operation]?.[field] ?? false\n\t}\n\n\tgetFieldPermissions(operation: Acl.Operation.create | Acl.Operation.read | Acl.Operation.update, entity: string, field: string): AuthorizationResult {\n\t\tconst fieldPermissions = this.getFieldPredicate(operation, entity, field)\n\t\tif (!fieldPermissions) {\n\t\t\treturn 'no'\n\t\t}\n\t\treturn this.predicateToResult(fieldPermissions)\n\t}\n\n\tprivate predicateToResult(predicate: Acl.Predicate | undefined): AuthorizationResult {\n\t\tif (!predicate) {\n\t\t\treturn 'no'\n\t\t}\n\t\tif (predicate === true) {\n\t\t\treturn 'yes'\n\t\t}\n\t\treturn 'maybe'\n\t}\n\n\n\tisCustomPrimaryAllowed(entity: string): boolean {\n\t\treturn this.permissions?.[entity]?.operations?.customPrimary ?? this.defaultCustomPrimary\n\t}\n\n\tisRootOperationDisallowed(entity: string, operation: Acl.Operation): boolean {\n\t\treturn this.permissions?.[entity]?.operations?.noRoot?.includes(operation) ?? false\n\t}\n}\n"],"names":["Acl"],"mappings":";;;AAKO,MAAM,aAAa;AAAA,EACzB,YACkB,aACA,sBAChB;AAFgB,SAAA,cAAA;AACA,SAAA,uBAAA;AAAA,EAAA;AAAA,EAIlB,oBAAoB,WAA0B,QAAqC;AAClF,QAAI,CAAC,KAAK,YAAY,MAAM,GAAG;AACvB,aAAA;AAAA,IAAA;AAEF,UAAA,oBAA2C,KAAK,YAAY,MAAM;AAEpE,QAAA,cAAcA,OAAAA,IAAI,UAAU,QAAQ;AACvC,aAAO,KAAK,kBAAkB,kBAAkB,WAAW,MAAM;AAAA,IAAA;AAE5D,UAAA,mBAAmB,kBAAkB,WAAW,SAAS;AAC/D,QAAI,CAAC,kBAAkB;AACf,aAAA;AAAA,IAAA;AAER,WAAO,OAAO,OAAO,gBAAgB,EAAE,OAAO,CAAA,OAAM,CAAC,CAAC,EAAE,EAAE,SAAS,IAAI,QAAQ;AAAA,EAAA;AAAA,EAGhF,kBAAkB,WAA6E,QAAgB,OAA8B;AACrI,WAAA,KAAK,YAAY,MAAM,GAAG,WAAW,SAAS,IAAI,KAAK,KAAK;AAAA,EAAA;AAAA,EAGpE,oBAAoB,WAA6E,QAAgB,OAAoC;AACpJ,UAAM,mBAAmB,KAAK,kBAAkB,WAAW,QAAQ,KAAK;AACxE,QAAI,CAAC,kBAAkB;AACf,aAAA;AAAA,IAAA;AAED,WAAA,KAAK,kBAAkB,gBAAgB;AAAA,EAAA;AAAA,EAGvC,kBAAkB,WAA2D;AACpF,QAAI,CAAC,WAAW;AACR,aAAA;AAAA,IAAA;AAER,QAAI,cAAc,MAAM;AAChB,aAAA;AAAA,IAAA;AAED,WAAA;AAAA,EAAA;AAAA,EAIR,uBAAuB,QAAyB;AAC/C,WAAO,KAAK,cAAc,MAAM,GAAG,YAAY,iBAAiB,KAAK;AAAA,EAAA;AAAA,EAGtE,0BAA0B,QAAgB,WAAmC;AACrE,WAAA,KAAK,cAAc,MAAM,GAAG,YAAY,QAAQ,SAAS,SAAS,KAAK;AAAA,EAAA;AAEhF;;"}
1
+ {"version":3,"file":"Authorizator.cjs","sources":["../../../../../packages/engine-content-api/src/acl/Authorizator.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\n\nexport type AuthorizationResult = 'yes' | 'no' | 'maybe'\n\nexport class Authorizator {\n\tconstructor(\n\t\tprivate readonly permissions: Acl.Permissions,\n\t\tprivate readonly defaultCustomPrimary: boolean,\n\t\tprivate readonly allowRefreshMaterializedView: boolean,\n\t) {\n\t}\n\n\tgetEntityPermission(operation: Acl.Operation, entity: string): AuthorizationResult {\n\t\tif (!this.permissions[entity]) {\n\t\t\treturn 'no'\n\t\t}\n\t\tconst entityPermissions: Acl.EntityPermissions = this.permissions[entity]\n\n\t\tif (operation === Acl.Operation.delete) {\n\t\t\treturn this.predicateToResult(entityPermissions.operations.delete)\n\t\t}\n\t\tconst fieldPermissions = entityPermissions.operations[operation]\n\t\tif (!fieldPermissions) {\n\t\t\treturn 'no'\n\t\t}\n\t\treturn Object.values(fieldPermissions).filter(it => !!it).length > 0 ? 'yes' : 'no'\n\t}\n\n\tgetFieldPredicate(operation: Acl.Operation.create | Acl.Operation.read | Acl.Operation.update, entity: string, field: string): Acl.Predicate {\n\t\treturn this.permissions[entity]?.operations[operation]?.[field] ?? false\n\t}\n\n\tgetFieldPermissions(operation: Acl.Operation.create | Acl.Operation.read | Acl.Operation.update, entity: string, field: string): AuthorizationResult {\n\t\tconst fieldPermissions = this.getFieldPredicate(operation, entity, field)\n\t\tif (!fieldPermissions) {\n\t\t\treturn 'no'\n\t\t}\n\t\treturn this.predicateToResult(fieldPermissions)\n\t}\n\n\tprivate predicateToResult(predicate: Acl.Predicate | undefined): AuthorizationResult {\n\t\tif (!predicate) {\n\t\t\treturn 'no'\n\t\t}\n\t\tif (predicate === true) {\n\t\t\treturn 'yes'\n\t\t}\n\t\treturn 'maybe'\n\t}\n\n\n\tisCustomPrimaryAllowed(entity: string): boolean {\n\t\treturn this.permissions?.[entity]?.operations?.customPrimary ?? this.defaultCustomPrimary\n\t}\n\n\tisRootOperationDisallowed(entity: string, operation: Acl.Operation): boolean {\n\t\treturn this.permissions?.[entity]?.operations?.noRoot?.includes(operation) ?? false\n\t}\n\n\tisRefreshMaterializedViewAllowed(entity: string): boolean {\n\t\treturn this.permissions?.[entity]?.operations?.refreshMaterializedView ?? this.allowRefreshMaterializedView\n\t}\n}\n"],"names":["Acl"],"mappings":";;;AAKO,MAAM,aAAa;AAAA,EACzB,YACkB,aACA,sBACA,8BAChB;AAHgB,SAAA,cAAA;AACA,SAAA,uBAAA;AACA,SAAA,+BAAA;AAAA,EAAA;AAAA,EAIlB,oBAAoB,WAA0B,QAAqC;AAClF,QAAI,CAAC,KAAK,YAAY,MAAM,GAAG;AACvB,aAAA;AAAA,IAAA;AAEF,UAAA,oBAA2C,KAAK,YAAY,MAAM;AAEpE,QAAA,cAAcA,OAAAA,IAAI,UAAU,QAAQ;AACvC,aAAO,KAAK,kBAAkB,kBAAkB,WAAW,MAAM;AAAA,IAAA;AAE5D,UAAA,mBAAmB,kBAAkB,WAAW,SAAS;AAC/D,QAAI,CAAC,kBAAkB;AACf,aAAA;AAAA,IAAA;AAER,WAAO,OAAO,OAAO,gBAAgB,EAAE,OAAO,CAAA,OAAM,CAAC,CAAC,EAAE,EAAE,SAAS,IAAI,QAAQ;AAAA,EAAA;AAAA,EAGhF,kBAAkB,WAA6E,QAAgB,OAA8B;AACrI,WAAA,KAAK,YAAY,MAAM,GAAG,WAAW,SAAS,IAAI,KAAK,KAAK;AAAA,EAAA;AAAA,EAGpE,oBAAoB,WAA6E,QAAgB,OAAoC;AACpJ,UAAM,mBAAmB,KAAK,kBAAkB,WAAW,QAAQ,KAAK;AACxE,QAAI,CAAC,kBAAkB;AACf,aAAA;AAAA,IAAA;AAED,WAAA,KAAK,kBAAkB,gBAAgB;AAAA,EAAA;AAAA,EAGvC,kBAAkB,WAA2D;AACpF,QAAI,CAAC,WAAW;AACR,aAAA;AAAA,IAAA;AAER,QAAI,cAAc,MAAM;AAChB,aAAA;AAAA,IAAA;AAED,WAAA;AAAA,EAAA;AAAA,EAIR,uBAAuB,QAAyB;AAC/C,WAAO,KAAK,cAAc,MAAM,GAAG,YAAY,iBAAiB,KAAK;AAAA,EAAA;AAAA,EAGtE,0BAA0B,QAAgB,WAAmC;AACrE,WAAA,KAAK,cAAc,MAAM,GAAG,YAAY,QAAQ,SAAS,SAAS,KAAK;AAAA,EAAA;AAAA,EAG/E,iCAAiC,QAAyB;AACzD,WAAO,KAAK,cAAc,MAAM,GAAG,YAAY,2BAA2B,KAAK;AAAA,EAAA;AAEjF;;"}
@@ -1,8 +1,9 @@
1
1
  import { Acl } from "@contember/schema";
2
2
  class Authorizator {
3
- constructor(permissions, defaultCustomPrimary) {
3
+ constructor(permissions, defaultCustomPrimary, allowRefreshMaterializedView) {
4
4
  this.permissions = permissions;
5
5
  this.defaultCustomPrimary = defaultCustomPrimary;
6
+ this.allowRefreshMaterializedView = allowRefreshMaterializedView;
6
7
  }
7
8
  getEntityPermission(operation, entity) {
8
9
  if (!this.permissions[entity]) {
@@ -43,6 +44,9 @@ class Authorizator {
43
44
  isRootOperationDisallowed(entity, operation) {
44
45
  return this.permissions?.[entity]?.operations?.noRoot?.includes(operation) ?? false;
45
46
  }
47
+ isRefreshMaterializedViewAllowed(entity) {
48
+ return this.permissions?.[entity]?.operations?.refreshMaterializedView ?? this.allowRefreshMaterializedView;
49
+ }
46
50
  }
47
51
  export {
48
52
  Authorizator
@@ -1 +1 @@
1
- {"version":3,"file":"Authorizator.js","sources":["../../../../../packages/engine-content-api/src/acl/Authorizator.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\n\nexport type AuthorizationResult = 'yes' | 'no' | 'maybe'\n\nexport class Authorizator {\n\tconstructor(\n\t\tprivate readonly permissions: Acl.Permissions,\n\t\tprivate readonly defaultCustomPrimary: boolean,\n\t) {\n\t}\n\n\tgetEntityPermission(operation: Acl.Operation, entity: string): AuthorizationResult {\n\t\tif (!this.permissions[entity]) {\n\t\t\treturn 'no'\n\t\t}\n\t\tconst entityPermissions: Acl.EntityPermissions = this.permissions[entity]\n\n\t\tif (operation === Acl.Operation.delete) {\n\t\t\treturn this.predicateToResult(entityPermissions.operations.delete)\n\t\t}\n\t\tconst fieldPermissions = entityPermissions.operations[operation]\n\t\tif (!fieldPermissions) {\n\t\t\treturn 'no'\n\t\t}\n\t\treturn Object.values(fieldPermissions).filter(it => !!it).length > 0 ? 'yes' : 'no'\n\t}\n\n\tgetFieldPredicate(operation: Acl.Operation.create | Acl.Operation.read | Acl.Operation.update, entity: string, field: string): Acl.Predicate {\n\t\treturn this.permissions[entity]?.operations[operation]?.[field] ?? false\n\t}\n\n\tgetFieldPermissions(operation: Acl.Operation.create | Acl.Operation.read | Acl.Operation.update, entity: string, field: string): AuthorizationResult {\n\t\tconst fieldPermissions = this.getFieldPredicate(operation, entity, field)\n\t\tif (!fieldPermissions) {\n\t\t\treturn 'no'\n\t\t}\n\t\treturn this.predicateToResult(fieldPermissions)\n\t}\n\n\tprivate predicateToResult(predicate: Acl.Predicate | undefined): AuthorizationResult {\n\t\tif (!predicate) {\n\t\t\treturn 'no'\n\t\t}\n\t\tif (predicate === true) {\n\t\t\treturn 'yes'\n\t\t}\n\t\treturn 'maybe'\n\t}\n\n\n\tisCustomPrimaryAllowed(entity: string): boolean {\n\t\treturn this.permissions?.[entity]?.operations?.customPrimary ?? this.defaultCustomPrimary\n\t}\n\n\tisRootOperationDisallowed(entity: string, operation: Acl.Operation): boolean {\n\t\treturn this.permissions?.[entity]?.operations?.noRoot?.includes(operation) ?? false\n\t}\n}\n"],"names":[],"mappings":";AAKO,MAAM,aAAa;AAAA,EACzB,YACkB,aACA,sBAChB;AAFgB,SAAA,cAAA;AACA,SAAA,uBAAA;AAAA,EAAA;AAAA,EAIlB,oBAAoB,WAA0B,QAAqC;AAClF,QAAI,CAAC,KAAK,YAAY,MAAM,GAAG;AACvB,aAAA;AAAA,IAAA;AAEF,UAAA,oBAA2C,KAAK,YAAY,MAAM;AAEpE,QAAA,cAAc,IAAI,UAAU,QAAQ;AACvC,aAAO,KAAK,kBAAkB,kBAAkB,WAAW,MAAM;AAAA,IAAA;AAE5D,UAAA,mBAAmB,kBAAkB,WAAW,SAAS;AAC/D,QAAI,CAAC,kBAAkB;AACf,aAAA;AAAA,IAAA;AAER,WAAO,OAAO,OAAO,gBAAgB,EAAE,OAAO,CAAA,OAAM,CAAC,CAAC,EAAE,EAAE,SAAS,IAAI,QAAQ;AAAA,EAAA;AAAA,EAGhF,kBAAkB,WAA6E,QAAgB,OAA8B;AACrI,WAAA,KAAK,YAAY,MAAM,GAAG,WAAW,SAAS,IAAI,KAAK,KAAK;AAAA,EAAA;AAAA,EAGpE,oBAAoB,WAA6E,QAAgB,OAAoC;AACpJ,UAAM,mBAAmB,KAAK,kBAAkB,WAAW,QAAQ,KAAK;AACxE,QAAI,CAAC,kBAAkB;AACf,aAAA;AAAA,IAAA;AAED,WAAA,KAAK,kBAAkB,gBAAgB;AAAA,EAAA;AAAA,EAGvC,kBAAkB,WAA2D;AACpF,QAAI,CAAC,WAAW;AACR,aAAA;AAAA,IAAA;AAER,QAAI,cAAc,MAAM;AAChB,aAAA;AAAA,IAAA;AAED,WAAA;AAAA,EAAA;AAAA,EAIR,uBAAuB,QAAyB;AAC/C,WAAO,KAAK,cAAc,MAAM,GAAG,YAAY,iBAAiB,KAAK;AAAA,EAAA;AAAA,EAGtE,0BAA0B,QAAgB,WAAmC;AACrE,WAAA,KAAK,cAAc,MAAM,GAAG,YAAY,QAAQ,SAAS,SAAS,KAAK;AAAA,EAAA;AAEhF;"}
1
+ {"version":3,"file":"Authorizator.js","sources":["../../../../../packages/engine-content-api/src/acl/Authorizator.ts"],"sourcesContent":["import { Acl } from '@contember/schema'\n\n\nexport type AuthorizationResult = 'yes' | 'no' | 'maybe'\n\nexport class Authorizator {\n\tconstructor(\n\t\tprivate readonly permissions: Acl.Permissions,\n\t\tprivate readonly defaultCustomPrimary: boolean,\n\t\tprivate readonly allowRefreshMaterializedView: boolean,\n\t) {\n\t}\n\n\tgetEntityPermission(operation: Acl.Operation, entity: string): AuthorizationResult {\n\t\tif (!this.permissions[entity]) {\n\t\t\treturn 'no'\n\t\t}\n\t\tconst entityPermissions: Acl.EntityPermissions = this.permissions[entity]\n\n\t\tif (operation === Acl.Operation.delete) {\n\t\t\treturn this.predicateToResult(entityPermissions.operations.delete)\n\t\t}\n\t\tconst fieldPermissions = entityPermissions.operations[operation]\n\t\tif (!fieldPermissions) {\n\t\t\treturn 'no'\n\t\t}\n\t\treturn Object.values(fieldPermissions).filter(it => !!it).length > 0 ? 'yes' : 'no'\n\t}\n\n\tgetFieldPredicate(operation: Acl.Operation.create | Acl.Operation.read | Acl.Operation.update, entity: string, field: string): Acl.Predicate {\n\t\treturn this.permissions[entity]?.operations[operation]?.[field] ?? false\n\t}\n\n\tgetFieldPermissions(operation: Acl.Operation.create | Acl.Operation.read | Acl.Operation.update, entity: string, field: string): AuthorizationResult {\n\t\tconst fieldPermissions = this.getFieldPredicate(operation, entity, field)\n\t\tif (!fieldPermissions) {\n\t\t\treturn 'no'\n\t\t}\n\t\treturn this.predicateToResult(fieldPermissions)\n\t}\n\n\tprivate predicateToResult(predicate: Acl.Predicate | undefined): AuthorizationResult {\n\t\tif (!predicate) {\n\t\t\treturn 'no'\n\t\t}\n\t\tif (predicate === true) {\n\t\t\treturn 'yes'\n\t\t}\n\t\treturn 'maybe'\n\t}\n\n\n\tisCustomPrimaryAllowed(entity: string): boolean {\n\t\treturn this.permissions?.[entity]?.operations?.customPrimary ?? this.defaultCustomPrimary\n\t}\n\n\tisRootOperationDisallowed(entity: string, operation: Acl.Operation): boolean {\n\t\treturn this.permissions?.[entity]?.operations?.noRoot?.includes(operation) ?? false\n\t}\n\n\tisRefreshMaterializedViewAllowed(entity: string): boolean {\n\t\treturn this.permissions?.[entity]?.operations?.refreshMaterializedView ?? this.allowRefreshMaterializedView\n\t}\n}\n"],"names":[],"mappings":";AAKO,MAAM,aAAa;AAAA,EACzB,YACkB,aACA,sBACA,8BAChB;AAHgB,SAAA,cAAA;AACA,SAAA,uBAAA;AACA,SAAA,+BAAA;AAAA,EAAA;AAAA,EAIlB,oBAAoB,WAA0B,QAAqC;AAClF,QAAI,CAAC,KAAK,YAAY,MAAM,GAAG;AACvB,aAAA;AAAA,IAAA;AAEF,UAAA,oBAA2C,KAAK,YAAY,MAAM;AAEpE,QAAA,cAAc,IAAI,UAAU,QAAQ;AACvC,aAAO,KAAK,kBAAkB,kBAAkB,WAAW,MAAM;AAAA,IAAA;AAE5D,UAAA,mBAAmB,kBAAkB,WAAW,SAAS;AAC/D,QAAI,CAAC,kBAAkB;AACf,aAAA;AAAA,IAAA;AAER,WAAO,OAAO,OAAO,gBAAgB,EAAE,OAAO,CAAA,OAAM,CAAC,CAAC,EAAE,EAAE,SAAS,IAAI,QAAQ;AAAA,EAAA;AAAA,EAGhF,kBAAkB,WAA6E,QAAgB,OAA8B;AACrI,WAAA,KAAK,YAAY,MAAM,GAAG,WAAW,SAAS,IAAI,KAAK,KAAK;AAAA,EAAA;AAAA,EAGpE,oBAAoB,WAA6E,QAAgB,OAAoC;AACpJ,UAAM,mBAAmB,KAAK,kBAAkB,WAAW,QAAQ,KAAK;AACxE,QAAI,CAAC,kBAAkB;AACf,aAAA;AAAA,IAAA;AAED,WAAA,KAAK,kBAAkB,gBAAgB;AAAA,EAAA;AAAA,EAGvC,kBAAkB,WAA2D;AACpF,QAAI,CAAC,WAAW;AACR,aAAA;AAAA,IAAA;AAER,QAAI,cAAc,MAAM;AAChB,aAAA;AAAA,IAAA;AAED,WAAA;AAAA,EAAA;AAAA,EAIR,uBAAuB,QAAyB;AAC/C,WAAO,KAAK,cAAc,MAAM,GAAG,YAAY,iBAAiB,KAAK;AAAA,EAAA;AAAA,EAGtE,0BAA0B,QAAgB,WAAmC;AACrE,WAAA,KAAK,cAAc,MAAM,GAAG,YAAY,QAAQ,SAAS,SAAS,KAAK;AAAA,EAAA;AAAA,EAG/E,iCAAiC,QAAyB;AACzD,WAAO,KAAK,cAAc,MAAM,GAAG,YAAY,2BAA2B,KAAK;AAAA,EAAA;AAEjF;"}
@@ -29,6 +29,9 @@ class DependencyCollector {
29
29
  const result = [];
30
30
  for (const arg of validator.args) {
31
31
  switch (arg.type) {
32
+ //case Validation.ArgumentType.path:
33
+ // result.push([...prefix, ...arg.path])
34
+ // break
32
35
  case schema.Validation.ArgumentType.validator:
33
36
  result.push(...DependencyCollector.doCollect(arg.validator, prefix));
34
37
  break;