@contember/engine-content-api 2.1.0-alpha.9 → 2.1.0-beta.2
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/CLAUDE.md +54 -0
- package/dist/development/index.cjs +1 -2
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +2 -3
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/ExecutionContainer.cjs +120 -31
- package/dist/development/src/ExecutionContainer.cjs.map +1 -1
- package/dist/development/src/ExecutionContainer.js +121 -32
- package/dist/development/src/ExecutionContainer.js.map +1 -1
- package/dist/development/src/acl/Authorizator.cjs.map +1 -1
- package/dist/development/src/acl/Authorizator.js.map +1 -1
- package/dist/development/src/acl/EvaluatedPredicateReplacer.cjs.map +1 -1
- package/dist/development/src/acl/EvaluatedPredicateReplacer.js.map +1 -1
- package/dist/development/src/acl/PermissionFactory.cjs +29 -15
- package/dist/development/src/acl/PermissionFactory.cjs.map +1 -1
- package/dist/development/src/acl/PermissionFactory.js +29 -15
- package/dist/development/src/acl/PermissionFactory.js.map +1 -1
- package/dist/development/src/acl/PredicateFactory.cjs +33 -13
- package/dist/development/src/acl/PredicateFactory.cjs.map +1 -1
- package/dist/development/src/acl/PredicateFactory.js +33 -13
- package/dist/development/src/acl/PredicateFactory.js.map +1 -1
- package/dist/development/src/acl/PredicatesInjector.cjs +105 -13
- package/dist/development/src/acl/PredicatesInjector.cjs.map +1 -1
- package/dist/development/src/acl/PredicatesInjector.js +105 -13
- package/dist/development/src/acl/PredicatesInjector.js.map +1 -1
- package/dist/development/src/acl/VariableInjector.cjs.map +1 -1
- package/dist/development/src/acl/VariableInjector.js.map +1 -1
- package/dist/development/src/acl/VariableUtils.cjs.map +1 -1
- package/dist/development/src/acl/VariableUtils.js.map +1 -1
- package/dist/development/src/exception.cjs.map +1 -1
- package/dist/development/src/exception.js.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.cjs.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.js.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.cjs.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs +4 -4
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs.map +1 -1
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +4 -4
- package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.cjs.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.cjs.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.cjs.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.js.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.cjs.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.cjs.map +1 -1
- package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js.map +1 -1
- package/dist/development/src/input-validation/ColumnValueResolver.cjs.map +1 -1
- package/dist/development/src/input-validation/ColumnValueResolver.js.map +1 -1
- package/dist/development/src/input-validation/EntityRulesResolver.cjs.map +1 -1
- package/dist/development/src/input-validation/EntityRulesResolver.js.map +1 -1
- package/dist/development/src/input-validation/QueryAstFactory.cjs.map +1 -1
- package/dist/development/src/input-validation/QueryAstFactory.js.map +1 -1
- package/dist/development/src/input-validation/ValidationContext.cjs.map +1 -1
- package/dist/development/src/input-validation/ValidationContext.js.map +1 -1
- package/dist/development/src/input-validation/ValidationDataSelector.cjs.map +1 -1
- package/dist/development/src/input-validation/ValidationDataSelector.js.map +1 -1
- package/dist/development/src/input-validation/ValidationEvaluation.cjs.map +1 -1
- package/dist/development/src/input-validation/ValidationEvaluation.js.map +1 -1
- package/dist/development/src/input-validation/ValidationPath.cjs.map +1 -1
- package/dist/development/src/input-validation/ValidationPath.js.map +1 -1
- package/dist/development/src/input-validation/dependencies/DependencyCollector.cjs +3 -3
- package/dist/development/src/input-validation/dependencies/DependencyCollector.cjs.map +1 -1
- package/dist/development/src/input-validation/dependencies/DependencyCollector.js +3 -3
- package/dist/development/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
- package/dist/development/src/input-validation/dependencies/DependencyMerger.cjs.map +1 -1
- package/dist/development/src/input-validation/dependencies/DependencyMerger.js.map +1 -1
- package/dist/development/src/input-validation/preValidation/CreateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/development/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs +2 -4
- package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
- package/dist/development/src/input-validation/preValidation/InputPreValidator.js +2 -4
- package/dist/development/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
- package/dist/development/src/input-validation/preValidation/UpdateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/development/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
- package/dist/development/src/inputProcessing/CreateInputVisitor.cjs +6 -4
- package/dist/development/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
- package/dist/development/src/inputProcessing/CreateInputVisitor.js +6 -4
- package/dist/development/src/inputProcessing/CreateInputVisitor.js.map +1 -1
- package/dist/development/src/inputProcessing/FieldNode.cjs.map +1 -1
- package/dist/development/src/inputProcessing/FieldNode.js.map +1 -1
- package/dist/development/src/inputProcessing/ObjectNode.cjs.map +1 -1
- package/dist/development/src/inputProcessing/ObjectNode.js.map +1 -1
- package/dist/development/src/inputProcessing/UniqueWhereExpander.cjs.map +1 -1
- package/dist/development/src/inputProcessing/UniqueWhereExpander.js.map +1 -1
- package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs +7 -5
- package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
- package/dist/development/src/inputProcessing/UpdateInputVisitor.js +7 -5
- package/dist/development/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
- package/dist/development/src/introspection/IntrospectionSchemaDefinitionFactory.cjs.map +1 -1
- package/dist/development/src/introspection/IntrospectionSchemaDefinitionFactory.js.map +1 -1
- package/dist/development/src/introspection/IntrospectionSchemaFactory.cjs.map +1 -1
- package/dist/development/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
- package/dist/development/src/introspection/content-schema.types.cjs.map +1 -1
- package/dist/development/src/introspection/content-schema.types.js.map +1 -1
- package/dist/development/src/introspection/introspection.schema.cjs.map +1 -1
- package/dist/development/src/introspection/introspection.schema.js.map +1 -1
- package/dist/development/src/mapper/CheckedPrimary.cjs.map +1 -1
- package/dist/development/src/mapper/CheckedPrimary.js.map +1 -1
- package/dist/development/src/mapper/ColumnValue.cjs.map +1 -1
- package/dist/development/src/mapper/ColumnValue.js.map +1 -1
- package/dist/development/src/mapper/ErrorUtils.cjs.map +1 -1
- package/dist/development/src/mapper/ErrorUtils.js +1 -1
- package/dist/development/src/mapper/ErrorUtils.js.map +1 -1
- package/dist/development/src/mapper/EventManager.cjs.map +1 -1
- package/dist/development/src/mapper/EventManager.js.map +1 -1
- package/dist/development/src/mapper/JunctionTableManager.cjs +16 -2
- package/dist/development/src/mapper/JunctionTableManager.cjs.map +1 -1
- package/dist/development/src/mapper/JunctionTableManager.js +17 -3
- package/dist/development/src/mapper/JunctionTableManager.js.map +1 -1
- package/dist/development/src/mapper/Mapper.cjs +8 -7
- package/dist/development/src/mapper/Mapper.cjs.map +1 -1
- package/dist/development/src/mapper/Mapper.js +8 -7
- package/dist/development/src/mapper/Mapper.js.map +1 -1
- package/dist/development/src/mapper/MapperFactory.cjs.map +1 -1
- package/dist/development/src/mapper/MapperFactory.js.map +1 -1
- package/dist/development/src/mapper/MutationProcessorHelper.cjs.map +1 -1
- package/dist/development/src/mapper/MutationProcessorHelper.js.map +1 -1
- package/dist/development/src/mapper/Result.cjs +1 -1
- package/dist/development/src/mapper/Result.cjs.map +1 -1
- package/dist/development/src/mapper/Result.js +1 -1
- package/dist/development/src/mapper/Result.js.map +1 -1
- package/dist/development/src/mapper/delete/DeleteExecutor.cjs.map +1 -1
- package/dist/development/src/mapper/delete/DeleteExecutor.js.map +1 -1
- package/dist/development/src/mapper/delete/DeleteState.cjs.map +1 -1
- package/dist/development/src/mapper/delete/DeleteState.js.map +1 -1
- package/dist/development/src/mapper/delete/DeletedEntitiesStorage.cjs.map +1 -1
- package/dist/development/src/mapper/delete/DeletedEntitiesStorage.js.map +1 -1
- package/dist/development/src/mapper/delete/helpers.cjs.map +1 -1
- package/dist/development/src/mapper/delete/helpers.js.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilder.cjs +27 -31
- package/dist/development/src/mapper/insert/InsertBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilder.js +27 -31
- package/dist/development/src/mapper/insert/InsertBuilder.js.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilderFactory.cjs.map +1 -1
- package/dist/development/src/mapper/insert/InsertBuilderFactory.js.map +1 -1
- package/dist/development/src/mapper/insert/Inserter.cjs.map +1 -1
- package/dist/development/src/mapper/insert/Inserter.js.map +1 -1
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/select/ConditionBuilder.cjs +7 -5
- package/dist/development/src/mapper/select/ConditionBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/select/ConditionBuilder.js +8 -6
- package/dist/development/src/mapper/select/ConditionBuilder.js.map +1 -1
- package/dist/development/src/mapper/select/JoinBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/select/JoinBuilder.js.map +1 -1
- package/dist/development/src/mapper/select/JoinVisitor.cjs.map +1 -1
- package/dist/development/src/mapper/select/JoinVisitor.js.map +1 -1
- package/dist/development/src/mapper/select/OrderByBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/select/OrderByBuilder.js.map +1 -1
- package/dist/development/src/mapper/select/OrderByHelper.cjs.map +1 -1
- package/dist/development/src/mapper/select/OrderByHelper.js.map +1 -1
- package/dist/development/src/mapper/select/Path.cjs.map +1 -1
- package/dist/development/src/mapper/select/Path.js.map +1 -1
- package/dist/development/src/mapper/select/RelationFetcher.cjs.map +1 -1
- package/dist/development/src/mapper/select/RelationFetcher.js.map +1 -1
- package/dist/development/src/mapper/select/SelectBuilder.cjs +7 -10
- package/dist/development/src/mapper/select/SelectBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/select/SelectBuilder.js +7 -10
- package/dist/development/src/mapper/select/SelectBuilder.js.map +1 -1
- package/dist/development/src/mapper/select/SelectHydrator.cjs +1 -1
- package/dist/development/src/mapper/select/SelectHydrator.cjs.map +1 -1
- package/dist/development/src/mapper/select/SelectHydrator.js +1 -1
- package/dist/development/src/mapper/select/SelectHydrator.js.map +1 -1
- package/dist/development/src/mapper/select/WhereBuilder.cjs +20 -18
- package/dist/development/src/mapper/select/WhereBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/select/WhereBuilder.js +20 -18
- package/dist/development/src/mapper/select/WhereBuilder.js.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs +3 -2
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.js +3 -2
- package/dist/development/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.cjs.map +1 -1
- package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
- package/dist/development/src/mapper/select/handlers/MetaHandler.cjs.map +1 -1
- package/dist/development/src/mapper/select/handlers/MetaHandler.js.map +1 -1
- package/dist/development/src/mapper/select/optimizer/ConditionOptimizer.cjs.map +1 -1
- package/dist/development/src/mapper/select/optimizer/ConditionOptimizer.js.map +1 -1
- package/dist/development/src/mapper/select/optimizer/WhereOptimizer.cjs +7 -3
- package/dist/development/src/mapper/select/optimizer/WhereOptimizer.cjs.map +1 -1
- package/dist/development/src/mapper/select/optimizer/WhereOptimizer.js +7 -3
- package/dist/development/src/mapper/select/optimizer/WhereOptimizer.js.map +1 -1
- package/dist/development/src/mapper/select/optimizer/WhereReplacer.cjs.map +1 -1
- package/dist/development/src/mapper/select/optimizer/WhereReplacer.js.map +1 -1
- package/dist/development/src/mapper/select/optimizer/helpers.cjs.map +1 -1
- package/dist/development/src/mapper/select/optimizer/helpers.js.map +1 -1
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilder.cjs +64 -68
- package/dist/development/src/mapper/update/UpdateBuilder.cjs.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilder.js +64 -68
- package/dist/development/src/mapper/update/UpdateBuilder.js.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilderFactory.cjs.map +1 -1
- package/dist/development/src/mapper/update/UpdateBuilderFactory.js.map +1 -1
- package/dist/development/src/mapper/update/Updater.cjs +15 -3
- package/dist/development/src/mapper/update/Updater.cjs.map +1 -1
- package/dist/development/src/mapper/update/Updater.js +16 -4
- package/dist/development/src/mapper/update/Updater.js.map +1 -1
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -1
- package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -1
- package/dist/development/src/resolvers/GraphQlQueryAstFactory.cjs.map +1 -1
- package/dist/development/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
- package/dist/development/src/resolvers/MutationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/development/src/resolvers/ReadHelpers.cjs.map +1 -1
- package/dist/development/src/resolvers/ReadHelpers.js.map +1 -1
- package/dist/development/src/resolvers/ReadResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/ReadResolver.js.map +1 -1
- package/dist/development/src/resolvers/RefreshViewResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/RefreshViewResolver.js.map +1 -1
- package/dist/development/src/resolvers/ValidationResolver.cjs.map +1 -1
- package/dist/development/src/resolvers/ValidationResolver.js.map +1 -1
- package/dist/development/src/schema/ColumnTypeResolver.cjs.map +1 -1
- package/dist/development/src/schema/ColumnTypeResolver.js.map +1 -1
- package/dist/development/src/schema/ConditionTypeProvider.cjs +2 -0
- package/dist/development/src/schema/ConditionTypeProvider.cjs.map +1 -1
- package/dist/development/src/schema/ConditionTypeProvider.js +3 -1
- package/dist/development/src/schema/ConditionTypeProvider.js.map +1 -1
- package/dist/development/src/schema/CustomTypesProvider.cjs.map +1 -1
- package/dist/development/src/schema/CustomTypesProvider.js.map +1 -1
- package/dist/development/src/schema/EntityTypeProvider.cjs +1 -3
- package/dist/development/src/schema/EntityTypeProvider.cjs.map +1 -1
- package/dist/development/src/schema/EntityTypeProvider.js +1 -3
- package/dist/development/src/schema/EntityTypeProvider.js.map +1 -1
- package/dist/development/src/schema/EnumsProvider.cjs.map +1 -1
- package/dist/development/src/schema/EnumsProvider.js.map +1 -1
- package/dist/development/src/schema/FieldAccessVisitor.cjs.map +1 -1
- package/dist/development/src/schema/FieldAccessVisitor.js.map +1 -1
- package/dist/development/src/schema/GraphQlSchemaBuilder.cjs +5 -11
- package/dist/development/src/schema/GraphQlSchemaBuilder.cjs.map +1 -1
- package/dist/development/src/schema/GraphQlSchemaBuilder.js +5 -11
- package/dist/development/src/schema/GraphQlSchemaBuilder.js.map +1 -1
- package/dist/development/src/schema/GraphQlSchemaBuilderFactory.cjs +103 -3
- package/dist/development/src/schema/GraphQlSchemaBuilderFactory.cjs.map +1 -1
- package/dist/development/src/schema/GraphQlSchemaBuilderFactory.js +103 -3
- package/dist/development/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
- package/dist/development/src/schema/MutationProvider.cjs.map +1 -1
- package/dist/development/src/schema/MutationProvider.js +2 -2
- package/dist/development/src/schema/MutationProvider.js.map +1 -1
- package/dist/development/src/schema/OperationExtension.cjs +0 -1
- package/dist/development/src/schema/OperationExtension.cjs.map +1 -1
- package/dist/development/src/schema/OperationExtension.js +0 -1
- package/dist/development/src/schema/OperationExtension.js.map +1 -1
- package/dist/development/src/schema/OrderByTypeProvider.cjs.map +1 -1
- package/dist/development/src/schema/OrderByTypeProvider.js +1 -1
- package/dist/development/src/schema/OrderByTypeProvider.js.map +1 -1
- package/dist/development/src/schema/PaginatedFieldConfigFactory.cjs.map +1 -1
- package/dist/development/src/schema/PaginatedFieldConfigFactory.js +1 -1
- package/dist/development/src/schema/PaginatedFieldConfigFactory.js.map +1 -1
- package/dist/development/src/schema/QueryProvider.cjs.map +1 -1
- package/dist/development/src/schema/QueryProvider.js +2 -2
- package/dist/development/src/schema/QueryProvider.js.map +1 -1
- package/dist/development/src/schema/RefreshViewMutationProvider.cjs.map +1 -1
- package/dist/development/src/schema/RefreshViewMutationProvider.js.map +1 -1
- package/dist/development/src/schema/ResultSchemaTypeProvider.cjs.map +1 -1
- package/dist/development/src/schema/ResultSchemaTypeProvider.js.map +1 -1
- package/dist/development/src/schema/ValidationQueriesProvider.cjs +2 -8
- package/dist/development/src/schema/ValidationQueriesProvider.cjs.map +1 -1
- package/dist/development/src/schema/ValidationQueriesProvider.js +2 -8
- package/dist/development/src/schema/ValidationQueriesProvider.js.map +1 -1
- package/dist/development/src/schema/WhereTypeProvider.cjs +1 -3
- package/dist/development/src/schema/WhereTypeProvider.cjs.map +1 -1
- package/dist/development/src/schema/WhereTypeProvider.js +1 -3
- package/dist/development/src/schema/WhereTypeProvider.js.map +1 -1
- package/dist/development/src/schema/entities/FieldArgsVisitor.cjs.map +1 -1
- package/dist/development/src/schema/entities/FieldArgsVisitor.js.map +1 -1
- package/dist/development/src/schema/entities/FieldTypeVisitor.cjs.map +1 -1
- package/dist/development/src/schema/entities/FieldTypeVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/ConnectOrCreateRelationInputProvider.cjs.map +1 -1
- package/dist/development/src/schema/mutations/ConnectOrCreateRelationInputProvider.js.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityInputFieldVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationInputFieldVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationInputProvider.cjs.map +1 -1
- package/dist/development/src/schema/mutations/CreateEntityRelationInputProvider.js.map +1 -1
- package/dist/development/src/schema/mutations/EntityInputProvider.cjs.map +1 -1
- package/dist/development/src/schema/mutations/EntityInputProvider.js.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityInputFieldVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.cjs.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationInputProvider.cjs.map +1 -1
- package/dist/development/src/schema/mutations/UpdateEntityRelationInputProvider.js.map +1 -1
- package/dist/development/src/schema/utils.cjs.map +1 -1
- package/dist/development/src/schema/utils.js.map +1 -1
- package/dist/development/src/utils/Mutex.cjs.map +1 -1
- package/dist/development/src/utils/Mutex.js.map +1 -1
- package/dist/development/src/utils/ResolveInfoUtils.cjs.map +1 -1
- package/dist/development/src/utils/ResolveInfoUtils.js.map +1 -1
- package/dist/development/src/utils/accessor.cjs.map +1 -1
- package/dist/development/src/utils/accessor.js.map +1 -1
- package/dist/development/src/utils/assertNever.cjs.map +1 -1
- package/dist/development/src/utils/assertNever.js.map +1 -1
- package/dist/development/src/utils/isIt.cjs.map +1 -1
- package/dist/development/src/utils/isIt.js.map +1 -1
- package/dist/development/src/utils/object.cjs.map +1 -1
- package/dist/development/src/utils/object.js.map +1 -1
- package/dist/development/src/utils/paginationUtils.cjs.map +1 -1
- package/dist/development/src/utils/paginationUtils.js.map +1 -1
- package/dist/development/src/utils/promises.cjs.map +1 -1
- package/dist/development/src/utils/promises.js.map +1 -1
- package/dist/development/src/utils/singletonFactory.cjs.map +1 -1
- package/dist/development/src/utils/singletonFactory.js.map +1 -1
- package/dist/development/src/utils/strings.cjs.map +1 -1
- package/dist/development/src/utils/strings.js.map +1 -1
- package/dist/development/src/utils/tuple.cjs.map +1 -1
- package/dist/development/src/utils/tuple.js.map +1 -1
- package/dist/development/src/utils/uniqueWhereFields.cjs.map +1 -1
- package/dist/development/src/utils/uniqueWhereFields.js.map +1 -1
- package/dist/development/src/utils/viewComputedId.cjs.map +1 -1
- package/dist/development/src/utils/viewComputedId.js.map +1 -1
- package/dist/production/index.cjs +1 -2
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +2 -3
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/ExecutionContainer.cjs +120 -31
- package/dist/production/src/ExecutionContainer.cjs.map +1 -1
- package/dist/production/src/ExecutionContainer.js +121 -32
- package/dist/production/src/ExecutionContainer.js.map +1 -1
- package/dist/production/src/acl/Authorizator.cjs.map +1 -1
- package/dist/production/src/acl/Authorizator.js.map +1 -1
- package/dist/production/src/acl/EvaluatedPredicateReplacer.cjs.map +1 -1
- package/dist/production/src/acl/EvaluatedPredicateReplacer.js.map +1 -1
- package/dist/production/src/acl/PermissionFactory.cjs +29 -15
- package/dist/production/src/acl/PermissionFactory.cjs.map +1 -1
- package/dist/production/src/acl/PermissionFactory.js +29 -15
- package/dist/production/src/acl/PermissionFactory.js.map +1 -1
- package/dist/production/src/acl/PredicateFactory.cjs +33 -13
- package/dist/production/src/acl/PredicateFactory.cjs.map +1 -1
- package/dist/production/src/acl/PredicateFactory.js +33 -13
- package/dist/production/src/acl/PredicateFactory.js.map +1 -1
- package/dist/production/src/acl/PredicatesInjector.cjs +105 -13
- package/dist/production/src/acl/PredicatesInjector.cjs.map +1 -1
- package/dist/production/src/acl/PredicatesInjector.js +105 -13
- package/dist/production/src/acl/PredicatesInjector.js.map +1 -1
- package/dist/production/src/acl/VariableInjector.cjs.map +1 -1
- package/dist/production/src/acl/VariableInjector.js.map +1 -1
- package/dist/production/src/acl/VariableUtils.cjs.map +1 -1
- package/dist/production/src/acl/VariableUtils.js.map +1 -1
- package/dist/production/src/exception.cjs.map +1 -1
- package/dist/production/src/exception.js.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.cjs.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.js.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.cjs.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs +4 -4
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs.map +1 -1
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js +4 -4
- package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.cjs.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.cjs.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.cjs.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.js.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.cjs.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.cjs.map +1 -1
- package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js.map +1 -1
- package/dist/production/src/input-validation/ColumnValueResolver.cjs.map +1 -1
- package/dist/production/src/input-validation/ColumnValueResolver.js.map +1 -1
- package/dist/production/src/input-validation/EntityRulesResolver.cjs.map +1 -1
- package/dist/production/src/input-validation/EntityRulesResolver.js.map +1 -1
- package/dist/production/src/input-validation/QueryAstFactory.cjs.map +1 -1
- package/dist/production/src/input-validation/QueryAstFactory.js.map +1 -1
- package/dist/production/src/input-validation/ValidationContext.cjs.map +1 -1
- package/dist/production/src/input-validation/ValidationContext.js.map +1 -1
- package/dist/production/src/input-validation/ValidationDataSelector.cjs.map +1 -1
- package/dist/production/src/input-validation/ValidationDataSelector.js.map +1 -1
- package/dist/production/src/input-validation/ValidationEvaluation.cjs.map +1 -1
- package/dist/production/src/input-validation/ValidationEvaluation.js.map +1 -1
- package/dist/production/src/input-validation/ValidationPath.cjs.map +1 -1
- package/dist/production/src/input-validation/ValidationPath.js.map +1 -1
- package/dist/production/src/input-validation/dependencies/DependencyCollector.cjs +3 -3
- package/dist/production/src/input-validation/dependencies/DependencyCollector.cjs.map +1 -1
- package/dist/production/src/input-validation/dependencies/DependencyCollector.js +3 -3
- package/dist/production/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
- package/dist/production/src/input-validation/dependencies/DependencyMerger.cjs.map +1 -1
- package/dist/production/src/input-validation/dependencies/DependencyMerger.js.map +1 -1
- package/dist/production/src/input-validation/preValidation/CreateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/production/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs +2 -4
- package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
- package/dist/production/src/input-validation/preValidation/InputPreValidator.js +2 -4
- package/dist/production/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
- package/dist/production/src/input-validation/preValidation/UpdateInputPreValidationProcessor.cjs.map +1 -1
- package/dist/production/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
- package/dist/production/src/inputProcessing/CreateInputVisitor.cjs +6 -4
- package/dist/production/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
- package/dist/production/src/inputProcessing/CreateInputVisitor.js +6 -4
- package/dist/production/src/inputProcessing/CreateInputVisitor.js.map +1 -1
- package/dist/production/src/inputProcessing/FieldNode.cjs.map +1 -1
- package/dist/production/src/inputProcessing/FieldNode.js.map +1 -1
- package/dist/production/src/inputProcessing/ObjectNode.cjs.map +1 -1
- package/dist/production/src/inputProcessing/ObjectNode.js.map +1 -1
- package/dist/production/src/inputProcessing/UniqueWhereExpander.cjs.map +1 -1
- package/dist/production/src/inputProcessing/UniqueWhereExpander.js.map +1 -1
- package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs +7 -5
- package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
- package/dist/production/src/inputProcessing/UpdateInputVisitor.js +7 -5
- package/dist/production/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
- package/dist/production/src/introspection/IntrospectionSchemaDefinitionFactory.cjs.map +1 -1
- package/dist/production/src/introspection/IntrospectionSchemaDefinitionFactory.js.map +1 -1
- package/dist/production/src/introspection/IntrospectionSchemaFactory.cjs.map +1 -1
- package/dist/production/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
- package/dist/production/src/introspection/content-schema.types.cjs.map +1 -1
- package/dist/production/src/introspection/content-schema.types.js.map +1 -1
- package/dist/production/src/introspection/introspection.schema.cjs.map +1 -1
- package/dist/production/src/introspection/introspection.schema.js.map +1 -1
- package/dist/production/src/mapper/CheckedPrimary.cjs.map +1 -1
- package/dist/production/src/mapper/CheckedPrimary.js.map +1 -1
- package/dist/production/src/mapper/ColumnValue.cjs.map +1 -1
- package/dist/production/src/mapper/ColumnValue.js.map +1 -1
- package/dist/production/src/mapper/ErrorUtils.cjs.map +1 -1
- package/dist/production/src/mapper/ErrorUtils.js +1 -1
- package/dist/production/src/mapper/ErrorUtils.js.map +1 -1
- package/dist/production/src/mapper/EventManager.cjs.map +1 -1
- package/dist/production/src/mapper/EventManager.js.map +1 -1
- package/dist/production/src/mapper/JunctionTableManager.cjs +16 -2
- package/dist/production/src/mapper/JunctionTableManager.cjs.map +1 -1
- package/dist/production/src/mapper/JunctionTableManager.js +17 -3
- package/dist/production/src/mapper/JunctionTableManager.js.map +1 -1
- package/dist/production/src/mapper/Mapper.cjs +8 -7
- package/dist/production/src/mapper/Mapper.cjs.map +1 -1
- package/dist/production/src/mapper/Mapper.js +8 -7
- package/dist/production/src/mapper/Mapper.js.map +1 -1
- package/dist/production/src/mapper/MapperFactory.cjs.map +1 -1
- package/dist/production/src/mapper/MapperFactory.js.map +1 -1
- package/dist/production/src/mapper/MutationProcessorHelper.cjs.map +1 -1
- package/dist/production/src/mapper/MutationProcessorHelper.js.map +1 -1
- package/dist/production/src/mapper/Result.cjs +1 -1
- package/dist/production/src/mapper/Result.cjs.map +1 -1
- package/dist/production/src/mapper/Result.js +1 -1
- package/dist/production/src/mapper/Result.js.map +1 -1
- package/dist/production/src/mapper/delete/DeleteExecutor.cjs.map +1 -1
- package/dist/production/src/mapper/delete/DeleteExecutor.js.map +1 -1
- package/dist/production/src/mapper/delete/DeleteState.cjs.map +1 -1
- package/dist/production/src/mapper/delete/DeleteState.js.map +1 -1
- package/dist/production/src/mapper/delete/DeletedEntitiesStorage.cjs.map +1 -1
- package/dist/production/src/mapper/delete/DeletedEntitiesStorage.js.map +1 -1
- package/dist/production/src/mapper/delete/helpers.cjs.map +1 -1
- package/dist/production/src/mapper/delete/helpers.js.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilder.cjs +27 -31
- package/dist/production/src/mapper/insert/InsertBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilder.js +27 -31
- package/dist/production/src/mapper/insert/InsertBuilder.js.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilderFactory.cjs.map +1 -1
- package/dist/production/src/mapper/insert/InsertBuilderFactory.js.map +1 -1
- package/dist/production/src/mapper/insert/Inserter.cjs.map +1 -1
- package/dist/production/src/mapper/insert/Inserter.js.map +1 -1
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/select/ConditionBuilder.cjs +7 -5
- package/dist/production/src/mapper/select/ConditionBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/select/ConditionBuilder.js +8 -6
- package/dist/production/src/mapper/select/ConditionBuilder.js.map +1 -1
- package/dist/production/src/mapper/select/JoinBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/select/JoinBuilder.js.map +1 -1
- package/dist/production/src/mapper/select/JoinVisitor.cjs.map +1 -1
- package/dist/production/src/mapper/select/JoinVisitor.js.map +1 -1
- package/dist/production/src/mapper/select/OrderByBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/select/OrderByBuilder.js.map +1 -1
- package/dist/production/src/mapper/select/OrderByHelper.cjs.map +1 -1
- package/dist/production/src/mapper/select/OrderByHelper.js.map +1 -1
- package/dist/production/src/mapper/select/Path.cjs.map +1 -1
- package/dist/production/src/mapper/select/Path.js.map +1 -1
- package/dist/production/src/mapper/select/RelationFetcher.cjs.map +1 -1
- package/dist/production/src/mapper/select/RelationFetcher.js.map +1 -1
- package/dist/production/src/mapper/select/SelectBuilder.cjs +7 -10
- package/dist/production/src/mapper/select/SelectBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/select/SelectBuilder.js +7 -10
- package/dist/production/src/mapper/select/SelectBuilder.js.map +1 -1
- package/dist/production/src/mapper/select/SelectHydrator.cjs +1 -1
- package/dist/production/src/mapper/select/SelectHydrator.cjs.map +1 -1
- package/dist/production/src/mapper/select/SelectHydrator.js +1 -1
- package/dist/production/src/mapper/select/SelectHydrator.js.map +1 -1
- package/dist/production/src/mapper/select/WhereBuilder.cjs +20 -18
- package/dist/production/src/mapper/select/WhereBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/select/WhereBuilder.js +20 -18
- package/dist/production/src/mapper/select/WhereBuilder.js.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs +3 -2
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.js +3 -2
- package/dist/production/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.cjs.map +1 -1
- package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
- package/dist/production/src/mapper/select/handlers/MetaHandler.cjs.map +1 -1
- package/dist/production/src/mapper/select/handlers/MetaHandler.js.map +1 -1
- package/dist/production/src/mapper/select/optimizer/ConditionOptimizer.cjs.map +1 -1
- package/dist/production/src/mapper/select/optimizer/ConditionOptimizer.js.map +1 -1
- package/dist/production/src/mapper/select/optimizer/WhereOptimizer.cjs +7 -3
- package/dist/production/src/mapper/select/optimizer/WhereOptimizer.cjs.map +1 -1
- package/dist/production/src/mapper/select/optimizer/WhereOptimizer.js +7 -3
- package/dist/production/src/mapper/select/optimizer/WhereOptimizer.js.map +1 -1
- package/dist/production/src/mapper/select/optimizer/WhereReplacer.cjs.map +1 -1
- package/dist/production/src/mapper/select/optimizer/WhereReplacer.js.map +1 -1
- package/dist/production/src/mapper/select/optimizer/helpers.cjs.map +1 -1
- package/dist/production/src/mapper/select/optimizer/helpers.js.map +1 -1
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilder.cjs +64 -68
- package/dist/production/src/mapper/update/UpdateBuilder.cjs.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilder.js +64 -68
- package/dist/production/src/mapper/update/UpdateBuilder.js.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilderFactory.cjs.map +1 -1
- package/dist/production/src/mapper/update/UpdateBuilderFactory.js.map +1 -1
- package/dist/production/src/mapper/update/Updater.cjs +15 -3
- package/dist/production/src/mapper/update/Updater.cjs.map +1 -1
- package/dist/production/src/mapper/update/Updater.js +16 -4
- package/dist/production/src/mapper/update/Updater.js.map +1 -1
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -1
- package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -1
- package/dist/production/src/resolvers/GraphQlQueryAstFactory.cjs.map +1 -1
- package/dist/production/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
- package/dist/production/src/resolvers/MutationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/MutationResolver.js.map +1 -1
- package/dist/production/src/resolvers/ReadHelpers.cjs.map +1 -1
- package/dist/production/src/resolvers/ReadHelpers.js.map +1 -1
- package/dist/production/src/resolvers/ReadResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/ReadResolver.js.map +1 -1
- package/dist/production/src/resolvers/RefreshViewResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/RefreshViewResolver.js.map +1 -1
- package/dist/production/src/resolvers/ValidationResolver.cjs.map +1 -1
- package/dist/production/src/resolvers/ValidationResolver.js.map +1 -1
- package/dist/production/src/schema/ColumnTypeResolver.cjs.map +1 -1
- package/dist/production/src/schema/ColumnTypeResolver.js.map +1 -1
- package/dist/production/src/schema/ConditionTypeProvider.cjs +2 -0
- package/dist/production/src/schema/ConditionTypeProvider.cjs.map +1 -1
- package/dist/production/src/schema/ConditionTypeProvider.js +3 -1
- package/dist/production/src/schema/ConditionTypeProvider.js.map +1 -1
- package/dist/production/src/schema/CustomTypesProvider.cjs.map +1 -1
- package/dist/production/src/schema/CustomTypesProvider.js.map +1 -1
- package/dist/production/src/schema/EntityTypeProvider.cjs +1 -3
- package/dist/production/src/schema/EntityTypeProvider.cjs.map +1 -1
- package/dist/production/src/schema/EntityTypeProvider.js +1 -3
- package/dist/production/src/schema/EntityTypeProvider.js.map +1 -1
- package/dist/production/src/schema/EnumsProvider.cjs.map +1 -1
- package/dist/production/src/schema/EnumsProvider.js.map +1 -1
- package/dist/production/src/schema/FieldAccessVisitor.cjs.map +1 -1
- package/dist/production/src/schema/FieldAccessVisitor.js.map +1 -1
- package/dist/production/src/schema/GraphQlSchemaBuilder.cjs +5 -11
- package/dist/production/src/schema/GraphQlSchemaBuilder.cjs.map +1 -1
- package/dist/production/src/schema/GraphQlSchemaBuilder.js +5 -11
- package/dist/production/src/schema/GraphQlSchemaBuilder.js.map +1 -1
- package/dist/production/src/schema/GraphQlSchemaBuilderFactory.cjs +103 -3
- package/dist/production/src/schema/GraphQlSchemaBuilderFactory.cjs.map +1 -1
- package/dist/production/src/schema/GraphQlSchemaBuilderFactory.js +103 -3
- package/dist/production/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
- package/dist/production/src/schema/MutationProvider.cjs.map +1 -1
- package/dist/production/src/schema/MutationProvider.js +2 -2
- package/dist/production/src/schema/MutationProvider.js.map +1 -1
- package/dist/production/src/schema/OperationExtension.cjs +0 -1
- package/dist/production/src/schema/OperationExtension.cjs.map +1 -1
- package/dist/production/src/schema/OperationExtension.js +0 -1
- package/dist/production/src/schema/OperationExtension.js.map +1 -1
- package/dist/production/src/schema/OrderByTypeProvider.cjs.map +1 -1
- package/dist/production/src/schema/OrderByTypeProvider.js +1 -1
- package/dist/production/src/schema/OrderByTypeProvider.js.map +1 -1
- package/dist/production/src/schema/PaginatedFieldConfigFactory.cjs.map +1 -1
- package/dist/production/src/schema/PaginatedFieldConfigFactory.js +1 -1
- package/dist/production/src/schema/PaginatedFieldConfigFactory.js.map +1 -1
- package/dist/production/src/schema/QueryProvider.cjs.map +1 -1
- package/dist/production/src/schema/QueryProvider.js +2 -2
- package/dist/production/src/schema/QueryProvider.js.map +1 -1
- package/dist/production/src/schema/RefreshViewMutationProvider.cjs.map +1 -1
- package/dist/production/src/schema/RefreshViewMutationProvider.js.map +1 -1
- package/dist/production/src/schema/ResultSchemaTypeProvider.cjs.map +1 -1
- package/dist/production/src/schema/ResultSchemaTypeProvider.js.map +1 -1
- package/dist/production/src/schema/ValidationQueriesProvider.cjs +2 -8
- package/dist/production/src/schema/ValidationQueriesProvider.cjs.map +1 -1
- package/dist/production/src/schema/ValidationQueriesProvider.js +2 -8
- package/dist/production/src/schema/ValidationQueriesProvider.js.map +1 -1
- package/dist/production/src/schema/WhereTypeProvider.cjs +1 -3
- package/dist/production/src/schema/WhereTypeProvider.cjs.map +1 -1
- package/dist/production/src/schema/WhereTypeProvider.js +1 -3
- package/dist/production/src/schema/WhereTypeProvider.js.map +1 -1
- package/dist/production/src/schema/entities/FieldArgsVisitor.cjs.map +1 -1
- package/dist/production/src/schema/entities/FieldArgsVisitor.js.map +1 -1
- package/dist/production/src/schema/entities/FieldTypeVisitor.cjs.map +1 -1
- package/dist/production/src/schema/entities/FieldTypeVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/ConnectOrCreateRelationInputProvider.cjs.map +1 -1
- package/dist/production/src/schema/mutations/ConnectOrCreateRelationInputProvider.js.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityInputFieldVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationInputFieldVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationInputProvider.cjs.map +1 -1
- package/dist/production/src/schema/mutations/CreateEntityRelationInputProvider.js.map +1 -1
- package/dist/production/src/schema/mutations/EntityInputProvider.cjs.map +1 -1
- package/dist/production/src/schema/mutations/EntityInputProvider.js.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityInputFieldVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.cjs.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationInputProvider.cjs.map +1 -1
- package/dist/production/src/schema/mutations/UpdateEntityRelationInputProvider.js.map +1 -1
- package/dist/production/src/schema/utils.cjs.map +1 -1
- package/dist/production/src/schema/utils.js.map +1 -1
- package/dist/production/src/utils/Mutex.cjs.map +1 -1
- package/dist/production/src/utils/Mutex.js.map +1 -1
- package/dist/production/src/utils/ResolveInfoUtils.cjs.map +1 -1
- package/dist/production/src/utils/ResolveInfoUtils.js.map +1 -1
- package/dist/production/src/utils/accessor.cjs.map +1 -1
- package/dist/production/src/utils/accessor.js.map +1 -1
- package/dist/production/src/utils/assertNever.cjs.map +1 -1
- package/dist/production/src/utils/assertNever.js.map +1 -1
- package/dist/production/src/utils/isIt.cjs.map +1 -1
- package/dist/production/src/utils/isIt.js.map +1 -1
- package/dist/production/src/utils/object.cjs.map +1 -1
- package/dist/production/src/utils/object.js.map +1 -1
- package/dist/production/src/utils/paginationUtils.cjs.map +1 -1
- package/dist/production/src/utils/paginationUtils.js.map +1 -1
- package/dist/production/src/utils/promises.cjs.map +1 -1
- package/dist/production/src/utils/promises.js.map +1 -1
- package/dist/production/src/utils/singletonFactory.cjs.map +1 -1
- package/dist/production/src/utils/singletonFactory.js.map +1 -1
- package/dist/production/src/utils/strings.cjs.map +1 -1
- package/dist/production/src/utils/strings.js.map +1 -1
- package/dist/production/src/utils/tuple.cjs.map +1 -1
- package/dist/production/src/utils/tuple.js.map +1 -1
- package/dist/production/src/utils/uniqueWhereFields.cjs.map +1 -1
- package/dist/production/src/utils/uniqueWhereFields.js.map +1 -1
- package/dist/production/src/utils/viewComputedId.cjs.map +1 -1
- package/dist/production/src/utils/viewComputedId.js.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/insert/subOperationFail.test.d.ts +2 -0
- package/dist/tests/cases/integration/graphQlRequests/insert/subOperationFail.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/schema.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/schema.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/manyHasOne/schema.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasMany/schema.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/conditions.test.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.d.ts.map +1 -1
- package/dist/tests/cases/integration/graphQlRequests/validation/utils.d.ts.map +1 -1
- package/dist/tests/src/test.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/ExecutionContainer.d.ts +32 -3
- package/dist/types/ExecutionContainer.d.ts.map +1 -1
- package/dist/types/acl/Authorizator.d.ts.map +1 -1
- package/dist/types/acl/EvaluatedPredicateReplacer.d.ts.map +1 -1
- package/dist/types/acl/PermissionFactory.d.ts +6 -0
- package/dist/types/acl/PermissionFactory.d.ts.map +1 -1
- package/dist/types/acl/PredicateFactory.d.ts +17 -6
- package/dist/types/acl/PredicateFactory.d.ts.map +1 -1
- package/dist/types/acl/PredicatesInjector.d.ts +15 -1
- package/dist/types/acl/PredicatesInjector.d.ts.map +1 -1
- package/dist/types/acl/VariableUtils.d.ts.map +1 -1
- package/dist/types/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.d.ts.map +1 -1
- package/dist/types/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts.map +1 -1
- package/dist/types/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts.map +1 -1
- package/dist/types/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts.map +1 -1
- package/dist/types/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/input-validation/preValidation/InputPreValidator.d.ts.map +1 -1
- package/dist/types/inputProcessing/CreateInputProcessor.d.ts +1 -1
- package/dist/types/inputProcessing/CreateInputProcessor.d.ts.map +1 -1
- package/dist/types/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
- package/dist/types/inputProcessing/UpdateInputProcessor.d.ts +1 -1
- package/dist/types/inputProcessing/UpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
- package/dist/types/introspection/IntrospectionSchemaFactory.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/JunctionTableManager.d.ts.map +1 -1
- package/dist/types/mapper/Mapper.d.ts.map +1 -1
- package/dist/types/mapper/MapperFactory.d.ts.map +1 -1
- package/dist/types/mapper/Result.d.ts +2 -2
- package/dist/types/mapper/Result.d.ts.map +1 -1
- package/dist/types/mapper/delete/DeleteExecutor.d.ts.map +1 -1
- package/dist/types/mapper/delete/DeleteState.d.ts.map +1 -1
- package/dist/types/mapper/delete/helpers.d.ts.map +1 -1
- package/dist/types/mapper/insert/InsertBuilder.d.ts.map +1 -1
- package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts +2 -2
- package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts +2 -2
- package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts +1 -1
- package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/select/ConditionBuilder.d.ts.map +1 -1
- package/dist/types/mapper/select/JoinBuilder.d.ts.map +1 -1
- package/dist/types/mapper/select/Path.d.ts +0 -1
- package/dist/types/mapper/select/Path.d.ts.map +1 -1
- package/dist/types/mapper/select/RelationFetcher.d.ts.map +1 -1
- package/dist/types/mapper/select/SelectBuilder.d.ts.map +1 -1
- package/dist/types/mapper/select/SelectExecutionHandler.d.ts.map +1 -1
- package/dist/types/mapper/select/WhereBuilder.d.ts.map +1 -1
- package/dist/types/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
- package/dist/types/mapper/select/optimizer/ConditionOptimizer.d.ts.map +1 -1
- package/dist/types/mapper/select/optimizer/WhereOptimizer.d.ts +6 -1
- package/dist/types/mapper/select/optimizer/WhereOptimizer.d.ts.map +1 -1
- package/dist/types/mapper/select/optimizer/WhereReplacer.d.ts.map +1 -1
- package/dist/types/mapper/types.d.ts +1 -1
- package/dist/types/mapper/types.d.ts.map +1 -1
- package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/update/UpdateBuilder.d.ts.map +1 -1
- package/dist/types/mapper/update/Updater.d.ts +1 -5
- package/dist/types/mapper/update/Updater.d.ts.map +1 -1
- package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts +7 -7
- package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts +5 -5
- package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts +7 -7
- package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts +3 -3
- package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +1 -1
- package/dist/types/resolvers/GraphQlQueryAstFactory.d.ts.map +1 -1
- package/dist/types/resolvers/MutationResolver.d.ts.map +1 -1
- package/dist/types/schema/ConditionTypeProvider.d.ts.map +1 -1
- package/dist/types/schema/CustomTypesProvider.d.ts.map +1 -1
- package/dist/types/schema/EntityTypeProvider.d.ts.map +1 -1
- package/dist/types/schema/GraphQlSchemaBuilder.d.ts.map +1 -1
- package/dist/types/schema/GraphQlSchemaBuilderFactory.d.ts +0 -1
- package/dist/types/schema/GraphQlSchemaBuilderFactory.d.ts.map +1 -1
- package/dist/types/schema/MutationProvider.d.ts.map +1 -1
- package/dist/types/schema/OperationExtension.d.ts +1 -1
- package/dist/types/schema/OperationExtension.d.ts.map +1 -1
- package/dist/types/schema/ValidationQueriesProvider.d.ts.map +1 -1
- package/dist/types/schema/WhereTypeProvider.d.ts.map +1 -1
- package/dist/types/schema/entities/FieldArgsVisitor.d.ts.map +1 -1
- package/dist/types/schema/mutations/ConnectOrCreateRelationInputProvider.d.ts.map +1 -1
- package/dist/types/schema/mutations/CreateEntityInputFieldVisitor.d.ts.map +1 -1
- package/dist/types/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
- package/dist/types/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts.map +1 -1
- package/dist/types/schema/mutations/EntityInputProvider.d.ts.map +1 -1
- package/dist/types/schema/mutations/UpdateEntityInputFieldVisitor.d.ts +1 -1
- package/dist/types/schema/mutations/UpdateEntityInputFieldVisitor.d.ts.map +1 -1
- package/dist/types/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
- package/dist/types/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/utils/object.d.ts.map +1 -1
- package/graphql.codegen.yml +1 -1
- package/package.json +20 -16
- package/src/ExecutionContainer.ts +191 -123
- package/src/acl/Authorizator.ts +5 -3
- package/src/acl/EvaluatedPredicateReplacer.ts +0 -5
- package/src/acl/PermissionFactory.ts +56 -24
- package/src/acl/PredicateFactory.ts +38 -10
- package/src/acl/PredicatesInjector.ts +169 -13
- package/src/acl/VariableUtils.ts +0 -2
- package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.ts +0 -2
- package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.ts +9 -13
- package/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.ts +3 -4
- package/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.ts +2 -2
- package/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.ts +2 -5
- package/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.ts +3 -4
- package/src/index.ts +8 -7
- package/src/input-validation/ValidationEvaluation.ts +3 -6
- package/src/input-validation/dependencies/DependencyCollector.ts +3 -3
- package/src/input-validation/preValidation/InputPreValidator.ts +6 -8
- package/src/inputProcessing/CreateInputProcessor.ts +1 -2
- package/src/inputProcessing/CreateInputVisitor.ts +7 -8
- package/src/inputProcessing/UpdateInputProcessor.ts +1 -2
- package/src/inputProcessing/UpdateInputVisitor.ts +9 -10
- package/src/introspection/IntrospectionSchemaFactory.ts +3 -4
- package/src/introspection/content-schema.types.ts +3 -3
- package/src/introspection/introspection.schema.ts +0 -2
- package/src/mapper/ColumnValue.ts +0 -1
- package/src/mapper/ErrorUtils.ts +19 -7
- package/src/mapper/EventManager.ts +0 -2
- package/src/mapper/JunctionTableManager.ts +19 -17
- package/src/mapper/Mapper.ts +13 -6
- package/src/mapper/MapperFactory.ts +0 -1
- package/src/mapper/Result.ts +2 -2
- package/src/mapper/delete/DeleteExecutor.ts +6 -7
- package/src/mapper/delete/DeleteState.ts +0 -1
- package/src/mapper/delete/helpers.ts +2 -3
- package/src/mapper/insert/InsertBuilder.ts +32 -35
- package/src/mapper/insert/Inserter.ts +0 -1
- package/src/mapper/insert/SqlCreateInputProcessor.ts +3 -6
- package/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.ts +0 -1
- package/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.ts +1 -2
- package/src/mapper/insert/relations/OneHasManyCreateInputProcessor.ts +0 -1
- package/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.ts +1 -4
- package/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.ts +2 -9
- package/src/mapper/select/ConditionBuilder.ts +19 -13
- package/src/mapper/select/JoinBuilder.ts +4 -2
- package/src/mapper/select/OrderByHelper.ts +2 -2
- package/src/mapper/select/Path.ts +0 -2
- package/src/mapper/select/RelationFetcher.ts +31 -26
- package/src/mapper/select/SelectBuilder.ts +16 -14
- package/src/mapper/select/SelectExecutionHandler.ts +30 -28
- package/src/mapper/select/SelectHydrator.ts +1 -1
- package/src/mapper/select/WhereBuilder.ts +49 -43
- package/src/mapper/select/handlers/FieldsVisitor.ts +3 -3
- package/src/mapper/select/optimizer/ConditionOptimizer.ts +0 -7
- package/src/mapper/select/optimizer/WhereOptimizer.ts +37 -15
- package/src/mapper/select/optimizer/WhereReplacer.ts +6 -3
- package/src/mapper/select/optimizer/helpers.ts +1 -1
- package/src/mapper/types.ts +19 -18
- package/src/mapper/update/SqlUpdateInputProcessor.ts +1 -1
- package/src/mapper/update/UpdateBuilder.ts +77 -81
- package/src/mapper/update/Updater.ts +23 -5
- package/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts +2 -4
- package/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts +2 -2
- package/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.ts +7 -4
- package/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.ts +23 -9
- package/src/resolvers/GraphQlQueryAstFactory.ts +0 -1
- package/src/resolvers/MutationResolver.ts +13 -15
- package/src/schema/ColumnTypeResolver.ts +1 -1
- package/src/schema/ConditionTypeProvider.ts +3 -1
- package/src/schema/CustomTypesProvider.ts +1 -2
- package/src/schema/EntityTypeProvider.ts +1 -3
- package/src/schema/GraphQlSchemaBuilder.ts +8 -7
- package/src/schema/GraphQlSchemaBuilderFactory.ts +150 -68
- package/src/schema/MutationProvider.ts +5 -10
- package/src/schema/OperationExtension.ts +1 -2
- package/src/schema/ValidationQueriesProvider.ts +2 -6
- package/src/schema/WhereTypeProvider.ts +1 -3
- package/src/schema/entities/FieldArgsVisitor.ts +5 -4
- package/src/schema/mutations/ConnectOrCreateRelationInputProvider.ts +0 -2
- package/src/schema/mutations/CreateEntityInputFieldVisitor.ts +3 -4
- package/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.ts +3 -4
- package/src/schema/mutations/CreateEntityRelationInputFieldVisitor.ts +10 -10
- package/src/schema/mutations/EntityInputProvider.ts +1 -7
- package/src/schema/mutations/UpdateEntityInputFieldVisitor.ts +3 -4
- package/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.ts +3 -4
- package/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.ts +6 -13
- package/src/utils/object.ts +3 -2
- package/tests/cases/bugs/bug-filter-or.test.ts +1 -5
- package/tests/cases/bugs/bug-update-by-nested-unique.test.ts +3 -6
- package/tests/cases/bugs/bug102.test.ts +2 -9
- package/tests/cases/integration/graphQlRequests/delete/aclDelete.test.ts +2 -3
- package/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.ts +1 -2
- package/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.ts +12 -19
- package/tests/cases/integration/graphQlRequests/delete/deleteById.test.ts +0 -2
- package/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.ts +4 -5
- package/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.ts +6 -13
- package/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.ts +9 -13
- package/tests/cases/integration/graphQlRequests/insert/acl/setField.test.ts +0 -2
- package/tests/cases/integration/graphQlRequests/insert/aclInsert.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/insert/basicInsert.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/insert/insertCustomId.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/insert/jsonInsert.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/create.test.ts +1 -3
- package/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/create.test.ts +1 -4
- package/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.ts +2 -10
- package/tests/cases/integration/graphQlRequests/insert/manyHasOne/create.test.ts +1 -5
- package/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.ts +3 -4
- package/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.ts +2 -5
- package/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/create.test.ts +1 -3
- package/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/create.test.ts +1 -3
- package/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/empty.test.ts +1 -3
- package/tests/cases/integration/graphQlRequests/insert/subOperationFail.test.ts +107 -0
- package/tests/cases/integration/graphQlRequests/insert/validation/toBeFixed.test.ts +1 -9
- package/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.ts +0 -4
- package/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.ts +1 -4
- package/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.ts +0 -4
- package/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.ts +1 -6
- package/tests/cases/integration/graphQlRequests/query/acl/orPredicate.test.ts +0 -2
- package/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.ts +676 -2
- package/tests/cases/integration/graphQlRequests/query/acl/relationAcl.test.ts +8 -11
- package/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.ts +2 -6
- package/tests/cases/integration/graphQlRequests/query/acl/sameRowAndFieldPredicate.test.ts +0 -2
- package/tests/cases/integration/graphQlRequests/query/filter/backReferencedFilter.test.ts +1 -4
- package/tests/cases/integration/graphQlRequests/query/filter/complexCondition.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/filter/containsQuery.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.ts +16 -18
- package/tests/cases/integration/graphQlRequests/query/filter/manyHasOneRelation.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.ts +1 -3
- package/tests/cases/integration/graphQlRequests/query/formatting/dateFormat.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/graphqlFeatures/fragments.test.ts +6 -8
- package/tests/cases/integration/graphQlRequests/query/misc/aliasedType.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/misc/longAliasHash.test.ts +1 -3
- package/tests/cases/integration/graphQlRequests/query/misc/reducedHasMany.test.ts +2 -10
- package/tests/cases/integration/graphQlRequests/query/misc/transaction.test.ts +0 -2
- package/tests/cases/integration/graphQlRequests/query/pagination/hasManyLimit.test.ts +3 -10
- package/tests/cases/integration/graphQlRequests/query/pagination/paginate.test.ts +1 -3
- package/tests/cases/integration/graphQlRequests/query/pagination/paginateAliased.test.ts +1 -3
- package/tests/cases/integration/graphQlRequests/query/pagination/simpleLimit.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/relations/advanced.test.ts +3 -7
- package/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.ts +4 -9
- package/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.ts +5 -8
- package/tests/cases/integration/graphQlRequests/query/relations/manyHasOne.test.ts +0 -2
- package/tests/cases/integration/graphQlRequests/query/relations/oneHasMany.test.ts +2 -5
- package/tests/cases/integration/graphQlRequests/query/relations/oneHasOneInverse.test.ts +1 -3
- package/tests/cases/integration/graphQlRequests/query/relations/oneHasOneOwner.test.ts +1 -3
- package/tests/cases/integration/graphQlRequests/query/sorting/byRelations.test.ts +6 -8
- package/tests/cases/integration/graphQlRequests/query/sorting/defaultOrdering.test.ts +8 -8
- package/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/sorting/randomSort.test.ts +1 -5
- package/tests/cases/integration/graphQlRequests/query/sorting/sortNulls.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/sorting/sortedHasMany.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/unique/basicQueryById.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/unique/composedUnique.test.ts +2 -5
- package/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.ts +2 -5
- package/tests/cases/integration/graphQlRequests/query/unique/uniqueWithFilter.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/query/view/view.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.ts +8 -11
- package/tests/cases/integration/graphQlRequests/update/additionalFilter.test.ts +53 -3
- package/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.ts +2 -3
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/connect.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/create.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/disconnect.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/schema.ts +1 -2
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connect.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connectOrCreate.test.ts +0 -2
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/create.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/disconnect.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/schema.ts +1 -2
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.ts +7 -6
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.ts +8 -6
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.ts +2 -3
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/schema.ts +2 -5
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.ts +4 -3
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/connectOrCreate.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/create.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/schema.ts +2 -8
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.ts +7 -8
- package/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.ts +10 -6
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.ts +1 -4
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/schema.ts +2 -6
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.ts +8 -5
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.ts +2 -1
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.ts +4 -2
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.ts +5 -5
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/schema.ts +2 -6
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.ts +2 -2
- package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.ts +4 -3
- package/tests/cases/integration/graphQlRequests/update/queryPortal.test.ts +4 -4
- package/tests/cases/integration/graphQlRequests/update/transaction.test.ts +6 -5
- package/tests/cases/integration/graphQlRequests/update/validation/toBeFixed.test.ts +9 -10
- package/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.ts +5 -9
- package/tests/cases/integration/graphQlRequests/validation/conditions.test.ts +1 -1
- package/tests/cases/integration/graphQlRequests/validation/nestedValidation.test.ts +0 -2
- package/tests/cases/integration/graphQlRequests/validation/optionalAssert.test.ts +0 -2
- package/tests/cases/integration/graphQlRequests/validation/required.test.ts +0 -2
- package/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.ts +1 -2
- package/tests/cases/integration/graphQlRequests/validation/rules/andRule.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/lengthRangeRule.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/maxLengthRule.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/minLength.test.ts +0 -3
- package/tests/cases/integration/graphQlRequests/validation/rules/notEmptyRule.test.ts +0 -4
- package/tests/cases/integration/graphQlRequests/validation/rules/notRule.test.ts +0 -2
- package/tests/cases/integration/graphQlRequests/validation/rules/orRule.test.ts +0 -3
- package/tests/cases/integration/graphQlRequests/validation/rules/patternRule.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/validation/rules/rangeRule.test.ts +0 -1
- package/tests/cases/integration/graphQlRequests/validation/utils.ts +2 -6
- package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +31 -61
- package/tests/cases/integration/graphQlSchema/schema-column-types.gql +1 -0
- package/tests/cases/unit/aclVariablesFactory.test.ts +3 -7
- package/tests/cases/unit/conditionOptimizer.test.ts +122 -77
- package/tests/cases/unit/inputPreValidator.test.ts +5 -17
- package/tests/cases/unit/inputValidation.test.ts +2 -7
- package/tests/cases/unit/orderbyHelper.test.ts +8 -6
- package/tests/cases/unit/permissionMerger.test.ts +163 -7
- package/tests/cases/unit/predicatesFactory.test.ts +75 -1
- package/tests/cases/unit/predicatesInjector.test.ts +1065 -13
- package/tests/cases/unit/uuidType.test.ts +1 -2
- package/tests/cases/unit/variableInjector.test.ts +1 -4
- package/tests/cases/unit/whereBuilder.test.ts +8 -5
- package/tests/cases/unit/whereOptimizer.test.ts +337 -244
- package/tests/src/test.ts +3 -2
- package/tests/src/testGraphql.ts +1 -1
- package/tests/.eslintrc.cjs +0 -5
- package/vitest.config.ts +0 -3
|
@@ -7,17 +7,33 @@ export interface Identity {
|
|
|
7
7
|
projectRoles: readonly string[]
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
export interface ContextualPermissions {
|
|
11
|
+
root: Acl.Permissions
|
|
12
|
+
all: Acl.Permissions
|
|
13
|
+
}
|
|
14
|
+
|
|
10
15
|
export class PermissionFactory {
|
|
11
16
|
public create(schema: Schema, roles: readonly string[], prefix?: string): Acl.Permissions {
|
|
17
|
+
return this.createInternal(schema, roles, false, prefix)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public createContextual(schema: Schema, roles: readonly string[]): ContextualPermissions {
|
|
21
|
+
return {
|
|
22
|
+
root: this.createInternal(schema, roles, false),
|
|
23
|
+
all: this.createInternal(schema, roles, true),
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
private createInternal(schema: Schema, roles: readonly string[], includeThrough: boolean, prefix?: string): Acl.Permissions {
|
|
12
28
|
let result: Acl.Permissions = {}
|
|
13
29
|
for (let role of roles) {
|
|
14
30
|
const roleDefinition = schema.acl.roles[role] || { entities: {} }
|
|
15
31
|
let rolePermissions: Acl.Permissions = this.prefixPredicatesWithRole(schema.model, roleDefinition.entities, prefix || role)
|
|
16
32
|
if (roleDefinition.inherits) {
|
|
17
|
-
const inheritedPermissions = this.
|
|
18
|
-
rolePermissions = this.mergePermissions(inheritedPermissions, rolePermissions)
|
|
33
|
+
const inheritedPermissions = this.createInternal(schema, roleDefinition.inherits, includeThrough, prefix || role)
|
|
34
|
+
rolePermissions = this.mergePermissions(inheritedPermissions, rolePermissions, includeThrough)
|
|
19
35
|
}
|
|
20
|
-
result = this.mergePermissions(result, rolePermissions)
|
|
36
|
+
result = this.mergePermissions(result, rolePermissions, includeThrough)
|
|
21
37
|
}
|
|
22
38
|
result = this.makePrimaryPredicatesUnionOfAllFields(schema.model, result)
|
|
23
39
|
|
|
@@ -98,11 +114,11 @@ export class PermissionFactory {
|
|
|
98
114
|
})
|
|
99
115
|
}
|
|
100
116
|
|
|
101
|
-
private mergePermissions(left: Acl.Permissions, right: Acl.Permissions): Acl.Permissions {
|
|
117
|
+
private mergePermissions(left: Acl.Permissions, right: Acl.Permissions, includeThrough = false): Acl.Permissions {
|
|
102
118
|
const result = { ...left }
|
|
103
119
|
for (let entityName in right) {
|
|
104
120
|
if (result[entityName] !== undefined) {
|
|
105
|
-
result[entityName] = this.mergeEntityPermissions(result[entityName], right[entityName])
|
|
121
|
+
result[entityName] = this.mergeEntityPermissions(result[entityName], right[entityName], includeThrough)
|
|
106
122
|
} else {
|
|
107
123
|
result[entityName] = right[entityName]
|
|
108
124
|
}
|
|
@@ -110,7 +126,7 @@ export class PermissionFactory {
|
|
|
110
126
|
return result
|
|
111
127
|
}
|
|
112
128
|
|
|
113
|
-
private mergeEntityPermissions(left: Acl.EntityPermissions, right: Acl.EntityPermissions): Acl.EntityPermissions {
|
|
129
|
+
private mergeEntityPermissions(left: Acl.EntityPermissions, right: Acl.EntityPermissions, includeThrough = false): Acl.EntityPermissions {
|
|
114
130
|
let predicates: Writable<Acl.PredicateMap> = {}
|
|
115
131
|
const operations: Writable<Acl.EntityOperations> = {}
|
|
116
132
|
if (left.operations.customPrimary || right.operations.customPrimary) {
|
|
@@ -118,13 +134,19 @@ export class PermissionFactory {
|
|
|
118
134
|
}
|
|
119
135
|
const noRoot: `${Acl.Operation}`[] = []
|
|
120
136
|
|
|
121
|
-
for (
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
137
|
+
for (
|
|
138
|
+
let operation of [
|
|
139
|
+
'create',
|
|
140
|
+
'read',
|
|
141
|
+
'update',
|
|
142
|
+
] as const
|
|
143
|
+
) {
|
|
144
|
+
const { predicates: opPredicates, permissions: fieldPermissions, noRoot: opNoRoot } = this.mergeOperationPermissions(
|
|
145
|
+
left,
|
|
146
|
+
right,
|
|
147
|
+
operation,
|
|
148
|
+
includeThrough,
|
|
149
|
+
)
|
|
128
150
|
|
|
129
151
|
if (opNoRoot) {
|
|
130
152
|
noRoot.push(operation)
|
|
@@ -136,7 +158,7 @@ export class PermissionFactory {
|
|
|
136
158
|
}
|
|
137
159
|
}
|
|
138
160
|
|
|
139
|
-
const { predicateDefinition, predicate, noRoot: opNoRoot } = this.mergeDeletePermissions(left, right)
|
|
161
|
+
const { predicateDefinition, predicate, noRoot: opNoRoot } = this.mergeDeletePermissions(left, right, includeThrough)
|
|
140
162
|
if (opNoRoot) {
|
|
141
163
|
noRoot.push('delete')
|
|
142
164
|
}
|
|
@@ -147,7 +169,6 @@ export class PermissionFactory {
|
|
|
147
169
|
operations.delete = predicate
|
|
148
170
|
}
|
|
149
171
|
|
|
150
|
-
|
|
151
172
|
if (noRoot.length > 0) {
|
|
152
173
|
operations.noRoot = noRoot
|
|
153
174
|
}
|
|
@@ -158,13 +179,17 @@ export class PermissionFactory {
|
|
|
158
179
|
}
|
|
159
180
|
}
|
|
160
181
|
|
|
161
|
-
|
|
162
|
-
|
|
182
|
+
private mergeOperationPermissions(
|
|
183
|
+
left: Acl.EntityPermissions,
|
|
184
|
+
right: Acl.EntityPermissions,
|
|
185
|
+
operation: 'create' | 'read' | 'update',
|
|
186
|
+
includeThrough = false,
|
|
187
|
+
): {
|
|
163
188
|
noRoot: boolean
|
|
164
189
|
predicates: Acl.PredicateMap
|
|
165
190
|
permissions: Acl.FieldPermissions
|
|
166
191
|
} {
|
|
167
|
-
const { noRoot, leftPermissions, rightPermissions } = this.resolveNoRoot(left, right, operation)
|
|
192
|
+
const { noRoot, leftPermissions, rightPermissions } = this.resolveNoRoot(left, right, operation, includeThrough)
|
|
168
193
|
return {
|
|
169
194
|
noRoot,
|
|
170
195
|
...this.mergeFieldPermissions(
|
|
@@ -176,12 +201,12 @@ export class PermissionFactory {
|
|
|
176
201
|
}
|
|
177
202
|
}
|
|
178
203
|
|
|
179
|
-
private mergeDeletePermissions(left: Acl.EntityPermissions, right: Acl.EntityPermissions): {
|
|
204
|
+
private mergeDeletePermissions(left: Acl.EntityPermissions, right: Acl.EntityPermissions, includeThrough = false): {
|
|
180
205
|
noRoot: boolean
|
|
181
206
|
predicate: Acl.PredicateReference | boolean
|
|
182
207
|
predicateDefinition: Acl.PredicateDefinition | undefined
|
|
183
208
|
} {
|
|
184
|
-
const { noRoot, leftPermissions, rightPermissions } = this.resolveNoRoot(left, right, 'delete')
|
|
209
|
+
const { noRoot, leftPermissions, rightPermissions } = this.resolveNoRoot(left, right, 'delete', includeThrough)
|
|
185
210
|
|
|
186
211
|
return {
|
|
187
212
|
noRoot,
|
|
@@ -194,7 +219,12 @@ export class PermissionFactory {
|
|
|
194
219
|
}
|
|
195
220
|
}
|
|
196
221
|
|
|
197
|
-
private resolveNoRoot<const Op extends`${Acl.Operation}`>(
|
|
222
|
+
private resolveNoRoot<const Op extends `${Acl.Operation}`>(
|
|
223
|
+
left: Acl.EntityPermissions,
|
|
224
|
+
right: Acl.EntityPermissions,
|
|
225
|
+
operation: Op,
|
|
226
|
+
includeThrough = false,
|
|
227
|
+
): {
|
|
198
228
|
noRoot: boolean
|
|
199
229
|
leftPermissions: Acl.EntityPermissions['operations'][Op] | undefined
|
|
200
230
|
rightPermissions: Acl.EntityPermissions['operations'][Op] | undefined
|
|
@@ -208,8 +238,10 @@ export class PermissionFactory {
|
|
|
208
238
|
|| (leftRootForbidden && !rightPermissions)
|
|
209
239
|
|| (rightRootForbidden && !leftPermissions)
|
|
210
240
|
|
|
211
|
-
|
|
212
|
-
|
|
241
|
+
// When includeThrough is true, keep all permissions regardless of noRoot
|
|
242
|
+
// (used for "all" permissions that apply when accessing through relations)
|
|
243
|
+
const resolvedLeftPermissions = !includeThrough && !rootForbidden && leftRootForbidden ? undefined : leftPermissions
|
|
244
|
+
const resolvedRightPermissions = !includeThrough && !rootForbidden && rightRootForbidden ? undefined : rightPermissions
|
|
213
245
|
|
|
214
246
|
return {
|
|
215
247
|
noRoot: rootForbidden,
|
|
@@ -223,7 +255,7 @@ export class PermissionFactory {
|
|
|
223
255
|
leftFieldPermissions: Acl.FieldPermissions | undefined = {},
|
|
224
256
|
rightPredicates: Acl.PredicateMap,
|
|
225
257
|
rightFieldPermissions: Acl.FieldPermissions | undefined = {},
|
|
226
|
-
): {predicates: Acl.PredicateMap; permissions: Acl.FieldPermissions} {
|
|
258
|
+
): { predicates: Acl.PredicateMap; permissions: Acl.FieldPermissions } {
|
|
227
259
|
const permissions: Writable<Acl.FieldPermissions> = {}
|
|
228
260
|
const predicates: Writable<Acl.PredicateMap> = {}
|
|
229
261
|
|
|
@@ -14,14 +14,32 @@ export class PredicateFactory {
|
|
|
14
14
|
private readonly permissions: Acl.Permissions,
|
|
15
15
|
private readonly model: Model.Schema,
|
|
16
16
|
private readonly variableInjector: VariableInjector,
|
|
17
|
+
private readonly allPermissions?: Acl.Permissions,
|
|
17
18
|
) {}
|
|
18
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Selects the appropriate permission set based on query context:
|
|
22
|
+
* - `isRoot === false` (nested/relation context): uses allPermissions (includes through-only permissions)
|
|
23
|
+
* - `isRoot === true` or `isRoot === undefined` (root or unknown context): uses root-only permissions
|
|
24
|
+
*
|
|
25
|
+
* The `undefined` vs `true` distinction matters: `undefined` is the default for callers
|
|
26
|
+
* that don't track root context, and must fall through to root permissions for safety.
|
|
27
|
+
*/
|
|
28
|
+
private getPermissionsForContext(isRoot?: boolean): Acl.Permissions {
|
|
29
|
+
if (isRoot === false && this.allPermissions) {
|
|
30
|
+
return this.allPermissions
|
|
31
|
+
}
|
|
32
|
+
return this.permissions
|
|
33
|
+
}
|
|
34
|
+
|
|
19
35
|
public getFieldPredicate(
|
|
20
36
|
entity: Model.Entity,
|
|
21
37
|
operation: Acl.Operation.update | Acl.Operation.read | Acl.Operation.create,
|
|
22
38
|
fieldName: string,
|
|
39
|
+
isRoot?: boolean,
|
|
23
40
|
): FieldRequiredPredicate {
|
|
24
|
-
const
|
|
41
|
+
const perms = this.getPermissionsForContext(isRoot)
|
|
42
|
+
const permissions = perms[entity.name]?.operations?.[operation]
|
|
25
43
|
const predicate = permissions?.[fieldName] ?? false
|
|
26
44
|
const rowLevelField = getRowLevelPredicatePseudoField(entity)
|
|
27
45
|
|
|
@@ -38,12 +56,15 @@ export class PredicateFactory {
|
|
|
38
56
|
entity: Model.Entity,
|
|
39
57
|
operation: Acl.Operation.read,
|
|
40
58
|
fieldName: string,
|
|
59
|
+
isRoot?: boolean,
|
|
41
60
|
): boolean {
|
|
61
|
+
const perms = this.getPermissionsForContext(isRoot)
|
|
42
62
|
const rowLevelField = getRowLevelPredicatePseudoField(entity)
|
|
43
|
-
const permissions =
|
|
63
|
+
const permissions = perms[entity.name]?.operations?.[operation]
|
|
44
64
|
return permissions?.[fieldName] !== permissions?.[rowLevelField]
|
|
45
65
|
}
|
|
46
66
|
|
|
67
|
+
/** Delete predicates are not context-aware — through-permission support is scoped to read operations only. */
|
|
47
68
|
public createDeletePredicate(entity: Model.Entity) {
|
|
48
69
|
const neverCondition: Input.Where = { [entity.primary]: { never: true } }
|
|
49
70
|
const entityPermissions = this.permissions[entity.name]
|
|
@@ -65,8 +86,10 @@ export class PredicateFactory {
|
|
|
65
86
|
operation: Acl.Operation.update | Acl.Operation.read | Acl.Operation.create,
|
|
66
87
|
fieldNames: string[] = [getRowLevelPredicatePseudoField(entity)],
|
|
67
88
|
relationContext?: Model.AnyRelationContext,
|
|
89
|
+
isRoot?: boolean,
|
|
68
90
|
): Input.OptionalWhere {
|
|
69
|
-
const
|
|
91
|
+
const perms = this.getPermissionsForContext(isRoot)
|
|
92
|
+
const entityPermissions: Acl.EntityPermissions = perms[entity.name]
|
|
70
93
|
const neverCondition: Input.Where = { [entity.primary]: { never: true } }
|
|
71
94
|
|
|
72
95
|
if (!entityPermissions) {
|
|
@@ -85,11 +108,17 @@ export class PredicateFactory {
|
|
|
85
108
|
return neverCondition
|
|
86
109
|
}
|
|
87
110
|
|
|
88
|
-
return this.buildPredicates(entity, operationPredicates, relationContext)
|
|
111
|
+
return this.buildPredicates(entity, operationPredicates, relationContext, isRoot)
|
|
89
112
|
}
|
|
90
113
|
|
|
91
|
-
public buildPredicates(
|
|
92
|
-
|
|
114
|
+
public buildPredicates(
|
|
115
|
+
entity: Model.Entity,
|
|
116
|
+
predicates: Acl.PredicateReference[],
|
|
117
|
+
relationContext?: Model.AnyRelationContext,
|
|
118
|
+
isRoot?: boolean,
|
|
119
|
+
): Input.OptionalWhere {
|
|
120
|
+
const perms = this.getPermissionsForContext(isRoot)
|
|
121
|
+
const entityPermissions: Acl.EntityPermissions = perms[entity.name] ?? {}
|
|
93
122
|
|
|
94
123
|
const predicatesWhere: Input.Where[] = predicates.reduce(
|
|
95
124
|
(result: Input.Where[], name: Acl.PredicateReference): Input.Where[] => {
|
|
@@ -105,8 +134,7 @@ export class PredicateFactory {
|
|
|
105
134
|
return {}
|
|
106
135
|
}
|
|
107
136
|
const where: Input.Where = predicatesWhere.length === 1 ? predicatesWhere[0] : { and: predicatesWhere }
|
|
108
|
-
return this.optimizePredicates(where, relationContext)
|
|
109
|
-
|
|
137
|
+
return this.optimizePredicates(where, relationContext, isRoot)
|
|
110
138
|
}
|
|
111
139
|
|
|
112
140
|
private getRequiredPredicates(
|
|
@@ -129,11 +157,11 @@ export class PredicateFactory {
|
|
|
129
157
|
return predicates
|
|
130
158
|
}
|
|
131
159
|
|
|
132
|
-
public optimizePredicates(where: Input.OptionalWhere, relationContext?: Model.AnyRelationContext) {
|
|
160
|
+
public optimizePredicates(where: Input.OptionalWhere, relationContext?: Model.AnyRelationContext, isRoot?: boolean) {
|
|
133
161
|
if (!relationContext || !relationContext.targetRelation) {
|
|
134
162
|
return where
|
|
135
163
|
}
|
|
136
|
-
const sourcePredicate = this.create(relationContext.entity, Acl.Operation.read, [relationContext.relation.name])
|
|
164
|
+
const sourcePredicate = this.create(relationContext.entity, Acl.Operation.read, [relationContext.relation.name], undefined, isRoot)
|
|
137
165
|
if (Object.keys(sourcePredicate).length === 0) {
|
|
138
166
|
return where
|
|
139
167
|
}
|
|
@@ -5,9 +5,33 @@ import { PredicateFactory } from './PredicateFactory'
|
|
|
5
5
|
export class PredicatesInjector {
|
|
6
6
|
constructor(private readonly schema: Model.Schema, private readonly predicateFactory: PredicateFactory) {}
|
|
7
7
|
|
|
8
|
-
public inject(
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
public inject(
|
|
9
|
+
entity: Model.Entity,
|
|
10
|
+
where: Input.OptionalWhere,
|
|
11
|
+
relationContext?: Model.AnyRelationContext,
|
|
12
|
+
ancestorPath?: readonly Model.AnyRelationContext[],
|
|
13
|
+
): Input.OptionalWhere {
|
|
14
|
+
const isQueryRoot = !relationContext && (!ancestorPath || ancestorPath.length === 0)
|
|
15
|
+
const restrictedWhere = this.injectToWhere(where, entity, true, relationContext, false, ancestorPath ?? [], isQueryRoot)
|
|
16
|
+
return this.createWhere(entity, undefined, restrictedWhere, relationContext, false, ancestorPath ?? [], isQueryRoot)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Finds an ancestor in the path that matches the given relation as a back-reference.
|
|
21
|
+
* A match occurs when:
|
|
22
|
+
* 1. The relation we're traversing has the same name as the inverse (targetRelation) of a relation in the ancestor path
|
|
23
|
+
* 2. AND the entity where our relation is defined matches the targetEntity in the path
|
|
24
|
+
* (to prevent false positives when different entities have relations with the same name)
|
|
25
|
+
*/
|
|
26
|
+
private findBackReferencedAncestor(
|
|
27
|
+
ancestorPath: readonly Model.AnyRelationContext[],
|
|
28
|
+
relationName: string,
|
|
29
|
+
relationSourceEntityName: string,
|
|
30
|
+
): Model.AnyRelationContext | undefined {
|
|
31
|
+
return ancestorPath.find(ctx =>
|
|
32
|
+
ctx.targetRelation?.name === relationName
|
|
33
|
+
&& ctx.targetEntity.name === relationSourceEntityName
|
|
34
|
+
)
|
|
11
35
|
}
|
|
12
36
|
|
|
13
37
|
private createWhere(
|
|
@@ -15,9 +39,34 @@ export class PredicatesInjector {
|
|
|
15
39
|
fieldNames: string[] | undefined,
|
|
16
40
|
where: Input.OptionalWhere,
|
|
17
41
|
relationContext?: Model.AnyRelationContext,
|
|
42
|
+
isBackReferenceContext?: boolean,
|
|
43
|
+
ancestorPath?: readonly Model.AnyRelationContext[],
|
|
44
|
+
isQueryRoot?: boolean,
|
|
18
45
|
): Input.OptionalWhere {
|
|
19
|
-
|
|
20
|
-
|
|
46
|
+
// Simplify predicates when:
|
|
47
|
+
// 1. We're in a back-reference context (inside a filter that traverses back)
|
|
48
|
+
// 2. AND the relation we traversed to get here corresponds to a relation in our query path
|
|
49
|
+
// This ensures we only simplify when the traversed relation actually corresponds
|
|
50
|
+
// to a relation in our query path (not just any relation to the same entity type)
|
|
51
|
+
const shouldSimplify = isBackReferenceContext === true
|
|
52
|
+
&& ancestorPath !== undefined
|
|
53
|
+
&& relationContext !== undefined
|
|
54
|
+
&& this.findBackReferencedAncestor(ancestorPath, relationContext.relation.name, relationContext.entity.name) !== undefined
|
|
55
|
+
|
|
56
|
+
let predicatesWhere: Input.OptionalWhere
|
|
57
|
+
if (shouldSimplify) {
|
|
58
|
+
predicatesWhere = { [entity.primary]: { always: true } }
|
|
59
|
+
} else {
|
|
60
|
+
const rawPredicate = this.predicateFactory.create(entity, Acl.Operation.read, fieldNames, relationContext, isQueryRoot)
|
|
61
|
+
// Process the predicate to inject nested entity predicates
|
|
62
|
+
predicatesWhere = this.injectPredicatesToPredicate(
|
|
63
|
+
rawPredicate,
|
|
64
|
+
entity,
|
|
65
|
+
isBackReferenceContext ?? false,
|
|
66
|
+
ancestorPath ?? [],
|
|
67
|
+
isQueryRoot,
|
|
68
|
+
)
|
|
69
|
+
}
|
|
21
70
|
|
|
22
71
|
const and = [where, predicatesWhere].filter(it => Object.keys(it).length > 0)
|
|
23
72
|
if (and.length === 0) {
|
|
@@ -29,21 +78,123 @@ export class PredicatesInjector {
|
|
|
29
78
|
return { and: and }
|
|
30
79
|
}
|
|
31
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Processes a predicate and injects nested entity predicates for any relation traversals.
|
|
83
|
+
* This ensures that when a predicate like { department: { company: { name: 'Acme' } } }
|
|
84
|
+
* is used, the predicates of Department and Company are also applied.
|
|
85
|
+
*/
|
|
86
|
+
private injectPredicatesToPredicate(
|
|
87
|
+
where: Input.OptionalWhere,
|
|
88
|
+
entity: Model.Entity,
|
|
89
|
+
isBackReferenceContext: boolean,
|
|
90
|
+
ancestorPath: readonly Model.AnyRelationContext[],
|
|
91
|
+
isQueryRoot?: boolean,
|
|
92
|
+
): Input.OptionalWhere {
|
|
93
|
+
const resultWhere: Writable<Input.OptionalWhere> = {}
|
|
94
|
+
|
|
95
|
+
if (where.and) {
|
|
96
|
+
resultWhere.and = where.and
|
|
97
|
+
.filter((it): it is Input.Where => !!it)
|
|
98
|
+
.map(it => this.injectPredicatesToPredicate(it, entity, isBackReferenceContext, ancestorPath, isQueryRoot))
|
|
99
|
+
}
|
|
100
|
+
if (where.or) {
|
|
101
|
+
resultWhere.or = where.or
|
|
102
|
+
.filter((it): it is Input.Where => !!it)
|
|
103
|
+
.map(it => this.injectPredicatesToPredicate(it, entity, isBackReferenceContext, ancestorPath, isQueryRoot))
|
|
104
|
+
}
|
|
105
|
+
if (where.not) {
|
|
106
|
+
resultWhere.not = this.injectPredicatesToPredicate(where.not, entity, isBackReferenceContext, ancestorPath, isQueryRoot)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const fields = Object.keys(where).filter(it => !['and', 'or', 'not'].includes(it))
|
|
110
|
+
|
|
111
|
+
for (const field of fields) {
|
|
112
|
+
resultWhere[field] = acceptFieldVisitor(this.schema, entity, field, {
|
|
113
|
+
visitColumn: () => where[field],
|
|
114
|
+
visitRelation: context => {
|
|
115
|
+
const relationWhere = where[field] as Input.OptionalWhere | null
|
|
116
|
+
if (relationWhere === null) {
|
|
117
|
+
return null
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Check if this relation is a back-reference to somewhere in our ancestor path
|
|
121
|
+
const isBackReference = this.findBackReferencedAncestor(
|
|
122
|
+
ancestorPath,
|
|
123
|
+
context.relation.name,
|
|
124
|
+
context.entity.name,
|
|
125
|
+
) !== undefined
|
|
126
|
+
const nestedIsBackReferenceContext = isBackReference || isBackReferenceContext
|
|
127
|
+
const nestedAncestorPath: readonly Model.AnyRelationContext[] = [...ancestorPath, context]
|
|
128
|
+
|
|
129
|
+
// Recursively process the nested where (always do this to handle deeper nesting)
|
|
130
|
+
const processedNestedWhere = this.injectPredicatesToPredicate(
|
|
131
|
+
relationWhere,
|
|
132
|
+
context.targetEntity,
|
|
133
|
+
nestedIsBackReferenceContext,
|
|
134
|
+
nestedAncestorPath,
|
|
135
|
+
isQueryRoot,
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
// Check if we should simplify the target entity's predicate
|
|
139
|
+
const shouldSimplifyNested = nestedIsBackReferenceContext
|
|
140
|
+
&& this.findBackReferencedAncestor(nestedAncestorPath, context.relation.name, context.entity.name) !== undefined
|
|
141
|
+
|
|
142
|
+
// Get target entity's predicate (simplified if back-reference)
|
|
143
|
+
const targetPredicate = shouldSimplifyNested
|
|
144
|
+
? { [context.targetEntity.primary]: { always: true } }
|
|
145
|
+
: this.predicateFactory.create(context.targetEntity, Acl.Operation.read, undefined, context, isQueryRoot)
|
|
146
|
+
|
|
147
|
+
// Optimization: avoid duplicate { id: always } when both are simplified
|
|
148
|
+
const primaryKey = context.targetEntity.primary
|
|
149
|
+
const nestedIsAlwaysTrue = Object.keys(processedNestedWhere).length === 1
|
|
150
|
+
&& (processedNestedWhere as Record<string, unknown>)[primaryKey] !== undefined
|
|
151
|
+
&& (processedNestedWhere as Record<string, Record<string, unknown>>)[primaryKey]?.always === true
|
|
152
|
+
const targetIsAlwaysTrue = Object.keys(targetPredicate).length === 1
|
|
153
|
+
&& (targetPredicate as Record<string, unknown>)[primaryKey] !== undefined
|
|
154
|
+
&& (targetPredicate as Record<string, Record<string, unknown>>)[primaryKey]?.always === true
|
|
155
|
+
|
|
156
|
+
if (nestedIsAlwaysTrue && targetIsAlwaysTrue) {
|
|
157
|
+
return processedNestedWhere
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Combine the processed nested where with target entity's predicate
|
|
161
|
+
const parts = [processedNestedWhere, targetPredicate].filter(it => Object.keys(it).length > 0)
|
|
162
|
+
if (parts.length === 0) {
|
|
163
|
+
return {}
|
|
164
|
+
}
|
|
165
|
+
if (parts.length === 1) {
|
|
166
|
+
return parts[0]
|
|
167
|
+
}
|
|
168
|
+
return { and: parts }
|
|
169
|
+
},
|
|
170
|
+
})
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return resultWhere
|
|
174
|
+
}
|
|
175
|
+
|
|
32
176
|
private injectToWhere(
|
|
33
177
|
where: Input.OptionalWhere,
|
|
34
178
|
entity: Model.Entity,
|
|
35
179
|
isRoot: boolean,
|
|
36
|
-
relationContext
|
|
180
|
+
relationContext: Model.AnyRelationContext | undefined,
|
|
181
|
+
isBackReferenceContext: boolean,
|
|
182
|
+
ancestorPath: readonly Model.AnyRelationContext[],
|
|
183
|
+
isQueryRoot?: boolean,
|
|
37
184
|
): Input.OptionalWhere {
|
|
38
185
|
const resultWhere: Writable<Input.OptionalWhere> = {}
|
|
39
186
|
if (where.and) {
|
|
40
|
-
resultWhere.and = where.and.filter((it): it is Input.Where => !!it).map(it =>
|
|
187
|
+
resultWhere.and = where.and.filter((it): it is Input.Where => !!it).map(it =>
|
|
188
|
+
this.injectToWhere(it, entity, isRoot, relationContext, isBackReferenceContext, ancestorPath, isQueryRoot)
|
|
189
|
+
)
|
|
41
190
|
}
|
|
42
191
|
if (where.or) {
|
|
43
|
-
resultWhere.or = where.or.filter((it): it is Input.Where => !!it).map(it =>
|
|
192
|
+
resultWhere.or = where.or.filter((it): it is Input.Where => !!it).map(it =>
|
|
193
|
+
this.injectToWhere(it, entity, isRoot, relationContext, isBackReferenceContext, ancestorPath, isQueryRoot)
|
|
194
|
+
)
|
|
44
195
|
}
|
|
45
196
|
if (where.not) {
|
|
46
|
-
resultWhere.not = this.injectToWhere(where.not, entity, isRoot, relationContext)
|
|
197
|
+
resultWhere.not = this.injectToWhere(where.not, entity, isRoot, relationContext, isBackReferenceContext, ancestorPath, isQueryRoot)
|
|
47
198
|
}
|
|
48
199
|
|
|
49
200
|
const fields = Object.keys(where).filter(it => !['and', 'or', 'not'].includes(it))
|
|
@@ -59,15 +210,20 @@ export class PredicatesInjector {
|
|
|
59
210
|
if (relationWhere === null) {
|
|
60
211
|
return null
|
|
61
212
|
}
|
|
62
|
-
|
|
213
|
+
// Check if this relation is a back-reference to somewhere in our ancestor path
|
|
214
|
+
const isBackReference = this.findBackReferencedAncestor(ancestorPath, context.relation.name, context.entity.name) !== undefined
|
|
215
|
+
// Once we enter a back-reference context, stay in it for nested relations
|
|
216
|
+
const nestedIsBackReferenceContext = isBackReference || isBackReferenceContext
|
|
217
|
+
// Build extended ancestor path for nested traversal
|
|
218
|
+
const nestedAncestorPath: Model.AnyRelationContext[] = [...ancestorPath, context]
|
|
219
|
+
return this.injectToWhere(relationWhere, context.targetEntity, false, context, nestedIsBackReferenceContext, nestedAncestorPath, isQueryRoot)
|
|
63
220
|
},
|
|
64
221
|
})
|
|
65
222
|
}
|
|
66
223
|
const fieldsForPredicate = !isRoot
|
|
67
224
|
? fields
|
|
68
|
-
: fields.filter(it => this.predicateFactory.shouldApplyCellLevelPredicate(entity, Acl.Operation.read, it))
|
|
225
|
+
: fields.filter(it => this.predicateFactory.shouldApplyCellLevelPredicate(entity, Acl.Operation.read, it, isQueryRoot))
|
|
69
226
|
|
|
70
|
-
return this.createWhere(entity, fieldsForPredicate, resultWhere, relationContext)
|
|
227
|
+
return this.createWhere(entity, fieldsForPredicate, resultWhere, relationContext, isBackReferenceContext, ancestorPath, isQueryRoot)
|
|
71
228
|
}
|
|
72
|
-
|
|
73
229
|
}
|
package/src/acl/VariableUtils.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { Acl, Input } from '@contember/schema'
|
|
2
2
|
import { getRoleVariables, ParsedMembership } from '@contember/schema-utils'
|
|
3
3
|
|
|
4
|
-
|
|
5
4
|
export const createAclVariables = (
|
|
6
5
|
aclSchema: Acl.Schema,
|
|
7
6
|
memberships: readonly ParsedMembership[],
|
|
8
7
|
): Acl.VariablesMap => {
|
|
9
|
-
|
|
10
8
|
const variablesEntries = memberships.flatMap(
|
|
11
9
|
membership => {
|
|
12
10
|
const roleVariables = getRoleVariables(membership.role, aclSchema)
|
|
@@ -7,7 +7,6 @@ import { UniqueWhereExpander } from '../../inputProcessing'
|
|
|
7
7
|
import { HasManyToHasOneReducerExtension } from './HasManyToHasOneReducer'
|
|
8
8
|
|
|
9
9
|
export class HasManyToHasOneReducerExecutionHandler implements SelectExecutionHandler<Input.UniqueQueryInput, HasManyToHasOneReducerExtension> {
|
|
10
|
-
|
|
11
10
|
constructor(private readonly schema: Model.Schema, private readonly uniqueWhereExpander: UniqueWhereExpander) {}
|
|
12
11
|
|
|
13
12
|
process(context: SelectExecutionHandlerContext<Input.UniqueQueryInput, HasManyToHasOneReducerExtension>): void {
|
|
@@ -18,7 +17,6 @@ export class HasManyToHasOneReducerExecutionHandler implements SelectExecutionHa
|
|
|
18
17
|
addData({
|
|
19
18
|
field: entity.primary,
|
|
20
19
|
dataProvider: async (ids: Input.PrimaryValue[]) => {
|
|
21
|
-
|
|
22
20
|
const relationContext = acceptFieldVisitor(this.schema, entity, objectNode.extensions.relationName, {
|
|
23
21
|
visitRelation: context => context,
|
|
24
22
|
visitColumn: (): never => {
|
|
@@ -11,13 +11,10 @@ type Result = [
|
|
|
11
11
|
string,
|
|
12
12
|
GraphQLFieldConfig<any, any> & {
|
|
13
13
|
extensions: HasManyToHasOneReducerExtension
|
|
14
|
-
}
|
|
14
|
+
},
|
|
15
15
|
]
|
|
16
16
|
|
|
17
|
-
export class HasManyToHasOneRelationReducerFieldVisitor implements
|
|
18
|
-
Model.ColumnVisitor<Result[]>,
|
|
19
|
-
Model.RelationByTypeVisitor<Result[]> {
|
|
20
|
-
|
|
17
|
+
export class HasManyToHasOneRelationReducerFieldVisitor implements Model.ColumnVisitor<Result[]>, Model.RelationByTypeVisitor<Result[]> {
|
|
21
18
|
constructor(
|
|
22
19
|
private readonly schema: Model.Schema,
|
|
23
20
|
private readonly authorizator: Authorizator,
|
|
@@ -58,10 +55,10 @@ export class HasManyToHasOneRelationReducerFieldVisitor implements
|
|
|
58
55
|
const uniqueKeys: (readonly string[])[] = uniqueConstraints
|
|
59
56
|
.map(it => it.filter(it => it !== targetRelation.name))
|
|
60
57
|
.filter(it => it.length > 0)
|
|
61
|
-
.filter(uniqueKey =>
|
|
62
|
-
|
|
63
|
-
acceptFieldVisitor(this.schema, targetEntity.name, it, new FieldAccessVisitor(Acl.Operation.read, this.authorizator))
|
|
64
|
-
|
|
58
|
+
.filter(uniqueKey =>
|
|
59
|
+
uniqueKey
|
|
60
|
+
.every(it => acceptFieldVisitor(this.schema, targetEntity.name, it, new FieldAccessVisitor(Acl.Operation.read, this.authorizator)))
|
|
61
|
+
)
|
|
65
62
|
|
|
66
63
|
const graphQlName = relation.name + 'By'
|
|
67
64
|
const uniqueWhere: GraphQLInputObjectType = new GraphQLInputObjectType({
|
|
@@ -89,7 +86,7 @@ export class HasManyToHasOneRelationReducerFieldVisitor implements
|
|
|
89
86
|
]
|
|
90
87
|
|
|
91
88
|
const composedUnique = uniqueConstraints
|
|
92
|
-
.filter(fields => fields.length === 2) //todo support all uniques
|
|
89
|
+
.filter(fields => fields.length === 2) // todo support all uniques
|
|
93
90
|
.filter(fields => fields.includes(targetRelation.name))
|
|
94
91
|
.map(fields => fields.filter(it => it !== targetRelation.name))
|
|
95
92
|
.map(fields => fields[0])
|
|
@@ -98,7 +95,6 @@ export class HasManyToHasOneRelationReducerFieldVisitor implements
|
|
|
98
95
|
.map(fields => fields[0])
|
|
99
96
|
.filter(it => it !== targetRelation.name)
|
|
100
97
|
|
|
101
|
-
|
|
102
98
|
const existing = new Set<string>()
|
|
103
99
|
return [...composedUnique, ...singleUnique]
|
|
104
100
|
.filter(field =>
|
|
@@ -107,7 +103,7 @@ export class HasManyToHasOneRelationReducerFieldVisitor implements
|
|
|
107
103
|
targetEntity.name,
|
|
108
104
|
field,
|
|
109
105
|
new FieldAccessVisitor(Acl.Operation.read, this.authorizator),
|
|
110
|
-
)
|
|
106
|
+
)
|
|
111
107
|
)
|
|
112
108
|
.map<Result | null>(fieldName => {
|
|
113
109
|
if (existing.has(fieldName)) {
|
|
@@ -116,7 +112,7 @@ export class HasManyToHasOneRelationReducerFieldVisitor implements
|
|
|
116
112
|
existing.add(fieldName)
|
|
117
113
|
const graphQlName = relation.name + GqlTypeName`By${fieldName}`
|
|
118
114
|
const uniqueWhere: GraphQLInputObjectType = new GraphQLInputObjectType({
|
|
119
|
-
//todo this can be simplified to ${targetEntity.name}By${fieldName}, but singleton must be used
|
|
115
|
+
// todo this can be simplified to ${targetEntity.name}By${fieldName}, but singleton must be used
|
|
120
116
|
name: GqlTypeName`${entity.name}${relation.name}By${fieldName}UniqueWhere`,
|
|
121
117
|
fields: () => {
|
|
122
118
|
return this.whereTypeProvider.getUniqueWhereFields(targetEntity, [[fieldName]])
|
|
@@ -2,10 +2,9 @@ import { Input, Model } from '@contember/schema'
|
|
|
2
2
|
import { GroupedCounts, Mapper, RelationFetcher } from '../../mapper'
|
|
3
3
|
import { ObjectNode } from '../../inputProcessing'
|
|
4
4
|
|
|
5
|
-
export class PaginatedHasManyCountVisitor
|
|
6
|
-
Model.ColumnVisitor<Promise<GroupedCounts>>,
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export class PaginatedHasManyCountVisitor
|
|
6
|
+
implements Model.ColumnVisitor<Promise<GroupedCounts>>, Model.RelationByTypeVisitor<Promise<GroupedCounts>>
|
|
7
|
+
{
|
|
9
8
|
constructor(
|
|
10
9
|
private readonly ids: Input.PrimaryValue[],
|
|
11
10
|
private readonly objectNode: ObjectNode<Input.PaginationQueryInput>,
|
|
@@ -29,7 +29,7 @@ export class PaginatedHasManyExecutionHandler implements SelectExecutionHandler<
|
|
|
29
29
|
entity,
|
|
30
30
|
objectNode.extensions.relationName,
|
|
31
31
|
new PaginatedHasManyCountVisitor(ids, objectNode, this.relationFetcher, mapper, context.relationPath),
|
|
32
|
-
|
|
32
|
+
)
|
|
33
33
|
: {}
|
|
34
34
|
|
|
35
35
|
const nodes = pagination.nodeField
|
|
@@ -38,7 +38,7 @@ export class PaginatedHasManyExecutionHandler implements SelectExecutionHandler<
|
|
|
38
38
|
entity,
|
|
39
39
|
objectNode.extensions.relationName,
|
|
40
40
|
new PaginatedHasManyNodesVisitor(ids, pagination.nodeField, this.relationFetcher, mapper, context.relationPath),
|
|
41
|
-
|
|
41
|
+
)
|
|
42
42
|
: undefined
|
|
43
43
|
const result = new Map<Input.PrimaryValue, any>()
|
|
44
44
|
for (const id of ids) {
|
|
@@ -9,13 +9,10 @@ type Result = [
|
|
|
9
9
|
string,
|
|
10
10
|
GraphQLFieldConfig<any, any> & {
|
|
11
11
|
extensions: PaginatedHasManyFieldProviderExtension
|
|
12
|
-
}
|
|
12
|
+
},
|
|
13
13
|
]
|
|
14
14
|
|
|
15
|
-
export class PaginatedHasManyFieldProviderVisitor implements
|
|
16
|
-
Model.ColumnVisitor<Result[]>,
|
|
17
|
-
Model.RelationByTypeVisitor<Result[]> {
|
|
18
|
-
|
|
15
|
+
export class PaginatedHasManyFieldProviderVisitor implements Model.ColumnVisitor<Result[]>, Model.RelationByTypeVisitor<Result[]> {
|
|
19
16
|
constructor(private readonly paginatedFieldFactory: PaginatedFieldConfigFactory) {}
|
|
20
17
|
|
|
21
18
|
visitOneHasMany({ targetEntity, relation }: Model.OneHasManyContext) {
|
|
@@ -2,10 +2,9 @@ import { Input, Model } from '@contember/schema'
|
|
|
2
2
|
import { Mapper, RelationFetcher, SelectGroupedObjects } from '../../mapper'
|
|
3
3
|
import { ObjectNode } from '../../inputProcessing'
|
|
4
4
|
|
|
5
|
-
export class PaginatedHasManyNodesVisitor
|
|
6
|
-
Model.ColumnVisitor<Promise<SelectGroupedObjects>>,
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export class PaginatedHasManyNodesVisitor
|
|
6
|
+
implements Model.ColumnVisitor<Promise<SelectGroupedObjects>>, Model.RelationByTypeVisitor<Promise<SelectGroupedObjects>>
|
|
7
|
+
{
|
|
9
8
|
constructor(
|
|
10
9
|
private readonly ids: Input.PrimaryValue[],
|
|
11
10
|
private readonly objectNode: ObjectNode<Input.PaginationQueryInput>,
|