@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.
- package/dist/development/index.cjs +1 -0
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +1 -0
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/ExecutionContainer.cjs +5 -3
- package/dist/development/src/ExecutionContainer.cjs.map +1 -1
- package/dist/development/src/ExecutionContainer.js +5 -3
- package/dist/development/src/ExecutionContainer.js.map +1 -1
- package/dist/development/src/acl/Authorizator.cjs +5 -1
- package/dist/development/src/acl/Authorizator.cjs.map +1 -1
- package/dist/development/src/acl/Authorizator.js +5 -1
- package/dist/development/src/acl/Authorizator.js.map +1 -1
- package/dist/development/src/input-validation/dependencies/DependencyCollector.cjs +3 -0
- package/dist/development/src/input-validation/dependencies/DependencyCollector.cjs.map +1 -1
- package/dist/development/src/input-validation/dependencies/DependencyCollector.js +3 -0
- package/dist/development/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
- package/dist/development/src/mapper/Mapper.cjs +1 -0
- package/dist/development/src/mapper/Mapper.cjs.map +1 -1
- package/dist/development/src/mapper/Mapper.js +1 -0
- package/dist/development/src/mapper/Mapper.js.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs +30 -3
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.js +30 -3
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.cjs +6 -2
- package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.cjs.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.js +6 -2
- package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
- package/dist/development/src/resolvers/MutationResolver.cjs +1 -0
- package/dist/development/src/resolvers/MutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/MutationResolver.js +1 -0
- package/dist/development/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/RefreshViewResolver.cjs +20 -0
- package/dist/development/src/resolvers/RefreshViewResolver.cjs.map +1 -0
- package/dist/development/src/resolvers/RefreshViewResolver.js +20 -0
- package/dist/development/src/resolvers/RefreshViewResolver.js.map +1 -0
- package/dist/development/src/schema/GraphQlSchemaBuilder.cjs +6 -1
- package/dist/development/src/schema/GraphQlSchemaBuilder.cjs.map +1 -1
- package/dist/development/src/schema/GraphQlSchemaBuilder.js +6 -1
- package/dist/development/src/schema/GraphQlSchemaBuilder.js.map +1 -1
- package/dist/development/src/schema/GraphQlSchemaBuilderFactory.cjs +2 -1
- package/dist/development/src/schema/GraphQlSchemaBuilderFactory.cjs.map +1 -1
- package/dist/development/src/schema/GraphQlSchemaBuilderFactory.js +2 -1
- package/dist/development/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
- package/dist/development/src/schema/RefreshViewMutationProvider.cjs +35 -0
- package/dist/development/src/schema/RefreshViewMutationProvider.cjs.map +1 -0
- package/dist/development/src/schema/RefreshViewMutationProvider.js +35 -0
- package/dist/development/src/schema/RefreshViewMutationProvider.js.map +1 -0
- package/dist/development/src/utils/viewComputedId.cjs +16 -0
- package/dist/development/src/utils/viewComputedId.cjs.map +1 -0
- package/dist/development/src/utils/viewComputedId.js +16 -0
- package/dist/development/src/utils/viewComputedId.js.map +1 -0
- package/dist/production/index.cjs +1 -0
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +1 -0
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/ExecutionContainer.cjs +5 -3
- package/dist/production/src/ExecutionContainer.cjs.map +1 -1
- package/dist/production/src/ExecutionContainer.js +5 -3
- package/dist/production/src/ExecutionContainer.js.map +1 -1
- package/dist/production/src/acl/Authorizator.cjs +5 -1
- package/dist/production/src/acl/Authorizator.cjs.map +1 -1
- package/dist/production/src/acl/Authorizator.js +5 -1
- package/dist/production/src/acl/Authorizator.js.map +1 -1
- package/dist/production/src/input-validation/dependencies/DependencyCollector.cjs +3 -0
- package/dist/production/src/input-validation/dependencies/DependencyCollector.cjs.map +1 -1
- package/dist/production/src/input-validation/dependencies/DependencyCollector.js +3 -0
- package/dist/production/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
- package/dist/production/src/mapper/Mapper.cjs +1 -0
- package/dist/production/src/mapper/Mapper.cjs.map +1 -1
- package/dist/production/src/mapper/Mapper.js +1 -0
- package/dist/production/src/mapper/Mapper.js.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs +30 -3
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.js +30 -3
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.cjs +6 -2
- package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.cjs.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.js +6 -2
- package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
- package/dist/production/src/resolvers/MutationResolver.cjs +1 -0
- package/dist/production/src/resolvers/MutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/MutationResolver.js +1 -0
- package/dist/production/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/RefreshViewResolver.cjs +20 -0
- package/dist/production/src/resolvers/RefreshViewResolver.cjs.map +1 -0
- package/dist/production/src/resolvers/RefreshViewResolver.js +20 -0
- package/dist/production/src/resolvers/RefreshViewResolver.js.map +1 -0
- package/dist/production/src/schema/GraphQlSchemaBuilder.cjs +6 -1
- package/dist/production/src/schema/GraphQlSchemaBuilder.cjs.map +1 -1
- package/dist/production/src/schema/GraphQlSchemaBuilder.js +6 -1
- package/dist/production/src/schema/GraphQlSchemaBuilder.js.map +1 -1
- package/dist/production/src/schema/GraphQlSchemaBuilderFactory.cjs +2 -1
- package/dist/production/src/schema/GraphQlSchemaBuilderFactory.cjs.map +1 -1
- package/dist/production/src/schema/GraphQlSchemaBuilderFactory.js +2 -1
- package/dist/production/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
- package/dist/production/src/schema/RefreshViewMutationProvider.cjs +35 -0
- package/dist/production/src/schema/RefreshViewMutationProvider.cjs.map +1 -0
- package/dist/production/src/schema/RefreshViewMutationProvider.js +35 -0
- package/dist/production/src/schema/RefreshViewMutationProvider.js.map +1 -0
- package/dist/production/src/utils/viewComputedId.cjs +16 -0
- package/dist/production/src/utils/viewComputedId.cjs.map +1 -0
- package/dist/production/src/utils/viewComputedId.js +16 -0
- package/dist/production/src/utils/viewComputedId.js.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/validation/utils.d.ts.map +1 -1
- package/dist/tests/src/tags.d.ts.map +1 -1
- package/dist/tests/src/test.d.ts.map +1 -1
- package/dist/tests/src/testGraphql.d.ts.map +1 -1
- package/dist/tests/src/testUuid.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/ExecutionContainer.d.ts +8 -2
- package/dist/types/ExecutionContainer.d.ts.map +1 -1
- package/dist/types/acl/Authorizator.d.ts +3 -1
- package/dist/types/acl/Authorizator.d.ts.map +1 -1
- package/dist/types/acl/VariableUtils.d.ts.map +1 -1
- package/dist/types/input-validation/ValidationContext.d.ts.map +1 -1
- package/dist/types/input-validation/ValidationEvaluation.d.ts.map +1 -1
- package/dist/types/input-validation/ValidationPath.d.ts.map +1 -1
- package/dist/types/introspection/introspection.schema.d.ts.map +1 -1
- package/dist/types/mapper/ColumnValue.d.ts.map +1 -1
- package/dist/types/mapper/ErrorUtils.d.ts.map +1 -1
- package/dist/types/mapper/EventManager.d.ts.map +1 -1
- package/dist/types/mapper/MutationProcessorHelper.d.ts.map +1 -1
- package/dist/types/mapper/Result.d.ts.map +1 -1
- package/dist/types/mapper/delete/helpers.d.ts.map +1 -1
- package/dist/types/mapper/select/handlers/FieldsVisitor.d.ts +4 -1
- package/dist/types/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
- package/dist/types/mapper/select/handlers/FieldsVisitorFactory.d.ts +5 -2
- package/dist/types/mapper/select/handlers/FieldsVisitorFactory.d.ts.map +1 -1
- package/dist/types/mapper/select/optimizer/WhereReplacer.d.ts.map +1 -1
- package/dist/types/mapper/select/optimizer/helpers.d.ts.map +1 -1
- package/dist/types/resolvers/ReadHelpers.d.ts.map +1 -1
- package/dist/types/resolvers/RefreshViewResolver.d.ts +11 -0
- package/dist/types/resolvers/RefreshViewResolver.d.ts.map +1 -0
- package/dist/types/schema/GraphQlSchemaBuilder.d.ts +3 -1
- package/dist/types/schema/GraphQlSchemaBuilder.d.ts.map +1 -1
- package/dist/types/schema/GraphQlSchemaBuilderFactory.d.ts +3 -0
- package/dist/types/schema/GraphQlSchemaBuilderFactory.d.ts.map +1 -1
- package/dist/types/schema/OperationExtension.d.ts.map +1 -1
- package/dist/types/schema/RefreshViewMutationProvider.d.ts +11 -0
- package/dist/types/schema/RefreshViewMutationProvider.d.ts.map +1 -0
- package/dist/types/schema/utils.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/utils/isIt.d.ts.map +1 -1
- package/dist/types/utils/paginationUtils.d.ts.map +1 -1
- package/dist/types/utils/promises.d.ts.map +1 -1
- package/dist/types/utils/singletonFactory.d.ts.map +1 -1
- package/dist/types/utils/strings.d.ts.map +1 -1
- package/dist/types/utils/tuple.d.ts.map +1 -1
- package/dist/types/utils/uniqueWhereFields.d.ts.map +1 -1
- package/dist/types/utils/viewComputedId.d.ts +2 -0
- package/dist/types/utils/viewComputedId.d.ts.map +1 -0
- package/package.json +11 -11
- package/src/ExecutionContainer.ts +8 -4
- package/src/acl/Authorizator.ts +5 -0
- package/src/mapper/select/handlers/FieldsVisitor.ts +33 -1
- package/src/mapper/select/handlers/FieldsVisitorFactory.ts +6 -1
- package/src/resolvers/RefreshViewResolver.ts +23 -0
- package/src/schema/GraphQlSchemaBuilder.ts +8 -0
- package/src/schema/GraphQlSchemaBuilderFactory.ts +5 -2
- package/src/schema/RefreshViewMutationProvider.ts +40 -0
- package/src/utils/viewComputedId.ts +23 -0
- package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +1 -1
- 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/production/index.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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;
|