@wildo-ai/saas-backend-lib 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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 +19 -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 +4 -0
- package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts +35 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js +111 -0
- package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts +50 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +199 -0
- package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts +111 -0
- 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 +140 -0
- package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts +14 -3
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +138 -24
- package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts +3 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js +8 -3
- package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts +11 -0
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js +11 -2
- package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
- 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 +207 -21
- 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-read-client.backend.d.ts +60 -8
- 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 +174 -26
- 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 +48 -4
- 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 +102 -30
- 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 +55 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
- package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
- 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 +84 -11
- 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/odata-query-compiler.backend.js +16 -0
- package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts +20 -6
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +96 -32
- package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts +3 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js +32 -7
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts +8 -5
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +80 -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 +298 -23
- package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts +71 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +85 -5
- package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +21 -0
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +146 -4
- package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
- 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-implementation-coverage.backend.utils.d.ts +3 -26
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js +3 -68
- package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js.map +1 -1
- package/dist/esm/base-classes/services/services/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 +4 -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 +11 -0
- 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 +39 -5
- 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 +181 -2
- 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 +533 -43
- 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 +36 -3
- 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 +70 -8
- package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
- package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
- package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
- package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +474 -0
- package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
- package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
- 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 +209 -6
- 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 +200 -4
- 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 +593 -64
- 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 +36 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
- package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
- 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 +11 -1
- package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.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 +54 -13
- 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 +38 -1
- 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 +67 -2
- 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 +30 -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 +43 -1
- package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
- package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
- 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 +30 -16
- 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 +104 -25
- 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 +18 -1
- 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 +106 -2
- 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 +52 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
- package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
- 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 +260 -26
- package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
- package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
- package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
- package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
- package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
- package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +263 -13
- 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 +376 -58
- 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 +264 -7
- 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 +414 -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 +7 -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 +16 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +140 -0
- package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
- package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +65 -6
- 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 +110 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
- package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
- 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 +45 -0
- package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
- package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.js +7 -1
- package/dist/esm/config/custom/application-config-controller.backend.service.js.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.d.ts +146 -46
- package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
- package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
- package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
- 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 +17 -2
- package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
- package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -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 +68 -76
- 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 +23 -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 +43 -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 +52 -3
- 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 +25 -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 +41 -1
- package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts +2 -2
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js +2 -2
- package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js.map +1 -1
- package/dist/esm/databases/models/filter.backend.schemas.js +2 -2
- package/dist/esm/databases/models/filter.backend.schemas.js.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js +20 -1
- package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
- package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
- package/dist/esm/databases/services/redis.service.d.ts +27 -0
- package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
- package/dist/esm/databases/services/redis.service.js +29 -0
- package/dist/esm/databases/services/redis.service.js.map +1 -1
- package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -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 +13 -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 +70 -7
- package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/error-handler.backend.service.js +134 -8
- package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
- package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
- package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
- 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 +5 -0
- 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 +25 -0
- 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 +33 -0
- 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 +40 -0
- package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts +41 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js +40 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts +64 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js +193 -0
- package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js.map +1 -0
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +72 -4
- 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 +60 -19
- package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
- package/dist/esm/external-data/external-data-transform.backend.js +7 -1
- package/dist/esm/external-data/external-data-transform.backend.js.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts +2 -0
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js +13 -0
- package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js.map +1 -1
- package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
- 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 +256 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +333 -0
- package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
- package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js +216 -0
- package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
- package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
- package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +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 +2 -2
- 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 +89 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
- package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
- package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
- 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 +50 -64
- 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.map +1 -1
- package/dist/esm/external-providers/services/document-extraction.backend.service.js +3 -3
- 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 +4 -4
- package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
- package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +306 -7
- 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 +539 -45
- 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.map +1 -1
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +25 -2
- package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
- package/dist/esm/files/controllers/file.controller.d.ts +24 -1
- package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
- package/dist/esm/files/controllers/file.controller.js +83 -11
- package/dist/esm/files/controllers/file.controller.js.map +1 -1
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts +17 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js +1 -0
- package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -0
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +5 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +76 -13
- package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts +18 -0
- package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-operation-handler.backend.service.js +36 -28
- package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
- package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/file-scanning.backend.service.js +197 -17
- 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 +60 -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 +167 -8
- 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 +214 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.js +566 -0
- package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -0
- package/dist/esm/files/services/files.backend.service.d.ts +87 -0
- package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
- package/dist/esm/files/services/files.backend.service.js +252 -19
- package/dist/esm/files/services/files.backend.service.js.map +1 -1
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
- package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
- package/dist/esm/files/storage/file-storage-provider.types.d.ts +16 -10
- 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/local-directory-storage-provider.backend.service.d.ts +67 -8
- 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 +101 -28
- package/dist/esm/files/storage/local-directory-storage-provider.backend.service.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 +8 -55
- 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 +20 -0
- package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
- package/dist/esm/files/utils/file-uploader.utils.js +12 -0
- package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
- package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
- 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 +76 -5
- package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.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 +6 -1
- package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
- 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 +63 -0
- package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
- package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
- 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 +200 -44
- 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 +7 -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 +53 -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 +18 -0
- 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 +18 -0
- 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 +12 -7
- 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/models/agent-catalogs.backend.definitions.d.ts +0 -13
- 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 +14 -22
- package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
- 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 +25 -15
- package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
- package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -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 +88 -8
- 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 +333 -31
- 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 +4 -2
- 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 +113 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
- package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
- 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 +0 -2
- package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts +107 -1
- package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
- package/dist/esm/flows-actors/services/agents.backend.service.js +519 -56
- package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
- package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +5 -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 +79 -16
- 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 +34 -5
- 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 +154 -20
- 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 +27 -23
- 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 +7 -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 +90 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js +368 -0
- package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
- package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
- 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 +12 -17
- 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 +151 -41
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +308 -143
- package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
- package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
- 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 +8 -243
- 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/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
- package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
- 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 +86 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
- package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
- package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
- package/dist/esm/index.d.ts +15 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +45 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inject/models/container.d.ts.map +1 -1
- package/dist/esm/inject/models/container.js +82 -10
- package/dist/esm/inject/models/container.js.map +1 -1
- package/dist/esm/inject/models/service-types.d.ts +20 -3
- package/dist/esm/inject/models/service-types.d.ts.map +1 -1
- package/dist/esm/inject/models/service-types.js +21 -3
- 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 +32 -4
- package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts +34 -0
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js +42 -0
- package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
- package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +84 -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 +235 -11
- package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts +64 -2
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +152 -6
- package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.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 +49 -4
- 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 +66 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
- package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
- package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
- 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 +411 -19
- 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 +11 -2
- 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 +28 -9
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
- package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.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 +52 -11
- 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 +62 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
- package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +309 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +385 -0
- package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
- package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
- 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/services/metrics.service.d.ts +21 -0
- package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
- package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
- package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
- package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
- package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
- package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
- package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
- package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -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 +105 -10
- package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
- package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -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 +10 -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 +60 -4
- package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/email/services/email.backend.service.js +145 -43
- package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
- package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -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/services/notification-badge.backend.service.d.ts +142 -21
- package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
- package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +108 -13
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +432 -101
- package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +2 -2
- package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/sms/services/sms.backend.service.js +5 -5
- 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 +117 -5
- 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 +164 -6
- 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 +0 -6
- 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 +54 -7
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts +5 -5
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js +14 -13
- package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts +2 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +18 -8
- package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +20 -18
- package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
- 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 +18 -0
- package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
- package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.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 +63 -2
- package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js +4 -1
- package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js.map +1 -1
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
- package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
- package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
- package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
- package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-consumer.backend.service.js +1 -4
- package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
- package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/job-executor.backend.service.js +1 -4
- package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
- package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
- package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -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 +16 -1
- package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
- package/dist/esm/queue/queue.backend.service.d.ts +3 -3
- package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/queue.backend.service.js +26 -4
- package/dist/esm/queue/queue.backend.service.js.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
- package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
- package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
- package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
- package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
- 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 +12 -3
- 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 +12 -3
- package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
- package/dist/esm/requests/service/websocket.service.d.ts +9 -0
- package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
- package/dist/esm/requests/service/websocket.service.js +88 -15
- package/dist/esm/requests/service/websocket.service.js.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +16 -2
- package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.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 +2 -0
- 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 +14 -0
- package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
- package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -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 +8 -0
- package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
- package/dist/esm/resources/services/resource-id.backend.service.js +3 -3
- package/dist/esm/resources/services/resource-id.backend.service.js.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts +60 -5
- package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
- package/dist/esm/resources/services/resources-registry.backend.service.js +91 -7
- package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
- package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
- package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
- package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
- package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js +13 -7
- package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
- 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 +26 -0
- package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
- package/dist/esm/runtime/services/http-server.backend.service.js +181 -1
- package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
- package/dist/esm/runtime/services/start-application.backend.service.d.ts +47 -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 +343 -77
- package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
- package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
- 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 +28 -0
- 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 +5 -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 +24 -4
- package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
- 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 +29 -4
- 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 +114 -0
- 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 +354 -3
- package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
- package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts +3 -23
- package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js +20 -45
- package/dist/esm/security/authentications/models/jwt.backend.schemas.js.map +1 -1
- package/dist/esm/security/authentications/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/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
- 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 +23 -14
- 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 +0 -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 +15 -12
- 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 +113 -3
- 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 +207 -30
- 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 +95 -2
- 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 +153 -9
- package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +190 -0
- 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 +377 -53
- package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts +9 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +77 -2
- package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js +5 -3
- package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
- 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 +202 -23
- 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.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +42 -1
- 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.map +1 -1
- package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +34 -4
- 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/webauthn.backend.service.d.ts +29 -5
- 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 +77 -5
- package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +41 -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 +87 -4
- 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 +43 -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 +277 -97
- 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 +28 -5
- 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 +72 -12
- 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 +3 -0
- package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +283 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
- 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 +4 -3
- package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
- 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 +111 -21
- 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 +14 -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 +49 -8
- package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.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 +4 -0
- package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.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 +6 -0
- package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -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 +51 -0
- package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
- 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 +45 -0
- package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
- package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js +24 -1
- package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js.map +1 -1
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
- 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 +27 -28
- package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.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 +77 -3
- 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 +117 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js +104 -0
- package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js.map +1 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
- package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +93 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js +95 -0
- package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
- package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +124 -1
- 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 +142 -5
- 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 +175 -14
- package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
- package/dist/esm/security/authorizations/services/authorizations.backend.service.js +385 -49
- 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 +6 -14
- 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 +13 -22
- 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 +60 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
- package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +161 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +512 -0
- package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +59 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
- package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
- package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +191 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +385 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
- package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +266 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +111 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +107 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
- package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +195 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +387 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
- package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +62 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
- package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
- package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
- package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts +18 -1
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js +110 -74
- package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js.map +1 -1
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts +22 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js +22 -0
- package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js.map +1 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts +17 -3
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js +12 -0
- package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js.map +1 -1
- package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +41 -3
- 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 +83 -20
- 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 +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
- package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
- package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
- package/dist/esm/security/jwt/services/jwt.backend.service.js +1 -18
- package/dist/esm/security/jwt/services/jwt.backend.service.js.map +1 -1
- package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
- 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 +43 -0
- 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 +8 -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 +49 -0
- package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
- package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
- 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 +67 -29
- 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 +47 -25
- package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
- package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
- 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 +10 -2
- 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 +143 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
- package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
- package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +17 -9
- package/dist/esm/.builder.pid +0 -9
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
*
|
|
16
16
|
* @see billing-polymorphic-full-implementation.md §4.4
|
|
17
17
|
*/
|
|
18
|
-
import { CoreResourceOperation, CoreResourceType, ResourceOperationVariantType, ResourcePrimaryScope, ProductType, ErrorType, ErrorCustomMessageReference, BillingAccount_Operations, BillingAccount_OpenCheckoutRequestDto, BillingAccount_OpenPortalRequestDto, } from '@wildo-ai/saas-models';
|
|
18
|
+
import { CoreResourceOperation, CoreResourceType, ResourceOperationVariantType, ResourcePrimaryScope, ProductType, TaxCalculationMode, ErrorType, ErrorCustomMessageReference, BillingAccount_Operations, BillingAccount_OpenCheckoutRequestDto, BillingAccount_OpenPortalRequestDto, } from '@wildo-ai/saas-models';
|
|
19
19
|
import { createResourceCustomServiceImplementation, } from '../../../base-classes/services/services/resource-operation-custom-implementation.factory.backend.js';
|
|
20
20
|
import { describeUnaddressableShape, resolveSingleSubjectId, } from '../../../base-classes/utils/single-subject-addressing.backend.utils.js';
|
|
21
|
-
import { getBillingProvider, getBillingConfig, getBillingStateService } from '../../../billing/services/custom-impl/billing-custom-implementations.backend.js';
|
|
22
|
-
import { assertNoBillingAccountDependents, readProductByKey, readPriceForProduct, readPromotionByCode, resolveBillingVariantsFromResourceType } from '../../../billing/services/custom-impl/billing-custom-impl-utils.backend.js';
|
|
21
|
+
import { getBillingProvider, getBillingProviderRef, getBillingConfig, getBillingStateService } from '../../../billing/services/custom-impl/billing-custom-implementations.backend.js';
|
|
22
|
+
import { assertNoBillingAccountDependents, BillingCatalogReadIntent, readProductByKey, readPriceForProduct, readPromotionByCode, resolveBillingVariantsFromResourceType } from '../../../billing/services/custom-impl/billing-custom-impl-utils.backend.js';
|
|
23
23
|
import { buildCheckoutSessionMetadata } from '../../../billing/services/billing-checkout-metadata.backend.utils.js';
|
|
24
24
|
// ── Billing account polymorphic variant types ────────────────────────
|
|
25
25
|
const BILLING_ACCOUNT_VARIANT_TYPES = [
|
|
@@ -59,7 +59,6 @@ export function createBillingAccountCreateFactories() {
|
|
|
59
59
|
handlers: {
|
|
60
60
|
prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {
|
|
61
61
|
const provider = getBillingProvider();
|
|
62
|
-
const config = getBillingConfig();
|
|
63
62
|
// Extract contact info from the initiator's user context
|
|
64
63
|
const userContext = utils.initiatorUserContext;
|
|
65
64
|
const email = userContext?.email || 'unknown@example.com';
|
|
@@ -75,7 +74,7 @@ export function createBillingAccountCreateFactories() {
|
|
|
75
74
|
return {
|
|
76
75
|
...input,
|
|
77
76
|
providerCustomerId,
|
|
78
|
-
providerRef:
|
|
77
|
+
providerRef: getBillingProviderRef(),
|
|
79
78
|
isActive: true,
|
|
80
79
|
};
|
|
81
80
|
},
|
|
@@ -182,7 +181,8 @@ export function createBillingAccountOpenCheckoutFactories() {
|
|
|
182
181
|
});
|
|
183
182
|
}
|
|
184
183
|
// Resolve product and price
|
|
185
|
-
|
|
184
|
+
// ACQUIRE: this is the purchase itself, so a product the catalogue has retired is refused.
|
|
185
|
+
const product = await readProductByKey(input.productKey, BillingCatalogReadIntent.ACQUIRE, executionContext, utils);
|
|
186
186
|
// Validate product scope — prevent purchasing a product targeted at a different scope
|
|
187
187
|
const variants = resolveBillingVariantsFromResourceType(variantResourceType);
|
|
188
188
|
if (variants && product.targetScopes && !product.targetScopes.includes(variants.scopeType)) {
|
|
@@ -214,48 +214,51 @@ export function createBillingAccountOpenCheckoutFactories() {
|
|
|
214
214
|
?? config.defaultBehaviorPolicy.defaultTrialDays;
|
|
215
215
|
// Resolve promotion code → provider promotion code ID (C1 + H3)
|
|
216
216
|
let providerPromotionCodeId;
|
|
217
|
+
/** The Wildo promotion row behind that code, carried into metadata so completion can count it (#518). */
|
|
218
|
+
let appliedPromotionId;
|
|
217
219
|
if (input.promotionCode) {
|
|
218
220
|
const promotion = await readPromotionByCode(input.promotionCode, executionContext, utils);
|
|
219
221
|
if (!promotion) {
|
|
220
222
|
throw utils.errorBuilder.buildError(ErrorType.NOT_FOUND, executionContext, {
|
|
221
223
|
customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_NOT_FOUND,
|
|
222
|
-
context: {
|
|
224
|
+
context: { promotionCode: input.promotionCode },
|
|
223
225
|
});
|
|
224
226
|
}
|
|
225
227
|
const now = new Date();
|
|
226
228
|
if (promotion.validFrom && now < new Date(promotion.validFrom)) {
|
|
227
229
|
throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {
|
|
228
230
|
customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,
|
|
229
|
-
context: {
|
|
231
|
+
context: { promotionCode: input.promotionCode, reason: 'Promotion has not started yet' },
|
|
230
232
|
});
|
|
231
233
|
}
|
|
232
234
|
if (promotion.validUntil && now > new Date(promotion.validUntil)) {
|
|
233
235
|
throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {
|
|
234
236
|
customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,
|
|
235
|
-
context: {
|
|
237
|
+
context: { promotionCode: input.promotionCode, reason: 'Promotion has expired' },
|
|
236
238
|
});
|
|
237
239
|
}
|
|
238
240
|
if (promotion.maxRedemptions !== null && promotion.maxRedemptions !== undefined) {
|
|
239
241
|
if ((promotion.timesRedeemed ?? 0) >= promotion.maxRedemptions) {
|
|
240
242
|
throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {
|
|
241
243
|
customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,
|
|
242
|
-
context: {
|
|
244
|
+
context: { promotionCode: input.promotionCode, reason: 'Maximum redemptions reached' },
|
|
243
245
|
});
|
|
244
246
|
}
|
|
245
247
|
}
|
|
246
248
|
if (promotion.applicableProducts?.length > 0 && !promotion.applicableProducts.includes(input.productKey)) {
|
|
247
249
|
throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {
|
|
248
250
|
customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,
|
|
249
|
-
context: {
|
|
251
|
+
context: { promotionCode: input.promotionCode, reason: 'Promotion is not applicable to this product', productKey: input.productKey },
|
|
250
252
|
});
|
|
251
253
|
}
|
|
252
254
|
if (!promotion.providerPromotionId && !promotion.providerCouponId) {
|
|
253
255
|
throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {
|
|
254
256
|
customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,
|
|
255
|
-
context: {
|
|
257
|
+
context: { promotionCode: input.promotionCode, reason: 'Promotion is not synced to billing provider' },
|
|
256
258
|
});
|
|
257
259
|
}
|
|
258
260
|
providerPromotionCodeId = promotion.providerPromotionId;
|
|
261
|
+
appliedPromotionId = promotion._id;
|
|
259
262
|
}
|
|
260
263
|
// Create checkout session on provider
|
|
261
264
|
const provider = getBillingProvider();
|
|
@@ -266,7 +269,40 @@ export function createBillingAccountOpenCheckoutFactories() {
|
|
|
266
269
|
successUrl: input.successUrl,
|
|
267
270
|
cancelUrl: input.cancelUrl,
|
|
268
271
|
trialPeriodDays: isSubscription && trialDays > 0 ? trialDays : undefined,
|
|
269
|
-
|
|
272
|
+
/*
|
|
273
|
+
* #408 (2026-09-08) — two authored declarations that reached no provider call until
|
|
274
|
+
* now, and this is the ONLY live purchase route, so this is where they take effect.
|
|
275
|
+
*
|
|
276
|
+
* `automaticTax`: the application's `billing.tax.calculationMode`. PROVIDER_MANAGED
|
|
277
|
+
* used to change nothing, leaving the Stripe account's own configuration to decide
|
|
278
|
+
* silently whether tax was computed.
|
|
279
|
+
*
|
|
280
|
+
* `requirePaymentMethodForTrial`: the PRODUCT's declaration, and only meaningful when
|
|
281
|
+
* this checkout actually starts a trial — asking for a card up front on a purchase
|
|
282
|
+
* with no trial is a different decision nobody authored. Wonder Todos' enterprise plan
|
|
283
|
+
* declares `true` and its professional plan `false`, and the two were indistinguishable
|
|
284
|
+
* at the provider.
|
|
285
|
+
*/
|
|
286
|
+
automaticTax: config.tax?.calculationMode === TaxCalculationMode.PROVIDER_MANAGED,
|
|
287
|
+
requirePaymentMethodForTrial: isSubscription
|
|
288
|
+
&& trialDays > 0
|
|
289
|
+
&& product.behaviorPolicy?.trial?.requirePaymentMethod === true,
|
|
290
|
+
/*
|
|
291
|
+
* NEVER let the provider's own promotion-code entry accept a code (#518).
|
|
292
|
+
*
|
|
293
|
+
* This was `!providerPromotionCodeId` — so whenever a customer supplied NO code, the
|
|
294
|
+
* hosted checkout page offered its own promo-code box, and a code typed there bypassed
|
|
295
|
+
* every control the block above enforces: `validFrom`, `validUntil`, `maxRedemptions`
|
|
296
|
+
* and `applicableProducts`. Four authored controls, silently optional, because the
|
|
297
|
+
* discount was applied by the provider from its own synced coupon and Wildo never saw
|
|
298
|
+
* the redemption at all.
|
|
299
|
+
*
|
|
300
|
+
* A code now reaches a purchase only through `input.promotionCode`, which is validated
|
|
301
|
+
* here and counted at completion. An application that wants to offer a code entry
|
|
302
|
+
* collects it in its own UI and passes it — which is also the only way the four
|
|
303
|
+
* controls can mean anything.
|
|
304
|
+
*/
|
|
305
|
+
allowPromotionCodes: false,
|
|
270
306
|
providerPromotionCodeId,
|
|
271
307
|
// The provider echoes this map back VERBATIM inside a genuinely signed
|
|
272
308
|
// `checkout.session.completed`, and the webhook router turns it into a credit grant. It
|
|
@@ -279,6 +315,11 @@ export function createBillingAccountOpenCheckoutFactories() {
|
|
|
279
315
|
billingAccountId: _id,
|
|
280
316
|
productKey: input.productKey,
|
|
281
317
|
quantity: input.quantity,
|
|
318
|
+
// Carried so the redemption can be COUNTED when the session completes (#518). The
|
|
319
|
+
// validation above refused an exhausted code and then never incremented anything, so
|
|
320
|
+
// a code used only through checkout stayed at zero redemptions forever and
|
|
321
|
+
// `maxRedemptions` could be exceeded without limit.
|
|
322
|
+
promotionId: appliedPromotionId,
|
|
282
323
|
callerMetadata: input.metadata,
|
|
283
324
|
}),
|
|
284
325
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing-account.mutations.custom-impl.backend.service.js","sourceRoot":"","sources":["../../../../../../src/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,4BAA4B,EAC5B,oBAAoB,EACpB,WAAW,EACX,SAAS,EACT,2BAA2B,EAC3B,yBAAyB,EACzB,qCAAqC,EACrC,mCAAmC,GACpC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,yCAAyC,GAE1C,MAAM,4GAA4G,CAAC;AAEpH,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,+EAA+E,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,wFAAwF,CAAC;AACtK,OAAO,EAAE,gCAAgC,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,sCAAsC,EAAE,MAAM,mFAAmF,CAAC;AACzO,OAAO,EAAE,4BAA4B,EAAE,MAAM,6EAA6E,CAAC;AAE3H,wEAAwE;AAExE,MAAM,6BAA6B,GAAG;IACpC,gBAAgB,CAAC,6BAA6B;IAC9C,gBAAgB,CAAC,qBAAqB;CAC9B,CAAC;AAEX,uEAAuE;AACvE,kCAAkC;AAClC,uEAAuE;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mCAAmC;IACjD,OAAO,6BAA6B,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,EAAE;QAC/D,MAAM,OAAO,GAAG,CAAC,yBAA0D,EAAE,EAAE;YAC7E,OAAO,yCAAyC,CAAC;gBAC/C,aAAa,EAAE;oBACb,kBAAkB,EAAE,mBAAmB;oBACvC,mBAAmB,EAAE,qBAAqB,CAAC,MAAM;oBACjD,WAAW,EAAE,4BAA4B,CAAC,aAAa;oBACvD,kBAAkB,EAAE,IAAI;iBACzB;gBACD,QAAQ,EAAE;oBACR,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE;wBAClF,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;wBACtC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;wBAElC,yDAAyD;wBACzD,MAAM,WAAW,GAAG,KAAK,CAAC,oBAAoB,CAAC;wBAC/C,MAAM,KAAK,GAAG,WAAW,EAAE,KAAK,IAAI,qBAAqB,CAAC;wBAC1D,MAAM,IAAI,GAAG,WAAW,EAAE,WAAW,IAAI,WAAW,EAAE,IAAI,IAAI,WAAW,EAAE,KAAK,IAAI,SAAS,CAAC;wBAE9F,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC;4BAC3D,KAAK;4BACL,IAAI;4BACJ,QAAQ,EAAE;gCACR,YAAY,EAAE,mBAAmB;gCACjC,GAAG,KAAK,CAAC,QAAQ;6BAClB;yBACF,CAAC,CAAC;wBAEH,OAAO;4BACL,GAAG,KAAK;4BACR,kBAAkB;4BAClB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,QAAQ;4BAC3C,QAAQ,EAAE,IAAI;yBACf,CAAC;oBACJ,CAAC;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,OAAgE,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AACvE,qDAAqD;AACrD,uEAAuE;AAEvE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kDAAkD;IAChE,OAAO,6BAA6B,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,EAAE;QAC/D,MAAM,OAAO,GAAG,CAAC,yBAA0D,EAAE,EAAE;YAC7E,OAAO,yCAAyC,CAAC;gBAC/C,aAAa,EAAE;oBACb,kBAAkB,EAAE,mBAAmB;oBACvC,mBAAmB,EAAE,qBAAqB,CAAC,MAAM;oBACjD,WAAW,EAAE,4BAA4B,CAAC,aAAa;oBACvD,kBAAkB,EAAE,IAAI;iBACzB;gBACD,QAAQ,EAAE;oBACR,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE;wBAClF,4FAA4F;wBAC5F,yFAAyF;wBACzF,0FAA0F;wBAC1F,0CAA0C;wBAC1C,EAAE;wBACF,4FAA4F;wBAC5F,gEAAgE;wBAChE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;wBACrD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;4BACnC,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE;gCAC1E,OAAO,EAAE;oCACP,OAAO,EAAE,iFAAiF;oCAC1F,YAAY,EAAE,mBAAmB;oCACjC,kBAAkB,EAAE,0BAA0B,CAAC,GAAG,CAAC;iCACpD;6BACF,CAAC,CAAC;wBACL,CAAC;wBAED,MAAM,QAAQ,GAAG,sCAAsC,CAAC,mBAAmB,CAAC,CAAC;wBAC7E,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE;gCAC7E,sBAAsB,EAAE,2BAA2B,CAAC,yBAAyB;gCAC7E,OAAO,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE;6BAC/C,CAAC,CAAC;wBACL,CAAC;wBAED,MAAM,gCAAgC,CAAC,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;wBAE5F,kEAAkE;wBAClE,OAAO,KAAK,CAAC;oBACf,CAAC;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,OAAgE,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AACvE,0CAA0C;AAC1C,uEAAuE;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,yCAAyC;IACvD,OAAO,6BAA6B,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,EAAE;QAC/D,MAAM,OAAO,GAAG,CAAC,yBAA0D,EAAE,EAAE;YAC7E,OAAO,yCAAyC,CAAC;gBAC/C,aAAa,EAAE;oBACb,kBAAkB,EAAE,mBAAmB;oBACvC,mBAAmB,EAAE,yBAAyB,CAAC,aAAa;oBAC5D,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,kBAAkB,EAAE,IAAI;iBACzB;gBACD,gBAAgB,EAAE,qCAAqC;gBACvD,QAAQ,EAAE;oBACR,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE;wBACnF,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC;wBAE3C,IAAI,CAAC,cAAc,EAAE,kBAAkB,EAAE,CAAC;4BACxC,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE;gCAC7E,sBAAsB,EAAE,2BAA2B,CAAC,4BAA4B;gCAChF,OAAO,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE;6BACnC,CAAC,CAAC;wBACL,CAAC;wBAED,4BAA4B;wBAC5B,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;wBAElF,sFAAsF;wBACtF,MAAM,QAAQ,GAAG,sCAAsC,CAAC,mBAAmB,CAAC,CAAC;wBAC7E,IAAI,QAAQ,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;4BAC3F,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE;gCAC7E,sBAAsB,EAAE,2BAA2B,CAAC,8BAA8B;gCAClF,OAAO,EAAE;oCACP,UAAU,EAAE,KAAK,CAAC,UAAU;oCAC5B,aAAa,EAAE,OAAO,CAAC,YAAY;oCACnC,YAAY,EAAE,QAAQ,CAAC,SAAS;iCACjC;6BACF,CAAC,CAAC;wBACL,CAAC;wBAED,wFAAwF;wBACxF,uFAAuF;wBACvF,mEAAmE;wBACnE,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;wBAEzF,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;4BAC3B,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE;gCAC7E,sBAAsB,EAAE,2BAA2B,CAAC,yBAAyB;gCAC7E,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;6BAClE,CAAC,CAAC;wBACL,CAAC;wBAED,gDAAgD;wBAChD,MAAM,cAAc,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAmB,CAAC,CAAC;wBAExH,qBAAqB;wBACrB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;wBAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS;+BAC5B,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI;+BACnC,MAAM,CAAC,qBAAqB,CAAC,gBAAgB,CAAC;wBAEnD,gEAAgE;wBAChE,IAAI,uBAA2C,CAAC;wBAChD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;4BACxB,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,aAAa,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;4BAC1F,IAAI,CAAC,SAAS,EAAE,CAAC;gCACf,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,gBAAgB,EAAE;oCACzE,sBAAsB,EAAE,2BAA2B,CAAC,2BAA2B;oCAC/E,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE;iCACvC,CAAC,CAAC;4BACL,CAAC;4BAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;4BACvB,IAAI,SAAS,CAAC,SAAS,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gCAC/D,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE;oCAC7E,sBAAsB,EAAE,2BAA2B,CAAC,yBAAyB;oCAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,+BAA+B,EAAE;iCAChF,CAAC,CAAC;4BACL,CAAC;4BACD,IAAI,SAAS,CAAC,UAAU,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gCACjE,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE;oCAC7E,sBAAsB,EAAE,2BAA2B,CAAC,yBAAyB;oCAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,uBAAuB,EAAE;iCACxE,CAAC,CAAC;4BACL,CAAC;4BACD,IAAI,SAAS,CAAC,cAAc,KAAK,IAAI,IAAI,SAAS,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gCAChF,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;oCAC/D,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE;wCAC7E,sBAAsB,EAAE,2BAA2B,CAAC,yBAAyB;wCAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,6BAA6B,EAAE;qCAC9E,CAAC,CAAC;gCACL,CAAC;4BACH,CAAC;4BACD,IAAI,SAAS,CAAC,kBAAkB,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gCACzG,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE;oCAC7E,sBAAsB,EAAE,2BAA2B,CAAC,yBAAyB;oCAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,6CAA6C,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;iCAC5H,CAAC,CAAC;4BACL,CAAC;4BACD,IAAI,CAAC,SAAS,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;gCAClE,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE;oCAC7E,sBAAsB,EAAE,2BAA2B,CAAC,yBAAyB;oCAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,6CAA6C,EAAE;iCAC9F,CAAC,CAAC;4BACL,CAAC;4BACD,uBAAuB,GAAG,SAAS,CAAC,mBAAmB,CAAC;wBAC1D,CAAC;wBAED,sCAAsC;wBACtC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;wBACtC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC;4BACnD,kBAAkB,EAAE,cAAc,CAAC,kBAAkB;4BACrD,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;4BACjF,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;4BACjD,UAAU,EAAE,KAAK,CAAC,UAAU;4BAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;4BAC1B,eAAe,EAAE,cAAc,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;4BACxE,mBAAmB,EAAE,CAAC,uBAAuB;4BAC7C,uBAAuB;4BACvB,uEAAuE;4BACvE,wFAAwF;4BACxF,wFAAwF;4BACxF,kFAAkF;4BAClF,sFAAsF;4BACtF,wFAAwF;4BACxF,iFAAiF;4BACjF,QAAQ,EAAE,4BAA4B,CAAC;gCACrC,gBAAgB,EAAE,GAAI;gCACtB,UAAU,EAAE,KAAK,CAAC,UAAU;gCAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gCACxB,cAAc,EAAE,KAAK,CAAC,QAAQ;6BAC/B,CAAC;yBACH,CAAC,CAAC;wBAEH,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;oBAC5D,CAAC;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,OAAgE,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AACvE,wCAAwC;AACxC,uEAAuE;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,uCAAuC;IACrD,OAAO,6BAA6B,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,EAAE;QAC/D,MAAM,OAAO,GAAG,CAAC,yBAA0D,EAAE,EAAE;YAC7E,OAAO,yCAAyC,CAAC;gBAC/C,aAAa,EAAE;oBACb,kBAAkB,EAAE,mBAAmB;oBACvC,mBAAmB,EAAE,yBAAyB,CAAC,WAAW;oBAC1D,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,kBAAkB,EAAE,IAAI;iBACzB;gBACD,gBAAgB,EAAE,mCAAmC;gBACrD,QAAQ,EAAE;oBACR,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE;wBACnF,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC;wBAE3C,IAAI,CAAC,cAAc,EAAE,kBAAkB,EAAE,CAAC;4BACxC,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE;gCAC7E,sBAAsB,EAAE,2BAA2B,CAAC,4BAA4B;gCAChF,OAAO,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE;6BACnC,CAAC,CAAC;wBACL,CAAC;wBAED,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;wBACtC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,2BAA2B,CACvD,cAAc,CAAC,kBAAkB,EACjC,KAAK,CAAC,SAAS,CAChB,CAAC;wBAEF,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;oBAC7B,CAAC;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,OAAgE,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AACvE,yDAAyD;AACzD,uEAAuE;AAEvE;;;;;;;GAOG;AACH,MAAM,UAAU,qCAAqC;IACnD,OAAO,6BAA6B,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,EAAE;QAC/D,MAAM,OAAO,GAAG,CAAC,yBAA0D,EAAE,EAAE;YAC7E,OAAO,yCAAyC,CAAC;gBAC/C,aAAa,EAAE;oBACb,kBAAkB,EAAE,mBAAmB;oBACvC,mBAAmB,EAAE,yBAAyB,CAAC,SAAS;oBACxD,WAAW,EAAE,4BAA4B,CAAC,QAAQ;oBAClD,kBAAkB,EAAE,IAAI;iBACzB;gBACD,QAAQ,EAAE;oBACR,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE;wBACrF,MAAM,QAAQ,GAAG,sCAAsC,CAAC,mBAAmB,CAAC,CAAC;wBAC7E,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE;gCAC9E,sBAAsB,EAAE,2BAA2B,CAAC,yBAAyB;gCAC7E,OAAO,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE;6BAC/C,CAAC,CAAC;wBACL,CAAC;wBAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAuB,CAAC;wBAChF,IAAI,CAAC,aAAa,EAAE,CAAC;4BACnB,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE;gCAC3E,OAAO,EAAE,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;6BAClG,CAAC,CAAC;wBACL,CAAC;wBAED,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;wBACzC,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;wBAE1F,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;wBACrD,OAAO,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;oBAC1G,CAAC;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,OAAgE,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * Billing Account Mutations Custom Implementations\n *\n * Implements CREATE, OPEN_CHECKOUT, OPEN_PORTAL operations\n * on billing account polymorphic variants.\n *\n * Patterns:\n * CREATE → PREFIX_CORE_OPERATIONS — PREFIX calls provider.createCustomer(), core CREATE writes to DB\n * DELETE → PREFIX_CORE_OPERATIONS — PREFIX refuses the hard delete (409) while retained\n * financial children still reference the account; core DELETE otherwise proceeds\n * OPEN_CHECKOUT → REPLACE_CORE_OPERATIONS — calls provider.createCheckoutSession(), returns { url, sessionId }\n * OPEN_PORTAL → REPLACE_CORE_OPERATIONS — calls provider.createCustomerPortalSession(), returns { url }\n *\n * One factory per polymorphic variant (org, user) per operation.\n *\n * @see billing-polymorphic-full-implementation.md §4.4\n */\n\nimport {\n CoreResourceOperation,\n CoreResourceType,\n ResourceOperationVariantType,\n ResourcePrimaryScope,\n ProductType,\n ErrorType,\n ErrorCustomMessageReference,\n BillingAccount_Operations,\n BillingAccount_OpenCheckoutRequestDto,\n BillingAccount_OpenPortalRequestDto,\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 { ResourcesRegistryBackendService } from '~wildo-backend-lib/resources/services/resources-registry.backend.service';\nimport {\n describeUnaddressableShape,\n resolveSingleSubjectId,\n} from '~wildo-backend-lib/base-classes/utils/single-subject-addressing.backend.utils';\nimport { getBillingProvider, getBillingConfig, getBillingStateService } from '~wildo-backend-lib/billing/services/custom-impl/billing-custom-implementations.backend';\nimport { assertNoBillingAccountDependents, readProductByKey, readPriceForProduct, readPromotionByCode, resolveBillingVariantsFromResourceType } from '~wildo-backend-lib/billing/services/custom-impl/billing-custom-impl-utils.backend';\nimport { buildCheckoutSessionMetadata } from '~wildo-backend-lib/billing/services/billing-checkout-metadata.backend.utils';\n\n// ── Billing account polymorphic variant types ────────────────────────\n\nconst BILLING_ACCOUNT_VARIANT_TYPES = [\n CoreResourceType.ORGANIZATION_BILLING_ACCOUNTS,\n CoreResourceType.USER_BILLING_ACCOUNTS,\n] as const;\n\n// ════════════════════════════════════════════════════════════════════\n// CREATE — PREFIX_CORE_OPERATIONS\n// ════════════════════════════════════════════════════════════════════\n\n/**\n * Create billing account CREATE custom impl factories for all variants.\n *\n * PREFIX: Creates a customer on the billing provider (Stripe), returns the create data\n * augmented with providerCustomerId and providerRef.\n * CORE: Standard CREATE writes to DB.\n *\n * Registered on `INTERNAL_CALL` — the variant the resource configuration actually declares\n * for CREATE. This registration was authored against `REPOSITORY_ONLY` and was orphaned when\n * 623c5aee moved the configured variant to `INTERNAL_CALL` (the auto-create path runs through\n * `SystemAccessBackendService.createAsSystem`, which the service tier only reaches via\n * INTERNAL_CALL / API_CALL). Because custom implementations resolve by an EXACT operation-path\n * key that embeds `variantType`, the stale registration was unreachable rather than degraded:\n * `provider.createCustomer()` never ran and every auto-created account was persisted with no\n * `providerCustomerId` — the only local key mapping invoices and subscriptions back to the\n * provider customer. Pinned by `billing-custom-impl-operation-path-coherence.test.ts`.\n */\nexport function createBillingAccountCreateFactories(): ResourceCustomServiceImplementationFactory[] {\n return BILLING_ACCOUNT_VARIANT_TYPES.map((variantResourceType) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: variantResourceType,\n operationIdentifier: CoreResourceOperation.CREATE,\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isOperationDefault: true,\n },\n handlers: {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n const provider = getBillingProvider();\n const config = getBillingConfig();\n\n // Extract contact info from the initiator's user context\n const userContext = utils.initiatorUserContext;\n const email = userContext?.email || 'unknown@example.com';\n const name = userContext?.displayName || userContext?.name || userContext?.email || 'Unknown';\n\n const { providerCustomerId } = await provider.createCustomer({\n email,\n name,\n metadata: {\n resourceType: variantResourceType,\n ...input.metadata,\n },\n });\n\n return {\n ...input,\n providerCustomerId,\n providerRef: config.providerRef || 'stripe',\n isActive: true,\n };\n },\n },\n });\n };\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n });\n}\n\n// ════════════════════════════════════════════════════════════════════\n// DELETE — PREFIX_CORE_OPERATIONS (dependents guard)\n// ════════════════════════════════════════════════════════════════════\n\n/**\n * Create billing account DELETE guard factories for all variants.\n *\n * PREFIX: refuses the hard delete with 409 `BILLING_ACCOUNT_HAS_DEPENDENTS` while retained\n * subscriptions / invoice refs / usage records / credit pools still reference the account.\n * There is no CORE replacement — when the guard passes, the standard DELETE proceeds untouched.\n *\n * This enforces the billing-retention decision (2026-07-29) rather than adding new policy: that\n * decision disabled all 18 billing cascades so the financial audit trail survives its scope, and\n * its rationale block explicitly forbids the resulting half-state (\"retaining the children while\n * deleting the account strands the provider-customer mapping\"). A direct hard delete was the only\n * remaining path into that state. See `assertNoBillingAccountDependents` for the full reasoning.\n *\n * Registered on `INTERNAL_CALL` — the variant the resource configuration actually declares for\n * DELETE. Custom implementations are resolved by an exact operation-path key that embeds\n * `variantType`, so a guard registered under any other variant would never run.\n */\nexport function createBillingAccountDeleteDependentsGuardFactories(): ResourceCustomServiceImplementationFactory[] {\n return BILLING_ACCOUNT_VARIANT_TYPES.map((variantResourceType) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: variantResourceType,\n operationIdentifier: CoreResourceOperation.DELETE,\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isOperationDefault: true,\n },\n handlers: {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n // Fail closed: the dependent scan filters on a single account id, so a POPULATION-addressed\n // delete (an ids array or an unpinned filter reaching this path via `doByOperationPath`)\n // must be refused rather than silently producing a filter that matches nothing and waving\n // the delete through. DELETE is CRITICAL.\n //\n // A conditional `{ _id, … }` filter resolves to that one account and is admitted — the scan\n // then runs against exactly the account the delete can destroy.\n const billingAccountId = resolveSingleSubjectId(_id);\n if (billingAccountId === undefined) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n context: {\n message: 'Billing account DELETE requires a single addressed account to verify dependents',\n resourceType: variantResourceType,\n receivedAddressing: describeUnaddressableShape(_id),\n },\n });\n }\n\n const variants = resolveBillingVariantsFromResourceType(variantResourceType);\n if (!variants) {\n throw utils.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_SCOPE_NOT_ENABLED,\n context: { resourceType: variantResourceType },\n });\n }\n\n await assertNoBillingAccountDependents(billingAccountId, variants, executionContext, utils);\n\n // Guard only — the core DELETE input is passed through unchanged.\n return input;\n },\n },\n });\n };\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n });\n}\n\n// ════════════════════════════════════════════════════════════════════\n// OPEN_CHECKOUT — REPLACE_CORE_OPERATIONS\n// ════════════════════════════════════════════════════════════════════\n\n/**\n * Create OPEN_CHECKOUT custom impl factories for all variants.\n *\n * REPLACE: Resolves the billing account, product, and price.\n * Creates a Stripe Checkout Session and returns the redirect URL.\n * No DB write — the subscription is created by webhook after payment.\n */\nexport function createBillingAccountOpenCheckoutFactories(): ResourceCustomServiceImplementationFactory[] {\n return BILLING_ACCOUNT_VARIANT_TYPES.map((variantResourceType) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: variantResourceType,\n operationIdentifier: BillingAccount_Operations.OPEN_CHECKOUT,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n },\n requestDtoSchema: BillingAccount_OpenCheckoutRequestDto,\n handlers: {\n replaceCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n const billingAccount = utils.currentObject;\n\n if (!billingAccount?.providerCustomerId) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_NO_PROVIDER_CUSTOMER,\n context: { billingAccountId: _id },\n });\n }\n\n // Resolve product and price\n const product = await readProductByKey(input.productKey, executionContext, utils);\n\n // Validate product scope — prevent purchasing a product targeted at a different scope\n const variants = resolveBillingVariantsFromResourceType(variantResourceType);\n if (variants && product.targetScopes && !product.targetScopes.includes(variants.scopeType)) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PRODUCT_SCOPE_MISMATCH,\n context: {\n productKey: input.productKey,\n productScopes: product.targetScopes,\n currentScope: variants.scopeType,\n },\n });\n }\n\n // The price MUST belong to the product being purchased. Resolving the two independently\n // (which this did) bills the provider for one product's price while the local record —\n // and therefore every entitlement derived from it — names another.\n const price = await readPriceForProduct(input.priceId, product, executionContext, utils);\n\n if (!price.providerPriceId) {\n throw utils.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_NO_PROVIDER_PRICE,\n context: { priceId: input.priceId, productKey: input.productKey },\n });\n }\n\n // Determine checkout mode based on product type\n const isSubscription = [ProductType.PLAN, ProductType.ADDON, ProductType.METERED].includes(product.type as ProductType);\n\n // Resolve trial days\n const config = getBillingConfig();\n const trialDays = input.trialDays\n ?? product.behaviorPolicy?.trial?.days\n ?? config.defaultBehaviorPolicy.defaultTrialDays;\n\n // Resolve promotion code → provider promotion code ID (C1 + H3)\n let providerPromotionCodeId: string | undefined;\n if (input.promotionCode) {\n const promotion = await readPromotionByCode(input.promotionCode, executionContext, utils);\n if (!promotion) {\n throw utils.errorBuilder.buildError(ErrorType.NOT_FOUND, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_NOT_FOUND,\n context: { code: input.promotionCode },\n });\n }\n\n const now = new Date();\n if (promotion.validFrom && now < new Date(promotion.validFrom)) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,\n context: { code: input.promotionCode, reason: 'Promotion has not started yet' },\n });\n }\n if (promotion.validUntil && now > new Date(promotion.validUntil)) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,\n context: { code: input.promotionCode, reason: 'Promotion has expired' },\n });\n }\n if (promotion.maxRedemptions !== null && promotion.maxRedemptions !== undefined) {\n if ((promotion.timesRedeemed ?? 0) >= promotion.maxRedemptions) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,\n context: { code: input.promotionCode, reason: 'Maximum redemptions reached' },\n });\n }\n }\n if (promotion.applicableProducts?.length > 0 && !promotion.applicableProducts.includes(input.productKey)) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,\n context: { code: input.promotionCode, reason: 'Promotion is not applicable to this product', productKey: input.productKey },\n });\n }\n if (!promotion.providerPromotionId && !promotion.providerCouponId) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,\n context: { code: input.promotionCode, reason: 'Promotion is not synced to billing provider' },\n });\n }\n providerPromotionCodeId = promotion.providerPromotionId;\n }\n\n // Create checkout session on provider\n const provider = getBillingProvider();\n const session = await provider.createCheckoutSession({\n providerCustomerId: billingAccount.providerCustomerId,\n lineItems: [{ providerPriceId: price.providerPriceId, quantity: input.quantity }],\n mode: isSubscription ? 'subscription' : 'payment',\n successUrl: input.successUrl,\n cancelUrl: input.cancelUrl,\n trialPeriodDays: isSubscription && trialDays > 0 ? trialDays : undefined,\n allowPromotionCodes: !providerPromotionCodeId,\n providerPromotionCodeId,\n // The provider echoes this map back VERBATIM inside a genuinely signed\n // `checkout.session.completed`, and the webhook router turns it into a credit grant. It\n // used to be assembled with `...input.metadata` LAST, so a caller-supplied record could\n // overwrite `billingAccountId` / `productKey` / `quantity` — no signature forgery\n // required, because a valid signature proves the PROVIDER sent the bytes, not that WE\n // wrote them. The builder writes the framework's reserved keys last and strips reserved\n // keys out of caller metadata; see `billing-checkout-metadata.backend.utils.ts`.\n metadata: buildCheckoutSessionMetadata({\n billingAccountId: _id!,\n productKey: input.productKey,\n quantity: input.quantity,\n callerMetadata: input.metadata,\n }),\n });\n\n return { url: session.url, sessionId: session.sessionId };\n },\n },\n });\n };\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n });\n}\n\n// ════════════════════════════════════════════════════════════════════\n// OPEN_PORTAL — REPLACE_CORE_OPERATIONS\n// ════════════════════════════════════════════════════════════════════\n\n/**\n * Create OPEN_PORTAL custom impl factories for all variants.\n *\n * REPLACE: Resolves the billing account's providerCustomerId, creates a\n * Stripe Customer Portal session, and returns the redirect URL.\n * No DB write.\n */\nexport function createBillingAccountOpenPortalFactories(): ResourceCustomServiceImplementationFactory[] {\n return BILLING_ACCOUNT_VARIANT_TYPES.map((variantResourceType) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: variantResourceType,\n operationIdentifier: BillingAccount_Operations.OPEN_PORTAL,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n },\n requestDtoSchema: BillingAccount_OpenPortalRequestDto,\n handlers: {\n replaceCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n const billingAccount = utils.currentObject;\n\n if (!billingAccount?.providerCustomerId) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_NO_PROVIDER_CUSTOMER,\n context: { billingAccountId: _id },\n });\n }\n\n const provider = getBillingProvider();\n const result = await provider.createCustomerPortalSession(\n billingAccount.providerCustomerId,\n input.returnUrl,\n );\n\n return { url: result.url };\n },\n },\n });\n };\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n });\n}\n\n// ════════════════════════════════════════════════════════════════════\n// GET_STATE — REPLACE_CORE_OPERATIONS (collection-level)\n// ════════════════════════════════════════════════════════════════════\n\n/**\n * Create GET_STATE custom impl factories for all variants.\n *\n * REPLACE: Collection-level operation (no entity ID). Resolves scopeType\n * and scopeEntityId from execution context, delegates to BillingStateBackendService.\n * Returns the full aggregated billing state with automatic authorization via\n * the engine's parent scope validation.\n */\nexport function createBillingAccountGetStateFactories(): ResourceCustomServiceImplementationFactory[] {\n return BILLING_ACCOUNT_VARIANT_TYPES.map((variantResourceType) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: variantResourceType,\n operationIdentifier: BillingAccount_Operations.GET_STATE,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n },\n handlers: {\n replaceCoreOperations: async (_id, _input, executionContext, _operationPath, _utils) => {\n const variants = resolveBillingVariantsFromResourceType(variantResourceType);\n if (!variants) {\n throw _utils.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_SCOPE_NOT_ENABLED,\n context: { resourceType: variantResourceType },\n });\n }\n\n const scopeEntityId = executionContext[variants.scopeKey] as string | undefined;\n if (!scopeEntityId) {\n throw _utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n context: { message: 'Missing scope entity ID in execution context', scopeKey: variants.scopeKey },\n });\n }\n\n const billingConfig = getBillingConfig();\n const enabledScopes = billingConfig.enabledScopes ?? [ResourcePrimaryScope.ORGANIZATIONS];\n\n const billingStateService = getBillingStateService();\n return billingStateService.getState(variants.scopeType, scopeEntityId, enabledScopes, executionContext);\n },\n },\n });\n };\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"billing-account.mutations.custom-impl.backend.service.js","sourceRoot":"","sources":["../../../../../../src/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Billing Account Mutations Custom Implementations\n *\n * Implements CREATE, OPEN_CHECKOUT, OPEN_PORTAL operations\n * on billing account polymorphic variants.\n *\n * Patterns:\n * CREATE → PREFIX_CORE_OPERATIONS — PREFIX calls provider.createCustomer(), core CREATE writes to DB\n * DELETE → PREFIX_CORE_OPERATIONS — PREFIX refuses the hard delete (409) while retained\n * financial children still reference the account; core DELETE otherwise proceeds\n * OPEN_CHECKOUT → REPLACE_CORE_OPERATIONS — calls provider.createCheckoutSession(), returns { url, sessionId }\n * OPEN_PORTAL → REPLACE_CORE_OPERATIONS — calls provider.createCustomerPortalSession(), returns { url }\n *\n * One factory per polymorphic variant (org, user) per operation.\n *\n * @see billing-polymorphic-full-implementation.md §4.4\n */\n\nimport {\n CoreResourceOperation,\n CoreResourceType,\n ResourceOperationVariantType,\n ResourcePrimaryScope,\n ProductType,\n TaxCalculationMode,\n ErrorType,\n ErrorCustomMessageReference,\n BillingAccount_Operations,\n BillingAccount_OpenCheckoutRequestDto,\n BillingAccount_OpenPortalRequestDto,\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 { ResourcesRegistryBackendService } from '~wildo-backend-lib/resources/services/resources-registry.backend.service';\nimport {\n describeUnaddressableShape,\n resolveSingleSubjectId,\n} from '~wildo-backend-lib/base-classes/utils/single-subject-addressing.backend.utils';\nimport { getBillingProvider, getBillingProviderRef, getBillingConfig, getBillingStateService } from '~wildo-backend-lib/billing/services/custom-impl/billing-custom-implementations.backend';\nimport { assertNoBillingAccountDependents, BillingCatalogReadIntent, readProductByKey, readPriceForProduct, readPromotionByCode, resolveBillingVariantsFromResourceType } from '~wildo-backend-lib/billing/services/custom-impl/billing-custom-impl-utils.backend';\nimport { buildCheckoutSessionMetadata } from '~wildo-backend-lib/billing/services/billing-checkout-metadata.backend.utils';\n\n// ── Billing account polymorphic variant types ────────────────────────\n\nconst BILLING_ACCOUNT_VARIANT_TYPES = [\n CoreResourceType.ORGANIZATION_BILLING_ACCOUNTS,\n CoreResourceType.USER_BILLING_ACCOUNTS,\n] as const;\n\n// ════════════════════════════════════════════════════════════════════\n// CREATE — PREFIX_CORE_OPERATIONS\n// ════════════════════════════════════════════════════════════════════\n\n/**\n * Create billing account CREATE custom impl factories for all variants.\n *\n * PREFIX: Creates a customer on the billing provider (Stripe), returns the create data\n * augmented with providerCustomerId and providerRef.\n * CORE: Standard CREATE writes to DB.\n *\n * Registered on `INTERNAL_CALL` — the variant the resource configuration actually declares\n * for CREATE. This registration was authored against `REPOSITORY_ONLY` and was orphaned when\n * 623c5aee moved the configured variant to `INTERNAL_CALL` (the auto-create path runs through\n * `SystemAccessBackendService.createAsSystem`, which the service tier only reaches via\n * INTERNAL_CALL / API_CALL). Because custom implementations resolve by an EXACT operation-path\n * key that embeds `variantType`, the stale registration was unreachable rather than degraded:\n * `provider.createCustomer()` never ran and every auto-created account was persisted with no\n * `providerCustomerId` — the only local key mapping invoices and subscriptions back to the\n * provider customer. Pinned by `billing-custom-impl-operation-path-coherence.test.ts`.\n */\nexport function createBillingAccountCreateFactories(): ResourceCustomServiceImplementationFactory[] {\n return BILLING_ACCOUNT_VARIANT_TYPES.map((variantResourceType) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: variantResourceType,\n operationIdentifier: CoreResourceOperation.CREATE,\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isOperationDefault: true,\n },\n handlers: {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n const provider = getBillingProvider();\n\n // Extract contact info from the initiator's user context\n const userContext = utils.initiatorUserContext;\n const email = userContext?.email || 'unknown@example.com';\n const name = userContext?.displayName || userContext?.name || userContext?.email || 'Unknown';\n\n const { providerCustomerId } = await provider.createCustomer({\n email,\n name,\n metadata: {\n resourceType: variantResourceType,\n ...input.metadata,\n },\n });\n\n return {\n ...input,\n providerCustomerId,\n providerRef: getBillingProviderRef(),\n isActive: true,\n };\n },\n },\n });\n };\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n });\n}\n\n// ════════════════════════════════════════════════════════════════════\n// DELETE — PREFIX_CORE_OPERATIONS (dependents guard)\n// ════════════════════════════════════════════════════════════════════\n\n/**\n * Create billing account DELETE guard factories for all variants.\n *\n * PREFIX: refuses the hard delete with 409 `BILLING_ACCOUNT_HAS_DEPENDENTS` while retained\n * subscriptions / invoice refs / usage records / credit pools still reference the account.\n * There is no CORE replacement — when the guard passes, the standard DELETE proceeds untouched.\n *\n * This enforces the billing-retention decision (2026-07-29) rather than adding new policy: that\n * decision disabled all 18 billing cascades so the financial audit trail survives its scope, and\n * its rationale block explicitly forbids the resulting half-state (\"retaining the children while\n * deleting the account strands the provider-customer mapping\"). A direct hard delete was the only\n * remaining path into that state. See `assertNoBillingAccountDependents` for the full reasoning.\n *\n * Registered on `INTERNAL_CALL` — the variant the resource configuration actually declares for\n * DELETE. Custom implementations are resolved by an exact operation-path key that embeds\n * `variantType`, so a guard registered under any other variant would never run.\n */\nexport function createBillingAccountDeleteDependentsGuardFactories(): ResourceCustomServiceImplementationFactory[] {\n return BILLING_ACCOUNT_VARIANT_TYPES.map((variantResourceType) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: variantResourceType,\n operationIdentifier: CoreResourceOperation.DELETE,\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isOperationDefault: true,\n },\n handlers: {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n // Fail closed: the dependent scan filters on a single account id, so a POPULATION-addressed\n // delete (an ids array or an unpinned filter reaching this path via `doByOperationPath`)\n // must be refused rather than silently producing a filter that matches nothing and waving\n // the delete through. DELETE is CRITICAL.\n //\n // A conditional `{ _id, … }` filter resolves to that one account and is admitted — the scan\n // then runs against exactly the account the delete can destroy.\n const billingAccountId = resolveSingleSubjectId(_id);\n if (billingAccountId === undefined) {\n throw utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n context: {\n message: 'Billing account DELETE requires a single addressed account to verify dependents',\n resourceType: variantResourceType,\n receivedAddressing: describeUnaddressableShape(_id),\n },\n });\n }\n\n const variants = resolveBillingVariantsFromResourceType(variantResourceType);\n if (!variants) {\n throw utils.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_SCOPE_NOT_ENABLED,\n context: { resourceType: variantResourceType },\n });\n }\n\n await assertNoBillingAccountDependents(billingAccountId, variants, executionContext, utils);\n\n // Guard only — the core DELETE input is passed through unchanged.\n return input;\n },\n },\n });\n };\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n });\n}\n\n// ════════════════════════════════════════════════════════════════════\n// OPEN_CHECKOUT — REPLACE_CORE_OPERATIONS\n// ════════════════════════════════════════════════════════════════════\n\n/**\n * Create OPEN_CHECKOUT custom impl factories for all variants.\n *\n * REPLACE: Resolves the billing account, product, and price.\n * Creates a Stripe Checkout Session and returns the redirect URL.\n * No DB write — the subscription is created by webhook after payment.\n */\nexport function createBillingAccountOpenCheckoutFactories(): ResourceCustomServiceImplementationFactory[] {\n return BILLING_ACCOUNT_VARIANT_TYPES.map((variantResourceType) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: variantResourceType,\n operationIdentifier: BillingAccount_Operations.OPEN_CHECKOUT,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n },\n requestDtoSchema: BillingAccount_OpenCheckoutRequestDto,\n handlers: {\n replaceCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n const billingAccount = utils.currentObject;\n\n if (!billingAccount?.providerCustomerId) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_NO_PROVIDER_CUSTOMER,\n context: { billingAccountId: _id },\n });\n }\n\n // Resolve product and price\n // ACQUIRE: this is the purchase itself, so a product the catalogue has retired is refused.\n const product = await readProductByKey(input.productKey, BillingCatalogReadIntent.ACQUIRE, executionContext, utils);\n\n // Validate product scope — prevent purchasing a product targeted at a different scope\n const variants = resolveBillingVariantsFromResourceType(variantResourceType);\n if (variants && product.targetScopes && !product.targetScopes.includes(variants.scopeType)) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PRODUCT_SCOPE_MISMATCH,\n context: {\n productKey: input.productKey,\n productScopes: product.targetScopes,\n currentScope: variants.scopeType,\n },\n });\n }\n\n // The price MUST belong to the product being purchased. Resolving the two independently\n // (which this did) bills the provider for one product's price while the local record —\n // and therefore every entitlement derived from it — names another.\n const price = await readPriceForProduct(input.priceId, product, executionContext, utils);\n\n if (!price.providerPriceId) {\n throw utils.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_NO_PROVIDER_PRICE,\n context: { priceId: input.priceId, productKey: input.productKey },\n });\n }\n\n // Determine checkout mode based on product type\n const isSubscription = [ProductType.PLAN, ProductType.ADDON, ProductType.METERED].includes(product.type as ProductType);\n\n // Resolve trial days\n const config = getBillingConfig();\n const trialDays = input.trialDays\n ?? product.behaviorPolicy?.trial?.days\n ?? config.defaultBehaviorPolicy.defaultTrialDays;\n\n // Resolve promotion code → provider promotion code ID (C1 + H3)\n let providerPromotionCodeId: string | undefined;\n /** The Wildo promotion row behind that code, carried into metadata so completion can count it (#518). */\n let appliedPromotionId: string | undefined;\n if (input.promotionCode) {\n const promotion = await readPromotionByCode(input.promotionCode, executionContext, utils);\n if (!promotion) {\n throw utils.errorBuilder.buildError(ErrorType.NOT_FOUND, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_NOT_FOUND,\n context: { promotionCode: input.promotionCode },\n });\n }\n\n const now = new Date();\n if (promotion.validFrom && now < new Date(promotion.validFrom)) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,\n context: { promotionCode: input.promotionCode, reason: 'Promotion has not started yet' },\n });\n }\n if (promotion.validUntil && now > new Date(promotion.validUntil)) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,\n context: { promotionCode: input.promotionCode, reason: 'Promotion has expired' },\n });\n }\n if (promotion.maxRedemptions !== null && promotion.maxRedemptions !== undefined) {\n if ((promotion.timesRedeemed ?? 0) >= promotion.maxRedemptions) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,\n context: { promotionCode: input.promotionCode, reason: 'Maximum redemptions reached' },\n });\n }\n }\n if (promotion.applicableProducts?.length > 0 && !promotion.applicableProducts.includes(input.productKey)) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,\n context: { promotionCode: input.promotionCode, reason: 'Promotion is not applicable to this product', productKey: input.productKey },\n });\n }\n if (!promotion.providerPromotionId && !promotion.providerCouponId) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_PROMOTION_INVALID,\n context: { promotionCode: input.promotionCode, reason: 'Promotion is not synced to billing provider' },\n });\n }\n providerPromotionCodeId = promotion.providerPromotionId;\n appliedPromotionId = promotion._id;\n }\n\n // Create checkout session on provider\n const provider = getBillingProvider();\n const session = await provider.createCheckoutSession({\n providerCustomerId: billingAccount.providerCustomerId,\n lineItems: [{ providerPriceId: price.providerPriceId, quantity: input.quantity }],\n mode: isSubscription ? 'subscription' : 'payment',\n successUrl: input.successUrl,\n cancelUrl: input.cancelUrl,\n trialPeriodDays: isSubscription && trialDays > 0 ? trialDays : undefined,\n /*\n * #408 (2026-09-08) — two authored declarations that reached no provider call until\n * now, and this is the ONLY live purchase route, so this is where they take effect.\n *\n * `automaticTax`: the application's `billing.tax.calculationMode`. PROVIDER_MANAGED\n * used to change nothing, leaving the Stripe account's own configuration to decide\n * silently whether tax was computed.\n *\n * `requirePaymentMethodForTrial`: the PRODUCT's declaration, and only meaningful when\n * this checkout actually starts a trial — asking for a card up front on a purchase\n * with no trial is a different decision nobody authored. Wonder Todos' enterprise plan\n * declares `true` and its professional plan `false`, and the two were indistinguishable\n * at the provider.\n */\n automaticTax: config.tax?.calculationMode === TaxCalculationMode.PROVIDER_MANAGED,\n requirePaymentMethodForTrial: isSubscription\n && trialDays > 0\n && product.behaviorPolicy?.trial?.requirePaymentMethod === true,\n /*\n * NEVER let the provider's own promotion-code entry accept a code (#518).\n *\n * This was `!providerPromotionCodeId` — so whenever a customer supplied NO code, the\n * hosted checkout page offered its own promo-code box, and a code typed there bypassed\n * every control the block above enforces: `validFrom`, `validUntil`, `maxRedemptions`\n * and `applicableProducts`. Four authored controls, silently optional, because the\n * discount was applied by the provider from its own synced coupon and Wildo never saw\n * the redemption at all.\n *\n * A code now reaches a purchase only through `input.promotionCode`, which is validated\n * here and counted at completion. An application that wants to offer a code entry\n * collects it in its own UI and passes it — which is also the only way the four\n * controls can mean anything.\n */\n allowPromotionCodes: false,\n providerPromotionCodeId,\n // The provider echoes this map back VERBATIM inside a genuinely signed\n // `checkout.session.completed`, and the webhook router turns it into a credit grant. It\n // used to be assembled with `...input.metadata` LAST, so a caller-supplied record could\n // overwrite `billingAccountId` / `productKey` / `quantity` — no signature forgery\n // required, because a valid signature proves the PROVIDER sent the bytes, not that WE\n // wrote them. The builder writes the framework's reserved keys last and strips reserved\n // keys out of caller metadata; see `billing-checkout-metadata.backend.utils.ts`.\n metadata: buildCheckoutSessionMetadata({\n billingAccountId: _id!,\n productKey: input.productKey,\n quantity: input.quantity,\n // Carried so the redemption can be COUNTED when the session completes (#518). The\n // validation above refused an exhausted code and then never incremented anything, so\n // a code used only through checkout stayed at zero redemptions forever and\n // `maxRedemptions` could be exceeded without limit.\n promotionId: appliedPromotionId,\n callerMetadata: input.metadata,\n }),\n });\n\n return { url: session.url, sessionId: session.sessionId };\n },\n },\n });\n };\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n });\n}\n\n// ════════════════════════════════════════════════════════════════════\n// OPEN_PORTAL — REPLACE_CORE_OPERATIONS\n// ════════════════════════════════════════════════════════════════════\n\n/**\n * Create OPEN_PORTAL custom impl factories for all variants.\n *\n * REPLACE: Resolves the billing account's providerCustomerId, creates a\n * Stripe Customer Portal session, and returns the redirect URL.\n * No DB write.\n */\nexport function createBillingAccountOpenPortalFactories(): ResourceCustomServiceImplementationFactory[] {\n return BILLING_ACCOUNT_VARIANT_TYPES.map((variantResourceType) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: variantResourceType,\n operationIdentifier: BillingAccount_Operations.OPEN_PORTAL,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n },\n requestDtoSchema: BillingAccount_OpenPortalRequestDto,\n handlers: {\n replaceCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n const billingAccount = utils.currentObject;\n\n if (!billingAccount?.providerCustomerId) {\n throw utils.errorBuilder.buildError(ErrorType.BUSINESS_RULE, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_NO_PROVIDER_CUSTOMER,\n context: { billingAccountId: _id },\n });\n }\n\n const provider = getBillingProvider();\n const result = await provider.createCustomerPortalSession(\n billingAccount.providerCustomerId,\n input.returnUrl,\n );\n\n return { url: result.url };\n },\n },\n });\n };\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n });\n}\n\n// ════════════════════════════════════════════════════════════════════\n// GET_STATE — REPLACE_CORE_OPERATIONS (collection-level)\n// ════════════════════════════════════════════════════════════════════\n\n/**\n * Create GET_STATE custom impl factories for all variants.\n *\n * REPLACE: Collection-level operation (no entity ID). Resolves scopeType\n * and scopeEntityId from execution context, delegates to BillingStateBackendService.\n * Returns the full aggregated billing state with automatic authorization via\n * the engine's parent scope validation.\n */\nexport function createBillingAccountGetStateFactories(): ResourceCustomServiceImplementationFactory[] {\n return BILLING_ACCOUNT_VARIANT_TYPES.map((variantResourceType) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService) => {\n return createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: variantResourceType,\n operationIdentifier: BillingAccount_Operations.GET_STATE,\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault: true,\n },\n handlers: {\n replaceCoreOperations: async (_id, _input, executionContext, _operationPath, _utils) => {\n const variants = resolveBillingVariantsFromResourceType(variantResourceType);\n if (!variants) {\n throw _utils.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {\n customMessageReference: ErrorCustomMessageReference.BILLING_SCOPE_NOT_ENABLED,\n context: { resourceType: variantResourceType },\n });\n }\n\n const scopeEntityId = executionContext[variants.scopeKey] as string | undefined;\n if (!scopeEntityId) {\n throw _utils.errorBuilder.buildError(ErrorType.VALIDATION, executionContext, {\n context: { message: 'Missing scope entity ID in execution context', scopeKey: variants.scopeKey },\n });\n }\n\n const billingConfig = getBillingConfig();\n const enabledScopes = billingConfig.enabledScopes ?? [ResourcePrimaryScope.ORGANIZATIONS];\n\n const billingStateService = getBillingStateService();\n return billingStateService.getState(variants.scopeType, scopeEntityId, enabledScopes, executionContext);\n },\n },\n });\n };\n\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n });\n}\n"]}
|
|
@@ -58,13 +58,50 @@ export declare function resolveBillingVariantsFromResourceType(variantResourceTy
|
|
|
58
58
|
* Used by the billing state endpoint where the caller provides scopeType directly.
|
|
59
59
|
*/
|
|
60
60
|
export declare function resolveBillingVariantsFromScopeType(scopeType: ResourcePrimaryScope): BillingResolvedVariants | null;
|
|
61
|
+
/**
|
|
62
|
+
* Why a catalog row is being read — and therefore whether a RETIRED row may be returned.
|
|
63
|
+
*
|
|
64
|
+
* ## Why this is a required parameter rather than a check at the sites that need it
|
|
65
|
+
*
|
|
66
|
+
* `Product.isActive` is the declared off-boarding path (`assertNoBillingAccountDependents` calls
|
|
67
|
+
* the soft retire exactly that), and no purchase path consulted it: `readProductByKey` handed back
|
|
68
|
+
* a retired product exactly like a live one, so "retired" was a label with no behaviour behind it
|
|
69
|
+
* and the catalogue-retirement reconciliation below would have been cosmetic.
|
|
70
|
+
*
|
|
71
|
+
* The gate is a REQUIRED argument on the reader — the same shape, and for the same reason, as
|
|
72
|
+
* {@link readPriceForProduct} making the price→product FK check unbypassable: the four call sites
|
|
73
|
+
* are edited in different sessions, three of them must refuse and one must NOT, and a separate
|
|
74
|
+
* `assertProductIsPurchasable` helper is exactly the thing the fourth session forgets. Making the
|
|
75
|
+
* distinction unrepresentable-by-omission costs one argument and removes the whole failure mode.
|
|
76
|
+
*
|
|
77
|
+
* The enumeration, so a fifth site can see which company it is in:
|
|
78
|
+
* - OPEN_CHECKOUT (`billing-account.mutations`) — ACQUIRE.
|
|
79
|
+
* - CHANGE_PLAN target product (`subscription.mutations`) — ACQUIRE.
|
|
80
|
+
* - ADD_ADDON product (`subscription.mutations`) — ACQUIRE.
|
|
81
|
+
* - REMOVE_ADDON product (`subscription.mutations`) — **REFERENCE, deliberately.** A customer
|
|
82
|
+
* holding a retired add-on must be able to drop it; refusing here would trap them on the very
|
|
83
|
+
* product the catalogue withdrew.
|
|
84
|
+
*/
|
|
85
|
+
export declare enum BillingCatalogReadIntent {
|
|
86
|
+
/**
|
|
87
|
+
* The caller is about to BUY this, or move a subscription onto it. A retired row is refused with
|
|
88
|
+
* `CONFLICT` / `BILLING_PRODUCT_RETIRED`.
|
|
89
|
+
*/
|
|
90
|
+
ACQUIRE = "acquire",
|
|
91
|
+
/**
|
|
92
|
+
* The caller is naming a row that a subscription ALREADY points at — to display it, to remove it,
|
|
93
|
+
* to rebuild a provider item list. A retired row is returned normally, because refusing would
|
|
94
|
+
* break the paths a customer on a retired product needs most.
|
|
95
|
+
*/
|
|
96
|
+
REFERENCE = "reference"
|
|
97
|
+
}
|
|
61
98
|
/**
|
|
62
99
|
* Read a product from the repository by key.
|
|
63
100
|
*
|
|
64
101
|
* Products are APPLICATION-scoped, so no org/user scoping is MEANT to apply — which is precisely why
|
|
65
102
|
* the read must not inherit the caller's scope context. See {@link createCatalogReadContext}.
|
|
66
103
|
*/
|
|
67
|
-
export declare function readProductByKey(key: string, executionContext: ExecutionContext<any>, utils: ResourceOperation_CustomImplementation_Utils): Promise<any>;
|
|
104
|
+
export declare function readProductByKey(key: string, intent: BillingCatalogReadIntent, executionContext: ExecutionContext<any>, utils: ResourceOperation_CustomImplementation_Utils): Promise<any>;
|
|
68
105
|
/**
|
|
69
106
|
* Read a product from the repository by ID.
|
|
70
107
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing-custom-impl-utils.backend.d.ts","sourceRoot":"","sources":["../../../../../../src/billing/services/custom-impl/billing-custom-impl-utils.backend.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,gBAAgB,EAChB,oBAAoB,EAKrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,4CAA4C,EAAE,MAAM,iHAAiH,CAAC;AACpL,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qEAAqE,CAAC;AAI5G,6DAA6D;AAC7D,eAAO,MAAM,yBAAyB,2FAG5B,CAAC;AAIX;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,mGAAmG;IACnG,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oFAAoF;IACpF,SAAS,EAAE,oBAAoB,CAAC;IAChC,8FAA8F;IAC9F,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAqB/F,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,uBAAuB,GAAG,IAAI,CAIrG;AAmBD,wBAAgB,sCAAsC,CAAC,mBAAmB,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAIlH;AAUD;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,SAAS,EAAE,oBAAoB,GAAG,uBAAuB,GAAG,IAAI,CAInH;AA0CD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,EACvC,KAAK,EAAE,4CAA4C,GAClD,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"billing-custom-impl-utils.backend.d.ts","sourceRoot":"","sources":["../../../../../../src/billing/services/custom-impl/billing-custom-impl-utils.backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,13 +118,51 @@ export function resolveBillingVariantsFromScopeType(scopeType) {
|
|
|
118
118
|
async function createCatalogReadContext(resourceType, executionContext, utils) {
|
|
119
119
|
return utils.executionContextCreator.createForSubCall(executionContext, resourceType, CoreResourceOperation.READ, utils.serviceOptions);
|
|
120
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Why a catalog row is being read — and therefore whether a RETIRED row may be returned.
|
|
123
|
+
*
|
|
124
|
+
* ## Why this is a required parameter rather than a check at the sites that need it
|
|
125
|
+
*
|
|
126
|
+
* `Product.isActive` is the declared off-boarding path (`assertNoBillingAccountDependents` calls
|
|
127
|
+
* the soft retire exactly that), and no purchase path consulted it: `readProductByKey` handed back
|
|
128
|
+
* a retired product exactly like a live one, so "retired" was a label with no behaviour behind it
|
|
129
|
+
* and the catalogue-retirement reconciliation below would have been cosmetic.
|
|
130
|
+
*
|
|
131
|
+
* The gate is a REQUIRED argument on the reader — the same shape, and for the same reason, as
|
|
132
|
+
* {@link readPriceForProduct} making the price→product FK check unbypassable: the four call sites
|
|
133
|
+
* are edited in different sessions, three of them must refuse and one must NOT, and a separate
|
|
134
|
+
* `assertProductIsPurchasable` helper is exactly the thing the fourth session forgets. Making the
|
|
135
|
+
* distinction unrepresentable-by-omission costs one argument and removes the whole failure mode.
|
|
136
|
+
*
|
|
137
|
+
* The enumeration, so a fifth site can see which company it is in:
|
|
138
|
+
* - OPEN_CHECKOUT (`billing-account.mutations`) — ACQUIRE.
|
|
139
|
+
* - CHANGE_PLAN target product (`subscription.mutations`) — ACQUIRE.
|
|
140
|
+
* - ADD_ADDON product (`subscription.mutations`) — ACQUIRE.
|
|
141
|
+
* - REMOVE_ADDON product (`subscription.mutations`) — **REFERENCE, deliberately.** A customer
|
|
142
|
+
* holding a retired add-on must be able to drop it; refusing here would trap them on the very
|
|
143
|
+
* product the catalogue withdrew.
|
|
144
|
+
*/
|
|
145
|
+
export var BillingCatalogReadIntent;
|
|
146
|
+
(function (BillingCatalogReadIntent) {
|
|
147
|
+
/**
|
|
148
|
+
* The caller is about to BUY this, or move a subscription onto it. A retired row is refused with
|
|
149
|
+
* `CONFLICT` / `BILLING_PRODUCT_RETIRED`.
|
|
150
|
+
*/
|
|
151
|
+
BillingCatalogReadIntent["ACQUIRE"] = "acquire";
|
|
152
|
+
/**
|
|
153
|
+
* The caller is naming a row that a subscription ALREADY points at — to display it, to remove it,
|
|
154
|
+
* to rebuild a provider item list. A retired row is returned normally, because refusing would
|
|
155
|
+
* break the paths a customer on a retired product needs most.
|
|
156
|
+
*/
|
|
157
|
+
BillingCatalogReadIntent["REFERENCE"] = "reference";
|
|
158
|
+
})(BillingCatalogReadIntent || (BillingCatalogReadIntent = {}));
|
|
121
159
|
/**
|
|
122
160
|
* Read a product from the repository by key.
|
|
123
161
|
*
|
|
124
162
|
* Products are APPLICATION-scoped, so no org/user scoping is MEANT to apply — which is precisely why
|
|
125
163
|
* the read must not inherit the caller's scope context. See {@link createCatalogReadContext}.
|
|
126
164
|
*/
|
|
127
|
-
export async function readProductByKey(key, executionContext, utils) {
|
|
165
|
+
export async function readProductByKey(key, intent, executionContext, utils) {
|
|
128
166
|
const productRepo = utils.repositoriesRegistry.getRepository(CoreResourceType.PRODUCTS);
|
|
129
167
|
if (!productRepo) {
|
|
130
168
|
throw utils.errorBuilder.buildError(ErrorType.CONFIGURATION, executionContext, {
|
|
@@ -139,7 +177,14 @@ export async function readProductByKey(key, executionContext, utils) {
|
|
|
139
177
|
context: { productKey: key },
|
|
140
178
|
});
|
|
141
179
|
}
|
|
142
|
-
|
|
180
|
+
const productRow = product;
|
|
181
|
+
if (intent === BillingCatalogReadIntent.ACQUIRE && productRow.isActive === false) {
|
|
182
|
+
throw utils.errorBuilder.buildError(ErrorType.CONFLICT, executionContext, {
|
|
183
|
+
customMessageReference: ErrorCustomMessageReference.BILLING_PRODUCT_RETIRED,
|
|
184
|
+
context: { productKey: key, productId: productRow._id },
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
return productRow;
|
|
143
188
|
}
|
|
144
189
|
/**
|
|
145
190
|
* Read a product from the repository by ID.
|
|
@@ -241,6 +286,26 @@ export function assertPriceBelongsToProduct(price, product, executionContext, ut
|
|
|
241
286
|
export async function readPriceForProduct(priceId, product, executionContext, utils) {
|
|
242
287
|
const price = await readPriceById(priceId, executionContext, utils);
|
|
243
288
|
assertPriceBelongsToProduct(price, product, executionContext, utils);
|
|
289
|
+
/*
|
|
290
|
+
* A retired PRICE is refused here and nowhere else, and that placement is the whole argument.
|
|
291
|
+
*
|
|
292
|
+
* All three callers of this reader are acquisitions (OPEN_CHECKOUT, CHANGE_PLAN, ADD_ADDON) —
|
|
293
|
+
* that is what the reader is FOR, per its own doc above — so the gate needs no intent argument
|
|
294
|
+
* and cannot be reached by a reference read. `readPriceById`, which resolves the price of an
|
|
295
|
+
* already-persisted subscription item, is deliberately left ungated: a subscriber on a retired
|
|
296
|
+
* plan rebuilds their provider item list through it on every add-on change, and refusing there
|
|
297
|
+
* would break the customer the retirement was supposed to leave alone.
|
|
298
|
+
*
|
|
299
|
+
* The catalogue-retirement sweep deactivates a retired product's prices alongside the product, so
|
|
300
|
+
* in practice this fires together with the product gate; it is separate because an operator may
|
|
301
|
+
* also retire a single price (a currency, an interval) while the product stays on sale.
|
|
302
|
+
*/
|
|
303
|
+
if (price?.isActive === false) {
|
|
304
|
+
throw utils.errorBuilder.buildError(ErrorType.CONFLICT, executionContext, {
|
|
305
|
+
customMessageReference: ErrorCustomMessageReference.BILLING_PRODUCT_RETIRED,
|
|
306
|
+
context: { priceId, productId: product?._id, productKey: product?.key },
|
|
307
|
+
});
|
|
308
|
+
}
|
|
244
309
|
return price;
|
|
245
310
|
}
|
|
246
311
|
// ── Promotion resolution ────────────────────────────────────────────
|