@wildo-ai/saas-backend-lib 1.1.0 → 1.1.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/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts +14 -3
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +115 -22
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts +3 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js +8 -3
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts +11 -0
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js +11 -2
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +6 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js +16 -0
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts +20 -6
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +88 -32
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts +3 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js +32 -7
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts +8 -5
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +31 -0
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +127 -5
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts +71 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +62 -2
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +21 -0
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +126 -4
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts +3 -26
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js +3 -68
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +4 -2
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +6 -6
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +38 -0
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +40 -0
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +20 -0
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +28 -0
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +12 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +118 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +8 -5
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +14 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.js +7 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.js.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.d.ts +4 -0
- package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts +10 -1
- package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.utils.js +13 -2
- package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts +2 -2
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js +2 -2
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js.map +1 -1
- package/dist/esm/databases/models/filter.backend.schemas.js +2 -2
- package/dist/esm/databases/models/filter.backend.schemas.js.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js +20 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js.map +1 -1
- package/dist/esm/databases/services/redis.service.d.ts +27 -0
- package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/redis.service.js +29 -0
- package/dist/esm/databases/services/redis.service.js.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.js +5 -0
- package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts +41 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js +40 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts +64 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js +193 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js.map +1 -0
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +13 -2
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +8 -2
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.js +7 -1
- package/dist/esm/external-data/external-data-transform.backend.js.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts +2 -0
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js +13 -0
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +14 -0
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +6 -0
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
- package/dist/esm/files/controllers/file.controller.d.ts +24 -1
- package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.js +66 -2
- package/dist/esm/files/controllers/file.controller.js.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts +17 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js +1 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +5 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +42 -3
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts +18 -0
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.js +36 -28
- package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +163 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.js +442 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -0
- package/dist/esm/files/services/files.backend.service.d.ts +19 -0
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/files.backend.service.js +78 -15
- package/dist/esm/files/services/files.backend.service.js.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.js +12 -0
- package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +5 -5
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts +79 -0
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.js +319 -42
- package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts +151 -41
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +300 -139
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
- package/dist/esm/index.d.ts +4 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +14 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inject/models/container.d.ts.map +1 -1
- package/dist/esm/inject/models/container.js +4 -0
- package/dist/esm/inject/models/container.js.map +1 -1
- package/dist/esm/inject/models/service-types.d.ts +3 -0
- package/dist/esm/inject/models/service-types.d.ts.map +1 -1
- package/dist/esm/inject/models/service-types.js +2 -0
- package/dist/esm/inject/models/service-types.js.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
- package/dist/esm/mcp/controllers/mcp.controller.js +12 -4
- package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts +34 -0
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js +42 -0
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +29 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.js +131 -3
- package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts +64 -2
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +130 -6
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +9 -0
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +11 -36
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +9 -7
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts +5 -5
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js +14 -13
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts +2 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +2 -2
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +9 -7
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js +4 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.js +56 -7
- package/dist/esm/requests/service/websocket.service.js.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +2 -0
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
- package/dist/esm/resources/services/resource-id.backend.service.js +3 -3
- package/dist/esm/resources/services/resource-id.backend.service.js.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.js +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js +13 -7
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts +28 -0
- package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.js +82 -0
- package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts +3 -23
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js +20 -45
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts +9 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +9 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js +5 -3
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +25 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +55 -4
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js +24 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js.map +1 -1
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts +117 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js +104 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js.map +1 -0
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +101 -6
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +210 -30
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts +18 -1
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js +110 -74
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts +22 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js +22 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js.map +1 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts +17 -3
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js +12 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +20 -0
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +58 -5
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.js +1 -18
- package/dist/esm/security/jwt/services/jwt.backend.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +15 -9
- package/dist/esm/.builder.pid +0 -9
package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ import { ExecutionContextHandlerBackendService } from '../../../runtime/services
|
|
|
18
18
|
import { RepositoriesRegistryHandlerBackendService } from '../../../base-classes/services/repositories/repositories-registry-handler.backend.service';
|
|
19
19
|
import { ResourceOperationHelperBackendService } from '../../../base-classes/services/resource-operations-helper.backend.service';
|
|
20
20
|
import { FileFieldDetectionBackendService } from '../../../files/services/file-field-detection.backend.service';
|
|
21
|
+
import { FileUploadGrantBackendService } from '../../../files/services/file-upload-grant.backend.service';
|
|
21
22
|
import { ResourceFileUploadHandlerBackendService } from '../../../files/handlers/resource-file-upload-handler.backend.service';
|
|
22
23
|
import { AuditLogsBackendService } from '../../../compliance/audit-trails/services/audit-logs.backend.service';
|
|
23
24
|
import { AnonymousSessionBackendService } from '../../../security/authentications/services/anonymous-session.backend.service';
|
|
@@ -58,13 +59,14 @@ export declare class ControllersRegistryHandlerBackendService {
|
|
|
58
59
|
private readonly anonymousSessionService;
|
|
59
60
|
private readonly appConfigService;
|
|
60
61
|
private readonly rateLimitService;
|
|
62
|
+
private readonly fileUploadGrantService;
|
|
61
63
|
private readonly controllers;
|
|
62
64
|
private readonly customControllers;
|
|
63
65
|
private readonly controllerOperationsMap;
|
|
64
66
|
private readonly masterRouter;
|
|
65
67
|
private isInitialized;
|
|
66
68
|
protected logDebug: (message: string, context?: Record<string, unknown>) => void;
|
|
67
|
-
constructor(servicesRegistry: ServicesRegistryHandlerBackendService, logger: LoggerService, errorBuilder: ErrorBuilderBackendService, errorHandler: ErrorHandlerService, jwtService: JwtBackendService, authorizationsService: AuthorizationsBackendService, executionContextCreator: ExecutionContextCreatorBackendService, executionContextHandler: ExecutionContextHandlerBackendService, resourcesRegistry: ResourcesRegistryBackendService, repositoriesRegistry: RepositoriesRegistryHandlerBackendService, resourceOperationHelper: ResourceOperationHelperBackendService, fileFieldDetection: FileFieldDetectionBackendService, fileUploadHandler: ResourceFileUploadHandlerBackendService, auditLogsService: AuditLogsBackendService, anonymousSessionService: AnonymousSessionBackendService, appConfigService: AppConfigurationService, rateLimitService: RateLimitBackendService);
|
|
69
|
+
constructor(servicesRegistry: ServicesRegistryHandlerBackendService, logger: LoggerService, errorBuilder: ErrorBuilderBackendService, errorHandler: ErrorHandlerService, jwtService: JwtBackendService, authorizationsService: AuthorizationsBackendService, executionContextCreator: ExecutionContextCreatorBackendService, executionContextHandler: ExecutionContextHandlerBackendService, resourcesRegistry: ResourcesRegistryBackendService, repositoriesRegistry: RepositoriesRegistryHandlerBackendService, resourceOperationHelper: ResourceOperationHelperBackendService, fileFieldDetection: FileFieldDetectionBackendService, fileUploadHandler: ResourceFileUploadHandlerBackendService, auditLogsService: AuditLogsBackendService, anonymousSessionService: AnonymousSessionBackendService, appConfigService: AppConfigurationService, rateLimitService: RateLimitBackendService, fileUploadGrantService: FileUploadGrantBackendService);
|
|
68
70
|
/**
|
|
69
71
|
* Initialize the registry with resource configurations and optional custom controllers
|
|
70
72
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controllers-registry-handler.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/base-classes/services/controllers/controllers-registry-handler.backend.service.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,KAAK,EAGV,mCAAmC,EAEpC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,YAAY,EAEZ,qBAAqB,EAKrB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,qCAAqC,EAAE,MAAM,6FAA6F,CAAC;AACpJ,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAC9G,OAAO,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,8DAA8D,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,oFAAoF,CAAC;AAClI,OAAO,EAAE,qCAAqC,EAAE,MAAM,+EAA+E,CAAC;AACtI,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAC3H,OAAO,EAAE,qCAAqC,EAAE,MAAM,+EAA+E,CAAC;AACtI,OAAO,EAAE,yCAAyC,EAAE,MAAM,qGAAqG,CAAC;AAChK,OAAO,EAAE,qCAAqC,EAAE,MAAM,qFAAqF,CAAC;AAC5I,OAAO,EAAE,gCAAgC,EAAE,MAAM,wEAAwE,CAAC;AAC1H,OAAO,EAAE,uCAAuC,EAAE,MAAM,gFAAgF,CAAC;AACzI,OAAO,EAAE,uBAAuB,EAAE,MAAM,gFAAgF,CAAC;AACzH,OAAO,EAAE,8BAA8B,EAAE,MAAM,wFAAwF,CAAC;AACxI,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAC/G,OAAO,EAAE,uBAAuB,EAAE,MAAM,+DAA+D,CAAC;AAExG;;;;;;;;;;;;;;;;GAgBG;AAEH,qBACa,wCAAwC;IAcU,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACV,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IACvB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtB,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IACvB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACzC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAC1B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"controllers-registry-handler.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/base-classes/services/controllers/controllers-registry-handler.backend.service.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js
CHANGED
|
@@ -29,6 +29,7 @@ import { ExecutionContextHandlerBackendService } from '../../../runtime/services
|
|
|
29
29
|
import { RepositoriesRegistryHandlerBackendService } from '../../../base-classes/services/repositories/repositories-registry-handler.backend.service.js';
|
|
30
30
|
import { ResourceOperationHelperBackendService } from '../../../base-classes/services/resource-operations-helper.backend.service.js';
|
|
31
31
|
import { FileFieldDetectionBackendService } from '../../../files/services/file-field-detection.backend.service.js';
|
|
32
|
+
import { FileUploadGrantBackendService } from '../../../files/services/file-upload-grant.backend.service.js';
|
|
32
33
|
import { ResourceFileUploadHandlerBackendService } from '../../../files/handlers/resource-file-upload-handler.backend.service.js';
|
|
33
34
|
import { AuditLogsBackendService } from '../../../compliance/audit-trails/services/audit-logs.backend.service.js';
|
|
34
35
|
import { AnonymousSessionBackendService } from '../../../security/authentications/services/anonymous-session.backend.service.js';
|
|
@@ -69,13 +70,14 @@ let ControllersRegistryHandlerBackendService = class ControllersRegistryHandlerB
|
|
|
69
70
|
anonymousSessionService;
|
|
70
71
|
appConfigService;
|
|
71
72
|
rateLimitService;
|
|
73
|
+
fileUploadGrantService;
|
|
72
74
|
controllers;
|
|
73
75
|
customControllers;
|
|
74
76
|
controllerOperationsMap;
|
|
75
77
|
masterRouter;
|
|
76
78
|
isInitialized = false;
|
|
77
79
|
logDebug;
|
|
78
|
-
constructor(servicesRegistry, logger, errorBuilder, errorHandler, jwtService, authorizationsService, executionContextCreator, executionContextHandler, resourcesRegistry, repositoriesRegistry, resourceOperationHelper, fileFieldDetection, fileUploadHandler, auditLogsService, anonymousSessionService, appConfigService, rateLimitService) {
|
|
80
|
+
constructor(servicesRegistry, logger, errorBuilder, errorHandler, jwtService, authorizationsService, executionContextCreator, executionContextHandler, resourcesRegistry, repositoriesRegistry, resourceOperationHelper, fileFieldDetection, fileUploadHandler, auditLogsService, anonymousSessionService, appConfigService, rateLimitService, fileUploadGrantService) {
|
|
79
81
|
this.servicesRegistry = servicesRegistry;
|
|
80
82
|
this.logger = logger;
|
|
81
83
|
this.errorBuilder = errorBuilder;
|
|
@@ -93,6 +95,7 @@ let ControllersRegistryHandlerBackendService = class ControllersRegistryHandlerB
|
|
|
93
95
|
this.anonymousSessionService = anonymousSessionService;
|
|
94
96
|
this.appConfigService = appConfigService;
|
|
95
97
|
this.rateLimitService = rateLimitService;
|
|
98
|
+
this.fileUploadGrantService = fileUploadGrantService;
|
|
96
99
|
this.controllers = new Map();
|
|
97
100
|
this.customControllers = new Map();
|
|
98
101
|
this.controllerOperationsMap = new Map();
|
|
@@ -157,7 +160,7 @@ let ControllersRegistryHandlerBackendService = class ControllersRegistryHandlerB
|
|
|
157
160
|
return;
|
|
158
161
|
}
|
|
159
162
|
// Create controller instance using static factory method
|
|
160
|
-
const controller = ControllerResourceBackendService.createInstance(resourceType, this.logger, this.errorBuilder, this.errorHandler, this.jwtService, this.authorizationsService, this.resourcesRegistry, this.executionContextCreator, this.executionContextHandler, this.repositoriesRegistry, this.resourceOperationHelper, this.servicesRegistry, this.fileFieldDetection, this.fileUploadHandler, this.auditLogsService, this.anonymousSessionService, this.appConfigService, this.rateLimitService);
|
|
163
|
+
const controller = ControllerResourceBackendService.createInstance(resourceType, this.logger, this.errorBuilder, this.errorHandler, this.jwtService, this.authorizationsService, this.resourcesRegistry, this.executionContextCreator, this.executionContextHandler, this.repositoriesRegistry, this.resourceOperationHelper, this.servicesRegistry, this.fileFieldDetection, this.fileUploadHandler, this.auditLogsService, this.anonymousSessionService, this.appConfigService, this.rateLimitService, this.fileUploadGrantService);
|
|
161
164
|
// Store controller
|
|
162
165
|
this.controllers.set(resourceType, controller);
|
|
163
166
|
this.logDebug('Controller created successfully', {
|
|
@@ -349,6 +352,7 @@ ControllersRegistryHandlerBackendService = __decorate([
|
|
|
349
352
|
__param(14, inject(SAAS_SERVICE_TYPES.AnonymousSessionService)),
|
|
350
353
|
__param(15, inject(SAAS_SERVICE_TYPES.AppConfigService)),
|
|
351
354
|
__param(16, inject(SAAS_SERVICE_TYPES.RateLimitBackendService)),
|
|
355
|
+
__param(17, inject(SAAS_SERVICE_TYPES.FileUploadGrantService)),
|
|
352
356
|
__metadata("design:paramtypes", [ServicesRegistryHandlerBackendService,
|
|
353
357
|
LoggerService,
|
|
354
358
|
ErrorBuilderBackendService,
|
|
@@ -365,7 +369,8 @@ ControllersRegistryHandlerBackendService = __decorate([
|
|
|
365
369
|
AuditLogsBackendService,
|
|
366
370
|
AnonymousSessionBackendService,
|
|
367
371
|
AppConfigurationService,
|
|
368
|
-
RateLimitBackendService
|
|
372
|
+
RateLimitBackendService,
|
|
373
|
+
FileUploadGrantBackendService])
|
|
369
374
|
], ControllersRegistryHandlerBackendService);
|
|
370
375
|
export { ControllersRegistryHandlerBackendService };
|
|
371
376
|
//# sourceMappingURL=controllers-registry-handler.backend.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controllers-registry-handler.backend.service.js","sourceRoot":"","sources":["../../../../../../src/base-classes/services/controllers/controllers-registry-handler.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata';\nimport { injectable, inject } from 'inversify';\nimport { Router } from 'express';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { describeCaughtError } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport type {\n AnyResourceConfiguration,\n ResourceConfiguration,\n ResourceConfiguration_OperationPath,\n ResourceConfiguration_Operation_UrlInitiatorInfo\n} from '@wildo-ai/saas-models';\nimport {\n ResourceType,\n\n CoreResourceOperation,\n ResourcesConfig_OperationPathUtils,\n ErrorType,\n ErrorCustomMessageReference,\n ResourceOperationVariantType,\n HttpMethod\n} from '@wildo-ai/saas-models';\nimport { EnumLikeType } from '@wildo-ai/zod-decorators';\nimport { ControllerResourceBackendService } from './controller-resource.backend.service';\nimport { AbstractControllerBackendService } from './abstract-controller.backend.service';\nimport { ServicesRegistryHandlerBackendService } from '~wildo-backend-lib/base-classes/services/services/services-registry-handler.backend.service';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport { ErrorHandlerService } from '~wildo-backend-lib/errors/services/error-handler.backend.service';\nimport { JwtBackendService } from '~wildo-backend-lib/security/jwt/services/jwt.backend.service';\nimport { AuthorizationsBackendService } from '~wildo-backend-lib/security/authorizations/services/authorizations.backend.service';\nimport { ExecutionContextCreatorBackendService } from '~wildo-backend-lib/runtime/services/execution-context-creator.backend.service';\nimport { z } from 'zod';\nimport { ResourcesRegistryBackendService } from '~wildo-backend-lib/resources/services/resources-registry.backend.service';\nimport { ExecutionContextHandlerBackendService } from '~wildo-backend-lib/runtime/services/execution-context-handler.backend.service';\nimport { RepositoriesRegistryHandlerBackendService } from '~wildo-backend-lib/base-classes/services/repositories/repositories-registry-handler.backend.service';\nimport { ResourceOperationHelperBackendService } from '~wildo-backend-lib/base-classes/services/resource-operations-helper.backend.service';\nimport { FileFieldDetectionBackendService } from '~wildo-backend-lib/files/services/file-field-detection.backend.service';\nimport { ResourceFileUploadHandlerBackendService } from '~wildo-backend-lib/files/handlers/resource-file-upload-handler.backend.service';\nimport { AuditLogsBackendService } from '~wildo-backend-lib/compliance/audit-trails/services/audit-logs.backend.service';\nimport { AnonymousSessionBackendService } from '~wildo-backend-lib/security/authentications/services/anonymous-session.backend.service';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { RateLimitBackendService } from '~wildo-backend-lib/errors/services/rate-limit.backend.service';\n\n/**\n * Controllers Registry Handler Backend Service\n *\n * Central registry for managing all controller resources in the application.\n * Provides unified Express router registration, middleware management,\n * and HTTP endpoint coordination across all resource controllers.\n *\n * Features:\n * - Resource controller lifecycle management (create, store, retrieve)\n * - Custom controller registration and management\n * - Express router aggregation and registration\n * - Global middleware management\n * - Route discovery and debugging\n * - Cross-controller coordination\n * - HTTP endpoint management\n * - Unified error handling with ErrorBuilderBackendService\n */\n\n@injectable()\nexport class ControllersRegistryHandlerBackendService {\n\n private readonly controllers: Map<ResourceType, ControllerResourceBackendService<any, any, any>>;\n private readonly customControllers: Map<string, AbstractControllerBackendService>;\n private readonly controllerOperationsMap: Map<string, {\n controller: ControllerResourceBackendService<any, any, any>;\n operationPath: ResourceConfiguration_OperationPath<any, any>;\n }>;\n private readonly masterRouter: Router;\n private isInitialized = false;\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.ServicesRegistryHandlerService) private readonly servicesRegistry: ServicesRegistryHandlerBackendService,\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private readonly errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.ErrorHandlerService) private readonly errorHandler: ErrorHandlerService,\n @inject(SAAS_SERVICE_TYPES.JwtBackendService) private readonly jwtService: JwtBackendService,\n @inject(SAAS_SERVICE_TYPES.AuthorizationsService) private readonly authorizationsService: AuthorizationsBackendService,\n @inject(SAAS_SERVICE_TYPES.ExecutionContextCreatorBackendService) private readonly executionContextCreator: ExecutionContextCreatorBackendService,\n @inject(SAAS_SERVICE_TYPES.ExecutionContextHandlerService) private readonly executionContextHandler: ExecutionContextHandlerBackendService,\n @inject(SAAS_SERVICE_TYPES.ResourceRegistryService) private readonly resourcesRegistry: ResourcesRegistryBackendService,\n @inject(SAAS_SERVICE_TYPES.RepositoriesRegistryHandlerService) private readonly repositoriesRegistry: RepositoriesRegistryHandlerBackendService,\n @inject(SAAS_SERVICE_TYPES.ResourceOperationHelperService) private readonly resourceOperationHelper: ResourceOperationHelperBackendService,\n @inject(SAAS_SERVICE_TYPES.FileFieldDetectionService) private readonly fileFieldDetection: FileFieldDetectionBackendService,\n @inject(SAAS_SERVICE_TYPES.ResourceFileUploadHandlerService) private readonly fileUploadHandler: ResourceFileUploadHandlerBackendService,\n @inject(SAAS_SERVICE_TYPES.AuditLogsService) private readonly auditLogsService: AuditLogsBackendService,\n @inject(SAAS_SERVICE_TYPES.AnonymousSessionService) private readonly anonymousSessionService: AnonymousSessionBackendService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService) private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.RateLimitBackendService) private readonly rateLimitService: RateLimitBackendService,\n ) {\n\n this.controllers = new Map();\n this.customControllers = new Map();\n this.controllerOperationsMap = new Map();\n this.masterRouter = Router();\n\n this.logDebug = this.logger.debugByType('ControllersRegistryHandler');\n this.logger.setDebugTypeLogging('ControllersRegistryHandler', false);\n\n this.logDebug('Controllers registry service created');\n }\n\n\n\n\n // ================================\n // Initialization\n // ================================\n\n /**\n * Initialize the registry with resource configurations and optional custom controllers\n *\n * @param customControllers - Optional array of custom controllers to register\n * @param controllerWhiteList - Optional list of resource types to limit controller instantiation to\n */\n public async initialize(\n customControllers?: AbstractControllerBackendService[],\n controllerWhiteList?: string[]\n ): Promise<void> {\n if (this.isInitialized) {\n this.logDebug('Registry already initialized, skipping...');\n return;\n }\n\n const resourceConfigurations: { [key: string]: AnyResourceConfiguration } = this.resourcesRegistry.getResourcesRegistry().resourceConfigurations;\n\n // Filter resource configurations based on whitelist if provided\n let filteredResourceConfigurations: { [key: string]: AnyResourceConfiguration } = resourceConfigurations;\n if (controllerWhiteList ) { //&& controllerWhiteList.length > 0\n filteredResourceConfigurations = {};\n for (const resourceType in resourceConfigurations) {\n if (controllerWhiteList.includes(resourceType)) {\n filteredResourceConfigurations[resourceType] = resourceConfigurations[resourceType];\n }\n }\n\n this.logDebug('Applied controller whitelist filter', { originalResourceCount: resourceConfigurations.size, filteredResourceCount: filteredResourceConfigurations.size, whitelistedResources: controllerWhiteList, filteredResources: Object.keys(filteredResourceConfigurations) });\n }\n\n this.logDebug('Initializing controllers', { resourceCount: Object.keys(filteredResourceConfigurations).length, resourceTypes: Object.keys(filteredResourceConfigurations), customControllerCount: customControllers?.length || 0, controllerWhiteListApplied: controllerWhiteList ? true : false });\n\n // First pass: Create all resource controllers (filtered by whitelist if provided)\n for (const resourceType in filteredResourceConfigurations) {\n try {\n await this.createController(resourceType);\n } catch (error) {\n throw this.errorBuilder.buildError(\n ErrorType.INTERNAL,undefined,\n { customMessageReference: ErrorCustomMessageReference.CONTROLLER_RESOURCE_BUILD_ERROR,\n context: { resourceType, error: describeCaughtError(error)} }\n );\n }\n }\n\n // Second pass: Initialize custom controllers\n if (customControllers && customControllers.length > 0) {\n this.initializeCustomControllers(customControllers);\n }\n\n\n this.registerAllRoutes();\n\n\n this.buildOperationPathsMap();\n\n this.isInitialized = true;\n\n this.logDebug('Controllers registry initialization completed', { controllerCount: this.controllers.size, customControllerCount: this.customControllers.size, operationPathsCount: this.controllerOperationsMap.size });\n }\n\n private async createController(\n resourceType: ResourceType,\n\n ): Promise<void> {\n this.logDebug('Creating controller', { resourceType });\n const resourceConfiguration = this.resourcesRegistry.getResourceConfiguration(resourceType);\n\n // Only create controllers for resources that have URL-bearing operations\n const hasApiCallOperations = resourceConfiguration.operations?.some(\n op => [ResourceOperationVariantType.API_CALL, ResourceOperationVariantType.API_CALL_WITH_CALLBACK].includes(op.variantType)\n );\n\n if (!hasApiCallOperations) {\n this.logDebug('Skipping controller creation - no URL-bearing operations', { resourceType });\n return;\n }\n\n // Create controller instance using static factory method\n const controller = ControllerResourceBackendService.createInstance(\n resourceType,\n this.logger,\n this.errorBuilder,\n this.errorHandler,\n this.jwtService,\n this.authorizationsService,\n this.resourcesRegistry,\n this.executionContextCreator,\n this.executionContextHandler,\n this.repositoriesRegistry,\n this.resourceOperationHelper,\n this.servicesRegistry,\n this.fileFieldDetection,\n this.fileUploadHandler,\n this.auditLogsService,\n this.anonymousSessionService,\n this.appConfigService,\n this.rateLimitService,\n );\n\n // Store controller\n this.controllers.set(resourceType, controller);\n\n this.logDebug('Controller created successfully', {\n resourceType,\n operationsCount: resourceConfiguration.operations?.length || 0\n });\n }\n\n\n private initializeCustomControllers(customControllers: AbstractControllerBackendService[]): void {\n this.logDebug('Initializing custom controllers', { count: customControllers.length });\n\n customControllers.forEach(controller => {\n const controllerName = controller.getControllerName();\n\n if (this.customControllers.has(controllerName)) {\n throw this.errorBuilder.buildError( ErrorType.INTERNAL, undefined,\n { customMessageReference: ErrorCustomMessageReference.CONTROLLER_CUSTOM_NAME_CONFLICT, context: { controllerName } } );\n }\n\n this.customControllers.set(controllerName, controller);\n\n this.logDebug('Custom controller initialized', { controllerName });\n });\n\n this.logDebug('All custom controllers initialized', { totalCustomControllers: this.customControllers.size });\n }\n\n\n private registerAllRoutes(): void {\n this.logDebug('Registering all controller routes');\n\n\n this.controllers.forEach((controller, resourceType) => {\n const controllerRouter = controller.getRouter();\n\n this.masterRouter.use(controllerRouter);\n\n this.logDebug('Resource controller routes registered', { resourceType, mountPath: '/' });\n });\n\n\n this.customControllers.forEach((controller, controllerName) => {\n const controllerRouter = controller.getRouter();\n\n this.masterRouter.use(controllerRouter);\n\n this.logDebug('Custom controller routes registered', { controllerName, mountPath: '/' });\n });\n\n this.logDebug('All controller routes registered in master router', { resourceControllers: this.controllers.size, customControllers: this.customControllers.size });\n }\n\n private buildOperationPathsMap(): void {\n this.logDebug('Building operation paths map');\n\n let totalOperationPaths = 0;\n\n this.controllers.forEach((controller, resourceType) => {\n const resourceConfiguration = this.resourcesRegistry.getResourceConfiguration(resourceType);\n\n if (!resourceConfiguration.operations) {\n return;\n }\n\n const apiCallOperations = resourceConfiguration.operations.filter(\n op => [ResourceOperationVariantType.API_CALL, ResourceOperationVariantType.API_CALL_WITH_CALLBACK].includes(op.variantType)\n );\n\n apiCallOperations.forEach(operation => {\n const operationPath = ResourcesConfig_OperationPathUtils.extractOperationPath(operation);\n const operationKey = ResourcesConfig_OperationPathUtils.createOperationPathKey(operationPath);\n\n this.controllerOperationsMap.set(operationKey, { controller, operationPath });\n\n totalOperationPaths++;\n });\n });\n\n this.logDebug('Operation paths map built', { totalOperationPaths, operationKeys: Array.from(this.controllerOperationsMap.keys()).slice(0, 5) });\n }\n\n // ================================\n // Getters & Utils\n // ================================\n\n public getController<\n TCustomOperationEnum extends EnumLikeType | undefined = undefined,\n TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined = undefined,\n TMainSchema extends z.ZodTypeAny = z.ZodTypeAny,\n >(\n resourceType: ResourceType\n ): ControllerResourceBackendService<TCustomOperationEnum, TCoreOperationEnum, TMainSchema> | undefined {\n const controller = this.controllers.get(resourceType);\n\n if (!controller) {\n this.logDebug('Controller not found', { resourceType });\n return undefined;\n }\n\n return controller as ControllerResourceBackendService<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>;\n }\n\n public getControllerOrThrow<\n TCustomOperationEnum extends EnumLikeType | undefined = undefined,\n TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined = undefined,\n TMainSchema extends z.ZodTypeAny = z.ZodTypeAny,\n >(\n resourceType: ResourceType\n ): ControllerResourceBackendService<TCustomOperationEnum, TCoreOperationEnum, TMainSchema> {\n const controller = this.getController<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>(resourceType);\n\n if (!controller) {\n throw this.errorBuilder.buildError(\n ErrorType.INTERNAL, undefined,\n { customMessageReference: ErrorCustomMessageReference.CONTROLLER_RESOURCE_NOT_FOUND, context: { resourceType } } );\n }\n\n return controller;\n }\n\n public getCustomController(controllerName: string): AbstractControllerBackendService | undefined {\n const controller = this.customControllers.get(controllerName);\n\n if (!controller) {\n this.logDebug('Custom controller not found', { controllerName });\n return undefined;\n }\n\n return controller;\n }\n\n\n public getCustomControllerOrThrow(controllerName: string): AbstractControllerBackendService {\n const controller = this.getCustomController(controllerName);\n\n if (!controller) {\n throw this.errorBuilder.buildError(\n ErrorType.INTERNAL, undefined,\n { customMessageReference: ErrorCustomMessageReference.CONTROLLER_RESOURCE_NOT_FOUND, context: { controllerName } } );\n }\n\n return controller;\n }\n\n\n public getAllCustomControllers(): Map<string, AbstractControllerBackendService> {\n return new Map(this.customControllers);\n }\n\n public getAvailableOperationPaths(): ResourceConfiguration_OperationPath<any, any>[] {\n return Array.from(this.controllerOperationsMap.values()).map(info => info.operationPath);\n }\n\n\n public hasController(resourceType: ResourceType): boolean {\n return this.controllers.has(resourceType);\n }\n\n public hasCustomController(controllerName: string): boolean {\n return this.customControllers.has(controllerName);\n }\n\n public getMasterRouter(): Router {\n return this.masterRouter;\n }\n\n\n\n // ================================\n // Debug Methods\n // ================================\n\n public getRoutesInfo(): {\n resourceType: ResourceType;\n operationCount: number;\n routes: { method: HttpMethod; url: string; roles: string[] }[];\n }[] {\n const routesInfo: {\n resourceType: ResourceType;\n operationCount: number;\n routes: { method: HttpMethod; url: string; roles: string[] }[];\n }[] = [];\n\n this.controllers.forEach((controller, resourceType) => {\n const resourceConfig = this.resourcesRegistry.getResourceConfiguration(resourceType);\n const apiCallOperations = resourceConfig.operations?.filter(\n op => [ResourceOperationVariantType.API_CALL, ResourceOperationVariantType.API_CALL_WITH_CALLBACK].includes(op.variantType)) || [];\n\n const routes: { method: HttpMethod; url: string; roles: string[] }[] = [];\n apiCallOperations.forEach(operation => {\n // Extract roles from operation variant\n const roles = (operation.roles || []).map(role => String(role));\n\n // URLs are stored in initiatorInfos array\n if ('initiatorInfos' in operation && Array.isArray(operation.initiatorInfos) && 'httpVerb' in operation) {\n const httpVerb = operation.httpVerb as HttpMethod;\n operation.initiatorInfos.forEach((initiatorInfo: ResourceConfiguration_Operation_UrlInitiatorInfo) => {\n routes.push({ method: httpVerb, url: initiatorInfo.url, roles: [...roles] });\n });\n }\n });\n\n routesInfo.push({ resourceType, operationCount: apiCallOperations.length, routes });\n });\n\n return routesInfo;\n }\n\n\n public getDebugInfo(): {\n controllerCount: number;\n customControllerCount: number;\n operationPathsCount: number;\n resourceTypes: ResourceType[];\n customControllerNames: string[];\n totalRoutes: number;\n isInitialized: boolean;\n } {\n const routesInfo = this.getRoutesInfo();\n const totalRoutes = routesInfo.reduce((sum, info) => sum + info.routes.length, 0);\n\n return {\n controllerCount: this.controllers.size,\n customControllerCount: this.customControllers.size,\n operationPathsCount: this.controllerOperationsMap.size,\n resourceTypes: Array.from(this.controllers.keys()),\n customControllerNames: Array.from(this.customControllers.keys()),\n totalRoutes,\n isInitialized: this.isInitialized\n };\n }\n\n public displayAllRoutes(): void {\n this.logDebug('\\n=== 🌐 REGISTERED ROUTES SUMMARY ===\\n');\n\n const routesInfo = this.getRoutesInfo();\n let totalRoutes = 0;\n\n // Display resource controllers\n this.logDebug('📦 RESOURCE CONTROLLERS:');\n routesInfo.forEach(({ resourceType, operationCount, routes }) => {\n this.logDebug(` Resource: ${resourceType}`);\n this.logDebug(` Operations: ${operationCount}`);\n this.logDebug(` Routes (${routes.length}):`);\n\n routes.forEach((route, index) => {\n const rolesStr = route.roles.length > 0 ? `[${route.roles.join(', ')}] ` : '';\n this.logDebug(` ${index + 1}. ${rolesStr}${route.method} ${route.url}`);\n });\n\n totalRoutes += routes.length;\n this.logDebug('');\n });\n\n // Display custom controllers\n if (this.customControllers.size > 0) {\n this.logDebug('🛠️ CUSTOM CONTROLLERS:');\n this.customControllers.forEach((controller, controllerName) => {\n this.logDebug(` Controller: ${controllerName}`);\n const routeInfo = controller.getRouteInfo();\n this.logDebug(` Routes: ${routeInfo.routeCount || 'Unknown (manual tracking needed)'}`);\n this.logDebug('');\n });\n }\n\n this.logDebug(`📊 SUMMARY:`);\n this.logDebug(` Total Resources: ${routesInfo.length}`);\n this.logDebug(` Total Resource Controllers: ${this.controllers.size}`);\n this.logDebug(` Total Custom Controllers: ${this.customControllers.size}`);\n this.logDebug(` Total Routes: ${totalRoutes}`);\n this.logDebug(` Initialized: ${this.isInitialized}`);\n this.logDebug(`=================================\\n`);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"controllers-registry-handler.backend.service.js","sourceRoot":"","sources":["../../../../../../src/base-classes/services/controllers/controllers-registry-handler.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata';\nimport { injectable, inject } from 'inversify';\nimport { Router } from 'express';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { describeCaughtError } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport type {\n AnyResourceConfiguration,\n ResourceConfiguration,\n ResourceConfiguration_OperationPath,\n ResourceConfiguration_Operation_UrlInitiatorInfo\n} from '@wildo-ai/saas-models';\nimport {\n ResourceType,\n\n CoreResourceOperation,\n ResourcesConfig_OperationPathUtils,\n ErrorType,\n ErrorCustomMessageReference,\n ResourceOperationVariantType,\n HttpMethod\n} from '@wildo-ai/saas-models';\nimport { EnumLikeType } from '@wildo-ai/zod-decorators';\nimport { ControllerResourceBackendService } from './controller-resource.backend.service';\nimport { AbstractControllerBackendService } from './abstract-controller.backend.service';\nimport { ServicesRegistryHandlerBackendService } from '~wildo-backend-lib/base-classes/services/services/services-registry-handler.backend.service';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport { ErrorHandlerService } from '~wildo-backend-lib/errors/services/error-handler.backend.service';\nimport { JwtBackendService } from '~wildo-backend-lib/security/jwt/services/jwt.backend.service';\nimport { AuthorizationsBackendService } from '~wildo-backend-lib/security/authorizations/services/authorizations.backend.service';\nimport { ExecutionContextCreatorBackendService } from '~wildo-backend-lib/runtime/services/execution-context-creator.backend.service';\nimport { z } from 'zod';\nimport { ResourcesRegistryBackendService } from '~wildo-backend-lib/resources/services/resources-registry.backend.service';\nimport { ExecutionContextHandlerBackendService } from '~wildo-backend-lib/runtime/services/execution-context-handler.backend.service';\nimport { RepositoriesRegistryHandlerBackendService } from '~wildo-backend-lib/base-classes/services/repositories/repositories-registry-handler.backend.service';\nimport { ResourceOperationHelperBackendService } from '~wildo-backend-lib/base-classes/services/resource-operations-helper.backend.service';\nimport { FileFieldDetectionBackendService } from '~wildo-backend-lib/files/services/file-field-detection.backend.service';\nimport { FileUploadGrantBackendService } from '~wildo-backend-lib/files/services/file-upload-grant.backend.service';\nimport { ResourceFileUploadHandlerBackendService } from '~wildo-backend-lib/files/handlers/resource-file-upload-handler.backend.service';\nimport { AuditLogsBackendService } from '~wildo-backend-lib/compliance/audit-trails/services/audit-logs.backend.service';\nimport { AnonymousSessionBackendService } from '~wildo-backend-lib/security/authentications/services/anonymous-session.backend.service';\nimport { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport { RateLimitBackendService } from '~wildo-backend-lib/errors/services/rate-limit.backend.service';\n\n/**\n * Controllers Registry Handler Backend Service\n *\n * Central registry for managing all controller resources in the application.\n * Provides unified Express router registration, middleware management,\n * and HTTP endpoint coordination across all resource controllers.\n *\n * Features:\n * - Resource controller lifecycle management (create, store, retrieve)\n * - Custom controller registration and management\n * - Express router aggregation and registration\n * - Global middleware management\n * - Route discovery and debugging\n * - Cross-controller coordination\n * - HTTP endpoint management\n * - Unified error handling with ErrorBuilderBackendService\n */\n\n@injectable()\nexport class ControllersRegistryHandlerBackendService {\n\n private readonly controllers: Map<ResourceType, ControllerResourceBackendService<any, any, any>>;\n private readonly customControllers: Map<string, AbstractControllerBackendService>;\n private readonly controllerOperationsMap: Map<string, {\n controller: ControllerResourceBackendService<any, any, any>;\n operationPath: ResourceConfiguration_OperationPath<any, any>;\n }>;\n private readonly masterRouter: Router;\n private isInitialized = false;\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.ServicesRegistryHandlerService) private readonly servicesRegistry: ServicesRegistryHandlerBackendService,\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private readonly errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.ErrorHandlerService) private readonly errorHandler: ErrorHandlerService,\n @inject(SAAS_SERVICE_TYPES.JwtBackendService) private readonly jwtService: JwtBackendService,\n @inject(SAAS_SERVICE_TYPES.AuthorizationsService) private readonly authorizationsService: AuthorizationsBackendService,\n @inject(SAAS_SERVICE_TYPES.ExecutionContextCreatorBackendService) private readonly executionContextCreator: ExecutionContextCreatorBackendService,\n @inject(SAAS_SERVICE_TYPES.ExecutionContextHandlerService) private readonly executionContextHandler: ExecutionContextHandlerBackendService,\n @inject(SAAS_SERVICE_TYPES.ResourceRegistryService) private readonly resourcesRegistry: ResourcesRegistryBackendService,\n @inject(SAAS_SERVICE_TYPES.RepositoriesRegistryHandlerService) private readonly repositoriesRegistry: RepositoriesRegistryHandlerBackendService,\n @inject(SAAS_SERVICE_TYPES.ResourceOperationHelperService) private readonly resourceOperationHelper: ResourceOperationHelperBackendService,\n @inject(SAAS_SERVICE_TYPES.FileFieldDetectionService) private readonly fileFieldDetection: FileFieldDetectionBackendService,\n @inject(SAAS_SERVICE_TYPES.ResourceFileUploadHandlerService) private readonly fileUploadHandler: ResourceFileUploadHandlerBackendService,\n @inject(SAAS_SERVICE_TYPES.AuditLogsService) private readonly auditLogsService: AuditLogsBackendService,\n @inject(SAAS_SERVICE_TYPES.AnonymousSessionService) private readonly anonymousSessionService: AnonymousSessionBackendService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService) private readonly appConfigService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.RateLimitBackendService) private readonly rateLimitService: RateLimitBackendService,\n @inject(SAAS_SERVICE_TYPES.FileUploadGrantService) private readonly fileUploadGrantService: FileUploadGrantBackendService,\n ) {\n\n this.controllers = new Map();\n this.customControllers = new Map();\n this.controllerOperationsMap = new Map();\n this.masterRouter = Router();\n\n this.logDebug = this.logger.debugByType('ControllersRegistryHandler');\n this.logger.setDebugTypeLogging('ControllersRegistryHandler', false);\n\n this.logDebug('Controllers registry service created');\n }\n\n\n\n\n // ================================\n // Initialization\n // ================================\n\n /**\n * Initialize the registry with resource configurations and optional custom controllers\n *\n * @param customControllers - Optional array of custom controllers to register\n * @param controllerWhiteList - Optional list of resource types to limit controller instantiation to\n */\n public async initialize(\n customControllers?: AbstractControllerBackendService[],\n controllerWhiteList?: string[]\n ): Promise<void> {\n if (this.isInitialized) {\n this.logDebug('Registry already initialized, skipping...');\n return;\n }\n\n const resourceConfigurations: { [key: string]: AnyResourceConfiguration } = this.resourcesRegistry.getResourcesRegistry().resourceConfigurations;\n\n // Filter resource configurations based on whitelist if provided\n let filteredResourceConfigurations: { [key: string]: AnyResourceConfiguration } = resourceConfigurations;\n if (controllerWhiteList ) { //&& controllerWhiteList.length > 0\n filteredResourceConfigurations = {};\n for (const resourceType in resourceConfigurations) {\n if (controllerWhiteList.includes(resourceType)) {\n filteredResourceConfigurations[resourceType] = resourceConfigurations[resourceType];\n }\n }\n\n this.logDebug('Applied controller whitelist filter', { originalResourceCount: resourceConfigurations.size, filteredResourceCount: filteredResourceConfigurations.size, whitelistedResources: controllerWhiteList, filteredResources: Object.keys(filteredResourceConfigurations) });\n }\n\n this.logDebug('Initializing controllers', { resourceCount: Object.keys(filteredResourceConfigurations).length, resourceTypes: Object.keys(filteredResourceConfigurations), customControllerCount: customControllers?.length || 0, controllerWhiteListApplied: controllerWhiteList ? true : false });\n\n // First pass: Create all resource controllers (filtered by whitelist if provided)\n for (const resourceType in filteredResourceConfigurations) {\n try {\n await this.createController(resourceType);\n } catch (error) {\n throw this.errorBuilder.buildError(\n ErrorType.INTERNAL,undefined,\n { customMessageReference: ErrorCustomMessageReference.CONTROLLER_RESOURCE_BUILD_ERROR,\n context: { resourceType, error: describeCaughtError(error)} }\n );\n }\n }\n\n // Second pass: Initialize custom controllers\n if (customControllers && customControllers.length > 0) {\n this.initializeCustomControllers(customControllers);\n }\n\n\n this.registerAllRoutes();\n\n\n this.buildOperationPathsMap();\n\n this.isInitialized = true;\n\n this.logDebug('Controllers registry initialization completed', { controllerCount: this.controllers.size, customControllerCount: this.customControllers.size, operationPathsCount: this.controllerOperationsMap.size });\n }\n\n private async createController(\n resourceType: ResourceType,\n\n ): Promise<void> {\n this.logDebug('Creating controller', { resourceType });\n const resourceConfiguration = this.resourcesRegistry.getResourceConfiguration(resourceType);\n\n // Only create controllers for resources that have URL-bearing operations\n const hasApiCallOperations = resourceConfiguration.operations?.some(\n op => [ResourceOperationVariantType.API_CALL, ResourceOperationVariantType.API_CALL_WITH_CALLBACK].includes(op.variantType)\n );\n\n if (!hasApiCallOperations) {\n this.logDebug('Skipping controller creation - no URL-bearing operations', { resourceType });\n return;\n }\n\n // Create controller instance using static factory method\n const controller = ControllerResourceBackendService.createInstance(\n resourceType,\n this.logger,\n this.errorBuilder,\n this.errorHandler,\n this.jwtService,\n this.authorizationsService,\n this.resourcesRegistry,\n this.executionContextCreator,\n this.executionContextHandler,\n this.repositoriesRegistry,\n this.resourceOperationHelper,\n this.servicesRegistry,\n this.fileFieldDetection,\n this.fileUploadHandler,\n this.auditLogsService,\n this.anonymousSessionService,\n this.appConfigService,\n this.rateLimitService,\n this.fileUploadGrantService,\n );\n\n // Store controller\n this.controllers.set(resourceType, controller);\n\n this.logDebug('Controller created successfully', {\n resourceType,\n operationsCount: resourceConfiguration.operations?.length || 0\n });\n }\n\n\n private initializeCustomControllers(customControllers: AbstractControllerBackendService[]): void {\n this.logDebug('Initializing custom controllers', { count: customControllers.length });\n\n customControllers.forEach(controller => {\n const controllerName = controller.getControllerName();\n\n if (this.customControllers.has(controllerName)) {\n throw this.errorBuilder.buildError( ErrorType.INTERNAL, undefined,\n { customMessageReference: ErrorCustomMessageReference.CONTROLLER_CUSTOM_NAME_CONFLICT, context: { controllerName } } );\n }\n\n this.customControllers.set(controllerName, controller);\n\n this.logDebug('Custom controller initialized', { controllerName });\n });\n\n this.logDebug('All custom controllers initialized', { totalCustomControllers: this.customControllers.size });\n }\n\n\n private registerAllRoutes(): void {\n this.logDebug('Registering all controller routes');\n\n\n this.controllers.forEach((controller, resourceType) => {\n const controllerRouter = controller.getRouter();\n\n this.masterRouter.use(controllerRouter);\n\n this.logDebug('Resource controller routes registered', { resourceType, mountPath: '/' });\n });\n\n\n this.customControllers.forEach((controller, controllerName) => {\n const controllerRouter = controller.getRouter();\n\n this.masterRouter.use(controllerRouter);\n\n this.logDebug('Custom controller routes registered', { controllerName, mountPath: '/' });\n });\n\n this.logDebug('All controller routes registered in master router', { resourceControllers: this.controllers.size, customControllers: this.customControllers.size });\n }\n\n private buildOperationPathsMap(): void {\n this.logDebug('Building operation paths map');\n\n let totalOperationPaths = 0;\n\n this.controllers.forEach((controller, resourceType) => {\n const resourceConfiguration = this.resourcesRegistry.getResourceConfiguration(resourceType);\n\n if (!resourceConfiguration.operations) {\n return;\n }\n\n const apiCallOperations = resourceConfiguration.operations.filter(\n op => [ResourceOperationVariantType.API_CALL, ResourceOperationVariantType.API_CALL_WITH_CALLBACK].includes(op.variantType)\n );\n\n apiCallOperations.forEach(operation => {\n const operationPath = ResourcesConfig_OperationPathUtils.extractOperationPath(operation);\n const operationKey = ResourcesConfig_OperationPathUtils.createOperationPathKey(operationPath);\n\n this.controllerOperationsMap.set(operationKey, { controller, operationPath });\n\n totalOperationPaths++;\n });\n });\n\n this.logDebug('Operation paths map built', { totalOperationPaths, operationKeys: Array.from(this.controllerOperationsMap.keys()).slice(0, 5) });\n }\n\n // ================================\n // Getters & Utils\n // ================================\n\n public getController<\n TCustomOperationEnum extends EnumLikeType | undefined = undefined,\n TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined = undefined,\n TMainSchema extends z.ZodTypeAny = z.ZodTypeAny,\n >(\n resourceType: ResourceType\n ): ControllerResourceBackendService<TCustomOperationEnum, TCoreOperationEnum, TMainSchema> | undefined {\n const controller = this.controllers.get(resourceType);\n\n if (!controller) {\n this.logDebug('Controller not found', { resourceType });\n return undefined;\n }\n\n return controller as ControllerResourceBackendService<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>;\n }\n\n public getControllerOrThrow<\n TCustomOperationEnum extends EnumLikeType | undefined = undefined,\n TCoreOperationEnum extends Partial<CoreResourceOperation> | undefined = undefined,\n TMainSchema extends z.ZodTypeAny = z.ZodTypeAny,\n >(\n resourceType: ResourceType\n ): ControllerResourceBackendService<TCustomOperationEnum, TCoreOperationEnum, TMainSchema> {\n const controller = this.getController<TCustomOperationEnum, TCoreOperationEnum, TMainSchema>(resourceType);\n\n if (!controller) {\n throw this.errorBuilder.buildError(\n ErrorType.INTERNAL, undefined,\n { customMessageReference: ErrorCustomMessageReference.CONTROLLER_RESOURCE_NOT_FOUND, context: { resourceType } } );\n }\n\n return controller;\n }\n\n public getCustomController(controllerName: string): AbstractControllerBackendService | undefined {\n const controller = this.customControllers.get(controllerName);\n\n if (!controller) {\n this.logDebug('Custom controller not found', { controllerName });\n return undefined;\n }\n\n return controller;\n }\n\n\n public getCustomControllerOrThrow(controllerName: string): AbstractControllerBackendService {\n const controller = this.getCustomController(controllerName);\n\n if (!controller) {\n throw this.errorBuilder.buildError(\n ErrorType.INTERNAL, undefined,\n { customMessageReference: ErrorCustomMessageReference.CONTROLLER_RESOURCE_NOT_FOUND, context: { controllerName } } );\n }\n\n return controller;\n }\n\n\n public getAllCustomControllers(): Map<string, AbstractControllerBackendService> {\n return new Map(this.customControllers);\n }\n\n public getAvailableOperationPaths(): ResourceConfiguration_OperationPath<any, any>[] {\n return Array.from(this.controllerOperationsMap.values()).map(info => info.operationPath);\n }\n\n\n public hasController(resourceType: ResourceType): boolean {\n return this.controllers.has(resourceType);\n }\n\n public hasCustomController(controllerName: string): boolean {\n return this.customControllers.has(controllerName);\n }\n\n public getMasterRouter(): Router {\n return this.masterRouter;\n }\n\n\n\n // ================================\n // Debug Methods\n // ================================\n\n public getRoutesInfo(): {\n resourceType: ResourceType;\n operationCount: number;\n routes: { method: HttpMethod; url: string; roles: string[] }[];\n }[] {\n const routesInfo: {\n resourceType: ResourceType;\n operationCount: number;\n routes: { method: HttpMethod; url: string; roles: string[] }[];\n }[] = [];\n\n this.controllers.forEach((controller, resourceType) => {\n const resourceConfig = this.resourcesRegistry.getResourceConfiguration(resourceType);\n const apiCallOperations = resourceConfig.operations?.filter(\n op => [ResourceOperationVariantType.API_CALL, ResourceOperationVariantType.API_CALL_WITH_CALLBACK].includes(op.variantType)) || [];\n\n const routes: { method: HttpMethod; url: string; roles: string[] }[] = [];\n apiCallOperations.forEach(operation => {\n // Extract roles from operation variant\n const roles = (operation.roles || []).map(role => String(role));\n\n // URLs are stored in initiatorInfos array\n if ('initiatorInfos' in operation && Array.isArray(operation.initiatorInfos) && 'httpVerb' in operation) {\n const httpVerb = operation.httpVerb as HttpMethod;\n operation.initiatorInfos.forEach((initiatorInfo: ResourceConfiguration_Operation_UrlInitiatorInfo) => {\n routes.push({ method: httpVerb, url: initiatorInfo.url, roles: [...roles] });\n });\n }\n });\n\n routesInfo.push({ resourceType, operationCount: apiCallOperations.length, routes });\n });\n\n return routesInfo;\n }\n\n\n public getDebugInfo(): {\n controllerCount: number;\n customControllerCount: number;\n operationPathsCount: number;\n resourceTypes: ResourceType[];\n customControllerNames: string[];\n totalRoutes: number;\n isInitialized: boolean;\n } {\n const routesInfo = this.getRoutesInfo();\n const totalRoutes = routesInfo.reduce((sum, info) => sum + info.routes.length, 0);\n\n return {\n controllerCount: this.controllers.size,\n customControllerCount: this.customControllers.size,\n operationPathsCount: this.controllerOperationsMap.size,\n resourceTypes: Array.from(this.controllers.keys()),\n customControllerNames: Array.from(this.customControllers.keys()),\n totalRoutes,\n isInitialized: this.isInitialized\n };\n }\n\n public displayAllRoutes(): void {\n this.logDebug('\\n=== 🌐 REGISTERED ROUTES SUMMARY ===\\n');\n\n const routesInfo = this.getRoutesInfo();\n let totalRoutes = 0;\n\n // Display resource controllers\n this.logDebug('📦 RESOURCE CONTROLLERS:');\n routesInfo.forEach(({ resourceType, operationCount, routes }) => {\n this.logDebug(` Resource: ${resourceType}`);\n this.logDebug(` Operations: ${operationCount}`);\n this.logDebug(` Routes (${routes.length}):`);\n\n routes.forEach((route, index) => {\n const rolesStr = route.roles.length > 0 ? `[${route.roles.join(', ')}] ` : '';\n this.logDebug(` ${index + 1}. ${rolesStr}${route.method} ${route.url}`);\n });\n\n totalRoutes += routes.length;\n this.logDebug('');\n });\n\n // Display custom controllers\n if (this.customControllers.size > 0) {\n this.logDebug('🛠️ CUSTOM CONTROLLERS:');\n this.customControllers.forEach((controller, controllerName) => {\n this.logDebug(` Controller: ${controllerName}`);\n const routeInfo = controller.getRouteInfo();\n this.logDebug(` Routes: ${routeInfo.routeCount || 'Unknown (manual tracking needed)'}`);\n this.logDebug('');\n });\n }\n\n this.logDebug(`📊 SUMMARY:`);\n this.logDebug(` Total Resources: ${routesInfo.length}`);\n this.logDebug(` Total Resource Controllers: ${this.controllers.size}`);\n this.logDebug(` Total Custom Controllers: ${this.customControllers.size}`);\n this.logDebug(` Total Routes: ${totalRoutes}`);\n this.logDebug(` Initialized: ${this.isInitialized}`);\n this.logDebug(`=================================\\n`);\n }\n}\n"]}
|
|
@@ -93,4 +93,15 @@ export declare function partitionNullClearedFields(data: Record<string, unknown>
|
|
|
93
93
|
* field-clearing contract, and would look like it simply did not work.
|
|
94
94
|
*/
|
|
95
95
|
export declare const ENGINE_RESERVED_FIELD_NAME_PREFIX = "_";
|
|
96
|
+
/**
|
|
97
|
+
* Is this an engine-owned metadata field rather than an authored resource field?
|
|
98
|
+
*
|
|
99
|
+
* Exported because the same rule governs WRITES, not only field-clearing: a payload built from a
|
|
100
|
+
* READ projection (the data-seeding managed-field overlay is exactly that) carries engine-owned
|
|
101
|
+
* metadata that no caller may write back. `_version` in particular is a PUBLIC read-only field on
|
|
102
|
+
* both adapters — Mongo maps `_version_db_doc` to it, PostgreSQL's `transformPersistenceRow` does
|
|
103
|
+
* the same — and PostgreSQL has no such column, so writing it back is a hard error there and a
|
|
104
|
+
* silent junk write on Mongo.
|
|
105
|
+
*/
|
|
106
|
+
export declare function isEngineReservedFieldName(fieldName: string): boolean;
|
|
96
107
|
//# sourceMappingURL=field-clearing-partition.backend.d.ts.map
|
package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-clearing-partition.backend.d.ts","sourceRoot":"","sources":["../../../../../../src/base-classes/services/repositories/field-clearing-partition.backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,2EAA2E;IAC3E,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B;;;;;;;;;OASG;IACH,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,EAAE,CAAC,CAAC,UAAU,GACvB,kBAAkB,CAwCpB;AAOD;;;;;;;;;GASG;AACH,eAAO,MAAM,iCAAiC,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"field-clearing-partition.backend.d.ts","sourceRoot":"","sources":["../../../../../../src/base-classes/services/repositories/field-clearing-partition.backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,2EAA2E;IAC3E,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B;;;;;;;;;OASG;IACH,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,EAAE,CAAC,CAAC,UAAU,GACvB,kBAAkB,CAwCpB;AAOD;;;;;;;;;GASG;AACH,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEpE"}
|
|
@@ -111,8 +111,17 @@ function fieldIsResolvable(mainSchema, fieldName) {
|
|
|
111
111
|
* field-clearing contract, and would look like it simply did not work.
|
|
112
112
|
*/
|
|
113
113
|
export const ENGINE_RESERVED_FIELD_NAME_PREFIX = '_';
|
|
114
|
-
/**
|
|
115
|
-
|
|
114
|
+
/**
|
|
115
|
+
* Is this an engine-owned metadata field rather than an authored resource field?
|
|
116
|
+
*
|
|
117
|
+
* Exported because the same rule governs WRITES, not only field-clearing: a payload built from a
|
|
118
|
+
* READ projection (the data-seeding managed-field overlay is exactly that) carries engine-owned
|
|
119
|
+
* metadata that no caller may write back. `_version` in particular is a PUBLIC read-only field on
|
|
120
|
+
* both adapters — Mongo maps `_version_db_doc` to it, PostgreSQL's `transformPersistenceRow` does
|
|
121
|
+
* the same — and PostgreSQL has no such column, so writing it back is a hard error there and a
|
|
122
|
+
* silent junk write on Mongo.
|
|
123
|
+
*/
|
|
124
|
+
export function isEngineReservedFieldName(fieldName) {
|
|
116
125
|
return fieldName.startsWith(ENGINE_RESERVED_FIELD_NAME_PREFIX);
|
|
117
126
|
}
|
|
118
127
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-clearing-partition.backend.js","sourceRoot":"","sources":["../../../../../../src/base-classes/services/repositories/field-clearing-partition.backend.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAuBpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAA6B,EAC7B,UAAwB;IAExB,MAAM,YAAY,GAA4B,EAAE,CAAC;IACjD,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,oBAAoB,GAAa,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAChC,SAAS;QACX,CAAC;QAED,gGAAgG;QAChG,6FAA6F;QAC7F,oDAAoD;QACpD,EAAE;QACF,+FAA+F;QAC/F,gGAAgG;QAChG,MAAM;QACN,IAAI,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAChC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;YAC9C,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QAED,IAAI,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;YAC5C,8FAA8F;YAC9F,kCAAkC;YAClC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAChC,SAAS;QACX,CAAC;QAED,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AACnE,CAAC;AAED,mGAAmG;AACnG,SAAS,iBAAiB,CAAC,UAAwB,EAAE,SAAiB;IACpE,OAAO,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,SAAS,CAAC;AACvE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAErD,qFAAqF;AACrF,SAAS,yBAAyB,CAAC,SAAiB;IAClD,OAAO,SAAS,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CAAC,UAAwB,EAAE,SAAiB;IACnE,MAAM,WAAW,GAAG,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAE/B,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC7C,CAAC","sourcesContent":["import { z } from 'zod';\n\nimport { getObjectLikeFieldSchema } from '@wildo-ai/zod-decorators';\n\n/**\n * The result of splitting an UPDATE payload into \"values to write\" and \"fields to clear\".\n */\nexport interface NullClearPartition {\n /** Everything the adapter should WRITE, with clear instructions removed. */\n retainedData: Record<string, unknown>;\n /** Top-level field names the adapter should REMOVE from the stored row. */\n clearedFieldNames: string[];\n /**\n * Fields whose declaration could NOT be resolved from the main schema, and which were therefore\n * cleared on the safe-direction fallback rather than on a known answer.\n *\n * Reported so the fallback is OBSERVABLE. The JSDoc below calls it \"nearly unreachable\", and a\n * claim like that is worth nothing if nothing can contradict it: a main schema that is neither an\n * object nor a union resolves NO field, which would silently convert every authored `.nullish()`\n * null into an absence. The caller logs this; it is never an error, because the fallback direction\n * is always safe to persist.\n */\n unresolvedFieldNames: string[];\n}\n\n/**\n * Split an UPDATE payload into values-to-write and fields-to-clear.\n *\n * # The contract this implements\n *\n * Wildo's UPDATE wire semantics are JSON-Merge-Patch shaped and carry exactly ONE \"no value\"\n * concept:\n *\n * - a key that is **ABSENT** leaves the stored value untouched;\n * - a key whose value is **`null`** means \"this field has no value\".\n *\n * What `null` must PERSIST as is not a caller decision — it is derived here, from the field's own\n * declaration on the resource's main schema:\n *\n * | Declared as | `null` on the wire means | Persisted as | Reads back as |\n * |---|---|---|---|\n * | `.optional()` (rejects null) | clear it | REMOVED (`$unset` / SQL NULL) | absent, on BOTH adapters |\n * | `.nullish()` / `.nullable()` (accepts null) | set it to null | a stored `null` | **adapter-dependent — see below** |\n * | required | — | unreachable: the update DTO already rejected the null with a 400 | — |\n *\n * # The one guarantee this contract does NOT make, stated because it used to claim otherwise\n *\n * **A stored `null` is readable as `null` only on MongoDB.** PostgreSQL's read path\n * (`omitUnsetColumns`) drops EVERY null column — `.nullish()` fields included, deliberately and by\n * that adapter's own design, because a SQL row always has every column and NULL is the only thing an\n * unwritten one can hold. So an AUTH-24-style credential tombstone comes back as `{ passwordHash:\n * null }` on MongoDB and as an ABSENT key on PostgreSQL.\n *\n * That divergence PRE-DATES this contract and is not introduced by it. What this comment previously\n * got wrong was asserting a uniform, adapter-independent guarantee across BOTH rows of the table\n * above; an independent review caught it. The honest statement is narrower and is the one to rely\n * on:\n *\n * - **CLEARING converges.** A cleared field reads back as ABSENT on both adapters. That is the whole\n * of the wire contract, and it is portable.\n * - **The stored-null/absent DISTINCTION does not.** Code that needs to tell \"explicitly nulled\"\n * from \"never set\" is MongoDB-only today. Do not build portable behaviour on it; if that\n * distinction is ever needed portably, it has to be carried by a declared field of its own, not\n * inferred from the storage representation.\n *\n * # Why the distinction is load-bearing rather than cosmetic\n *\n * The READ path re-validates a persisted row against the resource's main schema\n * (`internalDto.parse`). A field declared `.optional()` accepts ABSENCE and REJECTS `null`, so\n * storing a literal `null` in it produces a row that can be written and then cannot be read: the\n * write succeeds and the very same request's response fails with an INTERNAL error. Removing the\n * field instead yields absence, which every optional field accepts by construction.\n *\n * This is not hypothetical — it is the shape of the AUTH-24 defect, where a credential field had to\n * be declared `.nullish()` precisely so a null-clear could survive the output projection.\n *\n * # Adapter neutrality\n *\n * Both resource repositories call this. They are SEPARATE classes with no shared base, so a rule\n * applied in one is a silent bypass in the other; keeping the DECISION here means the adapters only\n * differ in how they execute it (MongoDB `$unset` versus SQL `SET NULL`, which its read path\n * already normalises back to absence).\n *\n * @param data - the validated update payload. Not mutated.\n * @param mainSchema - the resource's main schema (object, or discriminated union for polymorphic\n * resources — union variants are seen through).\n */\nexport function partitionNullClearedFields(\n data: Record<string, unknown>,\n mainSchema: z.ZodTypeAny,\n): NullClearPartition {\n const retainedData: Record<string, unknown> = {};\n const clearedFieldNames: string[] = [];\n const unresolvedFieldNames: string[] = [];\n\n for (const [fieldName, value] of Object.entries(data)) {\n if (value !== null) {\n retainedData[fieldName] = value;\n continue;\n }\n\n // Engine-owned metadata (`_field_meta`, `_version…`) is never an authored resource field and is\n // never a clear instruction. Leaving it in the written payload keeps this partition blind to\n // framework internals rather than guessing at them.\n //\n // Checked BEFORE resolvability on purpose: engine metadata is not declared on the main schema,\n // so the resolvability branch below would otherwise treat it as an unresolvable field and clear\n // it.\n if (isEngineReservedFieldName(fieldName)) {\n retainedData[fieldName] = value;\n continue;\n }\n\n if (!fieldIsResolvable(mainSchema, fieldName)) {\n unresolvedFieldNames.push(fieldName);\n clearedFieldNames.push(fieldName);\n continue;\n }\n\n if (fieldAcceptsNull(mainSchema, fieldName)) {\n // Authored `.nullish()` / `.nullable()`: null IS the value the author asked to store, and the\n // read path validates it happily.\n retainedData[fieldName] = value;\n continue;\n }\n\n clearedFieldNames.push(fieldName);\n }\n\n return { retainedData, clearedFieldNames, unresolvedFieldNames };\n}\n\n/** Can this field's declaration be found on the main schema at all? See `unresolvedFieldNames`. */\nfunction fieldIsResolvable(mainSchema: z.ZodTypeAny, fieldName: string): boolean {\n return getObjectLikeFieldSchema(mainSchema, fieldName) !== undefined;\n}\n\n/**\n * The prefix reserved for engine-owned document metadata (`_id`, `_version`, `_version_db_doc`,\n * `_field_meta`, `__seed`).\n *\n * Named rather than inlined because it IS the rule, not a heuristic that happens to work: the\n * leading underscore is the framework's reserved namespace for fields it owns on every document,\n * and an application resource must not author a field into it. Stated here because the consequence\n * is invisible otherwise — a field named `_note` would be silently exempt from the whole\n * field-clearing contract, and would look like it simply did not work.\n */\nexport const ENGINE_RESERVED_FIELD_NAME_PREFIX = '_';\n\n/** Is this an engine-owned metadata field rather than an authored resource field? */\nfunction isEngineReservedFieldName(fieldName: string): boolean {\n return fieldName.startsWith(ENGINE_RESERVED_FIELD_NAME_PREFIX);\n}\n\n/**\n * Does the resource's main schema accept a literal `null` for this field?\n *\n * An UNRESOLVABLE field is treated as NOT accepting null — i.e. it is cleared rather than stored as\n * null. That fallback is deliberate and is the safe direction: absence parses against every\n * optional declaration, whereas a stored null against a non-nullable one is unreadable. It is also\n * nearly unreachable, because a null only survives to this point after the update DTO has already\n * accepted it for a declared field.\n */\nfunction fieldAcceptsNull(mainSchema: z.ZodTypeAny, fieldName: string): boolean {\n const fieldSchema = getObjectLikeFieldSchema(mainSchema, fieldName);\n if (!fieldSchema) return false;\n\n return fieldSchema.safeParse(null).success;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"field-clearing-partition.backend.js","sourceRoot":"","sources":["../../../../../../src/base-classes/services/repositories/field-clearing-partition.backend.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAuBpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAA6B,EAC7B,UAAwB;IAExB,MAAM,YAAY,GAA4B,EAAE,CAAC;IACjD,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,oBAAoB,GAAa,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAChC,SAAS;QACX,CAAC;QAED,gGAAgG;QAChG,6FAA6F;QAC7F,oDAAoD;QACpD,EAAE;QACF,+FAA+F;QAC/F,gGAAgG;QAChG,MAAM;QACN,IAAI,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAChC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;YAC9C,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QAED,IAAI,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;YAC5C,8FAA8F;YAC9F,kCAAkC;YAClC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAChC,SAAS;QACX,CAAC;QAED,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AACnE,CAAC;AAED,mGAAmG;AACnG,SAAS,iBAAiB,CAAC,UAAwB,EAAE,SAAiB;IACpE,OAAO,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,SAAS,CAAC;AACvE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,OAAO,SAAS,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CAAC,UAAwB,EAAE,SAAiB;IACnE,MAAM,WAAW,GAAG,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAE/B,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC7C,CAAC","sourcesContent":["import { z } from 'zod';\n\nimport { getObjectLikeFieldSchema } from '@wildo-ai/zod-decorators';\n\n/**\n * The result of splitting an UPDATE payload into \"values to write\" and \"fields to clear\".\n */\nexport interface NullClearPartition {\n /** Everything the adapter should WRITE, with clear instructions removed. */\n retainedData: Record<string, unknown>;\n /** Top-level field names the adapter should REMOVE from the stored row. */\n clearedFieldNames: string[];\n /**\n * Fields whose declaration could NOT be resolved from the main schema, and which were therefore\n * cleared on the safe-direction fallback rather than on a known answer.\n *\n * Reported so the fallback is OBSERVABLE. The JSDoc below calls it \"nearly unreachable\", and a\n * claim like that is worth nothing if nothing can contradict it: a main schema that is neither an\n * object nor a union resolves NO field, which would silently convert every authored `.nullish()`\n * null into an absence. The caller logs this; it is never an error, because the fallback direction\n * is always safe to persist.\n */\n unresolvedFieldNames: string[];\n}\n\n/**\n * Split an UPDATE payload into values-to-write and fields-to-clear.\n *\n * # The contract this implements\n *\n * Wildo's UPDATE wire semantics are JSON-Merge-Patch shaped and carry exactly ONE \"no value\"\n * concept:\n *\n * - a key that is **ABSENT** leaves the stored value untouched;\n * - a key whose value is **`null`** means \"this field has no value\".\n *\n * What `null` must PERSIST as is not a caller decision — it is derived here, from the field's own\n * declaration on the resource's main schema:\n *\n * | Declared as | `null` on the wire means | Persisted as | Reads back as |\n * |---|---|---|---|\n * | `.optional()` (rejects null) | clear it | REMOVED (`$unset` / SQL NULL) | absent, on BOTH adapters |\n * | `.nullish()` / `.nullable()` (accepts null) | set it to null | a stored `null` | **adapter-dependent — see below** |\n * | required | — | unreachable: the update DTO already rejected the null with a 400 | — |\n *\n * # The one guarantee this contract does NOT make, stated because it used to claim otherwise\n *\n * **A stored `null` is readable as `null` only on MongoDB.** PostgreSQL's read path\n * (`omitUnsetColumns`) drops EVERY null column — `.nullish()` fields included, deliberately and by\n * that adapter's own design, because a SQL row always has every column and NULL is the only thing an\n * unwritten one can hold. So an AUTH-24-style credential tombstone comes back as `{ passwordHash:\n * null }` on MongoDB and as an ABSENT key on PostgreSQL.\n *\n * That divergence PRE-DATES this contract and is not introduced by it. What this comment previously\n * got wrong was asserting a uniform, adapter-independent guarantee across BOTH rows of the table\n * above; an independent review caught it. The honest statement is narrower and is the one to rely\n * on:\n *\n * - **CLEARING converges.** A cleared field reads back as ABSENT on both adapters. That is the whole\n * of the wire contract, and it is portable.\n * - **The stored-null/absent DISTINCTION does not.** Code that needs to tell \"explicitly nulled\"\n * from \"never set\" is MongoDB-only today. Do not build portable behaviour on it; if that\n * distinction is ever needed portably, it has to be carried by a declared field of its own, not\n * inferred from the storage representation.\n *\n * # Why the distinction is load-bearing rather than cosmetic\n *\n * The READ path re-validates a persisted row against the resource's main schema\n * (`internalDto.parse`). A field declared `.optional()` accepts ABSENCE and REJECTS `null`, so\n * storing a literal `null` in it produces a row that can be written and then cannot be read: the\n * write succeeds and the very same request's response fails with an INTERNAL error. Removing the\n * field instead yields absence, which every optional field accepts by construction.\n *\n * This is not hypothetical — it is the shape of the AUTH-24 defect, where a credential field had to\n * be declared `.nullish()` precisely so a null-clear could survive the output projection.\n *\n * # Adapter neutrality\n *\n * Both resource repositories call this. They are SEPARATE classes with no shared base, so a rule\n * applied in one is a silent bypass in the other; keeping the DECISION here means the adapters only\n * differ in how they execute it (MongoDB `$unset` versus SQL `SET NULL`, which its read path\n * already normalises back to absence).\n *\n * @param data - the validated update payload. Not mutated.\n * @param mainSchema - the resource's main schema (object, or discriminated union for polymorphic\n * resources — union variants are seen through).\n */\nexport function partitionNullClearedFields(\n data: Record<string, unknown>,\n mainSchema: z.ZodTypeAny,\n): NullClearPartition {\n const retainedData: Record<string, unknown> = {};\n const clearedFieldNames: string[] = [];\n const unresolvedFieldNames: string[] = [];\n\n for (const [fieldName, value] of Object.entries(data)) {\n if (value !== null) {\n retainedData[fieldName] = value;\n continue;\n }\n\n // Engine-owned metadata (`_field_meta`, `_version…`) is never an authored resource field and is\n // never a clear instruction. Leaving it in the written payload keeps this partition blind to\n // framework internals rather than guessing at them.\n //\n // Checked BEFORE resolvability on purpose: engine metadata is not declared on the main schema,\n // so the resolvability branch below would otherwise treat it as an unresolvable field and clear\n // it.\n if (isEngineReservedFieldName(fieldName)) {\n retainedData[fieldName] = value;\n continue;\n }\n\n if (!fieldIsResolvable(mainSchema, fieldName)) {\n unresolvedFieldNames.push(fieldName);\n clearedFieldNames.push(fieldName);\n continue;\n }\n\n if (fieldAcceptsNull(mainSchema, fieldName)) {\n // Authored `.nullish()` / `.nullable()`: null IS the value the author asked to store, and the\n // read path validates it happily.\n retainedData[fieldName] = value;\n continue;\n }\n\n clearedFieldNames.push(fieldName);\n }\n\n return { retainedData, clearedFieldNames, unresolvedFieldNames };\n}\n\n/** Can this field's declaration be found on the main schema at all? See `unresolvedFieldNames`. */\nfunction fieldIsResolvable(mainSchema: z.ZodTypeAny, fieldName: string): boolean {\n return getObjectLikeFieldSchema(mainSchema, fieldName) !== undefined;\n}\n\n/**\n * The prefix reserved for engine-owned document metadata (`_id`, `_version`, `_version_db_doc`,\n * `_field_meta`, `__seed`).\n *\n * Named rather than inlined because it IS the rule, not a heuristic that happens to work: the\n * leading underscore is the framework's reserved namespace for fields it owns on every document,\n * and an application resource must not author a field into it. Stated here because the consequence\n * is invisible otherwise — a field named `_note` would be silently exempt from the whole\n * field-clearing contract, and would look like it simply did not work.\n */\nexport const ENGINE_RESERVED_FIELD_NAME_PREFIX = '_';\n\n/**\n * Is this an engine-owned metadata field rather than an authored resource field?\n *\n * Exported because the same rule governs WRITES, not only field-clearing: a payload built from a\n * READ projection (the data-seeding managed-field overlay is exactly that) carries engine-owned\n * metadata that no caller may write back. `_version` in particular is a PUBLIC read-only field on\n * both adapters — Mongo maps `_version_db_doc` to it, PostgreSQL's `transformPersistenceRow` does\n * the same — and PostgreSQL has no such column, so writing it back is a hard error there and a\n * silent junk write on Mongo.\n */\nexport function isEngineReservedFieldName(fieldName: string): boolean {\n return fieldName.startsWith(ENGINE_RESERVED_FIELD_NAME_PREFIX);\n}\n\n/**\n * Does the resource's main schema accept a literal `null` for this field?\n *\n * An UNRESOLVABLE field is treated as NOT accepting null — i.e. it is cleared rather than stored as\n * null. That fallback is deliberate and is the safe direction: absence parses against every\n * optional declaration, whereas a stored null against a non-nullable one is unreadable. It is also\n * nearly unreachable, because a null only survives to this point after the update DTO has already\n * accepted it for a declared field.\n */\nfunction fieldAcceptsNull(mainSchema: z.ZodTypeAny, fieldName: string): boolean {\n const fieldSchema = getObjectLikeFieldSchema(mainSchema, fieldName);\n if (!fieldSchema) return false;\n\n return fieldSchema.safeParse(null).success;\n}\n"]}
|
|
@@ -180,6 +180,7 @@ export declare class HttpApiResourceRepositoryBackendService {
|
|
|
180
180
|
atomicConditionalSet(): Promise<never>;
|
|
181
181
|
atomicGuardedMutation(): Promise<never>;
|
|
182
182
|
updateManyByRawFilter(): Promise<never>;
|
|
183
|
+
deleteManyByRawFilter(): Promise<never>;
|
|
183
184
|
insertRawDocument(): Promise<never>;
|
|
184
185
|
findManyByRawFilter(): Promise<never>;
|
|
185
186
|
countByRawFilter(): Promise<never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-api-resource-repository.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../../src/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAML,kCAAkC,EAGlC,KAAK,YAAY,EACjB,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EACjC,MAAM,uBAAuB,CAAC;AAS/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AACnH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAChI,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qEAAqE,CAAC;AAE5G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qEAAqE,CAAC;AAE7G,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,8BAA8B,CAAC;AAgCtC,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,oCAAoC,CAAC;AAI5C,KAAK,eAAe,GAAG,iBAAiB,GAAG;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;CACxF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM;IAC3C,2BAA2B,CAAC,EAAE,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,uBAAuB,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAC5C,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,GAAG,SAAS,CAAC;AAEd;;;;;GAKG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;aAGlC,YAAY,EAAE,MAAM;aACpB,KAAK,CAAC,EAAE,OAAO;gBAF/B,OAAO,EAAE,MAAM,EACC,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,OAAO;CAKlC;AASD,qBAAa,uCAAuC;IAShD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAbrC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAM;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4C;gBAGnE,YAAY,EAAE,YAAY,EACT,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,0BAA0B,EACxC,gBAAgB,EAAE,+BAA+B,EACjD,sBAAsB,EAAE,6BAA6B,EACrD,SAAS,GAAE,gBAAsC,EACjD,iBAAiB,CAAC,EAAE,wBAAwB;IAqClD,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EACpC,uBAAuB,EAAE,UAAU,CAAC,OAAO,kCAAkC,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,EAClH,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,EACvC,mBAAmB,CAAC,EAAE,GAAG,EACzB,IAAI,CAAC,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAKA,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EACnC,0BAA0B,EAAE,MAAM,EAClC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,EACvC,mBAAmB,CAAC,EAAE,GAAG,EACzB,IAAI,CAAC,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"http-api-resource-repository.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../../src/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -108,7 +108,11 @@ export class HttpApiResourceRepositoryBackendService {
|
|
|
108
108
|
ResourcesConfig_OperationPathUtils.validateOperationRepositoryPathKey(operationRepositoryPathKey);
|
|
109
109
|
const operation = this.operationsMap.get(operationRepositoryPathKey);
|
|
110
110
|
if (!operation) {
|
|
111
|
-
|
|
111
|
+
// The TYPE now agrees with the LABEL this site already carried. It declared
|
|
112
|
+
// `ErrorCustomMessageReference.CONFIGURATION` with `reason: 'operation_not_found_on_http_api_repository'`
|
|
113
|
+
// and typed the same call `NOT_FOUND` — the classification and the label contradicting each
|
|
114
|
+
// other in one expression, where an author had clearly worked out which one was true.
|
|
115
|
+
throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {
|
|
112
116
|
customMessageReference: ErrorCustomMessageReference.CONFIGURATION,
|
|
113
117
|
context: {
|
|
114
118
|
reason: 'operation_not_found_on_http_api_repository',
|
|
@@ -731,6 +735,7 @@ export class HttpApiResourceRepositoryBackendService {
|
|
|
731
735
|
async atomicConditionalSet() { throw this.readOnlyRefusal('atomicConditionalSet'); }
|
|
732
736
|
async atomicGuardedMutation() { throw this.readOnlyRefusal('atomicGuardedMutation'); }
|
|
733
737
|
async updateManyByRawFilter() { throw this.readOnlyRefusal('updateManyByRawFilter'); }
|
|
738
|
+
async deleteManyByRawFilter() { throw this.readOnlyRefusal('deleteManyByRawFilter'); }
|
|
734
739
|
async insertRawDocument() { throw this.readOnlyRefusal('insertRawDocument'); }
|
|
735
740
|
async findManyByRawFilter() { throw this.readOnlyRefusal('findManyByRawFilter (raw filters are refused — T-set only, paper B R1)'); }
|
|
736
741
|
async countByRawFilter() { throw this.readOnlyRefusal('countByRawFilter (raw filters are refused — T-set only, paper B R1)'); }
|