@wildo-ai/saas-backend-lib 1.1.3 → 1.1.4
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/__tests__/fixture-deep-partial.d.ts.map +1 -1
- package/dist/esm/__tests__/integration/redis-integration-gate.d.ts.map +1 -1
- package/dist/esm/__tests__/setup.d.ts.map +1 -1
- package/dist/esm/__tests__/test-container.d.ts.map +1 -1
- package/dist/esm/applications/models/applications.backend.schemas.d.ts.map +1 -1
- package/dist/esm/applications/seeds/application-metadata-defaults.seeds.d.ts.map +1 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
- package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
- package/dist/esm/base-classes/models/repositories.backend.schemas.d.ts.map +1 -1
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts +1 -1
- package/dist/esm/base-classes/services/__tests__/mock-resource-operation-helper.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-custom-execution.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/batches-cronjobs-resource-execution.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +12 -1
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
- package/dist/esm/base-classes/services/batches/resource-retention-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/batches/suspension-reactivation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/abstract-controller.backend.service.d.ts.map +1 -1
- 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.map +1 -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.map +1 -1
- package/dist/esm/base-classes/services/controllers/utils/audit-access-fields.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/utils/operation-response-serializer.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/validate-field-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/__tests__/method-span-scan.guard-helpers.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/__tests__/mock-repositories-registry-handler.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-filter-translation.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +13 -4
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-query.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +17 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-row-projection.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-subject-erasure-effect.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.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/odoo-jsonrpc-compiler.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/rest-json-query-compiler.backend.d.ts.map +1 -1
- 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.map +1 -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-source.backend.port.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +57 -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 +95 -2
- 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.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-guarded-mutation.backend.types.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +5 -2
- 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 +14 -3
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-version-metadata.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/resource-write-integrity.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts +72 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js +88 -0
- package/dist/esm/base-classes/services/repositories/seed-row-default-materialization.backend.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/unique-constraint-conflict-reference.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/resource-operations-helper.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/__tests__/mock-services-registry-handler.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/__tests__/mock-system-access.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/read-only-field-change.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-audit-emission.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation.factory.backend.d.ts.map +1 -1
- 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-server-injected-fields.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-transaction-persistence.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.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 +44 -6
- package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
- package/dist/esm/base-classes/utils/backend-type-utils.d.ts.map +1 -1
- package/dist/esm/base-classes/utils/single-subject-addressing.backend.utils.d.ts.map +1 -1
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -1
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -1
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -1
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -1
- package/dist/esm/billing/services/back-office/abstract-billing.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-feature-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +1 -1
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +5 -4
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/billing-state.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/billing-state.backend.service.js +11 -1
- package/dist/esm/billing/services/back-office/billing-state.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/billing-subject-erasure-effect.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
- package/dist/esm/billing/services/billing.utils.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +32 -0
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +32 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/credit-pool.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +9 -6
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +9 -6
- package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-capability-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +50 -3
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
- package/dist/esm/billing/testing/billing-test-fixtures.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
- package/dist/esm/charts/controllers/chart.backend.controller.d.ts.map +1 -1
- package/dist/esm/charts/services/chart-registry.backend.service.d.ts +80 -7
- package/dist/esm/charts/services/chart-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/charts/services/chart-registry.backend.service.js +115 -8
- package/dist/esm/charts/services/chart-registry.backend.service.js.map +1 -1
- package/dist/esm/companion-exports.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/audit-logs.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/immudb-audit-reconcile.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/siem-webhook-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/__tests__/mock-audit-logs.service.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +107 -4
- 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 +176 -5
- package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.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 +21 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-class-mapping.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-dictionary.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-ocsf-projection.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/utils/siem-projection-contract.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/utils/audit-actor.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/utils/layer2-audit-provider-boot-diagnostic.backend.utils.d.ts.map +1 -1
- package/dist/esm/compliance/index.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/retention-hide-predicate.backend.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/services/subject-erasure-external-effects.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/privacy/services/subject-session-revocation.backend.service.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
- package/dist/esm/config/bootstrap/minion-initialization-projection.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js +3 -0
- package/dist/esm/config/bootstrap/runtime-principal-attestation.backend.service.js.map +1 -1
- package/dist/esm/config/bootstrap/runtime-principal.backend.service.d.ts.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/config/models/app-config-secrets.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend-authored.definitions.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.d.ts +4 -4
- package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/app-env-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts +36 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.js +36 -0
- package/dist/esm/config/models/apps-manager-transport.backend.definitions.js.map +1 -0
- package/dist/esm/config/models/config-mutation-boundary.utils.d.ts.map +1 -1
- package/dist/esm/config/models/postgresql-env-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/runtime-topology.backend.contracts.d.ts.map +1 -1
- package/dist/esm/config/services/__tests__/mock-app-configuration.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.js +3 -0
- package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -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.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +12 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js +28 -0
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
- package/dist/esm/data-seeding/batches/data-seeding-run-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/batches/data-seeding-scheduled-rerun.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.contracts.d.ts.map +1 -1
- package/dist/esm/data-seeding/controllers/data-seeding-admin.backend.controller.d.ts.map +1 -1
- package/dist/esm/data-seeding/data-seeding-models.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/business-key-resolver.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-execution-context.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-migrator-runner.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-reconciler.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-row-metadata.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-run.shared.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-run.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed-trigger-mode-matrix.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/models/data-seed.shared.schemas.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-application-bootstrap.backend.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/data-seed-scope-resolver-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/additive-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/lazy-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/manual-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/sync-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/engines/upgrade-seed-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-business-key.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-error.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-run-counters.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-run-ledger.backend.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-anchor.shared.types.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-resolution.backend.d.ts.map +1 -1
- package/dist/esm/databases/models/aggregation.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/databases.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/filter.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/resolve-persistence-adapter.backend.utils.d.ts.map +1 -1
- package/dist/esm/databases/models/sql.backend.schemas.d.ts.map +1 -1
- package/dist/esm/databases/models/transaction.shared.schemas.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongo-transaction-registry.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongodb.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-mongoose-model.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/__tests__/mock-zod-mongoose-schema-convertor.service.d.ts.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-query.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/computed-measure-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/field-access-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/time-series-densifier.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/topn-processor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/window-function-processor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/db-utils.d.ts.map +1 -1
- package/dist/esm/databases/services/mongo-aggregation.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/mongodb.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-aggregation.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-database.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-development-provisioning.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-filter.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-migration-runner.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-ddl.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-migration-sql.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-lockfile.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/resource-persistence-unit-of-work.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/schema-planning-standalone.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/zod-to-mongoose-schema-convertor.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/zod-to-sql-hybrid-schema.planner.d.ts.map +1 -1
- package/dist/esm/databases/utils/postgresql-identifier.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/services/__tests__/mock-error-builder.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.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.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
- package/dist/esm/external-data/batches/external-data-pipeline-scheduled-run.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-extraction-source.backend.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-models.exports.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/models/external-providers.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +102 -52
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +117 -71
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -1
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -1
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js +26 -7
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -1
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -1
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts +81 -34
- package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.js +179 -98
- package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/external-api-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +121 -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 +151 -0
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts +15 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +60 -4
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
- package/dist/esm/features/controllers/features.backend.controller.d.ts.map +1 -1
- package/dist/esm/features/services/__tests__/mock-feature-definition-registry.service.d.ts.map +1 -1
- package/dist/esm/features/services/__tests__/mock-feature-resolution.service.d.ts.map +1 -1
- package/dist/esm/features/services/application-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-definition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-gate.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/feature-resolution.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/organization-features-admin-write-path.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/services/scope-feature-ledger-relationship.backend.utils.d.ts.map +1 -1
- package/dist/esm/features/services/scope-features-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/features/testing/feature-test-utils.d.ts.map +1 -1
- package/dist/esm/files/batches/files-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-analyzers.types.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-constraint-resolver-chain.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-constraint.types.d.ts.map +1 -1
- package/dist/esm/files/constraints/file-validation.backend.service.d.ts.map +1 -1
- package/dist/esm/files/constraints/resource-field-constraint-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.js.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +37 -0
- 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 +221 -21
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
- package/dist/esm/files/scanning/clamav-scanner.backend.service.d.ts.map +1 -1
- package/dist/esm/files/scanning/file-scan.types.d.ts.map +1 -1
- package/dist/esm/files/scanning/yara-scanner.backend.service.d.ts.map +1 -1
- package/dist/esm/files/scanning/yara-scanner.backend.service.js +20 -2
- package/dist/esm/files/scanning/yara-scanner.backend.service.js.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-field-detection.service.d.ts.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-operation-handler.service.d.ts.map +1 -1
- package/dist/esm/files/services/__tests__/mock-file-repository.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-field-detection.backend.service.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/files/services/file-population.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.js +5 -0
- package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-text-extraction.backend.service.js +8 -5
- package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/files.backend.service.js +3 -1
- package/dist/esm/files/services/files.backend.service.js.map +1 -1
- package/dist/esm/files/services/rag-source-field-detection.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -1
- package/dist/esm/files/storage/file-storage-path-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-provider.types.d.ts +36 -1
- package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
- package/dist/esm/files/storage/file-storage-router.backend.service.d.ts +21 -3
- package/dist/esm/files/storage/file-storage-router.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/file-storage-router.backend.service.js +38 -5
- package/dist/esm/files/storage/file-storage-router.backend.service.js.map +1 -1
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts +87 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.d.ts.map +1 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js +340 -0
- package/dist/esm/files/storage/google-drive-storage-provider.backend.service.js.map +1 -0
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/storage/storage-credential-provider.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-platform-sts-credential-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js +10 -3
- package/dist/esm/files/storage/storage-sts-credential-resolver.backend.utils.js.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
- package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
- package/dist/esm/files/utils/file-upload.utils.d.ts.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.map +1 -1
- package/dist/esm/files/utils/file-validation.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/image-derivation.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/image-thumbnail.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -1
- package/dist/esm/files/utils/rag-source-field-schema-path.backend.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/storage-application-identity.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/batches/a2a-push-delivery.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-dialect.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-push-notification-delivery.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a-push-notification.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-push-delivery-log.repository.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-push-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/controllers/flows-actors.controller.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/agent-facets.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/agents.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +107 -16
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +118 -18
- package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -1
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/services/__tests__/fixtures/meta-workflow-evaluation-treatment.test-fixture.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/agent-call-trace-sink.backend.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agent-facets.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts +104 -5
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.js +263 -31
- package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/context-curation.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +46 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +193 -6
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js +3 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts +99 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js +155 -0
- package/dist/esm/flows-actors/services/mcp-credential-resolver.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/meta-workflow-evaluation-treatment-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-standard-action-contracts.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-standard-evaluation-contracts.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/meta-workflow-structured-artifact-action-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
- 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 +9 -0
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/bounded-subprocess.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/flows-actors-frontend-extractor.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/prompt-ir-adapters.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts +77 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js +164 -0
- package/dist/esm/flows-actors/utils/tool-approval-modification.backend.utils.js.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts +48 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.d.ts.map +1 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js +101 -0
- package/dist/esm/flows-actors/utils/tool-approval-signing.backend.utils.js.map +1 -0
- package/dist/esm/guidance/batches/dormancy-detection.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/guidance-trigger-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/lifecycle-scope-id.backend.utils.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-condition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-definition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -1
- package/dist/esm/guidance/services/scoped-state-read-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
- package/dist/esm/i18n/services/i18n.backend.service.d.ts.map +1 -1
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inject/models/container.d.ts +10 -0
- package/dist/esm/inject/models/container.d.ts.map +1 -1
- package/dist/esm/inject/models/container.js +49 -1
- 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 +3 -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 +50 -3
- package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
- package/dist/esm/mcp/models/mcp-protocol.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -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.map +1 -1
- 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.map +1 -1
- package/dist/esm/mcp/services/resource-server-instances-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/utils/zod-to-mcp-json-schema.backend.utils.d.ts.map +1 -1
- package/dist/esm/meta-workflow-runtime.exports.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/logger/services/__tests__/mock-logger.service.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.d.ts +12 -0
- package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/services/logger.service.js +3 -3
- package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -1
- package/dist/esm/monitoring/logger/utils/log-value-normalization.backend.utils.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +10 -6
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +10 -6
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -1
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
- package/dist/esm/monitoring/observability/otel-preload.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/otel-sdk-global-handle.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/__tests__/mock-metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
- package/dist/esm/monitoring/observability/services/observability.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/components/email-components.d.ts.map +1 -1
- package/dist/esm/notifications/email/models/email-template-definition.d.ts.map +1 -1
- package/dist/esm/notifications/email/models/email-transport.backend.definitions.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-batch-send.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.d.ts +47 -6
- package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.js +86 -36
- package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
- package/dist/esm/notifications/email/utils/interpolate-email-label.utils.d.ts.map +1 -1
- package/dist/esm/notifications/email/utils/zod-to-typescript.utils.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts +32 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js +32 -0
- package/dist/esm/notifications/sms/models/sms-transport.backend.definitions.js.map +1 -0
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +64 -10
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.js +277 -82
- package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.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.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -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.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-delivery-log.repository.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/m2m-webhook-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-public-key.custom-impl.backend.service.d.ts.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.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/polymorphic-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
- package/dist/esm/organizations/batches/organization-member-invitation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/authority-change-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/invitation-acceptance.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/org-creation-on-registration.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/org-member-roles-validation.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/organization-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-member-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-onboarding-operation.backend.utils.d.ts.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-member-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/scim-provisioning-gate.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/user-org-type-grant.backend.utils.d.ts.map +1 -1
- package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts.map +1 -1
- package/dist/esm/pdf-templates/__tests__/fixtures/tiny-pdf-template.fixture.d.ts.map +1 -1
- package/dist/esm/pdf-templates/models/pdf-template-binding.d.ts.map +1 -1
- package/dist/esm/pdf-templates/models/pdf-template-definition.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-generated-file-writer.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-generation-orchestrator.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-renderer.backend.service.d.ts.map +1 -1
- package/dist/esm/pdf-templates/services/pdf-template-binding.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -1
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -1
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
- package/dist/esm/queue/apps-crontabs-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/cron-job-sync.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-completion-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
- package/dist/esm/queue/job-payload-storage.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-status-tracking.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
- package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue.backend.service.js.map +1 -1
- package/dist/esm/queue/scheduled-message-verifier.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
- package/dist/esm/rag/batches/rag-embedding-drain.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/batches/rag-reconciliation-sweep.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/models/rag-chunk-store.backend.types.d.ts.map +1 -1
- package/dist/esm/rag/models/rag-retrieval.backend.types.d.ts.map +1 -1
- package/dist/esm/rag/services/mongodb-rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/postgresql-rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-collection.mongodb-ddl.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-retrieval.mongodb-query.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-retrieval.postgresql-query.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-store.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-chunk-table.postgresql-ddl.backend.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-ingestion.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/services/rag-retrieval.backend.service.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-fusion.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-removal.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunk-row-shaping.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
- package/dist/esm/rag/utils/rag-ingestion-trigger.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-retrieval-scope.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-source-field-value.backend.utils.d.ts.map +1 -1
- package/dist/esm/requests/models/api-routes.backend.defintions.d.ts.map +1 -1
- package/dist/esm/requests/models/requests.backend.schemas.d.ts.map +1 -1
- package/dist/esm/requests/service/platform-mutualized-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/platform-requests.backend.utils.d.ts.map +1 -1
- package/dist/esm/requests/service/remote-client-base.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/serverless-services-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.js +49 -1
- package/dist/esm/requests/service/websocket.service.js.map +1 -1
- package/dist/esm/resources/backend-resource-registry.exports.d.ts.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/models/index.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
- package/dist/esm/resources/models/resources.backend.schemas.d.ts.map +1 -1
- package/dist/esm/resources/models/virtual-fields.backend.types.d.ts.map +1 -1
- package/dist/esm/resources/services/__tests__/mock-resources-registry.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-context.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-id.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-population.backend.service.d.ts +17 -2
- package/dist/esm/resources/services/resource-population.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resource-population.backend.service.js +74 -18
- package/dist/esm/resources/services/resource-population.backend.service.js.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts +23 -0
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.js +31 -0
- package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
- package/dist/esm/resources/services/virtual-fields.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/utils/resource-retention.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
- package/dist/esm/runtime/models/execution-context.backend.schemas.d.ts.map +1 -1
- package/dist/esm/runtime/models/request-context.als.backend.d.ts.map +1 -1
- package/dist/esm/runtime/models/runtime.backend.schemas.d.ts.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.map +1 -1
- package/dist/esm/runtime/services/execution-context-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.js +10 -0
- package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.js +26 -12
- package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/utils/oauth-body-cap.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/testing/execution-context-test-fixtures.d.ts.map +1 -1
- package/dist/esm/runtime/testing/mock-execution-context-creator.service.d.ts.map +1 -1
- package/dist/esm/runtime/utils/application-startup-config-access.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/feature-gated-core-resource-exclusions.backend.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/request-client-ip.utils.d.ts.map +1 -1
- package/dist/esm/runtime/utils/scan-default-exports.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-key-generation.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/auth-method-management-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts +22 -0
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +84 -0
- package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/models/auth-constants.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/authentications.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/authorization-client.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts +37 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.d.ts.map +1 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js +37 -0
- package/dist/esm/security/authentications/models/federated-auth-transport.backend.definitions.js.map +1 -0
- package/dist/esm/security/authentications/models/identity-persistence-boundaries.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +15 -0
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/saml-authentication.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/sso-connection.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/user-authorization-version.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/seeds/enterprise-config-defaults.seeds.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/mock-auth-execution-context-factory.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/mock-auth-token-issuer.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/__tests__/oauth-provider-audit-spies.mock.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-domain-to-org-lookup.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/__tests__/mock-enterprise-user-provisioning.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js +2 -1
- package/dist/esm/security/authentications/services/admin-config/oidc-discovery.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +9 -2
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +9 -2
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-credential-verifier.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-execution-context-factory.backend.service.d.ts.map +1 -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.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-password-reset.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-phone-verification.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts +97 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +218 -26
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts +14 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +36 -0
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-assertion-validator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-authentication.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-metadata.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/saml-replay-guard.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-session-store.backend.service.d.ts.map +1 -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.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/scim-tokens.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/siem-delivery-dlq.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +57 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js +11 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-connection.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/email-verification-initiator.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/machine-token-issuer.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oidc-user-claims.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/resolve-active-member-orgs.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/__tests__/mock-auth-user-lookup.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-controller.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-credential-ops.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-response-helper.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/concurrent-session-eviction.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/ensure-user-profile.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/machine-auth-rate-limit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/pkce.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/utils/saml-java-availability.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/application-auth-policy-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/utils/one-off-session-lifetime.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authentications/utils/social-oauth2-purpose.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts +59 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js +111 -0
- package/dist/esm/security/authorizations/access-grant-decision.factory.backend.js.map +1 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts +57 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js +133 -0
- package/dist/esm/security/authorizations/access-grant-lifecycle-audit.backend.js.map +1 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts +41 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js +157 -0
- package/dist/esm/security/authorizations/application-access-grant-custom-implementation.backend.service.js.map +1 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts +84 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.js +99 -0
- package/dist/esm/security/authorizations/application-wide-read-admission.backend.js.map +1 -0
- package/dist/esm/security/authorizations/authorization-denial-audit.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/junction-scope-resolution.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/organization-unit-narrowing-enforcement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +20 -181
- package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/relationship-foreign-key-filter.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +40 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js +43 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +27 -17
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +27 -17
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +72 -0
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +153 -10
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -1
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +139 -1
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +474 -33
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +40 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -1
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +19 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +38 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +17 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +14 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +16 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +1 -1
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +19 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +45 -2
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +37 -1
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -1
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -1
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts +34 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js +39 -0
- package/dist/esm/security/connected-accounts/utils/user-delegated-access-token-slot.backend.utils.js.map +1 -0
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -1
- 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.shared.schemas.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/index.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/services/__tests__/mock-consumable-token.service.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
- package/dist/esm/security/jwt/services/auth-jwt-guard.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts +13 -0
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js +14 -0
- package/dist/esm/security/jwt/services/wildo-worker-bootstrap-client.backend.service.js.map +1 -1
- package/dist/esm/security/jwt/utils/jwt-verification-error-classification.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts +39 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js +60 -0
- package/dist/esm/security/outbound/outbound-request-deadline.backend.utils.js.map +1 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts +66 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js +75 -0
- package/dist/esm/security/outbound/outbound-request-headers.backend.utils.js.map +1 -0
- package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
- package/dist/esm/security/scim/utils/scim-attribute-path-resolver.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/scim/utils/scim-filter-parser.d.ts.map +1 -1
- package/dist/esm/security/scim/utils/scim-response-formatter.d.ts.map +1 -1
- package/dist/esm/security/session-invalidation-fence.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -1
- package/dist/esm/security/token-invalidation-fence.backend.utils.d.ts.map +1 -1
- package/dist/esm/testing.d.ts.map +1 -1
- package/dist/esm/users/services/inbound-contact-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-deletion-audit.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-force-password-reset.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/users/services/user-role-administration.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/users/services/user-self-custom-implementations.backend.d.ts.map +1 -1
- package/dist/esm/users/services/user-super-admin-floor.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts +0 -45
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.d.ts.map +0 -1
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.js +0 -22
- package/dist/esm/external-providers/services/flow-actor-design.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -0
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -0
- package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -0
- package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -0
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -0
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -0
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -0
package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organization-custom-implementation.backend.service.js","sourceRoot":"","sources":["../../../../../src/organizations/services/organization-custom-implementation.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Organization Custom Implementations\n *\n * W5.1: Org type validation on creation.\n * When organizationTypes config exists, validate Organization.type is a valid key.\n * Rejects invalid types with VALIDATION error.\n */\n\nimport { resolveAuditActorId } from '~wildo-backend-lib/compliance/audit-trails/utils/audit-actor.backend.utils';\nimport type { Container } from 'inversify';\nimport {\n CORE_ORG_ROLES,\n CoreResourceOperation,\n CoreResourceType,\n ErrorType,\n ErrorCustomMessageReference,\n Organization_Lifecycle_Operations,\n OrganizationMemberStatus,\n OrganizationStatus,\n ResourceOperationVariantType,\n resolveOrganizationPurgeScheduledAt,\n type Organization,\n type OrganizationMember,\n} from '@wildo-ai/saas-models';\nimport {\n createResourceCustomServiceImplementation,\n type ResourceCustomServiceImplementationFactory,\n} from '~wildo-backend-lib/base-classes/services/services/resource-operation-custom-implementation.factory.backend';\nimport type { ResourceOperation_CustomImplementation_Utils } from '~wildo-backend-lib/base-classes/services/services/resource-operation-custom-implementation-base.backend.service';\nimport type { ResourcesRegistryBackendService } from '~wildo-backend-lib/resources/services/resources-registry.backend.service';\nimport type { SystemAccessBackendService } from '~wildo-backend-lib/base-classes/services/services/system-access.backend.service';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport type { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\nimport { registerTransactionPostCommitEffect } from '~wildo-backend-lib/databases/models/transaction.shared.schemas';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { AuditLogsBackendService } from '~wildo-backend-lib/compliance/audit-trails/services/audit-logs.backend.service';\nimport type { AuthExecutionContextFactoryBackendService } from '~wildo-backend-lib/security/authentications/services/auth-execution-context-factory.backend.service';\nimport type { AuthTokenIssuerBackendService } from '~wildo-backend-lib/security/authentications/services/auth-token-issuer.backend.service';\nimport {\n revokeUserTypesOnOrgLeave,\n type QualifyingOrganizationFacts,\n} from '~wildo-backend-lib/organizations/services/user-type-revocation-on-org-leave.backend.utils';\nimport { grantUserTypesOnOrgJoin } from '~wildo-backend-lib/organizations/services/user-org-type-grant.backend.utils';\n\n/**\n * The slice of an organization-type definition these implementations read.\n *\n * `defaultOwnerRole` is named rather than left `unknown` because the self-service create resolves\n * the founding owner's role the SAME way registration does (#436) — the two creation paths must not\n * disagree about which role owns a tenant of a given type.\n */\ntype OrgTypeDef = { creationPolicy?: { defaultOwnerRole?: string } };\n\n/**\n * The `admin` variant key declared by the ORGANIZATIONS resource configuration.\n *\n * Named once so every registration below and the behaviour pins that cover them cannot drift apart\n * from each other independently of the configuration they both describe.\n */\nconst ORGANIZATIONS_ADMIN_VARIANT_KEY = 'admin';\n\n/**\n * Validates that Organization.type (when provided) exists in organizationTypes config.\n * Throws VALIDATION error if type is invalid.\n * When the app declares no organizationTypes, the type identifier remains an\n * open app-owned namespace and there is no configured policy to validate.\n */\nfunction validateOrganizationTypeForCreation(\n organizationTypes: Record<string, OrgTypeDef> | undefined,\n type: string | undefined,\n errorBuilder: ErrorBuilderBackendService,\n executionContext: ExecutionContext<any>,\n isRegistrationManagedCreation: boolean,\n): void {\n if (!type || type.trim() === '') return;\n if (!organizationTypes || Object.keys(organizationTypes).length === 0) return;\n\n const validTypes = Object.keys(organizationTypes);\n if (!validTypes.includes(type)) {\n throw errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: {\n reason: 'invalid_organization_type',\n type,\n validTypes,\n },\n });\n }\n\n // SEC-W5.13-FIX-4: org types with a creation policy are created exclusively\n // through the route-less service path owned by registration and registration\n // onboarding, never through either HTTP CREATE variant.\n const orgTypeDef = organizationTypes[type];\n if (orgTypeDef?.creationPolicy && !isRegistrationManagedCreation) {\n throw errorBuilder.buildError(ErrorType.AUTHORIZATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: {\n reason: 'org_type_creation_restricted',\n type,\n message: 'Organizations of this type are created through the registration flow',\n },\n });\n }\n}\n\n/**\n * ORGANIZATIONS CREATE prefix — organization-type policy + name character validation.\n *\n * Registered once per configured CREATE variant. The resource configuration declares a\n * route-less INTERNAL_CALL for registration-owned creation, the default API_CALL for direct\n * self-service creation, and the `admin` API_CALL variant. Custom implementations resolve by\n * an exact operation-path key that embeds both `variantType` and the default/variant-key slot,\n * so every path must be registered explicitly or it silently bypasses the validations below.\n *\n * This prefix was previously registered on `REPOSITORY_ONLY`, which no CREATE variant\n * declares, so it never ran on either path: neither the organization-type creation policy\n * nor the `SEC-W5.13-FIX-10` character rejection on organization names was enforced.\n * `doOperation` throws outright on a REPOSITORY_ONLY operation, so a service-tier custom\n * implementation can never execute on that variant under any configuration.\n */\nfunction createOrganizationCreateFactory(\n variantType: ResourceOperationVariantType.API_CALL | ResourceOperationVariantType.INTERNAL_CALL,\n variantKey: string | undefined,\n): ResourceCustomServiceImplementationFactory {\n /*\n * Whether this path must ESTABLISH THE FOUNDING OWNER (#436).\n *\n * The default API_CALL is self-service tenant creation: an authenticated user creating their own\n * organization. Its configuration has always said \"ownership is established by the create flow,\n * not a role\", and until 2026-09-08 that was FALSE for this path — the prefix validated the type\n * and the name, the core write created the row, and nothing made anyone a member. A successful\n * self-service create produced a tenant with ZERO members and ZERO owners: precisely the stranded\n * state the organization-owner floor exists to prevent, reached through the front door.\n *\n * The other two paths are deliberately excluded, for opposite reasons:\n *\n * - INTERNAL_CALL is registration, and `createOrgOnRegistration` already writes the owner\n * membership. Adding one here would write it twice.\n * - The `admin` variant is a PLATFORM operator creating a tenant for someone else. Making the\n * operator its owner would place a platform administrator inside a customer tenant as a\n * standing member — the exact shape zero-standing-privilege work removed. That tenant is\n * ownerless on purpose, and `organizationMembers.grantOwnership` is the audited, justified\n * door for naming its first owner. Do not \"fix\" this by extending the postfix to it.\n */\n const establishesFoundingOwner =\n variantType === ResourceOperationVariantType.API_CALL && variantKey === undefined;\n\n const factory: ResourceCustomServiceImplementationFactory = (\n resourcesRegistryService: ResourcesRegistryBackendService,\n container: Container,\n ) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n operationIdentifier: CoreResourceOperation.CREATE,\n variantType,\n isOperationDefault: variantKey === undefined,\n variantKey,\n },\n handlers: {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n const organizationTypes = resourcesRegistryService.getOrganizationTypesConfig();\n const type = (input as { type?: string })?.type;\n validateOrganizationTypeForCreation(\n organizationTypes,\n type,\n utils.errorBuilder,\n executionContext,\n variantType === ResourceOperationVariantType.INTERNAL_CALL,\n );\n\n // SEC-W5.13-FIX-10: Reject org names with XSS-dangerous characters.\n const name = (input as { name?: string })?.name;\n if (name && /[<>\"'`;{}()\\\\]/.test(name)) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: {\n reason: 'invalid_organization_name',\n message: 'Organization name contains disallowed characters',\n },\n });\n }\n\n return input;\n },\n ...(establishesFoundingOwner\n ? {\n postfixCoreOperations: async (_id, createdOrganization, executionContext, _operationPath, utils) => {\n const organizationId = (createdOrganization as { _id?: string })?._id;\n const userId = executionContext.initiatorIds?.userId;\n\n /*\n * FAIL CLOSED — deliberately not wrapped in a catch.\n *\n * A create that answers 200 having produced a tenant nobody can administer is worse\n * than one that fails: the caller retries a failure, and cannot even see the other.\n * The membership write joins the caller's unit of work through `utils.serviceOptions`,\n * so a failure here takes the organization row with it rather than leaving the\n * stranded tenant this postfix exists to prevent.\n */\n if (!organizationId || !userId) {\n throw utils.errorBuilder.buildError(ErrorType.INTERNAL, executionContext, {\n customMessageReference: ErrorCustomMessageReference.INTERNAL,\n context: {\n // diagnostic (log-only)\n message: 'Self-service organization create cannot establish a founding owner',\n organizationId,\n hasInitiatorUserId: Boolean(userId),\n },\n });\n }\n\n const organizationTypes = resourcesRegistryService.getOrganizationTypesConfig() as Record<string, OrgTypeDef> | undefined;\n const type = (createdOrganization as { type?: string })?.type;\n // The SAME resolution registration uses, so the two creation paths cannot disagree\n // about which role owns a tenant of a given type.\n const ownerRole = (type ? organizationTypes?.[type] : undefined)?.creationPolicy?.defaultOwnerRole\n ?? CORE_ORG_ROLES.ORG_OWNER;\n\n const systemAccess = container.get<SystemAccessBackendService>(SAAS_SERVICE_TYPES.SystemAccessService);\n // Trusted write: the client-shaped CREATE DTO strips `userId` / `organizationId`,\n // and `createAsSystem` re-attaches both after the strict parse — the same reason\n // `createOrgOnRegistration` uses it for the identical row.\n await systemAccess.createAsSystem(\n CoreResourceType.ORGANIZATION_MEMBERS,\n { userId, organizationId, roles: [ownerRole] },\n utils.serviceOptions,\n );\n\n return createdOrganization;\n },\n }\n : {}),\n },\n });\n };\n\n return factory;\n}\n\nexport function createOrganizationCreateFactories(): ResourceCustomServiceImplementationFactory[] {\n return [\n createOrganizationCreateFactory(ResourceOperationVariantType.INTERNAL_CALL, undefined),\n createOrganizationCreateFactory(ResourceOperationVariantType.API_CALL, undefined),\n createOrganizationCreateFactory(ResourceOperationVariantType.API_CALL, 'admin'),\n ];\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════════════════════\n// Tenant teardown — the SOFT-DELETE half (WS-A)\n// ═══════════════════════════════════════════════════════════════════════════════════════════════\n\n/**\n * The tenant's own snapshot fields these operations read from `utils.currentObject`.\n *\n * `name`/`slug` are needed for the audit record: after a purge the id resolves to nothing, so an\n * event naming only the id would be evidence of nothing. Mirrors the pre-deletion snapshot use in\n * `organization-deletion-audit.custom-impl.backend.service.ts`.\n */\ntype OrganizationLifecycleSnapshot = Pick<Organization, '_id' | 'name' | 'slug' | 'status'>;\n\n/**\n * Reconcile every affected user's GLOBAL `userTypes` for a tenant whose membership is ending, and\n * invalidate their tokens.\n *\n * ## Why per USER and not per MEMBERSHIP\n *\n * `revokeUserTypesOnOrgLeave` answers a question about a USER — \"does this person still hold a\n * membership that justifies user type T, anywhere?\" — by listing all of their memberships. Running\n * it once per membership row would re-ask an identical question for every row a user holds in this\n * tenant and re-read the same user document each time. An organization with 10k memberships across\n * 9k users runs 9k reconciliations here, not 10k, and each one after the first reuses the\n * `organizationTypeById` map the previous call warmed.\n *\n * ## Why it is safe to run BEFORE the status write\n *\n * `revokeUserTypesOnOrgLeave` takes the organization being left and EXCLUDES its memberships from\n * the \"do you still qualify?\" scan (`excludeOrgId`). It therefore computes the POST-teardown answer\n * while the rows are all still present. Running it afterwards would mean reconstructing the member\n * set from data the operation had already invalidated.\n *\n * ## Why INVITED rows are not scanned\n *\n * An `INVITED` membership never granted a user type — the grant fires on acceptance\n * (`INVITED → ACTIVE`). There is nothing to revoke, so scanning them would be pure cost.\n *\n * ## Why token invalidation runs INSIDE the transaction\n *\n * It is a Redis write, so it cannot join the database unit of work, and the usual rule for\n * non-transactional side effects in a hook is to defer them to a post-commit effect (an audit\n * record must never assert something that rolled back). Token invalidation is the case where that\n * rule inverts, because its two failure directions are not symmetric:\n *\n * - inline, transaction rolls back → tokens invalidated for a mark that did not happen. Users log\n * in again. Harmless.\n * - inline, Redis write fails → the whole mark fails loudly and is retried. Fail-closed.\n * - post-commit, Redis write fails → the mark is committed and the credentials it was supposed to\n * kill stay live, silently (post-commit effects never rethrow — they are at-least-once at best).\n *\n * The only outcome that leaves live credentials against a torn-down tenant is the deferred one, so\n * the inline placement is deliberate rather than an oversight of the post-commit rule.\n *\n * assurance-control: WILDO.ACCESS.LIFECYCLE — access rights and the credentials asserting\n * them are revoked at the moment the granting scope is torn down.\n */\nasync function reconcileGlobalUserTypesForTenant(params: {\n organizationId: string;\n resourcesRegistryService: ResourcesRegistryBackendService;\n utils: ResourceOperation_CustomImplementation_Utils;\n container: Container;\n}): Promise<number> {\n const { organizationId, resourcesRegistryService, utils, container } = params;\n\n const organizationTypes = resourcesRegistryService.getOrganizationTypesConfig() as\n | Record<string, { userTypes?: string[] }>\n | undefined;\n const userTypesConfig = resourcesRegistryService.getUserTypesConfig() as\n | Record<string, { requiresOrgMembership?: { orgTypes: string[] } }>\n | undefined;\n\n // Nothing in the application maps organization membership onto user types, so no global grant can\n // exist to outlive this tenant. Returning early keeps a teardown from paying for a member scan\n // that could not change anything.\n if (\n !organizationTypes || Object.keys(organizationTypes).length === 0\n || !userTypesConfig || Object.keys(userTypesConfig).length === 0\n ) {\n return 0;\n }\n\n // Resolved HERE, after the early return, and not in the caller. An application that maps no\n // organization membership onto user types can have no grant to reconcile, and must therefore not\n // be required to have the authentication services bound at all — resolving them eagerly turned an\n // unreachable code path into a hard DI dependency for every teardown.\n const authEcFactory = container.get<AuthExecutionContextFactoryBackendService>(\n SAAS_SERVICE_TYPES.AuthExecutionContextFactory,\n );\n const tokenIssuer = container.get<AuthTokenIssuerBackendService>(SAAS_SERVICE_TYPES.AuthTokenIssuer);\n\n // This invariant must inspect every membership of every affected user, not only rows visible in\n // the initiating admin's org scope — a user's qualifying membership may be in a DIFFERENT tenant.\n // The outer operation remains the authorization and audit boundary and owns the transaction.\n const systemExecutionContext = await authEcFactory.createForSystemAuthOperation(\n authEcFactory.getUsersReadOperationPath(),\n );\n\n const members = await utils.servicesRegistry.list<OrganizationMember>(\n CoreResourceType.ORGANIZATION_MEMBERS,\n systemExecutionContext,\n { organizationId, status: OrganizationMemberStatus.ACTIVE },\n undefined,\n { ...utils.serviceOptions, paginated: false },\n ) as OrganizationMember[];\n\n const affectedUserIds = [\n ...new Set(members.map((member) => member?.userId).filter((userId): userId is string => Boolean(userId))),\n ];\n\n // Hoisted ACROSS the loop, not per user. The qualification predicate reads each remaining\n // organization's type and status; those facts are user-independent, and a tenant with 9k affected\n // users typically spans a handful of other organizations. Without this every user re-reads the\n // same rows.\n const organizationFactsById = new Map<string, QualifyingOrganizationFacts>();\n\n let usersWithRevokedTypes = 0;\n for (const userId of affectedUserIds) {\n const revokedTypes = await revokeUserTypesOnOrgLeave(systemExecutionContext, {\n userId,\n organizationId,\n organizationTypes,\n userTypesConfig,\n servicesRegistryHandler: utils.servicesRegistry,\n serviceOptions: utils.serviceOptions,\n organizationFactsById,\n // Only fires for users who ACTUALLY lost a type (`revokeUserTypesOnOrgLeave` guards on a\n // non-empty revocation list), so this is not a blanket logout of the tenant: it reaches\n // exactly the users whose live tokens now assert a grant they no longer hold.\n onUserTypesRevoked: async (revokedUserId) => {\n await tokenIssuer.invalidateAllTokensForUser(revokedUserId);\n },\n });\n if (revokedTypes.length > 0) usersWithRevokedTypes++;\n }\n\n return usersWithRevokedTypes;\n}\n\n/**\n * Re-grant the global `userTypes` a teardown revoked — the inverse used by RESTORE.\n *\n * `grantUserTypesOnOrgJoin` is additive and idempotent, so a user who never lost a type (because a\n * membership in another qualifying tenant kept it alive) is left exactly as they are. That is why\n * restore does not need to have recorded WHICH types it revoked: the grant is derived from the same\n * configuration that produced the original grant, so replaying it reconstructs the correct state\n * rather than a remembered one. Storing a revocation manifest would have added a second source of\n * truth that could drift from the configuration between the mark and the restore.\n */\nasync function regrantUserTypesForTenantRestore(params: {\n organizationId: string;\n resourcesRegistryService: ResourcesRegistryBackendService;\n utils: ResourceOperation_CustomImplementation_Utils;\n container: Container;\n}): Promise<number> {\n const { organizationId, resourcesRegistryService, utils, container } = params;\n\n const organizationTypes = resourcesRegistryService.getOrganizationTypesConfig() as\n | Record<string, { userTypes?: string[] }>\n | undefined;\n if (!organizationTypes || Object.keys(organizationTypes).length === 0) return 0;\n\n // Resolved after the early return — see the twin above for why.\n const authEcFactory = container.get<AuthExecutionContextFactoryBackendService>(\n SAAS_SERVICE_TYPES.AuthExecutionContextFactory,\n );\n\n const systemExecutionContext = await authEcFactory.createForSystemAuthOperation(\n authEcFactory.getUsersReadOperationPath(),\n );\n\n const members = await utils.servicesRegistry.list<OrganizationMember>(\n CoreResourceType.ORGANIZATION_MEMBERS,\n systemExecutionContext,\n { organizationId, status: OrganizationMemberStatus.ACTIVE },\n undefined,\n { ...utils.serviceOptions, paginated: false },\n ) as OrganizationMember[];\n\n const affectedUserIds = [\n ...new Set(members.map((member) => member?.userId).filter((userId): userId is string => Boolean(userId))),\n ];\n\n let usersWithRegrantedTypes = 0;\n for (const userId of affectedUserIds) {\n const grantedTypes = await grantUserTypesOnOrgJoin(systemExecutionContext, {\n userId,\n organizationId,\n organizationTypes,\n servicesRegistryHandler: utils.servicesRegistry,\n serviceOptions: utils.serviceOptions,\n });\n if (grantedTypes.length > 0) usersWithRegrantedTypes++;\n }\n\n return usersWithRegrantedTypes;\n}\n\n/**\n * Queue a lifecycle-transition audit record to emit AFTER the transaction commits.\n *\n * ## Why post-commit and not a POSTFIX hook\n *\n * Under `transactionalCore` a POSTFIX still runs INSIDE the transaction, so an event emitted there\n * survives a rollback and asserts a transition that never happened. (The `ORGANIZATION_DELETED`\n * twin gets away with a postfix only because the DELETE path's transaction has already committed by\n * the time its postfix runs.) Registering here also lets the caller close over values this\n * transaction produced — counts, the previous status — instead of re-deriving them from a world the\n * write has already changed.\n *\n * ## Why a missing transaction THROWS\n *\n * Every operation using this declares `transactionalCore: true`, so the transaction is a contract,\n * not a possibility. Skipping the registration when it is absent would silently drop the audit\n * record for a tenant-wide access change — the failure mode that left `ORGANIZATION_DELETED`\n * unemitted for the entire life of the audit trail. Failing closed makes a broken contract loud.\n *\n * ## Failure posture INSIDE the effect\n *\n * Never rethrown. The transition has already committed and is not recoverable from here, so turning\n * a logging failure into a 500 would tell the caller the operation failed when it did not.\n * `drainTransactionPostCommitEffects` swallows throws anyway, which is precisely why the ERROR log\n * is what makes the gap observable at all.\n */\nfunction registerOrganizationLifecycleAudit(params: {\n utils: ResourceOperation_CustomImplementation_Utils;\n executionContext: ExecutionContext<any>;\n organizationId: string;\n /** Stable within one transaction attempt; a duplicate key emits once. */\n effectKey: string;\n /** Named only for the failure log, so a dropped record says WHICH record was dropped. */\n eventLabel: string;\n emit: (auditLogsService: AuditLogsBackendService) => Promise<void>;\n container: Container;\n}): void {\n const { utils, executionContext, organizationId, effectKey, eventLabel, emit, container } = params;\n\n const transaction = utils.serviceOptions?.transaction;\n if (!transaction) {\n throw utils.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n reason: 'organization_lifecycle_audit_requires_transaction',\n organizationId,\n eventLabel,\n },\n });\n }\n\n registerTransactionPostCommitEffect(transaction, {\n key: effectKey,\n execute: async () => {\n try {\n await emit(container.get<AuditLogsBackendService>(SAAS_SERVICE_TYPES.AuditLogsService));\n } catch (error) {\n utils.logger.error?.(`Failed to emit the ${eventLabel} audit event`, {\n organizationId,\n ...projectCaughtErrorLogFields(error),\n });\n }\n },\n });\n}\n\n/**\n * Read the tenant's identity out of the framework's pre-operation snapshot.\n *\n * Tolerant in the same way as the deletion-audit twin: a missing descriptor degrades the audit\n * record rather than failing the operation, because the FACT of the teardown decision is the\n * irreducible part. The id is the one value worth failing on, and it falls back to the addressed\n * resource id.\n */\nfunction resolveOrganizationLifecycleSubject(\n addressedId: string | undefined,\n utils: ResourceOperation_CustomImplementation_Utils,\n): { organizationId: string | undefined; name: string; slug: string; status: string | undefined } {\n const snapshot = utils.currentObject as OrganizationLifecycleSnapshot | undefined;\n const snapshotId = typeof snapshot?._id === 'string' ? snapshot._id : undefined;\n return {\n organizationId: snapshotId ?? (typeof addressedId === 'string' && addressedId.length > 0 ? addressedId : undefined),\n name: typeof snapshot?.name === 'string' ? snapshot.name : '',\n slug: typeof snapshot?.slug === 'string' ? snapshot.slug : '',\n // The status the tenant is transitioning FROM. Only readable here: after the core write the row\n // carries the NEW status, so a transition's origin is unrecoverable from a postfix or a later\n // read. `suspend` and `activate` both record it as evidence.\n status: typeof snapshot?.status === 'string' ? snapshot.status : undefined,\n };\n}\n\n/**\n * Build the `request_deletion` registration for ONE declared variant.\n *\n * ## Why `transactionalCore` with three participants\n *\n * The prefix writes to USERS (`userTypes`) and reads ORGANIZATION_MEMBERS, and the core write\n * lands on ORGANIZATIONS. A partial application of that set is a live defect in either direction:\n * types revoked without the tenant being marked strips grants from users of a healthy tenant, and\n * a tenant marked without the reconciliation is the original hazard this workstream exists to fix.\n * The framework includes the operation's own resource automatically; the other two must be named,\n * and every nested call forwards `utils.serviceOptions` so it actually joins the unit of work.\n *\n * ## Why `authoritativeFields`\n *\n * `status`, `deletionRequestedAt` and `purgeScheduledAt` are all `.excludeFromUpdate()` — this\n * operation is their authority. Without the declaration the repository's strict re-parse would strip the\n * prefix's values and the operation would answer 200 having changed nothing, which is precisely\n * the failure mode `SUSPEND`/`ACTIVATE` shipped with for as long as they were unimplemented.\n */\nfunction createOrganizationRequestDeletionFactory(\n variantKey: string | undefined,\n): ResourceCustomServiceImplementationFactory {\n const factory = (resourcesRegistryService: ResourcesRegistryBackendService, container: Container) =>\n createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n operationIdentifier: Organization_Lifecycle_Operations.REQUEST_DELETION,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: variantKey === undefined,\n variantKey,\n },\n debugLabel: `organizations.request-deletion${variantKey ? `.${variantKey}` : ''}`,\n transactionalCore: true,\n transactionParticipants: {\n members: CoreResourceType.ORGANIZATION_MEMBERS,\n users: CoreResourceType.USERS,\n },\n authoritativeFields: ['status', 'deletionRequestedAt', 'purgeScheduledAt'],\n handlers: {\n prefixCoreOperations: async (id, input, executionContext, _operationPath, utils) => {\n const { organizationId, name, slug } = resolveOrganizationLifecycleSubject(id, utils);\n if (!organizationId) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: { reason: 'organization_request_deletion_unresolved_subject' },\n });\n }\n\n const revokedUserTypeCount = await reconcileGlobalUserTypesForTenant({\n organizationId,\n resourcesRegistryService,\n utils,\n container,\n });\n\n const markedAt = new Date();\n const purgeScheduledAt = resolveOrganizationPurgeScheduledAt(\n markedAt,\n resourcesRegistryService.getTenantTeardownConfig(),\n );\n\n // `revokedUserTypeCount` is closed over rather than re-derived: it is the value THIS\n // transaction produced, and a later scan would count an already-reconciled world.\n registerOrganizationLifecycleAudit({\n utils, executionContext, organizationId, container,\n effectKey: `organization-deletion-requested:${organizationId}`,\n eventLabel: 'ORGANIZATION_DELETION_REQUESTED',\n emit: (auditLogsService) => auditLogsService.logOrganizationDeletionRequested({\n organizationId,\n name,\n slug,\n requestedBy: resolveAuditActorId(executionContext),\n purgeScheduledAt: purgeScheduledAt.toISOString(),\n revokedUserTypeCount,\n reason: (input as { reason?: string } | undefined)?.reason,\n }, executionContext),\n });\n\n return {\n ...(input as object),\n status: OrganizationStatus.DELETED,\n deletionRequestedAt: markedAt,\n purgeScheduledAt,\n };\n },\n },\n });\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n}\n\n/**\n * Build the `restore` registration — the inverse transition.\n *\n * Only ONE variant exists (super-admin). A marked tenant confers no authority, so an org-scoped\n * variant would be refused by the role gate before `enabledCondition` was consulted; see the\n * operation's declaration for the full reasoning.\n *\n * The tenant is returned to `ACTIVE` rather than to whatever it held before the mark. The prior\n * status is not recorded anywhere, and inventing a restore-to-previous-state contract would mean\n * persisting it — a second piece of lifecycle state that can drift from `status` and that a\n * super-administrator would then have to reason about. `ACTIVE` is also the only value that is\n * unambiguously safe to land on: restoring a tenant into `TRIAL_EXPIRED` or `SUSPENDED` would\n * complete without error and leave it still unable to confer authority, which reads as a failed\n * restore.\n */\nfunction createOrganizationRestoreFactory(): ResourceCustomServiceImplementationFactory {\n const factory = (resourcesRegistryService: ResourcesRegistryBackendService, container: Container) =>\n createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n operationIdentifier: Organization_Lifecycle_Operations.RESTORE,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n variantKey: undefined,\n },\n debugLabel: 'organizations.restore',\n transactionalCore: true,\n transactionParticipants: {\n members: CoreResourceType.ORGANIZATION_MEMBERS,\n users: CoreResourceType.USERS,\n },\n authoritativeFields: ['status', 'deletionRequestedAt', 'purgeScheduledAt'],\n handlers: {\n prefixCoreOperations: async (id, input, executionContext, _operationPath, utils) => {\n const { organizationId, name, slug } = resolveOrganizationLifecycleSubject(id, utils);\n if (!organizationId) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: { reason: 'organization_restore_unresolved_subject' },\n });\n }\n\n const regrantedUserTypeCount = await regrantUserTypesForTenantRestore({\n organizationId,\n resourcesRegistryService,\n utils,\n container,\n });\n\n registerOrganizationLifecycleAudit({\n utils, executionContext, organizationId, container,\n effectKey: `organization-restored:${organizationId}`,\n eventLabel: 'ORGANIZATION_RESTORED',\n emit: (auditLogsService) => auditLogsService.logOrganizationRestored({\n organizationId,\n name,\n slug,\n restoredBy: resolveAuditActorId(executionContext),\n restoredStatus: OrganizationStatus.ACTIVE,\n regrantedUserTypeCount,\n reason: (input as { reason?: string } | undefined)?.reason,\n }, executionContext),\n });\n\n // Both marks are CLEARED, not left as history. A restored tenant carrying a\n // `deletionRequestedAt` would read as pending destruction to every surface that inspects\n // the field, and a stale\n // `purgeScheduledAt` is a deadline nothing honours — the fields describe a pending\n // teardown, and there is no longer one. The mark's history lives in the audit trail,\n // which is where an irreversible record belongs.\n return {\n ...(input as object),\n status: OrganizationStatus.ACTIVE,\n deletionRequestedAt: null,\n purgeScheduledAt: null,\n };\n },\n },\n });\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n}\n\n/**\n * Build the `suspend` registration — administratively HALT a tenant.\n *\n * ## What changed when this became implementable\n *\n * `SUSPEND` shipped with `acknowledgeUnimplementedEngineOperation` for as long as it existed: it\n * declared a `requestDto` whose fields are not schema fields, so the strict DTO stripped them and\n * the operation answered 200 having changed nothing. Two things had to land before it could work —\n * `authoritativeFields` (so a prefix can write the `.excludeFromUpdate()` `status`), and the tenant\n * status authority gate that gives `SUSPENDED` a meaning at all. Before the gate, flipping the\n * status would have been a cosmetic write: `OrganizationStatus` had zero backend readers.\n *\n * With the gate live this is now one of the most consequential operations in the system — a single\n * write revokes the organization roles of every member of the tenant at once, resolved per request\n * rather than by touching a single membership row.\n *\n * ## What it reconciles beyond the status, and what it deliberately leaves alone\n *\n * **Global `user.userTypes` ARE reconciled** (changed 2026-08-05 — an earlier revision of this\n * comment said the opposite). A membership-derived global grant is only justified while the\n * granting tenant confers authority, and `checkRemainingMemberships` now enforces that centrally,\n * so a suspension withdraws what the tenant was vouching for platform-wide. `activate` re-grants.\n *\n * The RULE lives in that predicate rather than here, deliberately: expressing it once means\n * suspension, cancellation and teardown cannot drift apart, and it reuses the same authority\n * (`isAuthorityConferringOrganizationStatus`) the execution-context gate reads, so a user's global\n * grants and their per-request roles can never disagree about which tenants count. What this\n * operation supplies is the TRIGGER — a stored `userTypes` value is never recomputed\n * spontaneously, so without this call the predicate would be correct and inert.\n *\n * **Tokens are invalidated only for users who ACTUALLY lost a grant.** `revokeUserTypesOnOrgLeave`\n * fires its callback on a non-empty revocation list, so this is not a blanket logout of the tenant.\n * For those users it is the correct outcome: their live tokens assert a type they no longer hold.\n * Members who lost nothing keep their sessions.\n *\n * **Org-scoped roles need no work here at all.** They are recomputed from the tenant's status on\n * every context build, so they lapse the moment this commits and return the moment `activate` does.\n * That is why the membership rows themselves are never touched.\n\n */\nfunction createOrganizationSuspendFactory(): ResourceCustomServiceImplementationFactory {\n const factory = (resourcesRegistryService: ResourcesRegistryBackendService, container: Container) =>\n createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n operationIdentifier: Organization_Lifecycle_Operations.SUSPEND,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n variantKey: undefined,\n },\n debugLabel: 'organizations.suspend',\n // No longer single-resource: the user-type reconciliation reads ORGANIZATION_MEMBERS and\n // writes USERS, and a suspension that revoked grants without persisting the status (or the\n // reverse) is a live defect in either direction.\n transactionalCore: true,\n transactionParticipants: {\n members: CoreResourceType.ORGANIZATION_MEMBERS,\n users: CoreResourceType.USERS,\n },\n authoritativeFields: ['status'],\n handlers: {\n prefixCoreOperations: async (id, input, executionContext, _operationPath, utils) => {\n const { organizationId, name, slug, status } = resolveOrganizationLifecycleSubject(id, utils);\n if (!organizationId) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: { reason: 'organization_suspend_unresolved_subject' },\n });\n }\n\n const authoredInput = input as { suspensionReason?: string; notifyMembers?: boolean } | undefined;\n // `.default(true)` on the flag means an omitted value notifies; only an explicit `false`\n // suppresses. Read the same way the notification `condition` reads it so the audit record\n // cannot claim something different from what was actually sent.\n const notifiedMembers = authoredInput?.notifyMembers !== false;\n\n // Reconcile the GLOBAL `user.userTypes` grants this tenant was keeping alive.\n //\n // The rule itself lives in the qualification predicate, which no longer counts a\n // membership in a non-authority-conferring tenant — so one definition now covers\n // suspension, cancellation and teardown alike. But a stored `user.userTypes` value is only\n // recomputed when something triggers a reconciliation; nothing recomputes it\n // spontaneously. THIS CALL IS THAT TRIGGER. Without it the predicate change would be\n // correct and inert, and a suspended tenant would keep vouching for its members\n // platform-wide until an unrelated membership event happened to recompute them.\n //\n // Safe to run BEFORE the status write: the predicate excludes the organization being acted\n // on (`excludeOrgId`) and therefore never reads this tenant's own status — it answers\n // \"would you still qualify if this tenant did not count\", which is exactly the\n // post-suspension question.\n const revokedUserTypeCount = await reconcileGlobalUserTypesForTenant({\n organizationId,\n resourcesRegistryService,\n utils,\n container,\n });\n\n registerOrganizationLifecycleAudit({\n utils, executionContext, organizationId, container,\n effectKey: `organization-suspended:${organizationId}`,\n eventLabel: 'ORGANIZATION_SUSPENDED',\n emit: (auditLogsService) => auditLogsService.logOrganizationSuspended({\n organizationId,\n name,\n slug,\n suspendedBy: resolveAuditActorId(executionContext),\n // Captured from the PRE-operation snapshot: after the write the tenant is SUSPENDED,\n // so the state it came from is unrecoverable from the row.\n previousStatus: status ?? '',\n // Required by the request contract, so a missing value is a contract breach rather\n // than a state to encode. The empty string keeps the record emitting rather than\n // dropping the evidence of a suspension that did happen.\n suspensionReason: authoredInput?.suspensionReason ?? '',\n notifiedMembers,\n revokedUserTypeCount,\n }, executionContext),\n });\n\n return {\n ...(input as object),\n status: OrganizationStatus.SUSPENDED,\n };\n },\n },\n });\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n}\n\n/**\n * Build the `activate` registration — return a halted or expired tenant to normal operation.\n *\n * The inverse of `suspend`, and also the trial-conversion path: its `enabledCondition` admits both\n * `SUSPENDED` (lifting a hold) and `TRIAL_EXPIRED` (converting a lapsed trial). Both land on\n * `ACTIVE`, and the audit record carries `previousStatus` so the two journeys stay distinguishable\n * to a reviewer — they are not the same event even though they share a destination.\n *\n * Nothing needs re-granting. Organization-scoped authority is recomputed per request from the\n * tenant's status over membership rows suspension never touched, so it returns by itself the moment\n * this commits — which is exactly why `suspend` was able to leave those rows alone.\n *\n * ⚠️ `DELETED` is NOT reachable here, and must not be added. Reactivating a tenant marked for\n * deletion is `restore`'s job: it additionally clears the purge deadline and re-grants the global\n * user types the mark revoked. Admitting `DELETED` here would return the tenant to `ACTIVE` while\n * leaving `purgeScheduledAt` armed — a live tenant the purge batch would destroy on schedule.\n */\nfunction createOrganizationActivateFactory(): ResourceCustomServiceImplementationFactory {\n const factory = (resourcesRegistryService: ResourcesRegistryBackendService, container: Container) =>\n createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n operationIdentifier: Organization_Lifecycle_Operations.ACTIVATE,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n variantKey: undefined,\n },\n debugLabel: 'organizations.activate',\n // Same participants as `suspend` — the re-grant reads memberships and writes users.\n transactionalCore: true,\n transactionParticipants: {\n members: CoreResourceType.ORGANIZATION_MEMBERS,\n users: CoreResourceType.USERS,\n },\n authoritativeFields: ['status'],\n handlers: {\n prefixCoreOperations: async (id, input, executionContext, _operationPath, utils) => {\n const { organizationId, name, slug, status } = resolveOrganizationLifecycleSubject(id, utils);\n if (!organizationId) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: { reason: 'organization_activate_unresolved_subject' },\n });\n }\n\n // The inverse trigger. `grantUserTypesOnOrgJoin` is additive and idempotent, so a member\n // who never lost a type (because another qualifying tenant kept it alive) is untouched.\n //\n // Re-granting from CONFIGURATION rather than from a remembered revocation list is\n // deliberate: a stored manifest would be a second source of truth that can drift from the\n // organization-type config between the suspension and the reactivation.\n const regrantedUserTypeCount = await regrantUserTypesForTenantRestore({\n organizationId,\n resourcesRegistryService,\n utils,\n container,\n });\n\n registerOrganizationLifecycleAudit({\n utils, executionContext, organizationId, container,\n effectKey: `organization-activated:${organizationId}`,\n eventLabel: 'ORGANIZATION_ACTIVATED',\n emit: (auditLogsService) => auditLogsService.logOrganizationActivated({\n organizationId,\n name,\n slug,\n activatedBy: resolveAuditActorId(executionContext),\n previousStatus: status ?? '',\n regrantedUserTypeCount,\n reason: (input as { reason?: string } | undefined)?.reason,\n }, executionContext),\n });\n\n return {\n ...(input as object),\n status: OrganizationStatus.ACTIVE,\n };\n },\n },\n });\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n}\n\n/**\n * Register every ORGANIZATIONS lifecycle transition that owns `status`.\n *\n * `request_deletion` is registered on BOTH its declared variants. Custom implementations resolve by\n * an exact operation-path key embedding `variantType` and the default/variant-key slot, so a hook\n * registered on only one door silently never runs on the other — which would leave the PRIVILEGED\n * cross-tenant door as the one that marks a tenant without revoking anything.\n */\nexport function createOrganizationLifecycleFactories(): ResourceCustomServiceImplementationFactory[] {\n return [\n createOrganizationRequestDeletionFactory(undefined),\n createOrganizationRequestDeletionFactory(ORGANIZATIONS_ADMIN_VARIANT_KEY),\n createOrganizationRestoreFactory(),\n createOrganizationSuspendFactory(),\n createOrganizationActivateFactory(),\n ];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"organization-custom-implementation.backend.service.js","sourceRoot":"","sources":["../../../../src/organizations/services/organization-custom-implementation.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Organization Custom Implementations\n *\n * W5.1: Org type validation on creation.\n * When organizationTypes config exists, validate Organization.type is a valid key.\n * Rejects invalid types with VALIDATION error.\n */\n\nimport { resolveAuditActorId } from '~wildo-backend-lib/compliance/audit-trails/utils/audit-actor.backend.utils';\nimport type { Container } from 'inversify';\nimport {\n CORE_ORG_ROLES,\n CoreResourceOperation,\n CoreResourceType,\n ErrorType,\n ErrorCustomMessageReference,\n Organization_Lifecycle_Operations,\n OrganizationMemberStatus,\n OrganizationStatus,\n ResourceOperationVariantType,\n resolveOrganizationPurgeScheduledAt,\n type Organization,\n type OrganizationMember,\n} from '@wildo-ai/saas-models';\nimport {\n createResourceCustomServiceImplementation,\n type ResourceCustomServiceImplementationFactory,\n} from '~wildo-backend-lib/base-classes/services/services/resource-operation-custom-implementation.factory.backend';\nimport type { ResourceOperation_CustomImplementation_Utils } from '~wildo-backend-lib/base-classes/services/services/resource-operation-custom-implementation-base.backend.service';\nimport type { ResourcesRegistryBackendService } from '~wildo-backend-lib/resources/services/resources-registry.backend.service';\nimport type { SystemAccessBackendService } from '~wildo-backend-lib/base-classes/services/services/system-access.backend.service';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport type { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\nimport { registerTransactionPostCommitEffect } from '~wildo-backend-lib/databases/models/transaction.shared.schemas';\nimport { projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { AuditLogsBackendService } from '~wildo-backend-lib/compliance/audit-trails/services/audit-logs.backend.service';\nimport type { AuthExecutionContextFactoryBackendService } from '~wildo-backend-lib/security/authentications/services/auth-execution-context-factory.backend.service';\nimport type { AuthTokenIssuerBackendService } from '~wildo-backend-lib/security/authentications/services/auth-token-issuer.backend.service';\nimport {\n revokeUserTypesOnOrgLeave,\n type QualifyingOrganizationFacts,\n} from '~wildo-backend-lib/organizations/services/user-type-revocation-on-org-leave.backend.utils';\nimport { grantUserTypesOnOrgJoin } from '~wildo-backend-lib/organizations/services/user-org-type-grant.backend.utils';\n\n/**\n * The slice of an organization-type definition these implementations read.\n *\n * `defaultOwnerRole` is named rather than left `unknown` because the self-service create resolves\n * the founding owner's role the SAME way registration does (#436) — the two creation paths must not\n * disagree about which role owns a tenant of a given type.\n */\ntype OrgTypeDef = { creationPolicy?: { defaultOwnerRole?: string } };\n\n/**\n * The `admin` variant key declared by the ORGANIZATIONS resource configuration.\n *\n * Named once so every registration below and the behaviour pins that cover them cannot drift apart\n * from each other independently of the configuration they both describe.\n */\nconst ORGANIZATIONS_ADMIN_VARIANT_KEY = 'admin';\n\n/**\n * Validates that Organization.type (when provided) exists in organizationTypes config.\n * Throws VALIDATION error if type is invalid.\n * When the app declares no organizationTypes, the type identifier remains an\n * open app-owned namespace and there is no configured policy to validate.\n */\nfunction validateOrganizationTypeForCreation(\n organizationTypes: Record<string, OrgTypeDef> | undefined,\n type: string | undefined,\n errorBuilder: ErrorBuilderBackendService,\n executionContext: ExecutionContext<any>,\n isRegistrationManagedCreation: boolean,\n): void {\n if (!type || type.trim() === '') return;\n if (!organizationTypes || Object.keys(organizationTypes).length === 0) return;\n\n const validTypes = Object.keys(organizationTypes);\n if (!validTypes.includes(type)) {\n throw errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: {\n reason: 'invalid_organization_type',\n type,\n validTypes,\n },\n });\n }\n\n // SEC-W5.13-FIX-4: org types with a creation policy are created exclusively\n // through the route-less service path owned by registration and registration\n // onboarding, never through either HTTP CREATE variant.\n const orgTypeDef = organizationTypes[type];\n if (orgTypeDef?.creationPolicy && !isRegistrationManagedCreation) {\n throw errorBuilder.buildError(ErrorType.AUTHORIZATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: {\n reason: 'org_type_creation_restricted',\n type,\n message: 'Organizations of this type are created through the registration flow',\n },\n });\n }\n}\n\n/**\n * ORGANIZATIONS CREATE prefix — organization-type policy + name character validation.\n *\n * Registered once per configured CREATE variant. The resource configuration declares a\n * route-less INTERNAL_CALL for registration-owned creation, the default API_CALL for direct\n * self-service creation, and the `admin` API_CALL variant. Custom implementations resolve by\n * an exact operation-path key that embeds both `variantType` and the default/variant-key slot,\n * so every path must be registered explicitly or it silently bypasses the validations below.\n *\n * This prefix was previously registered on `REPOSITORY_ONLY`, which no CREATE variant\n * declares, so it never ran on either path: neither the organization-type creation policy\n * nor the `SEC-W5.13-FIX-10` character rejection on organization names was enforced.\n * `doOperation` throws outright on a REPOSITORY_ONLY operation, so a service-tier custom\n * implementation can never execute on that variant under any configuration.\n */\nfunction createOrganizationCreateFactory(\n variantType: ResourceOperationVariantType.API_CALL | ResourceOperationVariantType.INTERNAL_CALL,\n variantKey: string | undefined,\n): ResourceCustomServiceImplementationFactory {\n /*\n * Whether this path must ESTABLISH THE FOUNDING OWNER (#436).\n *\n * The default API_CALL is self-service tenant creation: an authenticated user creating their own\n * organization. Its configuration has always said \"ownership is established by the create flow,\n * not a role\", and until 2026-09-08 that was FALSE for this path — the prefix validated the type\n * and the name, the core write created the row, and nothing made anyone a member. A successful\n * self-service create produced a tenant with ZERO members and ZERO owners: precisely the stranded\n * state the organization-owner floor exists to prevent, reached through the front door.\n *\n * The other two paths are deliberately excluded, for opposite reasons:\n *\n * - INTERNAL_CALL is registration, and `createOrgOnRegistration` already writes the owner\n * membership. Adding one here would write it twice.\n * - The `admin` variant is a PLATFORM operator creating a tenant for someone else. Making the\n * operator its owner would place a platform administrator inside a customer tenant as a\n * standing member — the exact shape zero-standing-privilege work removed. That tenant is\n * ownerless on purpose, and `organizationMembers.grantOwnership` is the audited, justified\n * door for naming its first owner. Do not \"fix\" this by extending the postfix to it.\n */\n const establishesFoundingOwner =\n variantType === ResourceOperationVariantType.API_CALL && variantKey === undefined;\n\n const factory: ResourceCustomServiceImplementationFactory = (\n resourcesRegistryService: ResourcesRegistryBackendService,\n container: Container,\n ) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n operationIdentifier: CoreResourceOperation.CREATE,\n variantType,\n isOperationDefault: variantKey === undefined,\n variantKey,\n },\n handlers: {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n const organizationTypes = resourcesRegistryService.getOrganizationTypesConfig();\n const type = (input as { type?: string })?.type;\n validateOrganizationTypeForCreation(\n organizationTypes,\n type,\n utils.errorBuilder,\n executionContext,\n variantType === ResourceOperationVariantType.INTERNAL_CALL,\n );\n\n // SEC-W5.13-FIX-10: Reject org names with XSS-dangerous characters.\n const name = (input as { name?: string })?.name;\n if (name && /[<>\"'`;{}()\\\\]/.test(name)) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: {\n reason: 'invalid_organization_name',\n message: 'Organization name contains disallowed characters',\n },\n });\n }\n\n return input;\n },\n ...(establishesFoundingOwner\n ? {\n postfixCoreOperations: async (_id, createdOrganization, executionContext, _operationPath, utils) => {\n const organizationId = (createdOrganization as { _id?: string })?._id;\n const userId = executionContext.initiatorIds?.userId;\n\n /*\n * FAIL CLOSED — deliberately not wrapped in a catch.\n *\n * A create that answers 200 having produced a tenant nobody can administer is worse\n * than one that fails: the caller retries a failure, and cannot even see the other.\n * The membership write joins the caller's unit of work through `utils.serviceOptions`,\n * so a failure here takes the organization row with it rather than leaving the\n * stranded tenant this postfix exists to prevent.\n */\n if (!organizationId || !userId) {\n throw utils.errorBuilder.buildError(ErrorType.INTERNAL, executionContext, {\n customMessageReference: ErrorCustomMessageReference.INTERNAL,\n context: {\n // diagnostic (log-only)\n message: 'Self-service organization create cannot establish a founding owner',\n organizationId,\n hasInitiatorUserId: Boolean(userId),\n },\n });\n }\n\n const organizationTypes = resourcesRegistryService.getOrganizationTypesConfig() as Record<string, OrgTypeDef> | undefined;\n const type = (createdOrganization as { type?: string })?.type;\n // The SAME resolution registration uses, so the two creation paths cannot disagree\n // about which role owns a tenant of a given type.\n const ownerRole = (type ? organizationTypes?.[type] : undefined)?.creationPolicy?.defaultOwnerRole\n ?? CORE_ORG_ROLES.ORG_OWNER;\n\n const systemAccess = container.get<SystemAccessBackendService>(SAAS_SERVICE_TYPES.SystemAccessService);\n // Trusted write: the client-shaped CREATE DTO strips `userId` / `organizationId`,\n // and `createAsSystem` re-attaches both after the strict parse — the same reason\n // `createOrgOnRegistration` uses it for the identical row.\n await systemAccess.createAsSystem(\n CoreResourceType.ORGANIZATION_MEMBERS,\n { userId, organizationId, roles: [ownerRole] },\n utils.serviceOptions,\n );\n\n return createdOrganization;\n },\n }\n : {}),\n },\n });\n };\n\n return factory;\n}\n\nexport function createOrganizationCreateFactories(): ResourceCustomServiceImplementationFactory[] {\n return [\n createOrganizationCreateFactory(ResourceOperationVariantType.INTERNAL_CALL, undefined),\n createOrganizationCreateFactory(ResourceOperationVariantType.API_CALL, undefined),\n createOrganizationCreateFactory(ResourceOperationVariantType.API_CALL, 'admin'),\n ];\n}\n\n// ═══════════════════════════════════════════════════════════════════════════════════════════════\n// Tenant teardown — the SOFT-DELETE half (WS-A)\n// ═══════════════════════════════════════════════════════════════════════════════════════════════\n\n/**\n * The tenant's own snapshot fields these operations read from `utils.currentObject`.\n *\n * `name`/`slug` are needed for the audit record: after a purge the id resolves to nothing, so an\n * event naming only the id would be evidence of nothing. Mirrors the pre-deletion snapshot use in\n * `organization-deletion-audit.custom-impl.backend.service.ts`.\n */\ntype OrganizationLifecycleSnapshot = Pick<Organization, '_id' | 'name' | 'slug' | 'status'>;\n\n/**\n * Reconcile every affected user's GLOBAL `userTypes` for a tenant whose membership is ending, and\n * invalidate their tokens.\n *\n * ## Why per USER and not per MEMBERSHIP\n *\n * `revokeUserTypesOnOrgLeave` answers a question about a USER — \"does this person still hold a\n * membership that justifies user type T, anywhere?\" — by listing all of their memberships. Running\n * it once per membership row would re-ask an identical question for every row a user holds in this\n * tenant and re-read the same user document each time. An organization with 10k memberships across\n * 9k users runs 9k reconciliations here, not 10k, and each one after the first reuses the\n * `organizationTypeById` map the previous call warmed.\n *\n * ## Why it is safe to run BEFORE the status write\n *\n * `revokeUserTypesOnOrgLeave` takes the organization being left and EXCLUDES its memberships from\n * the \"do you still qualify?\" scan (`excludeOrgId`). It therefore computes the POST-teardown answer\n * while the rows are all still present. Running it afterwards would mean reconstructing the member\n * set from data the operation had already invalidated.\n *\n * ## Why INVITED rows are not scanned\n *\n * An `INVITED` membership never granted a user type — the grant fires on acceptance\n * (`INVITED → ACTIVE`). There is nothing to revoke, so scanning them would be pure cost.\n *\n * ## Why token invalidation runs INSIDE the transaction\n *\n * It is a Redis write, so it cannot join the database unit of work, and the usual rule for\n * non-transactional side effects in a hook is to defer them to a post-commit effect (an audit\n * record must never assert something that rolled back). Token invalidation is the case where that\n * rule inverts, because its two failure directions are not symmetric:\n *\n * - inline, transaction rolls back → tokens invalidated for a mark that did not happen. Users log\n * in again. Harmless.\n * - inline, Redis write fails → the whole mark fails loudly and is retried. Fail-closed.\n * - post-commit, Redis write fails → the mark is committed and the credentials it was supposed to\n * kill stay live, silently (post-commit effects never rethrow — they are at-least-once at best).\n *\n * The only outcome that leaves live credentials against a torn-down tenant is the deferred one, so\n * the inline placement is deliberate rather than an oversight of the post-commit rule.\n *\n * assurance-control: WILDO.ACCESS.LIFECYCLE — access rights and the credentials asserting\n * them are revoked at the moment the granting scope is torn down.\n */\nasync function reconcileGlobalUserTypesForTenant(params: {\n organizationId: string;\n resourcesRegistryService: ResourcesRegistryBackendService;\n utils: ResourceOperation_CustomImplementation_Utils;\n container: Container;\n}): Promise<number> {\n const { organizationId, resourcesRegistryService, utils, container } = params;\n\n const organizationTypes = resourcesRegistryService.getOrganizationTypesConfig() as\n | Record<string, { userTypes?: string[] }>\n | undefined;\n const userTypesConfig = resourcesRegistryService.getUserTypesConfig() as\n | Record<string, { requiresOrgMembership?: { orgTypes: string[] } }>\n | undefined;\n\n // Nothing in the application maps organization membership onto user types, so no global grant can\n // exist to outlive this tenant. Returning early keeps a teardown from paying for a member scan\n // that could not change anything.\n if (\n !organizationTypes || Object.keys(organizationTypes).length === 0\n || !userTypesConfig || Object.keys(userTypesConfig).length === 0\n ) {\n return 0;\n }\n\n // Resolved HERE, after the early return, and not in the caller. An application that maps no\n // organization membership onto user types can have no grant to reconcile, and must therefore not\n // be required to have the authentication services bound at all — resolving them eagerly turned an\n // unreachable code path into a hard DI dependency for every teardown.\n const authEcFactory = container.get<AuthExecutionContextFactoryBackendService>(\n SAAS_SERVICE_TYPES.AuthExecutionContextFactory,\n );\n const tokenIssuer = container.get<AuthTokenIssuerBackendService>(SAAS_SERVICE_TYPES.AuthTokenIssuer);\n\n // This invariant must inspect every membership of every affected user, not only rows visible in\n // the initiating admin's org scope — a user's qualifying membership may be in a DIFFERENT tenant.\n // The outer operation remains the authorization and audit boundary and owns the transaction.\n const systemExecutionContext = await authEcFactory.createForSystemAuthOperation(\n authEcFactory.getUsersReadOperationPath(),\n );\n\n const members = await utils.servicesRegistry.list<OrganizationMember>(\n CoreResourceType.ORGANIZATION_MEMBERS,\n systemExecutionContext,\n { organizationId, status: OrganizationMemberStatus.ACTIVE },\n undefined,\n { ...utils.serviceOptions, paginated: false },\n ) as OrganizationMember[];\n\n const affectedUserIds = [\n ...new Set(members.map((member) => member?.userId).filter((userId): userId is string => Boolean(userId))),\n ];\n\n // Hoisted ACROSS the loop, not per user. The qualification predicate reads each remaining\n // organization's type and status; those facts are user-independent, and a tenant with 9k affected\n // users typically spans a handful of other organizations. Without this every user re-reads the\n // same rows.\n const organizationFactsById = new Map<string, QualifyingOrganizationFacts>();\n\n let usersWithRevokedTypes = 0;\n for (const userId of affectedUserIds) {\n const revokedTypes = await revokeUserTypesOnOrgLeave(systemExecutionContext, {\n userId,\n organizationId,\n organizationTypes,\n userTypesConfig,\n servicesRegistryHandler: utils.servicesRegistry,\n serviceOptions: utils.serviceOptions,\n organizationFactsById,\n // Only fires for users who ACTUALLY lost a type (`revokeUserTypesOnOrgLeave` guards on a\n // non-empty revocation list), so this is not a blanket logout of the tenant: it reaches\n // exactly the users whose live tokens now assert a grant they no longer hold.\n onUserTypesRevoked: async (revokedUserId) => {\n await tokenIssuer.invalidateAllTokensForUser(revokedUserId);\n },\n });\n if (revokedTypes.length > 0) usersWithRevokedTypes++;\n }\n\n return usersWithRevokedTypes;\n}\n\n/**\n * Re-grant the global `userTypes` a teardown revoked — the inverse used by RESTORE.\n *\n * `grantUserTypesOnOrgJoin` is additive and idempotent, so a user who never lost a type (because a\n * membership in another qualifying tenant kept it alive) is left exactly as they are. That is why\n * restore does not need to have recorded WHICH types it revoked: the grant is derived from the same\n * configuration that produced the original grant, so replaying it reconstructs the correct state\n * rather than a remembered one. Storing a revocation manifest would have added a second source of\n * truth that could drift from the configuration between the mark and the restore.\n */\nasync function regrantUserTypesForTenantRestore(params: {\n organizationId: string;\n resourcesRegistryService: ResourcesRegistryBackendService;\n utils: ResourceOperation_CustomImplementation_Utils;\n container: Container;\n}): Promise<number> {\n const { organizationId, resourcesRegistryService, utils, container } = params;\n\n const organizationTypes = resourcesRegistryService.getOrganizationTypesConfig() as\n | Record<string, { userTypes?: string[] }>\n | undefined;\n if (!organizationTypes || Object.keys(organizationTypes).length === 0) return 0;\n\n // Resolved after the early return — see the twin above for why.\n const authEcFactory = container.get<AuthExecutionContextFactoryBackendService>(\n SAAS_SERVICE_TYPES.AuthExecutionContextFactory,\n );\n\n const systemExecutionContext = await authEcFactory.createForSystemAuthOperation(\n authEcFactory.getUsersReadOperationPath(),\n );\n\n const members = await utils.servicesRegistry.list<OrganizationMember>(\n CoreResourceType.ORGANIZATION_MEMBERS,\n systemExecutionContext,\n { organizationId, status: OrganizationMemberStatus.ACTIVE },\n undefined,\n { ...utils.serviceOptions, paginated: false },\n ) as OrganizationMember[];\n\n const affectedUserIds = [\n ...new Set(members.map((member) => member?.userId).filter((userId): userId is string => Boolean(userId))),\n ];\n\n let usersWithRegrantedTypes = 0;\n for (const userId of affectedUserIds) {\n const grantedTypes = await grantUserTypesOnOrgJoin(systemExecutionContext, {\n userId,\n organizationId,\n organizationTypes,\n servicesRegistryHandler: utils.servicesRegistry,\n serviceOptions: utils.serviceOptions,\n });\n if (grantedTypes.length > 0) usersWithRegrantedTypes++;\n }\n\n return usersWithRegrantedTypes;\n}\n\n/**\n * Queue a lifecycle-transition audit record to emit AFTER the transaction commits.\n *\n * ## Why post-commit and not a POSTFIX hook\n *\n * Under `transactionalCore` a POSTFIX still runs INSIDE the transaction, so an event emitted there\n * survives a rollback and asserts a transition that never happened. (The `ORGANIZATION_DELETED`\n * twin gets away with a postfix only because the DELETE path's transaction has already committed by\n * the time its postfix runs.) Registering here also lets the caller close over values this\n * transaction produced — counts, the previous status — instead of re-deriving them from a world the\n * write has already changed.\n *\n * ## Why a missing transaction THROWS\n *\n * Every operation using this declares `transactionalCore: true`, so the transaction is a contract,\n * not a possibility. Skipping the registration when it is absent would silently drop the audit\n * record for a tenant-wide access change — the failure mode that left `ORGANIZATION_DELETED`\n * unemitted for the entire life of the audit trail. Failing closed makes a broken contract loud.\n *\n * ## Failure posture INSIDE the effect\n *\n * Never rethrown. The transition has already committed and is not recoverable from here, so turning\n * a logging failure into a 500 would tell the caller the operation failed when it did not.\n * `drainTransactionPostCommitEffects` swallows throws anyway, which is precisely why the ERROR log\n * is what makes the gap observable at all.\n */\nfunction registerOrganizationLifecycleAudit(params: {\n utils: ResourceOperation_CustomImplementation_Utils;\n executionContext: ExecutionContext<any>;\n organizationId: string;\n /** Stable within one transaction attempt; a duplicate key emits once. */\n effectKey: string;\n /** Named only for the failure log, so a dropped record says WHICH record was dropped. */\n eventLabel: string;\n emit: (auditLogsService: AuditLogsBackendService) => Promise<void>;\n container: Container;\n}): void {\n const { utils, executionContext, organizationId, effectKey, eventLabel, emit, container } = params;\n\n const transaction = utils.serviceOptions?.transaction;\n if (!transaction) {\n throw utils.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n reason: 'organization_lifecycle_audit_requires_transaction',\n organizationId,\n eventLabel,\n },\n });\n }\n\n registerTransactionPostCommitEffect(transaction, {\n key: effectKey,\n execute: async () => {\n try {\n await emit(container.get<AuditLogsBackendService>(SAAS_SERVICE_TYPES.AuditLogsService));\n } catch (error) {\n utils.logger.error?.(`Failed to emit the ${eventLabel} audit event`, {\n organizationId,\n ...projectCaughtErrorLogFields(error),\n });\n }\n },\n });\n}\n\n/**\n * Read the tenant's identity out of the framework's pre-operation snapshot.\n *\n * Tolerant in the same way as the deletion-audit twin: a missing descriptor degrades the audit\n * record rather than failing the operation, because the FACT of the teardown decision is the\n * irreducible part. The id is the one value worth failing on, and it falls back to the addressed\n * resource id.\n */\nfunction resolveOrganizationLifecycleSubject(\n addressedId: string | undefined,\n utils: ResourceOperation_CustomImplementation_Utils,\n): { organizationId: string | undefined; name: string; slug: string; status: string | undefined } {\n const snapshot = utils.currentObject as OrganizationLifecycleSnapshot | undefined;\n const snapshotId = typeof snapshot?._id === 'string' ? snapshot._id : undefined;\n return {\n organizationId: snapshotId ?? (typeof addressedId === 'string' && addressedId.length > 0 ? addressedId : undefined),\n name: typeof snapshot?.name === 'string' ? snapshot.name : '',\n slug: typeof snapshot?.slug === 'string' ? snapshot.slug : '',\n // The status the tenant is transitioning FROM. Only readable here: after the core write the row\n // carries the NEW status, so a transition's origin is unrecoverable from a postfix or a later\n // read. `suspend` and `activate` both record it as evidence.\n status: typeof snapshot?.status === 'string' ? snapshot.status : undefined,\n };\n}\n\n/**\n * Build the `request_deletion` registration for ONE declared variant.\n *\n * ## Why `transactionalCore` with three participants\n *\n * The prefix writes to USERS (`userTypes`) and reads ORGANIZATION_MEMBERS, and the core write\n * lands on ORGANIZATIONS. A partial application of that set is a live defect in either direction:\n * types revoked without the tenant being marked strips grants from users of a healthy tenant, and\n * a tenant marked without the reconciliation is the original hazard this workstream exists to fix.\n * The framework includes the operation's own resource automatically; the other two must be named,\n * and every nested call forwards `utils.serviceOptions` so it actually joins the unit of work.\n *\n * ## Why `authoritativeFields`\n *\n * `status`, `deletionRequestedAt` and `purgeScheduledAt` are all `.excludeFromUpdate()` — this\n * operation is their authority. Without the declaration the repository's strict re-parse would strip the\n * prefix's values and the operation would answer 200 having changed nothing, which is precisely\n * the failure mode `SUSPEND`/`ACTIVATE` shipped with for as long as they were unimplemented.\n */\nfunction createOrganizationRequestDeletionFactory(\n variantKey: string | undefined,\n): ResourceCustomServiceImplementationFactory {\n const factory = (resourcesRegistryService: ResourcesRegistryBackendService, container: Container) =>\n createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n operationIdentifier: Organization_Lifecycle_Operations.REQUEST_DELETION,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: variantKey === undefined,\n variantKey,\n },\n debugLabel: `organizations.request-deletion${variantKey ? `.${variantKey}` : ''}`,\n transactionalCore: true,\n transactionParticipants: {\n members: CoreResourceType.ORGANIZATION_MEMBERS,\n users: CoreResourceType.USERS,\n },\n authoritativeFields: ['status', 'deletionRequestedAt', 'purgeScheduledAt'],\n handlers: {\n prefixCoreOperations: async (id, input, executionContext, _operationPath, utils) => {\n const { organizationId, name, slug } = resolveOrganizationLifecycleSubject(id, utils);\n if (!organizationId) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: { reason: 'organization_request_deletion_unresolved_subject' },\n });\n }\n\n const revokedUserTypeCount = await reconcileGlobalUserTypesForTenant({\n organizationId,\n resourcesRegistryService,\n utils,\n container,\n });\n\n const markedAt = new Date();\n const purgeScheduledAt = resolveOrganizationPurgeScheduledAt(\n markedAt,\n resourcesRegistryService.getTenantTeardownConfig(),\n );\n\n // `revokedUserTypeCount` is closed over rather than re-derived: it is the value THIS\n // transaction produced, and a later scan would count an already-reconciled world.\n registerOrganizationLifecycleAudit({\n utils, executionContext, organizationId, container,\n effectKey: `organization-deletion-requested:${organizationId}`,\n eventLabel: 'ORGANIZATION_DELETION_REQUESTED',\n emit: (auditLogsService) => auditLogsService.logOrganizationDeletionRequested({\n organizationId,\n name,\n slug,\n requestedBy: resolveAuditActorId(executionContext),\n purgeScheduledAt: purgeScheduledAt.toISOString(),\n revokedUserTypeCount,\n reason: (input as { reason?: string } | undefined)?.reason,\n }, executionContext),\n });\n\n return {\n ...(input as object),\n status: OrganizationStatus.DELETED,\n deletionRequestedAt: markedAt,\n purgeScheduledAt,\n };\n },\n },\n });\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n}\n\n/**\n * Build the `restore` registration — the inverse transition.\n *\n * Only ONE variant exists (super-admin). A marked tenant confers no authority, so an org-scoped\n * variant would be refused by the role gate before `enabledCondition` was consulted; see the\n * operation's declaration for the full reasoning.\n *\n * The tenant is returned to `ACTIVE` rather than to whatever it held before the mark. The prior\n * status is not recorded anywhere, and inventing a restore-to-previous-state contract would mean\n * persisting it — a second piece of lifecycle state that can drift from `status` and that a\n * super-administrator would then have to reason about. `ACTIVE` is also the only value that is\n * unambiguously safe to land on: restoring a tenant into `TRIAL_EXPIRED` or `SUSPENDED` would\n * complete without error and leave it still unable to confer authority, which reads as a failed\n * restore.\n */\nfunction createOrganizationRestoreFactory(): ResourceCustomServiceImplementationFactory {\n const factory = (resourcesRegistryService: ResourcesRegistryBackendService, container: Container) =>\n createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n operationIdentifier: Organization_Lifecycle_Operations.RESTORE,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n variantKey: undefined,\n },\n debugLabel: 'organizations.restore',\n transactionalCore: true,\n transactionParticipants: {\n members: CoreResourceType.ORGANIZATION_MEMBERS,\n users: CoreResourceType.USERS,\n },\n authoritativeFields: ['status', 'deletionRequestedAt', 'purgeScheduledAt'],\n handlers: {\n prefixCoreOperations: async (id, input, executionContext, _operationPath, utils) => {\n const { organizationId, name, slug } = resolveOrganizationLifecycleSubject(id, utils);\n if (!organizationId) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: { reason: 'organization_restore_unresolved_subject' },\n });\n }\n\n const regrantedUserTypeCount = await regrantUserTypesForTenantRestore({\n organizationId,\n resourcesRegistryService,\n utils,\n container,\n });\n\n registerOrganizationLifecycleAudit({\n utils, executionContext, organizationId, container,\n effectKey: `organization-restored:${organizationId}`,\n eventLabel: 'ORGANIZATION_RESTORED',\n emit: (auditLogsService) => auditLogsService.logOrganizationRestored({\n organizationId,\n name,\n slug,\n restoredBy: resolveAuditActorId(executionContext),\n restoredStatus: OrganizationStatus.ACTIVE,\n regrantedUserTypeCount,\n reason: (input as { reason?: string } | undefined)?.reason,\n }, executionContext),\n });\n\n // Both marks are CLEARED, not left as history. A restored tenant carrying a\n // `deletionRequestedAt` would read as pending destruction to every surface that inspects\n // the field, and a stale\n // `purgeScheduledAt` is a deadline nothing honours — the fields describe a pending\n // teardown, and there is no longer one. The mark's history lives in the audit trail,\n // which is where an irreversible record belongs.\n return {\n ...(input as object),\n status: OrganizationStatus.ACTIVE,\n deletionRequestedAt: null,\n purgeScheduledAt: null,\n };\n },\n },\n });\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n}\n\n/**\n * Build the `suspend` registration — administratively HALT a tenant.\n *\n * ## What changed when this became implementable\n *\n * `SUSPEND` shipped with `acknowledgeUnimplementedEngineOperation` for as long as it existed: it\n * declared a `requestDto` whose fields are not schema fields, so the strict DTO stripped them and\n * the operation answered 200 having changed nothing. Two things had to land before it could work —\n * `authoritativeFields` (so a prefix can write the `.excludeFromUpdate()` `status`), and the tenant\n * status authority gate that gives `SUSPENDED` a meaning at all. Before the gate, flipping the\n * status would have been a cosmetic write: `OrganizationStatus` had zero backend readers.\n *\n * With the gate live this is now one of the most consequential operations in the system — a single\n * write revokes the organization roles of every member of the tenant at once, resolved per request\n * rather than by touching a single membership row.\n *\n * ## What it reconciles beyond the status, and what it deliberately leaves alone\n *\n * **Global `user.userTypes` ARE reconciled** (changed 2026-08-05 — an earlier revision of this\n * comment said the opposite). A membership-derived global grant is only justified while the\n * granting tenant confers authority, and `checkRemainingMemberships` now enforces that centrally,\n * so a suspension withdraws what the tenant was vouching for platform-wide. `activate` re-grants.\n *\n * The RULE lives in that predicate rather than here, deliberately: expressing it once means\n * suspension, cancellation and teardown cannot drift apart, and it reuses the same authority\n * (`isAuthorityConferringOrganizationStatus`) the execution-context gate reads, so a user's global\n * grants and their per-request roles can never disagree about which tenants count. What this\n * operation supplies is the TRIGGER — a stored `userTypes` value is never recomputed\n * spontaneously, so without this call the predicate would be correct and inert.\n *\n * **Tokens are invalidated only for users who ACTUALLY lost a grant.** `revokeUserTypesOnOrgLeave`\n * fires its callback on a non-empty revocation list, so this is not a blanket logout of the tenant.\n * For those users it is the correct outcome: their live tokens assert a type they no longer hold.\n * Members who lost nothing keep their sessions.\n *\n * **Org-scoped roles need no work here at all.** They are recomputed from the tenant's status on\n * every context build, so they lapse the moment this commits and return the moment `activate` does.\n * That is why the membership rows themselves are never touched.\n\n */\nfunction createOrganizationSuspendFactory(): ResourceCustomServiceImplementationFactory {\n const factory = (resourcesRegistryService: ResourcesRegistryBackendService, container: Container) =>\n createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n operationIdentifier: Organization_Lifecycle_Operations.SUSPEND,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n variantKey: undefined,\n },\n debugLabel: 'organizations.suspend',\n // No longer single-resource: the user-type reconciliation reads ORGANIZATION_MEMBERS and\n // writes USERS, and a suspension that revoked grants without persisting the status (or the\n // reverse) is a live defect in either direction.\n transactionalCore: true,\n transactionParticipants: {\n members: CoreResourceType.ORGANIZATION_MEMBERS,\n users: CoreResourceType.USERS,\n },\n authoritativeFields: ['status'],\n handlers: {\n prefixCoreOperations: async (id, input, executionContext, _operationPath, utils) => {\n const { organizationId, name, slug, status } = resolveOrganizationLifecycleSubject(id, utils);\n if (!organizationId) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: { reason: 'organization_suspend_unresolved_subject' },\n });\n }\n\n const authoredInput = input as { suspensionReason?: string; notifyMembers?: boolean } | undefined;\n // `.default(true)` on the flag means an omitted value notifies; only an explicit `false`\n // suppresses. Read the same way the notification `condition` reads it so the audit record\n // cannot claim something different from what was actually sent.\n const notifiedMembers = authoredInput?.notifyMembers !== false;\n\n // Reconcile the GLOBAL `user.userTypes` grants this tenant was keeping alive.\n //\n // The rule itself lives in the qualification predicate, which no longer counts a\n // membership in a non-authority-conferring tenant — so one definition now covers\n // suspension, cancellation and teardown alike. But a stored `user.userTypes` value is only\n // recomputed when something triggers a reconciliation; nothing recomputes it\n // spontaneously. THIS CALL IS THAT TRIGGER. Without it the predicate change would be\n // correct and inert, and a suspended tenant would keep vouching for its members\n // platform-wide until an unrelated membership event happened to recompute them.\n //\n // Safe to run BEFORE the status write: the predicate excludes the organization being acted\n // on (`excludeOrgId`) and therefore never reads this tenant's own status — it answers\n // \"would you still qualify if this tenant did not count\", which is exactly the\n // post-suspension question.\n const revokedUserTypeCount = await reconcileGlobalUserTypesForTenant({\n organizationId,\n resourcesRegistryService,\n utils,\n container,\n });\n\n registerOrganizationLifecycleAudit({\n utils, executionContext, organizationId, container,\n effectKey: `organization-suspended:${organizationId}`,\n eventLabel: 'ORGANIZATION_SUSPENDED',\n emit: (auditLogsService) => auditLogsService.logOrganizationSuspended({\n organizationId,\n name,\n slug,\n suspendedBy: resolveAuditActorId(executionContext),\n // Captured from the PRE-operation snapshot: after the write the tenant is SUSPENDED,\n // so the state it came from is unrecoverable from the row.\n previousStatus: status ?? '',\n // Required by the request contract, so a missing value is a contract breach rather\n // than a state to encode. The empty string keeps the record emitting rather than\n // dropping the evidence of a suspension that did happen.\n suspensionReason: authoredInput?.suspensionReason ?? '',\n notifiedMembers,\n revokedUserTypeCount,\n }, executionContext),\n });\n\n return {\n ...(input as object),\n status: OrganizationStatus.SUSPENDED,\n };\n },\n },\n });\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n}\n\n/**\n * Build the `activate` registration — return a halted or expired tenant to normal operation.\n *\n * The inverse of `suspend`, and also the trial-conversion path: its `enabledCondition` admits both\n * `SUSPENDED` (lifting a hold) and `TRIAL_EXPIRED` (converting a lapsed trial). Both land on\n * `ACTIVE`, and the audit record carries `previousStatus` so the two journeys stay distinguishable\n * to a reviewer — they are not the same event even though they share a destination.\n *\n * Nothing needs re-granting. Organization-scoped authority is recomputed per request from the\n * tenant's status over membership rows suspension never touched, so it returns by itself the moment\n * this commits — which is exactly why `suspend` was able to leave those rows alone.\n *\n * ⚠️ `DELETED` is NOT reachable here, and must not be added. Reactivating a tenant marked for\n * deletion is `restore`'s job: it additionally clears the purge deadline and re-grants the global\n * user types the mark revoked. Admitting `DELETED` here would return the tenant to `ACTIVE` while\n * leaving `purgeScheduledAt` armed — a live tenant the purge batch would destroy on schedule.\n */\nfunction createOrganizationActivateFactory(): ResourceCustomServiceImplementationFactory {\n const factory = (resourcesRegistryService: ResourcesRegistryBackendService, container: Container) =>\n createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: CoreResourceType.ORGANIZATIONS,\n operationIdentifier: Organization_Lifecycle_Operations.ACTIVATE,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n variantKey: undefined,\n },\n debugLabel: 'organizations.activate',\n // Same participants as `suspend` — the re-grant reads memberships and writes users.\n transactionalCore: true,\n transactionParticipants: {\n members: CoreResourceType.ORGANIZATION_MEMBERS,\n users: CoreResourceType.USERS,\n },\n authoritativeFields: ['status'],\n handlers: {\n prefixCoreOperations: async (id, input, executionContext, _operationPath, utils) => {\n const { organizationId, name, slug, status } = resolveOrganizationLifecycleSubject(id, utils);\n if (!organizationId) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: { reason: 'organization_activate_unresolved_subject' },\n });\n }\n\n // The inverse trigger. `grantUserTypesOnOrgJoin` is additive and idempotent, so a member\n // who never lost a type (because another qualifying tenant kept it alive) is untouched.\n //\n // Re-granting from CONFIGURATION rather than from a remembered revocation list is\n // deliberate: a stored manifest would be a second source of truth that can drift from the\n // organization-type config between the suspension and the reactivation.\n const regrantedUserTypeCount = await regrantUserTypesForTenantRestore({\n organizationId,\n resourcesRegistryService,\n utils,\n container,\n });\n\n registerOrganizationLifecycleAudit({\n utils, executionContext, organizationId, container,\n effectKey: `organization-activated:${organizationId}`,\n eventLabel: 'ORGANIZATION_ACTIVATED',\n emit: (auditLogsService) => auditLogsService.logOrganizationActivated({\n organizationId,\n name,\n slug,\n activatedBy: resolveAuditActorId(executionContext),\n previousStatus: status ?? '',\n regrantedUserTypeCount,\n reason: (input as { reason?: string } | undefined)?.reason,\n }, executionContext),\n });\n\n return {\n ...(input as object),\n status: OrganizationStatus.ACTIVE,\n };\n },\n },\n });\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n}\n\n/**\n * Register every ORGANIZATIONS lifecycle transition that owns `status`.\n *\n * `request_deletion` is registered on BOTH its declared variants. Custom implementations resolve by\n * an exact operation-path key embedding `variantType` and the default/variant-key slot, so a hook\n * registered on only one door silently never runs on the other — which would leave the PRIVILEGED\n * cross-tenant door as the one that marks a tenant without revoking anything.\n */\nexport function createOrganizationLifecycleFactories(): ResourceCustomServiceImplementationFactory[] {\n return [\n createOrganizationRequestDeletionFactory(undefined),\n createOrganizationRequestDeletionFactory(ORGANIZATIONS_ADMIN_VARIANT_KEY),\n createOrganizationRestoreFactory(),\n createOrganizationSuspendFactory(),\n createOrganizationActivateFactory(),\n ];\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organization-deletion-audit.custom-impl.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"organization-deletion-audit.custom-impl.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/organizations/services/organization-deletion-audit.custom-impl.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAUH,OAAO,EAEL,KAAK,0CAA0C,EAChD,MAAM,4GAA4G,CAAC;AAyIpH;;;;;;;GAOG;AACH,wBAAgB,wCAAwC,IAAI,0CAA0C,EAAE,CAKvG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organization-member-custom-implementation.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"organization-member-custom-implementation.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/organizations/services/organization-member-custom-implementation.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4BH,OAAO,EAGL,KAAK,0CAA0C,EAChD,MAAM,4GAA4G,CAAC;AA6oBpH,wBAAgB,uCAAuC,IAAI,0CAA0C,EAAE,CAu+BtG"}
|
package/dist/esm/organizations/services/organization-onboarding-operation.backend.utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organization-onboarding-operation.backend.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"organization-onboarding-operation.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/organizations/services/organization-onboarding-operation.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qEAAqE,CAAC;AAE1G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uDAAuD,CAAC;AAC5F,OAAO,KAAK,EACV,2CAA2C,EAC5C,MAAM,yFAAyF,CAAC;AAEjG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAUnH;;;;;GAKG;AACH,eAAO,MAAM,8CAA8C,QAClC,CAAC;AAI1B,oBAAY,qCAAqC;IAC/C,WAAW,gBAAgB;IAC3B,SAAS,cAAc;CACxB;AAYD,MAAM,WAAW,mCAAmC;IAClD,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;CAClB;AA6CD,wBAAsB,mCAAmC,CACvD,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,0BAA0B,EACxC,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,mCAAmC,GAAG,IAAI,CAAC,CAUrD;AAED,wBAAsB,oCAAoC,CACxD,MAAM,EAAE;IACN,cAAc,EAAE,cAAc,CAAC;IAC/B,6BAA6B,EAC3B,2CAA2C,CAAC;IAC9C,YAAY,EAAE,0BAA0B,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,CAAC,cAAc,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACzE,GACA,OAAO,CAAC,mCAAmC,CAAC,CA8G9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organization-unit-custom-implementation.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"organization-unit-custom-implementation.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/organizations/services/organization-unit-custom-implementation.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,OAAO,EAEL,KAAK,0CAA0C,EAChD,MAAM,4GAA4G,CAAC;AAEpH,OAAO,KAAK,EAAE,4CAA4C,EAAE,MAAM,iHAAiH,CAAC;AACpL,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qEAAqE,CAAC;AAc5G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,wBAAsB,kCAAkC,CACtD,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,EACvC,KAAK,EAAE,4CAA4C,GAClD,OAAO,CAAC,IAAI,CAAC,CA6Df;AAiHD;;;;;;;;;;GAUG;AACH,wBAAgB,yCAAyC,IAAI,0CAA0C,EAAE,CA8CxG;AAED;;;;;;;GAOG;AACH,wBAAgB,qCAAqC,IAAI,0CAA0C,EAAE,CAiDpG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mCAAmC,IAAI,0CAA0C,EAAE,CA0GlG;AAoFD,yCAAyC;AACzC,wBAAgB,+CAA+C,IAAI,0CAA0C,EAAE,CAK9G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oDAAoD,IAAI,0CAA0C,EAAE,CAqCnH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organization-unit-member-custom-implementation.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"organization-unit-member-custom-implementation.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/organizations/services/organization-unit-member-custom-implementation.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,EAEL,KAAK,0CAA0C,EAChD,MAAM,4GAA4G,CAAC;AAiMpH;;;;;;;GAOG;AACH,wBAAgB,2CAA2C,IAAI,0CAA0C,EAAE,CA6F1G;AAED;;;GAGG;AACH,wBAAgB,2CAA2C,IAAI,0CAA0C,EAAE,CA6C1G;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,2CAA2C,IAAI,0CAA0C,EAAE,CAgD1G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scim-provisioning-gate.backend.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"scim-provisioning-gate.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/organizations/services/scim-provisioning-gate.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qEAAqE,CAAC;AAC5G,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,6FAA6F,CAAC;AACzJ,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yEAAyE,CAAC;AAC/H,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iFAAiF,CAAC;AAGlI,KAAK,eAAe,GAAG;IAAE,gBAAgB,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEhG,wBAAsB,+BAA+B,CACnD,EAAE,EAAE,gBAAgB,CAAC,GAAG,CAAC,EACzB,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,SAAS,CAAC;IAC/D,uBAAuB,EAAE,qCAAqC,CAAC;CAChE,GACA,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sCAAsC,CACpD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACrD,OAAO,CAKT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,IAAI,CAAC,+BAA+B,EAAE,yBAAyB,CAAC,CAAC;IACpF,mBAAmB,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;CACvE,GACA,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-org-type-grant.backend.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"user-org-type-grant.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/organizations/services/user-org-type-grant.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qEAAqE,CAAC;AAC5G,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,6FAA6F,CAAC;AACzJ,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iFAAiF,CAAC;AAClI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qEAAqE,CAAC;AAE1G,KAAK,UAAU,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3C,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,gBAAgB,CAAC,GAAG,CAAC,EACzB,MAAM,EAAE;IACN,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC;IAC1D,uBAAuB,EAAE,qCAAqC,CAAC;IAC/D;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;IACjD,gGAAgG;IAChG,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,GACA,OAAO,CAAC,MAAM,EAAE,CAAC,CAkDnB"}
|
package/dist/esm/organizations/services/user-type-revocation-on-org-leave.backend.utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-type-revocation-on-org-leave.backend.utils.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"user-type-revocation-on-org-leave.backend.utils.d.ts","sourceRoot":"","sources":["../../../../src/organizations/services/user-type-revocation-on-org-leave.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,KAAK,EAA0C,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACxG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qEAAqE,CAAC;AAC5G,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,6FAA6F,CAAC;AACzJ,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qEAAqE,CAAC;AAE1G,KAAK,qBAAqB,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AACpD,KAAK,WAAW,GAAG;IAAE,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;CAAE,CAAC;AACrE,KAAK,UAAU,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3C,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,gBAAgB,CAAC,GAAG,CAAC,EACzB,MAAM,EAAE;IACN,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC;IAC1D,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC;IACzD,uBAAuB,EAAE,qCAAqC,CAAC;IAC/D,mFAAmF;IACnF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,wFAAwF;IACxF,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;CAClE,GACA,OAAO,CAAC,MAAM,EAAE,CAAC,CAoGnB;AAED,yEAAyE;AACzE,MAAM,WAAW,2BAA2B;IAC1C,wDAAwD;IACxD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,gFAAgF;IAChF,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC;CACxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiny-pdf-template.fixture.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"tiny-pdf-template.fixture.d.ts","sourceRoot":"","sources":["../../../../../src/pdf-templates/__tests__/fixtures/tiny-pdf-template.fixture.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAElF,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,sBAAsB,EAAE,qBAAqB,CACxD,qBAAqB,EACrB,sBAAsB,CAgBvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-template-binding.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"pdf-template-binding.d.ts","sourceRoot":"","sources":["../../../../src/pdf-templates/models/pdf-template-binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,WAAW,uBAAuB,CACtC,OAAO,GAAG,OAAO,EACjB,QAAQ,GAAG,OAAO;IAElB,yEAAyE;IACzE,QAAQ,EAAE,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;CACpD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,CACjD,YAAY,EACZ,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAClD,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,SAAS,sBAAsB,EACxC,QAAQ,EAAE,SAAS,GAAG,SAAS,CAEhC;AACD,gEAAgE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-template-definition.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"pdf-template-definition.d.ts","sourceRoot":"","sources":["../../../../src/pdf-templates/models/pdf-template-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qEAAqE,CAAC;AAClI,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qEAAqE,CAAC;AAE5G;;;;;;;;GAQG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,GAAG,OAAO,EACtD,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,mBAAmB,EAC/B,OAAO,CAAC,EAAE,iBAAiB,KACxB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAE7B;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB,CAAC,OAAO,GAAG,OAAO;IACrD,4DAA4D;IAC5D,aAAa,EAAE,OAAO,CAAC;IACvB,yFAAyF;IACzF,aAAa,EAAE,wBAAwB,CAAC;IACxC,gEAAgE;IAChE,WAAW,EAAE,sBAAsB,CAAC;IACpC,sFAAsF;IACtF,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,4EAA4E;IAC5E,YAAY,EAAE,uBAAuB,CAAC;IACtC,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB,CAAC,OAAO,GAAG,OAAO,EAAE,QAAQ,GAAG,OAAO;IAC1E;;;;;;OAMG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtE;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,EAAE,QAAQ,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,GAAG,YAAY,CAAC;CAClB;AACD,kEAAkE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-generated-file-writer.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"pdf-generated-file-writer.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/pdf-templates/services/pdf-generated-file-writer.backend.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,IAAI,EAIJ,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAG9G,OAAO,EAAE,qCAAqC,EAAE,MAAM,6EAA6E,CAAC;AACpI,OAAO,EAAE,+BAA+B,EAAE,MAAM,sEAAsE,CAAC;AACvH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAC;AACxG,OAAO,EAAE,mBAAmB,EAAE,MAAM,yDAAyD,CAAC;AAE9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAC/G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,EAAE,qCAAqC,EAAE,MAAM,qFAAqF,CAAC;AAC5I,OAAO,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAC3H,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qEAAqE,CAAC;AAG5G,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,kBAAkB,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,mBAAmB,CAAC;CAC9B;AAED,qBACa,oCAAoC;IAK7C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IAExC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAlBnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAK;gBAInC,MAAM,EAAE,aAAa,EAErB,YAAY,EAAE,0BAA0B,EAExC,iBAAiB,EAAE,+BAA+B,EAElD,uBAAuB,EAAE,qCAAqC,EAE9D,YAAY,EAAE,mBAAmB,EAEjC,iBAAiB,EAAE,+BAA+B,EAElD,YAAY,EAAE,qCAAqC,EAEnD,gBAAgB,EAAE,uBAAuB;IAGtD,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,2BAA2B,CAAC;IA+EtF,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GACtC,OAAO,CAAC,IAAI,CAAC;YAeF,YAAY;YA2CZ,kBAAkB;YAmDlB,oBAAoB;IAgBlC,OAAO,CAAC,6BAA6B;IAqDrC,OAAO,CAAC,UAAU;CAiBnB"}
|
package/dist/esm/pdf-templates/services/pdf-generation-orchestrator.backend.service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-generation-orchestrator.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"pdf-generation-orchestrator.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/pdf-templates/services/pdf-generation-orchestrator.backend.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0C,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qEAAqE,CAAC;AAC7G,OAAO,EAAE,yCAAyC,EAAE,MAAM,qGAAqG,CAAC;AAChK,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAE9G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qEAAqE,CAAC;AAE5G,OAAO,KAAK,EAEV,wBAAwB,EACxB,sBAAsB,EAEvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,oCAAoC,EAAE,MAAM,6CAA6C,CAAC;AACnG,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAE1F,oBAAY,wBAAwB;IAClC,MAAM,WAAW;IACjB,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,wBAAwB,CAAC,OAAO,GAAG,OAAO;IACzD,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,kBAAkB,CAAC;IACjC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,WAAW,EAAE,wBAAwB,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,qBACa,uCAAuC;IAGhD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAEzB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBARpB,YAAY,EAAE,0BAA0B,EAExC,cAAc,EAAE,gCAAgC,EAEhD,QAAQ,EAAE,yBAAyB,EAEnC,mBAAmB,EAAE,oCAAoC,EAEzD,oBAAoB,EAAE,yCAAyC;IAG5E,gBAAgB,CAAC,OAAO,GAAG,OAAO,EACtC,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,GACvC,OAAO,CAAC,yBAAyB,CAAC;IA6FrC,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,uBAAuB;CAOhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-renderer.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"pdf-renderer.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/pdf-templates/services/pdf-renderer.backend.service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAG9G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qEAAqE,CAAC;AAE5G,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;CAC1C;AAED,qBACa,yBAAyB;IAKlC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAJ/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAU;gBAIxC,YAAY,EAAE,0BAA0B;IAGrD,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;YA4BtE,cAAc;YAkBd,kBAAkB;IAQhC;;;;;;;OAOG;YACW,WAAW;CA8B1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-template-binding.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"pdf-template-binding.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/pdf-templates/services/pdf-template-binding.backend.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0C,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAElG,OAAO,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAC9G,OAAO,EAAE,gCAAgC,EAAE,MAAM,wEAAwE,CAAC;AAE1H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,EAAE,+BAA+B,EAAE,MAAM,0EAA0E,CAAC;AAE3H,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,sBAAsB,EAA2B,MAAM,gCAAgC,CAAC;AAEtG,qBACa,gCAAgC;IAMzC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAXrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwD;IACjF,OAAO,CAAC,WAAW,CAAS;gBAIT,MAAM,EAAE,aAAa,EAErB,YAAY,EAAE,0BAA0B,EAExC,iBAAiB,EAAE,+BAA+B,EAElD,kBAAkB,EAAE,gCAAgC;IAGvE;;;;;;;;;;OAUG;IACH,UAAU,CAAC,QAAQ,GAAE,sBAA2B,EAAE,OAAO,GAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI;IAyEvG,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,QAAQ,GAAG,OAAO,EAC3C,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,GAChB,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAmB3C,eAAe,IAAI,KAAK,CAAC;QAAE,YAAY,EAAE,YAAY,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAW/F,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,6BAA6B;IAmBrC,OAAO,CAAC,kBAAkB;CAa3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-queue-adapter.backend.service.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"in-memory-queue-adapter.backend.service.d.ts","sourceRoot":"","sources":["../../../../src/queue/adapters/in-memory-queue-adapter.backend.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAInE,OAAO,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAE7F,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAGb,MAAM,mEAAmE,CAAC;AAC3E,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EACnB,MAAM,iEAAiE,CAAC;AAsDzE,qBACa,kCAAmC,YAAW,YAAY;IAQhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAP5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;IACrD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,SAAS,CAAS;gBAG4B,MAAM,EAAE,aAAa;IAG9D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B,WAAW,IAAI,OAAO;IAIhB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/E,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5F,oBAAoB,CAC/B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAkBH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IASpE,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,eAAe,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,GAC1D,OAAO,CAAC,MAAM,CAAC;IAcL,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7F,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAI5B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO9D,QAAQ,IAAI,MAAM;IAIzB,uGAAuG;IAChG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAInD;;;;;;;OAOG;IACI,aAAa,IAAI,SAAS,MAAM,EAAE;IAIzC;;;;;;OAMG;IACI,oBAAoB,IAAI,MAAM;IAIrC,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,OAAO;IAQf;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;YAOP,KAAK;IA6BnB,OAAO,CAAC,eAAe;IAoBvB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;CAQnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-queue-adapter.backend.service.js","sourceRoot":"","sources":["../../../../../src/queue/adapters/in-memory-queue-adapter.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { JobPayload, JobResult } from '@wildo-ai/saas-models';\nimport { inject, injectable } from 'inversify';\n\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { describeCaughtError } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport type {\n MessageHandler,\n QueueAdapter,\n QueueConsumeMessage,\n QueueMessageAcknowledger,\n} from '~wildo-backend-lib/queue/adapters/queue-adapter.backend.interface';\nimport type {\n PublishOptions,\n QueueAssertOptions,\n} from '~wildo-backend-lib/queue/adapters/queue-adapter.backend.options';\n\n/**\n * An in-process {@link QueueAdapter}, so background-work BEHAVIOUR can be tested without a broker (#502).\n *\n * ## What this is for, and the bar it had to clear\n *\n * `QueueAdapterType` declared three adapters and one existed. The decision was to build this one and\n * collapse the other two, on a stated justification: *\"a queue that needs no RabbitMQ makes\n * background-work behaviour testable in-process\"*. That justification also sets the bar — an adapter\n * nothing runs against would have been a fourth unreachable thing built to fix three — so this ships\n * with a lane that drives real consumer behaviour through it, and that lane, not this file, is what\n * makes the decision honest.\n *\n * ## It is a QUEUE, not a stub\n *\n * The distinction matters, because a stub proves the caller compiles and a queue proves the caller is\n * right. So this really does what the port promises:\n *\n * - **`nack(requeue: true)` puts the message back**, at the FRONT, and the consumer sees it again.\n * That is the retry loop every job consumer depends on, and a stub that swallowed it would let a\n * broken retry pass.\n * - **`nack(requeue: false)` dead-letters** to the queue named by the source queue's\n * `deadLetterExchange`/`deadLetterRoutingKey` assertion when one was declared, so a test can assert\n * a poison message ARRIVED somewhere rather than merely that it left.\n * - **`scheduleDelayedRetry` really waits**, on a timer, and the delay is observable. RabbitMQ does\n * this with a per-delay TTL queue dead-lettering back to the source; the observable contract — the\n * job reappears on its source queue after `delayMs` — is identical, which is the only part a\n * consumer may depend on.\n * - **An unacknowledged message stays unacknowledged.** Nothing auto-acks. A handler that forgets to\n * settle leaves the message in flight here exactly as it would on a broker, and the count is\n * readable through {@link getQueueDepth}.\n *\n * ## What it deliberately does NOT do\n *\n * No durability, no cross-process visibility, no broker permissions, no exchange topology. Those are\n * the properties a real deployment buys a broker FOR, and simulating them here would produce a second\n * queue implementation whose divergences from RabbitMQ nobody could enumerate. This is for tests and\n * for a single-process runtime that has declared it wants no broker — it is not a smaller RabbitMQ.\n *\n * Delivery is asynchronous (`queueMicrotask`), never synchronous inside `publish`. A synchronous\n * hand-off would let a test pass that deadlocks against a real broker, because the publisher would be\n * holding whatever the handler then waits on.\n */\n\ninterface InMemoryQueue {\n readonly messages: QueueConsumeMessage[];\n readonly options: QueueAssertOptions;\n /** In-flight: delivered and not yet settled. Keyed by the identity handed to the handler. */\n readonly unsettled: Set<QueueConsumeMessage>;\n consumer?: { tag: string; handler: MessageHandler };\n draining: boolean;\n}\n\n@injectable()\nexport class InMemoryQueueAdapterBackendService implements QueueAdapter {\n private readonly queues = new Map<string, InMemoryQueue>();\n private readonly pendingDelays = new Set<NodeJS.Timeout>();\n private readonly podId = `in-memory-${randomUUID()}`;\n private replyQueueName: string | null = null;\n private connected = false;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n ) {}\n\n public async connect(): Promise<void> {\n this.connected = true;\n }\n\n public async close(): Promise<void> {\n // Timers first: a delayed retry firing after close would republish onto a queue nobody is\n // consuming, and in a test run that surfaces as an unhandled rejection in the NEXT test.\n for (const timer of this.pendingDelays) clearTimeout(timer);\n this.pendingDelays.clear();\n this.queues.clear();\n this.replyQueueName = null;\n this.connected = false;\n }\n\n public isConnected(): boolean {\n return this.connected;\n }\n\n public async assertQueue(queueName: string, options: QueueAssertOptions = {}): Promise<void> {\n const existing = this.queues.get(queueName);\n if (existing) {\n // Idempotent, like the broker's own `assertQueue`. The options of the FIRST assertion win, so a\n // later assertion cannot silently retune a live queue's dead-lettering.\n return;\n }\n this.queues.set(queueName, { messages: [], options, unsettled: new Set(), draining: false });\n }\n\n public async publish(queueName: string, payload: JobPayload, options: PublishOptions = {}): Promise<void> {\n await this.assertQueue(queueName);\n this.enqueue(queueName, this.buildMessage(payload, options), 'back');\n }\n\n public async scheduleDelayedRetry(\n sourceQueueName: string,\n job: JobPayload,\n delayMs: number,\n options: PublishOptions = {},\n ): Promise<void> {\n await this.assertQueue(sourceQueueName);\n /*\n * A timer, where RabbitMQ uses a per-delay queue whose TTL dead-letters back to the source. The\n * MECHANISM differs and the observable contract does not: the job reappears on its source queue\n * after `delayMs`. A consumer that depended on the intermediate delay queue existing would be\n * depending on a RabbitMQ implementation detail, which is exactly what the port exists to stop.\n */\n const timer = setTimeout(() => {\n this.pendingDelays.delete(timer);\n this.enqueue(sourceQueueName, this.buildMessage(job, options), 'back');\n }, delayMs);\n // Never hold the event loop open: a pending retry must not keep a test process (or a shutting-down\n // runtime) alive past its work.\n timer.unref?.();\n this.pendingDelays.add(timer);\n }\n\n public async consume(queueName: string, handler: MessageHandler): Promise<string> {\n await this.assertQueue(queueName);\n const queue = this.queues.get(queueName) as InMemoryQueue;\n const tag = `in-memory-consumer-${randomUUID()}`;\n queue.consumer = { tag, handler };\n this.scheduleDrain(queueName);\n return tag;\n }\n\n public async cancelConsumer(queueName: string): Promise<void> {\n const queue = this.queues.get(queueName);\n if (queue) queue.consumer = undefined;\n }\n\n public async setupReplyQueue(\n appId: string,\n onReply: (correlationId: string, result: JobResult) => void,\n ): Promise<string> {\n const queueName = `${appId}.replies.${this.podId}`;\n await this.assertQueue(queueName, { exclusive: true, autoDelete: true });\n await this.consume(queueName, async (message, acknowledger) => {\n const correlationId = message.properties.correlationId;\n if (typeof correlationId === 'string') {\n onReply(correlationId, JSON.parse(message.content.toString()) as JobResult);\n }\n acknowledger.ack(message);\n });\n this.replyQueueName = queueName;\n return queueName;\n }\n\n public async publishResult(replyTo: string, correlationId: string, result: JobResult): Promise<void> {\n await this.assertQueue(replyTo);\n this.enqueue(\n replyTo,\n {\n content: Buffer.from(JSON.stringify(result)),\n fields: { redelivered: false },\n properties: { correlationId },\n },\n 'back',\n );\n }\n\n public getReplyQueueName(): string | null {\n return this.replyQueueName;\n }\n\n public async getQueueDepth(queueName: string): Promise<number | null> {\n // A real number, not `null`: this adapter genuinely knows, and monitoring is one of the things a\n // broker-free lane exists to exercise. `null` is reserved for \"cannot say\", which would be a lie\n // here.\n return this.queues.get(queueName)?.messages.length ?? 0;\n }\n\n public getPodId(): string {\n return this.podId;\n }\n\n /** In-flight count for a queue — delivered, not yet settled. Test-facing, and the reason it exists. */\n public getUnsettledCount(queueName: string): number {\n return this.queues.get(queueName)?.unsettled.size ?? 0;\n }\n\n /**\n * Every queue this adapter currently knows about.\n *\n * Test-facing, and it exists because of a mutation that survived without it: a version that\n * INVENTED a dead-letter destination when a queue declared none passed a suite asserting only that\n * the source queue was empty. \"The message went nowhere\" is a claim about every queue, and it\n * cannot be checked one queue at a time.\n */\n public getQueueNames(): readonly string[] {\n return [...this.queues.keys()];\n }\n\n /**\n * Delayed retries still waiting to fire.\n *\n * Also mutation-driven: `close()` clearing the queue map makes a late timer harmless by accident,\n * so a test asserting depth after close passed with the timer cleanup deleted. This exposes the\n * mechanism itself, which is the thing the cleanup is actually for.\n */\n public getPendingDelayCount(): number {\n return this.pendingDelays.size;\n }\n\n private buildMessage(payload: JobPayload | JobResult, options: PublishOptions): QueueConsumeMessage {\n return {\n content: Buffer.from(JSON.stringify(payload)),\n fields: { redelivered: false },\n // Only what the port declares. `priority` and `expiration` are accepted by `PublishOptions`\n // and are BROKER scheduling hints — this queue has no priority ordering and says so by not\n // pretending to carry them, rather than storing a value nothing reads.\n properties: {\n correlationId: options.correlationId ?? null,\n replyTo: options.replyTo,\n },\n };\n }\n\n private enqueue(queueName: string, message: QueueConsumeMessage, end: 'front' | 'back'): void {\n const queue = this.queues.get(queueName);\n if (!queue) return;\n if (end === 'front') queue.messages.unshift(message);\n else queue.messages.push(message);\n this.scheduleDrain(queueName);\n }\n\n /**\n * Deliver on a microtask, one message at a time, never re-entrantly.\n *\n * `draining` is what makes a handler that publishes to its OWN queue terminate: without it the\n * enqueue inside the handler re-enters the drain and the stack grows until it overflows — a failure\n * that would appear only under the in-memory adapter and would read as a defect in the consumer.\n */\n private scheduleDrain(queueName: string): void {\n const queue = this.queues.get(queueName);\n if (!queue || queue.draining || !queue.consumer) return;\n queue.draining = true;\n queueMicrotask(() => void this.drain(queueName));\n }\n\n private async drain(queueName: string): Promise<void> {\n const queue = this.queues.get(queueName);\n if (!queue) return;\n try {\n while (queue.consumer && queue.messages.length > 0) {\n const message = queue.messages.shift() as QueueConsumeMessage;\n queue.unsettled.add(message);\n try {\n await queue.consumer.handler(message, this.acknowledgerFor(queueName));\n } catch (error) {\n /*\n * A handler that THROWS has not settled the message, and the broker would hold it in\n * flight until the channel closed. Mirrored rather than silently requeued: auto-requeueing\n * here would turn a crashing handler into an infinite hot loop that no real deployment\n * would produce.\n */\n this.logger.warn('In-memory queue handler threw; message left unsettled', {\n queueName,\n error: describeCaughtError(error),\n });\n }\n }\n } finally {\n queue.draining = false;\n // A message that arrived while we were awaiting a handler needs its own drain.\n if (queue.consumer && queue.messages.length > 0) this.scheduleDrain(queueName);\n }\n }\n\n private acknowledgerFor(queueName: string): QueueMessageAcknowledger {\n return {\n ack: (message) => {\n this.queues.get(queueName)?.unsettled.delete(message);\n },\n nack: (message, _allUpTo = false, requeue = false) => {\n const queue = this.queues.get(queueName);\n if (!queue) return;\n queue.unsettled.delete(message);\n if (requeue) {\n // FRONT, and redelivered — the broker's own semantics for a requeue, and the difference a\n // retry test can actually observe.\n this.enqueue(queueName, { ...message, fields: { ...message.fields, redelivered: true } }, 'front');\n return;\n }\n this.deadLetter(queue, message);\n },\n };\n }\n\n /**\n * Route a rejected message to the dead-letter destination the source queue DECLARED.\n *\n * Only when one was declared. Inventing a destination would make a test pass that proves nothing\n * about a deployment whose queue was asserted without dead-lettering — the message is dropped there,\n * and dropping it here is the truthful simulation.\n */\n private deadLetter(queue: InMemoryQueue, message: QueueConsumeMessage): void {\n const destination = queue.options.deadLetterRoutingKey ?? queue.options.deadLetterExchange;\n if (!destination) return;\n if (!this.queues.has(destination)) {\n this.queues.set(destination, { messages: [], options: {}, unsettled: new Set(), draining: false });\n }\n this.enqueue(destination, message, 'back');\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"in-memory-queue-adapter.backend.service.js","sourceRoot":"","sources":["../../../../src/queue/adapters/in-memory-queue-adapter.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { JobPayload, JobResult } from '@wildo-ai/saas-models';\nimport { inject, injectable } from 'inversify';\n\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport { describeCaughtError } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport type {\n MessageHandler,\n QueueAdapter,\n QueueConsumeMessage,\n QueueMessageAcknowledger,\n} from '~wildo-backend-lib/queue/adapters/queue-adapter.backend.interface';\nimport type {\n PublishOptions,\n QueueAssertOptions,\n} from '~wildo-backend-lib/queue/adapters/queue-adapter.backend.options';\n\n/**\n * An in-process {@link QueueAdapter}, so background-work BEHAVIOUR can be tested without a broker (#502).\n *\n * ## What this is for, and the bar it had to clear\n *\n * `QueueAdapterType` declared three adapters and one existed. The decision was to build this one and\n * collapse the other two, on a stated justification: *\"a queue that needs no RabbitMQ makes\n * background-work behaviour testable in-process\"*. That justification also sets the bar — an adapter\n * nothing runs against would have been a fourth unreachable thing built to fix three — so this ships\n * with a lane that drives real consumer behaviour through it, and that lane, not this file, is what\n * makes the decision honest.\n *\n * ## It is a QUEUE, not a stub\n *\n * The distinction matters, because a stub proves the caller compiles and a queue proves the caller is\n * right. So this really does what the port promises:\n *\n * - **`nack(requeue: true)` puts the message back**, at the FRONT, and the consumer sees it again.\n * That is the retry loop every job consumer depends on, and a stub that swallowed it would let a\n * broken retry pass.\n * - **`nack(requeue: false)` dead-letters** to the queue named by the source queue's\n * `deadLetterExchange`/`deadLetterRoutingKey` assertion when one was declared, so a test can assert\n * a poison message ARRIVED somewhere rather than merely that it left.\n * - **`scheduleDelayedRetry` really waits**, on a timer, and the delay is observable. RabbitMQ does\n * this with a per-delay TTL queue dead-lettering back to the source; the observable contract — the\n * job reappears on its source queue after `delayMs` — is identical, which is the only part a\n * consumer may depend on.\n * - **An unacknowledged message stays unacknowledged.** Nothing auto-acks. A handler that forgets to\n * settle leaves the message in flight here exactly as it would on a broker, and the count is\n * readable through {@link getQueueDepth}.\n *\n * ## What it deliberately does NOT do\n *\n * No durability, no cross-process visibility, no broker permissions, no exchange topology. Those are\n * the properties a real deployment buys a broker FOR, and simulating them here would produce a second\n * queue implementation whose divergences from RabbitMQ nobody could enumerate. This is for tests and\n * for a single-process runtime that has declared it wants no broker — it is not a smaller RabbitMQ.\n *\n * Delivery is asynchronous (`queueMicrotask`), never synchronous inside `publish`. A synchronous\n * hand-off would let a test pass that deadlocks against a real broker, because the publisher would be\n * holding whatever the handler then waits on.\n */\n\ninterface InMemoryQueue {\n readonly messages: QueueConsumeMessage[];\n readonly options: QueueAssertOptions;\n /** In-flight: delivered and not yet settled. Keyed by the identity handed to the handler. */\n readonly unsettled: Set<QueueConsumeMessage>;\n consumer?: { tag: string; handler: MessageHandler };\n draining: boolean;\n}\n\n@injectable()\nexport class InMemoryQueueAdapterBackendService implements QueueAdapter {\n private readonly queues = new Map<string, InMemoryQueue>();\n private readonly pendingDelays = new Set<NodeJS.Timeout>();\n private readonly podId = `in-memory-${randomUUID()}`;\n private replyQueueName: string | null = null;\n private connected = false;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n ) {}\n\n public async connect(): Promise<void> {\n this.connected = true;\n }\n\n public async close(): Promise<void> {\n // Timers first: a delayed retry firing after close would republish onto a queue nobody is\n // consuming, and in a test run that surfaces as an unhandled rejection in the NEXT test.\n for (const timer of this.pendingDelays) clearTimeout(timer);\n this.pendingDelays.clear();\n this.queues.clear();\n this.replyQueueName = null;\n this.connected = false;\n }\n\n public isConnected(): boolean {\n return this.connected;\n }\n\n public async assertQueue(queueName: string, options: QueueAssertOptions = {}): Promise<void> {\n const existing = this.queues.get(queueName);\n if (existing) {\n // Idempotent, like the broker's own `assertQueue`. The options of the FIRST assertion win, so a\n // later assertion cannot silently retune a live queue's dead-lettering.\n return;\n }\n this.queues.set(queueName, { messages: [], options, unsettled: new Set(), draining: false });\n }\n\n public async publish(queueName: string, payload: JobPayload, options: PublishOptions = {}): Promise<void> {\n await this.assertQueue(queueName);\n this.enqueue(queueName, this.buildMessage(payload, options), 'back');\n }\n\n public async scheduleDelayedRetry(\n sourceQueueName: string,\n job: JobPayload,\n delayMs: number,\n options: PublishOptions = {},\n ): Promise<void> {\n await this.assertQueue(sourceQueueName);\n /*\n * A timer, where RabbitMQ uses a per-delay queue whose TTL dead-letters back to the source. The\n * MECHANISM differs and the observable contract does not: the job reappears on its source queue\n * after `delayMs`. A consumer that depended on the intermediate delay queue existing would be\n * depending on a RabbitMQ implementation detail, which is exactly what the port exists to stop.\n */\n const timer = setTimeout(() => {\n this.pendingDelays.delete(timer);\n this.enqueue(sourceQueueName, this.buildMessage(job, options), 'back');\n }, delayMs);\n // Never hold the event loop open: a pending retry must not keep a test process (or a shutting-down\n // runtime) alive past its work.\n timer.unref?.();\n this.pendingDelays.add(timer);\n }\n\n public async consume(queueName: string, handler: MessageHandler): Promise<string> {\n await this.assertQueue(queueName);\n const queue = this.queues.get(queueName) as InMemoryQueue;\n const tag = `in-memory-consumer-${randomUUID()}`;\n queue.consumer = { tag, handler };\n this.scheduleDrain(queueName);\n return tag;\n }\n\n public async cancelConsumer(queueName: string): Promise<void> {\n const queue = this.queues.get(queueName);\n if (queue) queue.consumer = undefined;\n }\n\n public async setupReplyQueue(\n appId: string,\n onReply: (correlationId: string, result: JobResult) => void,\n ): Promise<string> {\n const queueName = `${appId}.replies.${this.podId}`;\n await this.assertQueue(queueName, { exclusive: true, autoDelete: true });\n await this.consume(queueName, async (message, acknowledger) => {\n const correlationId = message.properties.correlationId;\n if (typeof correlationId === 'string') {\n onReply(correlationId, JSON.parse(message.content.toString()) as JobResult);\n }\n acknowledger.ack(message);\n });\n this.replyQueueName = queueName;\n return queueName;\n }\n\n public async publishResult(replyTo: string, correlationId: string, result: JobResult): Promise<void> {\n await this.assertQueue(replyTo);\n this.enqueue(\n replyTo,\n {\n content: Buffer.from(JSON.stringify(result)),\n fields: { redelivered: false },\n properties: { correlationId },\n },\n 'back',\n );\n }\n\n public getReplyQueueName(): string | null {\n return this.replyQueueName;\n }\n\n public async getQueueDepth(queueName: string): Promise<number | null> {\n // A real number, not `null`: this adapter genuinely knows, and monitoring is one of the things a\n // broker-free lane exists to exercise. `null` is reserved for \"cannot say\", which would be a lie\n // here.\n return this.queues.get(queueName)?.messages.length ?? 0;\n }\n\n public getPodId(): string {\n return this.podId;\n }\n\n /** In-flight count for a queue — delivered, not yet settled. Test-facing, and the reason it exists. */\n public getUnsettledCount(queueName: string): number {\n return this.queues.get(queueName)?.unsettled.size ?? 0;\n }\n\n /**\n * Every queue this adapter currently knows about.\n *\n * Test-facing, and it exists because of a mutation that survived without it: a version that\n * INVENTED a dead-letter destination when a queue declared none passed a suite asserting only that\n * the source queue was empty. \"The message went nowhere\" is a claim about every queue, and it\n * cannot be checked one queue at a time.\n */\n public getQueueNames(): readonly string[] {\n return [...this.queues.keys()];\n }\n\n /**\n * Delayed retries still waiting to fire.\n *\n * Also mutation-driven: `close()` clearing the queue map makes a late timer harmless by accident,\n * so a test asserting depth after close passed with the timer cleanup deleted. This exposes the\n * mechanism itself, which is the thing the cleanup is actually for.\n */\n public getPendingDelayCount(): number {\n return this.pendingDelays.size;\n }\n\n private buildMessage(payload: JobPayload | JobResult, options: PublishOptions): QueueConsumeMessage {\n return {\n content: Buffer.from(JSON.stringify(payload)),\n fields: { redelivered: false },\n // Only what the port declares. `priority` and `expiration` are accepted by `PublishOptions`\n // and are BROKER scheduling hints — this queue has no priority ordering and says so by not\n // pretending to carry them, rather than storing a value nothing reads.\n properties: {\n correlationId: options.correlationId ?? null,\n replyTo: options.replyTo,\n },\n };\n }\n\n private enqueue(queueName: string, message: QueueConsumeMessage, end: 'front' | 'back'): void {\n const queue = this.queues.get(queueName);\n if (!queue) return;\n if (end === 'front') queue.messages.unshift(message);\n else queue.messages.push(message);\n this.scheduleDrain(queueName);\n }\n\n /**\n * Deliver on a microtask, one message at a time, never re-entrantly.\n *\n * `draining` is what makes a handler that publishes to its OWN queue terminate: without it the\n * enqueue inside the handler re-enters the drain and the stack grows until it overflows — a failure\n * that would appear only under the in-memory adapter and would read as a defect in the consumer.\n */\n private scheduleDrain(queueName: string): void {\n const queue = this.queues.get(queueName);\n if (!queue || queue.draining || !queue.consumer) return;\n queue.draining = true;\n queueMicrotask(() => void this.drain(queueName));\n }\n\n private async drain(queueName: string): Promise<void> {\n const queue = this.queues.get(queueName);\n if (!queue) return;\n try {\n while (queue.consumer && queue.messages.length > 0) {\n const message = queue.messages.shift() as QueueConsumeMessage;\n queue.unsettled.add(message);\n try {\n await queue.consumer.handler(message, this.acknowledgerFor(queueName));\n } catch (error) {\n /*\n * A handler that THROWS has not settled the message, and the broker would hold it in\n * flight until the channel closed. Mirrored rather than silently requeued: auto-requeueing\n * here would turn a crashing handler into an infinite hot loop that no real deployment\n * would produce.\n */\n this.logger.warn('In-memory queue handler threw; message left unsettled', {\n queueName,\n error: describeCaughtError(error),\n });\n }\n }\n } finally {\n queue.draining = false;\n // A message that arrived while we were awaiting a handler needs its own drain.\n if (queue.consumer && queue.messages.length > 0) this.scheduleDrain(queueName);\n }\n }\n\n private acknowledgerFor(queueName: string): QueueMessageAcknowledger {\n return {\n ack: (message) => {\n this.queues.get(queueName)?.unsettled.delete(message);\n },\n nack: (message, _allUpTo = false, requeue = false) => {\n const queue = this.queues.get(queueName);\n if (!queue) return;\n queue.unsettled.delete(message);\n if (requeue) {\n // FRONT, and redelivered — the broker's own semantics for a requeue, and the difference a\n // retry test can actually observe.\n this.enqueue(queueName, { ...message, fields: { ...message.fields, redelivered: true } }, 'front');\n return;\n }\n this.deadLetter(queue, message);\n },\n };\n }\n\n /**\n * Route a rejected message to the dead-letter destination the source queue DECLARED.\n *\n * Only when one was declared. Inventing a destination would make a test pass that proves nothing\n * about a deployment whose queue was asserted without dead-lettering — the message is dropped there,\n * and dropping it here is the truthful simulation.\n */\n private deadLetter(queue: InMemoryQueue, message: QueueConsumeMessage): void {\n const destination = queue.options.deadLetterRoutingKey ?? queue.options.deadLetterExchange;\n if (!destination) return;\n if (!this.queues.has(destination)) {\n this.queues.set(destination, { messages: [], options: {}, unsettled: new Set(), draining: false });\n }\n this.enqueue(destination, message, 'back');\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-adapter.backend.binding.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"queue-adapter.backend.binding.d.ts","sourceRoot":"","sources":["../../../../src/queue/adapters/queue-adapter.backend.binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAkCzD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAM1F"}
|