@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
package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"email-template-compiler.backend.service.js","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email-template-compiler.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Email Template Compiler Backend Service\n *\n * Compiles TSX email templates to JavaScript modules using ESBuild.\n * The compiled modules can be executed in the VM sandbox for rendering.\n */\n\nimport { injectable, inject } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// TYPES\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface CompilationResult {\n success: boolean;\n compiledCode?: string;\n sourceMap?: string;\n errors: string[];\n warnings: string[];\n durationMs: number;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// SERVICE\n// ─────────────────────────────────────────────────────────────────────────────\n\n@injectable()\nexport class EmailTemplateCompilerBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n ) {\n this.logDebug = this.logger.debugByType('EmailTemplateCompilerBackendService');\n this.logger.setDebugTypeLogging('EmailTemplateCompilerBackendService', false);\n }\n\n /**\n * Compile TSX source to JavaScript module\n *\n * @param tsxSource - The TSX template source code\n * @returns Compilation result with compiled code or errors\n */\n async compile(tsxSource: string): Promise<CompilationResult> {\n const startTime = Date.now();\n const errors: string[] = [];\n const warnings: string[] = [];\n\n this.logDebug('Compiling email template TSX to JavaScript');\n\n try {\n // Lazy import esbuild\n const esbuild = await import('esbuild');\n\n const result = await esbuild.transform(tsxSource, {\n loader: 'tsx',\n target: 'es2020',\n format: 'cjs', // CommonJS for VM execution\n jsx: 'automatic',\n jsxImportSource: 'react',\n minify: false, // Keep readable for debugging\n sourcemap: true,\n platform: 'node',\n // Note: external is not available for transform(),\n // VM sandbox handles module resolution\n });\n\n // Collect warnings\n if (result.warnings && result.warnings.length > 0) {\n for (const warning of result.warnings) {\n const msg = `Line ${warning.location?.line || '?'}: ${warning.text}`;\n warnings.push(msg);\n this.logger.warn('ESBuild warning during compilation', { message: msg });\n }\n }\n\n const durationMs = Date.now() - startTime;\n this.logDebug('Email template compilation successful', { durationMs });\n\n return {\n success: true,\n compiledCode: result.code,\n sourceMap: result.map,\n errors,\n warnings,\n durationMs,\n };\n } catch (err) {\n const error = err as Error & { errors?: Array<{ text: string; location?: { line: number } }> };\n const durationMs = Date.now() - startTime;\n\n // ESBuild error format\n if (error.errors && Array.isArray(error.errors)) {\n for (const e of error.errors) {\n errors.push(`Line ${e.location?.line || '?'}: ${e.text}`);\n }\n } else {\n errors.push(error.message);\n }\n\n this.logger.error('Email template compilation failed', { errors, durationMs });\n\n return {\n success: false,\n errors,\n warnings,\n durationMs,\n };\n }\n }\n\n /**\n * Compile and return detailed information about the compilation\n * Useful for debugging and development\n */\n async compileWithDetails(tsxSource: string): Promise<{\n result: CompilationResult;\n inputSize: number;\n outputSize?: number;\n }> {\n const inputSize = Buffer.byteLength(tsxSource, 'utf8');\n const result = await this.compile(tsxSource);\n\n const outputSize = result.compiledCode\n ? Buffer.byteLength(result.compiledCode, 'utf8')\n : undefined;\n\n return {\n result,\n inputSize,\n outputSize,\n };\n }\n}\n"]}
|
|
@@ -51,9 +51,74 @@ export declare class EmailTemplateRegistryBackendService {
|
|
|
51
51
|
resolveForConfiguredLocale(templateRef: string): ResolvedEmailTemplate;
|
|
52
52
|
/** Return all registered keys as `{templateRef}/{locale}` (diagnostics). */
|
|
53
53
|
getRegisteredKeys(): string[];
|
|
54
|
-
|
|
54
|
+
/**
|
|
55
|
+
* Report email-template coverage against EVERY locale the application enables, not only the one
|
|
56
|
+
* it authors natively.
|
|
57
|
+
*
|
|
58
|
+
* ## What was wrong
|
|
59
|
+
*
|
|
60
|
+
* This check resolved the configured primary locale once and tested only that. An application
|
|
61
|
+
* that declares `enabledLanguages: [en, fr]` and ships ninety-five `labels.en.ts` files and zero
|
|
62
|
+
* `labels.fr.ts` files started with a clean log — Wonder Todos, measured 2026-09-08. Every French
|
|
63
|
+
* recipient then silently received English, because {@link resolve} falls back through the
|
|
64
|
+
* configured chain and lands on the primary. Nothing anywhere said so: the frontend reads
|
|
65
|
+
* `enabledLanguages` and the dev companion reads it, but no backend surface did, so "the locale
|
|
66
|
+
* this application owns" was standing in for "the locales this application serves".
|
|
67
|
+
*
|
|
68
|
+
* ## Loudness — a WARNING, deliberately, and not an ERROR
|
|
69
|
+
*
|
|
70
|
+
* Enabling a language and authoring its email copy are separate acts that happen in that order:
|
|
71
|
+
* the copy is produced afterwards by the label/translate pipeline. Refusing to boot on the gap
|
|
72
|
+
* would mean an application cannot start between the two, which is the exact trade the operation
|
|
73
|
+
* email-template validator already settled in the other direction — "refusing to START an
|
|
74
|
+
* application because a notice is unauthored trades a missing email for a total outage, which is
|
|
75
|
+
* the worse failure" (`collectOperationEmailTemplateIssues`). A missing SECONDARY locale is
|
|
76
|
+
* strictly milder than the case that reasoning was written about: the notice is still delivered,
|
|
77
|
+
* in the wrong language.
|
|
78
|
+
*
|
|
79
|
+
* That is also why this stays inside the registry rather than being handed to the startup config
|
|
80
|
+
* validator, whose token-backed path is an ERROR that crash-loops a boot. Widening
|
|
81
|
+
* {@link resolveForConfiguredLocale} — the seam that validator resolves through — to demand every
|
|
82
|
+
* enabled locale would have converted "ninety-five emails arrive in English" into "this
|
|
83
|
+
* application cannot start", for the one application the finding came from.
|
|
84
|
+
*
|
|
85
|
+
* The warning is not a shrug: it is emitted per non-covered locale, separates the two severities
|
|
86
|
+
* below, and names the exact `labels.<locale>.ts` file an author has to create — so it is
|
|
87
|
+
* actionable from the log line alone rather than after an audit.
|
|
88
|
+
*
|
|
89
|
+
* ## The two severities it separates
|
|
90
|
+
*
|
|
91
|
+
* - **Primary locale** — nothing to fall back TO. A system ref absent here cannot be rendered at
|
|
92
|
+
* all, and the send raises `CONFIGURATION`. This is the pre-existing check, unchanged in
|
|
93
|
+
* meaning.
|
|
94
|
+
* - **Any other enabled locale** — the template resolves, in the wrong language. Reported for
|
|
95
|
+
* every registered ref rather than only the twelve system ones, because the population that
|
|
96
|
+
* goes untranslated is the whole catalog (83 of Wonder Todos' 95 are resource/operation
|
|
97
|
+
* templates, which the system-ref loop cannot see).
|
|
98
|
+
*
|
|
99
|
+
* Coverage honours the SAME base-language fallback a runtime send uses, so an application that
|
|
100
|
+
* ships `fr` and enables `fr-CA` is covered rather than reported. It deliberately does NOT accept
|
|
101
|
+
* a fallback to the primary locale — landing there is the failure being reported.
|
|
102
|
+
*/
|
|
103
|
+
private validateTemplateLocaleCoverage;
|
|
104
|
+
/**
|
|
105
|
+
* Does this ref have labels a recipient in `locale` would actually receive?
|
|
106
|
+
*
|
|
107
|
+
* Mirrors the first two candidates of {@link resolve} — exact locale, then base language — and
|
|
108
|
+
* stops there on purpose. The remaining candidates (configured fallback, configured primary) are
|
|
109
|
+
* what make an uncovered locale silent at runtime, so accepting them here would make the check
|
|
110
|
+
* agree with the defect instead of reporting it.
|
|
111
|
+
*/
|
|
112
|
+
private hasTemplateForLocale;
|
|
55
113
|
private computeStats;
|
|
56
114
|
private buildNotFoundError;
|
|
57
115
|
private getConfiguredPrimaryLocale;
|
|
116
|
+
/**
|
|
117
|
+
* Every locale this application enables, primary first. Delegates to the named config helper so
|
|
118
|
+
* the registry does not re-derive the enabled set — it is the same question the frontend's
|
|
119
|
+
* language switcher and the companion's translate pass answer, and three private derivations of
|
|
120
|
+
* one set is how they come to disagree.
|
|
121
|
+
*/
|
|
122
|
+
private getConfiguredEnabledLocales;
|
|
58
123
|
}
|
|
59
124
|
//# sourceMappingURL=email-template-registry.backend.service.d.ts.map
|
package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-template-registry.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email-template-registry.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AACnH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;
|
|
1
|
+
{"version":3,"file":"email-template-registry.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email-template-registry.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AACnH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AAOpH,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,yEAAyE,CAAC;AAEjF,qFAAqF;AACrF,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;CACxB;AAOD,qBACa,mCAAmC;IAMT,OAAO,CAAC,QAAQ,CAAC,MAAM;IACV,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7E,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IARnC,OAAO,CAAC,OAAO,CAAuD;IAEtE,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;gBAG3B,MAAM,EAAE,aAAa,EACR,YAAY,EAAE,0BAA0B,EAExF,gBAAgB,EAAE,uBAAuB;IAM5D;;;;;OAKG;IACH,UAAU,CAAC,WAAW,EAAE,2BAA2B,GAAG,IAAI;IAgB1D;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,qBAAqB;IAiCnH;;;;;OAKG;IACH,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,qBAAqB;IAatE,4EAA4E;IAC5E,iBAAiB,IAAI,MAAM,EAAE;IAY7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACH,OAAO,CAAC,8BAA8B;IAyCtC;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,0BAA0B;IAIlC;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;CAGpC"}
|
|
@@ -22,7 +22,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
22
22
|
};
|
|
23
23
|
import { injectable, inject } from 'inversify';
|
|
24
24
|
import { SAAS_SERVICE_TYPES } from '../../../inject/models/service-types.js';
|
|
25
|
-
import { getConfiguredFallbackLanguage, getConfiguredPrimaryLanguage, } from '../../../config/services/app-configuration.backend.utils.js';
|
|
25
|
+
import { getConfiguredEnabledLanguages, getConfiguredFallbackLanguage, getConfiguredPrimaryLanguage, } from '../../../config/services/app-configuration.backend.utils.js';
|
|
26
26
|
import { ErrorType, getAllSystemTemplateRefs } from '@wildo-ai/saas-models';
|
|
27
27
|
let EmailTemplateRegistryBackendService = class EmailTemplateRegistryBackendService {
|
|
28
28
|
logger;
|
|
@@ -54,7 +54,7 @@ let EmailTemplateRegistryBackendService = class EmailTemplateRegistryBackendServ
|
|
|
54
54
|
}
|
|
55
55
|
const { templateCount, locales } = this.computeStats();
|
|
56
56
|
this.logger.info(`✅ Email template registry: ${templateCount} template(s) across ${locales.size} locale(s)`);
|
|
57
|
-
this.
|
|
57
|
+
this.validateTemplateLocaleCoverage(locales);
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Resolve a template by ref with i18n locale fallback.
|
|
@@ -116,22 +116,108 @@ let EmailTemplateRegistryBackendService = class EmailTemplateRegistryBackendServ
|
|
|
116
116
|
return keys;
|
|
117
117
|
}
|
|
118
118
|
// ── Validation ─────────────────────────────────────────────────
|
|
119
|
-
|
|
119
|
+
/**
|
|
120
|
+
* Report email-template coverage against EVERY locale the application enables, not only the one
|
|
121
|
+
* it authors natively.
|
|
122
|
+
*
|
|
123
|
+
* ## What was wrong
|
|
124
|
+
*
|
|
125
|
+
* This check resolved the configured primary locale once and tested only that. An application
|
|
126
|
+
* that declares `enabledLanguages: [en, fr]` and ships ninety-five `labels.en.ts` files and zero
|
|
127
|
+
* `labels.fr.ts` files started with a clean log — Wonder Todos, measured 2026-09-08. Every French
|
|
128
|
+
* recipient then silently received English, because {@link resolve} falls back through the
|
|
129
|
+
* configured chain and lands on the primary. Nothing anywhere said so: the frontend reads
|
|
130
|
+
* `enabledLanguages` and the dev companion reads it, but no backend surface did, so "the locale
|
|
131
|
+
* this application owns" was standing in for "the locales this application serves".
|
|
132
|
+
*
|
|
133
|
+
* ## Loudness — a WARNING, deliberately, and not an ERROR
|
|
134
|
+
*
|
|
135
|
+
* Enabling a language and authoring its email copy are separate acts that happen in that order:
|
|
136
|
+
* the copy is produced afterwards by the label/translate pipeline. Refusing to boot on the gap
|
|
137
|
+
* would mean an application cannot start between the two, which is the exact trade the operation
|
|
138
|
+
* email-template validator already settled in the other direction — "refusing to START an
|
|
139
|
+
* application because a notice is unauthored trades a missing email for a total outage, which is
|
|
140
|
+
* the worse failure" (`collectOperationEmailTemplateIssues`). A missing SECONDARY locale is
|
|
141
|
+
* strictly milder than the case that reasoning was written about: the notice is still delivered,
|
|
142
|
+
* in the wrong language.
|
|
143
|
+
*
|
|
144
|
+
* That is also why this stays inside the registry rather than being handed to the startup config
|
|
145
|
+
* validator, whose token-backed path is an ERROR that crash-loops a boot. Widening
|
|
146
|
+
* {@link resolveForConfiguredLocale} — the seam that validator resolves through — to demand every
|
|
147
|
+
* enabled locale would have converted "ninety-five emails arrive in English" into "this
|
|
148
|
+
* application cannot start", for the one application the finding came from.
|
|
149
|
+
*
|
|
150
|
+
* The warning is not a shrug: it is emitted per non-covered locale, separates the two severities
|
|
151
|
+
* below, and names the exact `labels.<locale>.ts` file an author has to create — so it is
|
|
152
|
+
* actionable from the log line alone rather than after an audit.
|
|
153
|
+
*
|
|
154
|
+
* ## The two severities it separates
|
|
155
|
+
*
|
|
156
|
+
* - **Primary locale** — nothing to fall back TO. A system ref absent here cannot be rendered at
|
|
157
|
+
* all, and the send raises `CONFIGURATION`. This is the pre-existing check, unchanged in
|
|
158
|
+
* meaning.
|
|
159
|
+
* - **Any other enabled locale** — the template resolves, in the wrong language. Reported for
|
|
160
|
+
* every registered ref rather than only the twelve system ones, because the population that
|
|
161
|
+
* goes untranslated is the whole catalog (83 of Wonder Todos' 95 are resource/operation
|
|
162
|
+
* templates, which the system-ref loop cannot see).
|
|
163
|
+
*
|
|
164
|
+
* Coverage honours the SAME base-language fallback a runtime send uses, so an application that
|
|
165
|
+
* ships `fr` and enables `fr-CA` is covered rather than reported. It deliberately does NOT accept
|
|
166
|
+
* a fallback to the primary locale — landing there is the failure being reported.
|
|
167
|
+
*/
|
|
168
|
+
validateTemplateLocaleCoverage(registeredLocales) {
|
|
120
169
|
const systemRefs = getAllSystemTemplateRefs();
|
|
170
|
+
// The primary is asked for by name rather than taken off the front of the enabled set: the
|
|
171
|
+
// helper does put it first, but the two locales carry DIFFERENT severities below, and a
|
|
172
|
+
// severity split that depends on array order is one refactor away from being silently wrong.
|
|
121
173
|
const configuredPrimaryLocale = this.getConfiguredPrimaryLocale();
|
|
174
|
+
const secondaryLocales = this.getConfiguredEnabledLocales().filter((locale) => locale !== configuredPrimaryLocale);
|
|
175
|
+
const registeredRefs = [...this.entries.keys()];
|
|
122
176
|
if (!registeredLocales.has(configuredPrimaryLocale)) {
|
|
123
177
|
this.logger.warn(`⚠️ No email templates registered for configured primary locale "${configuredPrimaryLocale}".`);
|
|
124
178
|
}
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
179
|
+
const missingSystemRefs = systemRefs.filter((ref) => !this.hasTemplateForLocale(ref, configuredPrimaryLocale));
|
|
180
|
+
if (missingSystemRefs.length > 0) {
|
|
181
|
+
this.logger.warn(`⚠️ Missing email templates for ${missingSystemRefs.length} system ref(s) in configured primary locale "${configuredPrimaryLocale}": ${missingSystemRefs.join(', ')}`);
|
|
182
|
+
}
|
|
183
|
+
for (const locale of secondaryLocales) {
|
|
184
|
+
const uncovered = registeredRefs.filter((ref) => !this.hasTemplateForLocale(ref, locale));
|
|
185
|
+
if (uncovered.length === 0) {
|
|
186
|
+
continue;
|
|
130
187
|
}
|
|
188
|
+
// Two shapes, because "none of them" and "some of them" have different remedies. When the
|
|
189
|
+
// whole catalog is uncovered, enumerating it is noise — Wonder Todos would print ninety-five
|
|
190
|
+
// refs to say "translate everything" — so the headline states the total instead. When only
|
|
191
|
+
// some are, the names ARE the remedy and are printed.
|
|
192
|
+
//
|
|
193
|
+
// Note the totality is measured against `uncovered.length`, not against `registeredLocales`:
|
|
194
|
+
// that set is exact-match only, so an app shipping `fr` while enabling `fr-CA` would read as
|
|
195
|
+
// having nothing in `fr-CA` when every one of its templates in fact covers it.
|
|
196
|
+
if (uncovered.length === registeredRefs.length) {
|
|
197
|
+
this.logger.warn(`⚠️ No email templates registered for enabled locale "${locale}" — all ${registeredRefs.length} of them fall back to "${configuredPrimaryLocale}", so every email to a "${locale}" recipient is sent in the wrong language. Author labels.${locale}.ts beside each template.`);
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
this.logger.warn(`⚠️ Missing email templates for ${uncovered.length} ref(s) in enabled locale "${locale}" — these fall back to "${configuredPrimaryLocale}", so a "${locale}" recipient receives them in the wrong language. Create labels.${locale}.ts beside each: ${uncovered.join(', ')}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Does this ref have labels a recipient in `locale` would actually receive?
|
|
205
|
+
*
|
|
206
|
+
* Mirrors the first two candidates of {@link resolve} — exact locale, then base language — and
|
|
207
|
+
* stops there on purpose. The remaining candidates (configured fallback, configured primary) are
|
|
208
|
+
* what make an uncovered locale silent at runtime, so accepting them here would make the check
|
|
209
|
+
* agree with the defect instead of reporting it.
|
|
210
|
+
*/
|
|
211
|
+
hasTemplateForLocale(templateRef, locale) {
|
|
212
|
+
const localeMap = this.entries.get(templateRef);
|
|
213
|
+
if (!localeMap) {
|
|
214
|
+
return false;
|
|
131
215
|
}
|
|
132
|
-
if (
|
|
133
|
-
|
|
216
|
+
if (localeMap.has(locale)) {
|
|
217
|
+
return true;
|
|
134
218
|
}
|
|
219
|
+
const baseLanguage = locale.includes('-') ? locale.split('-')[0] : null;
|
|
220
|
+
return Boolean(baseLanguage && baseLanguage !== locale && localeMap.has(baseLanguage));
|
|
135
221
|
}
|
|
136
222
|
// ── Helpers ────────────────────────────────────────────────────
|
|
137
223
|
computeStats() {
|
|
@@ -157,6 +243,15 @@ let EmailTemplateRegistryBackendService = class EmailTemplateRegistryBackendServ
|
|
|
157
243
|
getConfiguredPrimaryLocale() {
|
|
158
244
|
return getConfiguredPrimaryLanguage(this.appConfigService.config);
|
|
159
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* Every locale this application enables, primary first. Delegates to the named config helper so
|
|
248
|
+
* the registry does not re-derive the enabled set — it is the same question the frontend's
|
|
249
|
+
* language switcher and the companion's translate pass answer, and three private derivations of
|
|
250
|
+
* one set is how they come to disagree.
|
|
251
|
+
*/
|
|
252
|
+
getConfiguredEnabledLocales() {
|
|
253
|
+
return getConfiguredEnabledLanguages(this.appConfigService.config);
|
|
254
|
+
}
|
|
160
255
|
};
|
|
161
256
|
EmailTemplateRegistryBackendService = __decorate([
|
|
162
257
|
injectable(),
|
package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-template-registry.backend.service.js","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email-template-registry.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Email Template Registry Backend Service\n *\n * In-memory registry for file-based email template definitions.\n * Templates are injected at startup from app-custom via initialize().\n * Resolution uses exact templateRef match with i18n locale fallback.\n *\n * Each template is a locale-agnostic definition (`template.tsx`) paired\n * with co-located per-locale label files (`labels.{locale}.ts`).\n */\n\nimport { injectable, inject } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport type { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport {\n getConfiguredFallbackLanguage,\n getConfiguredPrimaryLanguage,\n} from '~wildo-backend-lib/config/services/app-configuration.backend.utils';\nimport { ErrorType, getAllSystemTemplateRefs, type WildoError_Backend } from '@wildo-ai/saas-models';\nimport type {\n EmailTemplateDefinition,\n EmailTemplateDefinitionsMap,\n} from '~wildo-backend-lib/notifications/email/models/email-template-definition';\n\n/** Resolved template returned by `resolve()`: definition + locale-matched labels. */\nexport interface ResolvedEmailTemplate {\n definition: EmailTemplateDefinition<any>;\n labels: Record<string, string>;\n resolvedLocale: string;\n}\n\ninterface RegistryLocaleEntry {\n definition: EmailTemplateDefinition<any>;\n labels: Record<string, string>;\n}\n\n@injectable()\nexport class EmailTemplateRegistryBackendService {\n private entries = new Map<string, Map<string, RegistryLocaleEntry>>();\n\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private readonly errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly appConfigService: AppConfigurationService,\n ) {\n this.logDebug = this.logger.debugByType('EmailTemplateRegistry');\n this.logger.setDebugTypeLogging('EmailTemplateRegistry', false);\n }\n\n /**\n * Populate the registry from the app-custom template map.\n *\n * Keys are bare `templateRef` values. Each entry has a locale-agnostic\n * template definition + per-locale label objects.\n */\n initialize(definitions: EmailTemplateDefinitionsMap): void {\n this.entries.clear();\n\n for (const [templateRef, entry] of Object.entries(definitions)) {\n const localeMap = new Map<string, RegistryLocaleEntry>();\n for (const [locale, labels] of Object.entries(entry.labels)) {\n localeMap.set(locale, { definition: entry.template, labels });\n }\n this.entries.set(templateRef, localeMap);\n }\n\n const { templateCount, locales } = this.computeStats();\n this.logger.info(`✅ Email template registry: ${templateCount} template(s) across ${locales.size} locale(s)`);\n this.validateSystemTemplates(locales);\n }\n\n /**\n * Resolve a template by ref with i18n locale fallback.\n *\n * 1. Exact locale match (e.g. fr-CA)\n * 2. Base language fallback (e.g. fr)\n * 3. Configured fallback locale\n * 4. Configured primary locale\n * 5. Throw if none found\n */\n resolve(templateRef: string, locale: string, primaryLocale: string, fallbackLocale?: string): ResolvedEmailTemplate {\n const localeMap = this.entries.get(templateRef);\n if (!localeMap) {\n throw this.buildNotFoundError(templateRef, [locale, fallbackLocale, primaryLocale].filter((value): value is string => !!value));\n }\n\n const candidates = [locale];\n const baseLanguage = locale.includes('-') ? locale.split('-')[0] : null;\n if (baseLanguage && baseLanguage !== locale) {\n candidates.push(baseLanguage);\n }\n if (fallbackLocale && !candidates.includes(fallbackLocale)) {\n candidates.push(fallbackLocale);\n }\n if (!candidates.includes(primaryLocale)) {\n candidates.push(primaryLocale);\n }\n\n for (const candidateLocale of candidates) {\n const entry = localeMap.get(candidateLocale);\n if (entry) {\n this.logDebug('Template resolved', { templateRef, resolvedLocale: candidateLocale });\n return {\n definition: entry.definition,\n labels: entry.labels,\n resolvedLocale: candidateLocale,\n };\n }\n }\n\n throw this.buildNotFoundError(templateRef, candidates);\n }\n\n /**\n * Resolve exactly as runtime email delivery does for the application's\n * configured primary/fallback locales. Startup contract validation uses this\n * seam so template existence is proven against the same locale semantics as\n * a later send.\n */\n resolveForConfiguredLocale(templateRef: string): ResolvedEmailTemplate {\n const primaryLocale =\n getConfiguredPrimaryLanguage(this.appConfigService.config);\n const fallbackLocale =\n getConfiguredFallbackLanguage(this.appConfigService.config);\n return this.resolve(\n templateRef,\n primaryLocale,\n primaryLocale,\n fallbackLocale,\n );\n }\n\n /** Return all registered keys as `{templateRef}/{locale}` (diagnostics). */\n getRegisteredKeys(): string[] {\n const keys: string[] = [];\n for (const [templateRef, localeMap] of this.entries) {\n for (const locale of localeMap.keys()) {\n keys.push(`${templateRef}/${locale}`);\n }\n }\n return keys;\n }\n\n // ── Validation ─────────────────────────────────────────────────\n\n private validateSystemTemplates(registeredLocales: Set<string>): void {\n const systemRefs = getAllSystemTemplateRefs();\n const configuredPrimaryLocale = this.getConfiguredPrimaryLocale();\n if (!registeredLocales.has(configuredPrimaryLocale)) {\n this.logger.warn(`⚠️ No email templates registered for configured primary locale \"${configuredPrimaryLocale}\".`);\n }\n\n const missing: string[] = [];\n for (const ref of systemRefs) {\n const localeMap = this.entries.get(ref);\n if (!localeMap?.has(configuredPrimaryLocale)) {\n missing.push(ref);\n }\n }\n\n if (missing.length > 0) {\n this.logger.warn(`⚠️ Missing email templates for ${missing.length} system ref(s) in configured primary locale \"${configuredPrimaryLocale}\": ${missing.join(', ')}`);\n }\n }\n\n // ── Helpers ────────────────────────────────────────────────────\n\n private computeStats(): { templateCount: number; locales: Set<string> } {\n const locales = new Set<string>();\n let templateCount = 0;\n for (const localeMap of this.entries.values()) {\n templateCount += localeMap.size;\n for (const locale of localeMap.keys()) {\n locales.add(locale);\n }\n }\n return { templateCount, locales };\n }\n\n private buildNotFoundError(templateRef: string, triedLocales: string[]): WildoError_Backend {\n return this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n {\n context: {\n message: `Email template \"${templateRef}\" not found for any locale [${triedLocales.join(', ')}]`,\n templateRef,\n triedLocales,\n },\n },\n );\n }\n\n private getConfiguredPrimaryLocale(): string {\n return getConfiguredPrimaryLanguage(this.appConfigService.config);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"email-template-registry.backend.service.js","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email-template-registry.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Email Template Registry Backend Service\n *\n * In-memory registry for file-based email template definitions.\n * Templates are injected at startup from app-custom via initialize().\n * Resolution uses exact templateRef match with i18n locale fallback.\n *\n * Each template is a locale-agnostic definition (`template.tsx`) paired\n * with co-located per-locale label files (`labels.{locale}.ts`).\n */\n\nimport { injectable, inject } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport type { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport {\n getConfiguredEnabledLanguages,\n getConfiguredFallbackLanguage,\n getConfiguredPrimaryLanguage,\n} from '~wildo-backend-lib/config/services/app-configuration.backend.utils';\nimport { ErrorType, getAllSystemTemplateRefs, type WildoError_Backend } from '@wildo-ai/saas-models';\nimport type {\n EmailTemplateDefinition,\n EmailTemplateDefinitionsMap,\n} from '~wildo-backend-lib/notifications/email/models/email-template-definition';\n\n/** Resolved template returned by `resolve()`: definition + locale-matched labels. */\nexport interface ResolvedEmailTemplate {\n definition: EmailTemplateDefinition<any>;\n labels: Record<string, string>;\n resolvedLocale: string;\n}\n\ninterface RegistryLocaleEntry {\n definition: EmailTemplateDefinition<any>;\n labels: Record<string, string>;\n}\n\n@injectable()\nexport class EmailTemplateRegistryBackendService {\n private entries = new Map<string, Map<string, RegistryLocaleEntry>>();\n\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private readonly errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.AppConfigService)\n private readonly appConfigService: AppConfigurationService,\n ) {\n this.logDebug = this.logger.debugByType('EmailTemplateRegistry');\n this.logger.setDebugTypeLogging('EmailTemplateRegistry', false);\n }\n\n /**\n * Populate the registry from the app-custom template map.\n *\n * Keys are bare `templateRef` values. Each entry has a locale-agnostic\n * template definition + per-locale label objects.\n */\n initialize(definitions: EmailTemplateDefinitionsMap): void {\n this.entries.clear();\n\n for (const [templateRef, entry] of Object.entries(definitions)) {\n const localeMap = new Map<string, RegistryLocaleEntry>();\n for (const [locale, labels] of Object.entries(entry.labels)) {\n localeMap.set(locale, { definition: entry.template, labels });\n }\n this.entries.set(templateRef, localeMap);\n }\n\n const { templateCount, locales } = this.computeStats();\n this.logger.info(`✅ Email template registry: ${templateCount} template(s) across ${locales.size} locale(s)`);\n this.validateTemplateLocaleCoverage(locales);\n }\n\n /**\n * Resolve a template by ref with i18n locale fallback.\n *\n * 1. Exact locale match (e.g. fr-CA)\n * 2. Base language fallback (e.g. fr)\n * 3. Configured fallback locale\n * 4. Configured primary locale\n * 5. Throw if none found\n */\n resolve(templateRef: string, locale: string, primaryLocale: string, fallbackLocale?: string): ResolvedEmailTemplate {\n const localeMap = this.entries.get(templateRef);\n if (!localeMap) {\n throw this.buildNotFoundError(templateRef, [locale, fallbackLocale, primaryLocale].filter((value): value is string => !!value));\n }\n\n const candidates = [locale];\n const baseLanguage = locale.includes('-') ? locale.split('-')[0] : null;\n if (baseLanguage && baseLanguage !== locale) {\n candidates.push(baseLanguage);\n }\n if (fallbackLocale && !candidates.includes(fallbackLocale)) {\n candidates.push(fallbackLocale);\n }\n if (!candidates.includes(primaryLocale)) {\n candidates.push(primaryLocale);\n }\n\n for (const candidateLocale of candidates) {\n const entry = localeMap.get(candidateLocale);\n if (entry) {\n this.logDebug('Template resolved', { templateRef, resolvedLocale: candidateLocale });\n return {\n definition: entry.definition,\n labels: entry.labels,\n resolvedLocale: candidateLocale,\n };\n }\n }\n\n throw this.buildNotFoundError(templateRef, candidates);\n }\n\n /**\n * Resolve exactly as runtime email delivery does for the application's\n * configured primary/fallback locales. Startup contract validation uses this\n * seam so template existence is proven against the same locale semantics as\n * a later send.\n */\n resolveForConfiguredLocale(templateRef: string): ResolvedEmailTemplate {\n const primaryLocale =\n getConfiguredPrimaryLanguage(this.appConfigService.config);\n const fallbackLocale =\n getConfiguredFallbackLanguage(this.appConfigService.config);\n return this.resolve(\n templateRef,\n primaryLocale,\n primaryLocale,\n fallbackLocale,\n );\n }\n\n /** Return all registered keys as `{templateRef}/{locale}` (diagnostics). */\n getRegisteredKeys(): string[] {\n const keys: string[] = [];\n for (const [templateRef, localeMap] of this.entries) {\n for (const locale of localeMap.keys()) {\n keys.push(`${templateRef}/${locale}`);\n }\n }\n return keys;\n }\n\n // ── Validation ─────────────────────────────────────────────────\n\n /**\n * Report email-template coverage against EVERY locale the application enables, not only the one\n * it authors natively.\n *\n * ## What was wrong\n *\n * This check resolved the configured primary locale once and tested only that. An application\n * that declares `enabledLanguages: [en, fr]` and ships ninety-five `labels.en.ts` files and zero\n * `labels.fr.ts` files started with a clean log — Wonder Todos, measured 2026-09-08. Every French\n * recipient then silently received English, because {@link resolve} falls back through the\n * configured chain and lands on the primary. Nothing anywhere said so: the frontend reads\n * `enabledLanguages` and the dev companion reads it, but no backend surface did, so \"the locale\n * this application owns\" was standing in for \"the locales this application serves\".\n *\n * ## Loudness — a WARNING, deliberately, and not an ERROR\n *\n * Enabling a language and authoring its email copy are separate acts that happen in that order:\n * the copy is produced afterwards by the label/translate pipeline. Refusing to boot on the gap\n * would mean an application cannot start between the two, which is the exact trade the operation\n * email-template validator already settled in the other direction — \"refusing to START an\n * application because a notice is unauthored trades a missing email for a total outage, which is\n * the worse failure\" (`collectOperationEmailTemplateIssues`). A missing SECONDARY locale is\n * strictly milder than the case that reasoning was written about: the notice is still delivered,\n * in the wrong language.\n *\n * That is also why this stays inside the registry rather than being handed to the startup config\n * validator, whose token-backed path is an ERROR that crash-loops a boot. Widening\n * {@link resolveForConfiguredLocale} — the seam that validator resolves through — to demand every\n * enabled locale would have converted \"ninety-five emails arrive in English\" into \"this\n * application cannot start\", for the one application the finding came from.\n *\n * The warning is not a shrug: it is emitted per non-covered locale, separates the two severities\n * below, and names the exact `labels.<locale>.ts` file an author has to create — so it is\n * actionable from the log line alone rather than after an audit.\n *\n * ## The two severities it separates\n *\n * - **Primary locale** — nothing to fall back TO. A system ref absent here cannot be rendered at\n * all, and the send raises `CONFIGURATION`. This is the pre-existing check, unchanged in\n * meaning.\n * - **Any other enabled locale** — the template resolves, in the wrong language. Reported for\n * every registered ref rather than only the twelve system ones, because the population that\n * goes untranslated is the whole catalog (83 of Wonder Todos' 95 are resource/operation\n * templates, which the system-ref loop cannot see).\n *\n * Coverage honours the SAME base-language fallback a runtime send uses, so an application that\n * ships `fr` and enables `fr-CA` is covered rather than reported. It deliberately does NOT accept\n * a fallback to the primary locale — landing there is the failure being reported.\n */\n private validateTemplateLocaleCoverage(registeredLocales: Set<string>): void {\n const systemRefs = getAllSystemTemplateRefs();\n // The primary is asked for by name rather than taken off the front of the enabled set: the\n // helper does put it first, but the two locales carry DIFFERENT severities below, and a\n // severity split that depends on array order is one refactor away from being silently wrong.\n const configuredPrimaryLocale = this.getConfiguredPrimaryLocale();\n const secondaryLocales = this.getConfiguredEnabledLocales().filter((locale) => locale !== configuredPrimaryLocale);\n const registeredRefs = [...this.entries.keys()];\n\n if (!registeredLocales.has(configuredPrimaryLocale)) {\n this.logger.warn(`⚠️ No email templates registered for configured primary locale \"${configuredPrimaryLocale}\".`);\n }\n\n const missingSystemRefs = systemRefs.filter((ref) => !this.hasTemplateForLocale(ref, configuredPrimaryLocale));\n if (missingSystemRefs.length > 0) {\n this.logger.warn(`⚠️ Missing email templates for ${missingSystemRefs.length} system ref(s) in configured primary locale \"${configuredPrimaryLocale}\": ${missingSystemRefs.join(', ')}`);\n }\n\n for (const locale of secondaryLocales) {\n const uncovered = registeredRefs.filter((ref) => !this.hasTemplateForLocale(ref, locale));\n if (uncovered.length === 0) {\n continue;\n }\n\n // Two shapes, because \"none of them\" and \"some of them\" have different remedies. When the\n // whole catalog is uncovered, enumerating it is noise — Wonder Todos would print ninety-five\n // refs to say \"translate everything\" — so the headline states the total instead. When only\n // some are, the names ARE the remedy and are printed.\n //\n // Note the totality is measured against `uncovered.length`, not against `registeredLocales`:\n // that set is exact-match only, so an app shipping `fr` while enabling `fr-CA` would read as\n // having nothing in `fr-CA` when every one of its templates in fact covers it.\n if (uncovered.length === registeredRefs.length) {\n this.logger.warn(`⚠️ No email templates registered for enabled locale \"${locale}\" — all ${registeredRefs.length} of them fall back to \"${configuredPrimaryLocale}\", so every email to a \"${locale}\" recipient is sent in the wrong language. Author labels.${locale}.ts beside each template.`);\n continue;\n }\n\n this.logger.warn(`⚠️ Missing email templates for ${uncovered.length} ref(s) in enabled locale \"${locale}\" — these fall back to \"${configuredPrimaryLocale}\", so a \"${locale}\" recipient receives them in the wrong language. Create labels.${locale}.ts beside each: ${uncovered.join(', ')}`);\n }\n }\n\n /**\n * Does this ref have labels a recipient in `locale` would actually receive?\n *\n * Mirrors the first two candidates of {@link resolve} — exact locale, then base language — and\n * stops there on purpose. The remaining candidates (configured fallback, configured primary) are\n * what make an uncovered locale silent at runtime, so accepting them here would make the check\n * agree with the defect instead of reporting it.\n */\n private hasTemplateForLocale(templateRef: string, locale: string): boolean {\n const localeMap = this.entries.get(templateRef);\n if (!localeMap) {\n return false;\n }\n if (localeMap.has(locale)) {\n return true;\n }\n const baseLanguage = locale.includes('-') ? locale.split('-')[0] : null;\n return Boolean(baseLanguage && baseLanguage !== locale && localeMap.has(baseLanguage));\n }\n\n // ── Helpers ────────────────────────────────────────────────────\n\n private computeStats(): { templateCount: number; locales: Set<string> } {\n const locales = new Set<string>();\n let templateCount = 0;\n for (const localeMap of this.entries.values()) {\n templateCount += localeMap.size;\n for (const locale of localeMap.keys()) {\n locales.add(locale);\n }\n }\n return { templateCount, locales };\n }\n\n private buildNotFoundError(templateRef: string, triedLocales: string[]): WildoError_Backend {\n return this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n {\n context: {\n message: `Email template \"${templateRef}\" not found for any locale [${triedLocales.join(', ')}]`,\n templateRef,\n triedLocales,\n },\n },\n );\n }\n\n private getConfiguredPrimaryLocale(): string {\n return getConfiguredPrimaryLanguage(this.appConfigService.config);\n }\n\n /**\n * Every locale this application enables, primary first. Delegates to the named config helper so\n * the registry does not re-derive the enabled set — it is the same question the frontend's\n * language switcher and the companion's translate pass answer, and three private derivations of\n * one set is how they come to disagree.\n */\n private getConfiguredEnabledLocales(): string[] {\n return getConfiguredEnabledLanguages(this.appConfigService.config);\n }\n}\n"]}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Email Template Sandbox Backend Service
|
|
3
|
-
*
|
|
4
|
-
* Provides a secure execution environment for running compiled email templates.
|
|
5
|
-
* Uses Node.js VM with restricted globals and a controlled require function.
|
|
6
|
-
*/
|
|
7
|
-
import type { LoggerService } from '../../../monitoring/logger/services/logger.service';
|
|
8
|
-
import type { ErrorBuilderBackendService } from '../../../errors/services/error-builder.backend.service';
|
|
9
|
-
export interface SandboxExecutionResult {
|
|
10
|
-
success: boolean;
|
|
11
|
-
result?: unknown;
|
|
12
|
-
error?: string;
|
|
13
|
-
durationMs: number;
|
|
14
|
-
}
|
|
15
|
-
export interface SandboxOptions {
|
|
16
|
-
/** Timeout in milliseconds (default: 5000) */
|
|
17
|
-
timeout?: number;
|
|
18
|
-
/** Additional context to pass to the template */
|
|
19
|
-
additionalContext?: Record<string, unknown>;
|
|
20
|
-
}
|
|
21
|
-
export declare class EmailTemplateSandboxBackendService {
|
|
22
|
-
private readonly logger;
|
|
23
|
-
private readonly errorBuilder;
|
|
24
|
-
private emailComponentsModule;
|
|
25
|
-
protected logDebug: (message: string, context?: Record<string, unknown>) => void;
|
|
26
|
-
constructor(logger: LoggerService, errorBuilder: ErrorBuilderBackendService);
|
|
27
|
-
/**
|
|
28
|
-
* Execute a compiled module in the sandbox
|
|
29
|
-
*
|
|
30
|
-
* @param compiledCode - The compiled JavaScript code
|
|
31
|
-
* @param context - The context to pass to the template
|
|
32
|
-
* @param options - Execution options
|
|
33
|
-
* @returns Execution result with the rendered output or error
|
|
34
|
-
*/
|
|
35
|
-
execute(compiledCode: string, context: Record<string, unknown>, options?: SandboxOptions): Promise<SandboxExecutionResult>;
|
|
36
|
-
/**
|
|
37
|
-
* Create a safe require function that only allows specific modules
|
|
38
|
-
*/
|
|
39
|
-
private createSandboxRequire;
|
|
40
|
-
/**
|
|
41
|
-
* Get the email components module (lazy loaded)
|
|
42
|
-
* Uses multiple resolution strategies for robustness across different build outputs
|
|
43
|
-
*/
|
|
44
|
-
private getEmailComponentsModule;
|
|
45
|
-
/**
|
|
46
|
-
* Create a safe console that logs through our logger
|
|
47
|
-
*/
|
|
48
|
-
private createSafeConsole;
|
|
49
|
-
/**
|
|
50
|
-
* Check if a module is allowed in the sandbox
|
|
51
|
-
*/
|
|
52
|
-
isModuleAllowed(moduleName: string): boolean;
|
|
53
|
-
/**
|
|
54
|
-
* Get list of allowed modules (for LLM context)
|
|
55
|
-
*/
|
|
56
|
-
getAllowedModules(): string[];
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=email-template-sandbox.backend.service.d.ts.map
|
package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"email-template-sandbox.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email-template-sandbox.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAMnH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAuBD,qBACa,kCAAkC;IAMR,OAAO,CAAC,QAAQ,CAAC,MAAM;IACV,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/E,OAAO,CAAC,qBAAqB,CAAwB;IAErD,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;gBAG3B,MAAM,EAAE,aAAa,EACR,YAAY,EAAE,0BAA0B;IAM3G;;;;;;;OAOG;IACG,OAAO,CACX,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,sBAAsB,CAAC;IA8ElC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqB5B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAiChC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI5C;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;CAG9B"}
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Email Template Sandbox Backend Service
|
|
3
|
-
*
|
|
4
|
-
* Provides a secure execution environment for running compiled email templates.
|
|
5
|
-
* Uses Node.js VM with restricted globals and a controlled require function.
|
|
6
|
-
*/
|
|
7
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
8
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
10
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
11
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
12
|
-
};
|
|
13
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
14
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
15
|
-
};
|
|
16
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
17
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
18
|
-
};
|
|
19
|
-
import { injectable, inject } from 'inversify';
|
|
20
|
-
import * as vm from 'vm';
|
|
21
|
-
import { ErrorType, ErrorCustomMessageReference } from '@wildo-ai/saas-models';
|
|
22
|
-
import { SAAS_SERVICE_TYPES } from '../../../inject/models/service-types.js';
|
|
23
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
24
|
-
// CONSTANTS
|
|
25
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
26
|
-
const DEFAULT_TIMEOUT_MS = 5000;
|
|
27
|
-
/**
|
|
28
|
-
* Allowed modules that can be required in the sandbox
|
|
29
|
-
*/
|
|
30
|
-
const ALLOWED_MODULES = new Set([
|
|
31
|
-
'react',
|
|
32
|
-
'react-dom',
|
|
33
|
-
'@react-email/components',
|
|
34
|
-
'@react-email/render',
|
|
35
|
-
'@wildo-ai/email-components',
|
|
36
|
-
]);
|
|
37
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
38
|
-
// SERVICE
|
|
39
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
40
|
-
let EmailTemplateSandboxBackendService = class EmailTemplateSandboxBackendService {
|
|
41
|
-
logger;
|
|
42
|
-
errorBuilder;
|
|
43
|
-
emailComponentsModule = null;
|
|
44
|
-
logDebug;
|
|
45
|
-
constructor(logger, errorBuilder) {
|
|
46
|
-
this.logger = logger;
|
|
47
|
-
this.errorBuilder = errorBuilder;
|
|
48
|
-
this.logDebug = this.logger.debugByType('EmailTemplateSandboxBackendService');
|
|
49
|
-
this.logger.setDebugTypeLogging('EmailTemplateSandboxBackendService', false);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Execute a compiled module in the sandbox
|
|
53
|
-
*
|
|
54
|
-
* @param compiledCode - The compiled JavaScript code
|
|
55
|
-
* @param context - The context to pass to the template
|
|
56
|
-
* @param options - Execution options
|
|
57
|
-
* @returns Execution result with the rendered output or error
|
|
58
|
-
*/
|
|
59
|
-
async execute(compiledCode, context, options = {}) {
|
|
60
|
-
const startTime = Date.now();
|
|
61
|
-
const timeout = options.timeout ?? DEFAULT_TIMEOUT_MS;
|
|
62
|
-
this.logDebug('Executing email template in sandbox', { timeout });
|
|
63
|
-
try {
|
|
64
|
-
// Create sandbox require function
|
|
65
|
-
const sandboxRequire = this.createSandboxRequire();
|
|
66
|
-
// Create sandbox globals
|
|
67
|
-
const sandbox = {
|
|
68
|
-
module: { exports: {} },
|
|
69
|
-
exports: {},
|
|
70
|
-
require: sandboxRequire,
|
|
71
|
-
console: this.createSafeConsole(),
|
|
72
|
-
// Pass context values
|
|
73
|
-
__context: context,
|
|
74
|
-
__brand: context.__brand || {},
|
|
75
|
-
// Provide Buffer for any serialization needs
|
|
76
|
-
Buffer: {
|
|
77
|
-
from: Buffer.from.bind(Buffer),
|
|
78
|
-
isBuffer: Buffer.isBuffer.bind(Buffer),
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
// Add additional context if provided
|
|
82
|
-
if (options.additionalContext) {
|
|
83
|
-
Object.assign(sandbox, options.additionalContext);
|
|
84
|
-
}
|
|
85
|
-
// Create VM context
|
|
86
|
-
vm.createContext(sandbox);
|
|
87
|
-
// Wrap the code to capture the default export
|
|
88
|
-
const wrappedCode = `
|
|
89
|
-
(function(module, exports, require, __context, __brand) {
|
|
90
|
-
${compiledCode}
|
|
91
|
-
return module.exports.default || module.exports;
|
|
92
|
-
})(module, exports, require, __context, __brand);
|
|
93
|
-
`;
|
|
94
|
-
// Execute with timeout
|
|
95
|
-
const script = new vm.Script(wrappedCode, {
|
|
96
|
-
filename: 'email-template.js',
|
|
97
|
-
});
|
|
98
|
-
const result = script.runInContext(sandbox, {
|
|
99
|
-
timeout,
|
|
100
|
-
displayErrors: true,
|
|
101
|
-
});
|
|
102
|
-
const durationMs = Date.now() - startTime;
|
|
103
|
-
this.logDebug('Sandbox execution completed', { durationMs });
|
|
104
|
-
return {
|
|
105
|
-
success: true,
|
|
106
|
-
result,
|
|
107
|
-
durationMs,
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
const error = err;
|
|
112
|
-
const durationMs = Date.now() - startTime;
|
|
113
|
-
this.logger.error('Sandbox execution failed', {
|
|
114
|
-
error: error.message,
|
|
115
|
-
durationMs,
|
|
116
|
-
isTimeout: error.message.includes('Script execution timed out'),
|
|
117
|
-
});
|
|
118
|
-
return {
|
|
119
|
-
success: false,
|
|
120
|
-
error: error.message,
|
|
121
|
-
durationMs,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Create a safe require function that only allows specific modules
|
|
127
|
-
*/
|
|
128
|
-
createSandboxRequire() {
|
|
129
|
-
return (moduleName) => {
|
|
130
|
-
// Handle @wildo-ai/email-components specially - load our internal module
|
|
131
|
-
if (moduleName === '@wildo-ai/email-components') {
|
|
132
|
-
return this.getEmailComponentsModule();
|
|
133
|
-
}
|
|
134
|
-
// Check if module is in allowlist
|
|
135
|
-
if (!ALLOWED_MODULES.has(moduleName)) {
|
|
136
|
-
throw this.errorBuilder.buildError(ErrorType.VALIDATION, undefined, {
|
|
137
|
-
customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,
|
|
138
|
-
context: { moduleName }, // diagnostic (log-only)
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
// For allowed modules, use the real require
|
|
142
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
143
|
-
return require(moduleName);
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Get the email components module (lazy loaded)
|
|
148
|
-
* Uses multiple resolution strategies for robustness across different build outputs
|
|
149
|
-
*/
|
|
150
|
-
getEmailComponentsModule() {
|
|
151
|
-
if (!this.emailComponentsModule) {
|
|
152
|
-
// Load our internal email components with multiple resolution strategies
|
|
153
|
-
const resolutionStrategies = [
|
|
154
|
-
// Strategy 1: Relative path from current file
|
|
155
|
-
() => require('../components/email-components'),
|
|
156
|
-
// Strategy 2: Absolute path using __dirname
|
|
157
|
-
() => require(require('path').resolve(__dirname, '../components/email-components')),
|
|
158
|
-
// Strategy 3: Try dist/esm path
|
|
159
|
-
() => require(require('path').resolve(__dirname, '../../dist/esm/notifications/email/components/email-components')),
|
|
160
|
-
// Strategy 4: Try dist/cjs path
|
|
161
|
-
() => require(require('path').resolve(__dirname, '../../dist/cjs/notifications/email/components/email-components')),
|
|
162
|
-
];
|
|
163
|
-
for (const strategy of resolutionStrategies) {
|
|
164
|
-
try {
|
|
165
|
-
this.emailComponentsModule = strategy();
|
|
166
|
-
this.logDebug('Email components module loaded successfully');
|
|
167
|
-
return this.emailComponentsModule;
|
|
168
|
-
}
|
|
169
|
-
catch {
|
|
170
|
-
// Try next strategy
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
this.logger.error('Failed to load email components module with any strategy');
|
|
174
|
-
throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {
|
|
175
|
-
customMessageReference: ErrorCustomMessageReference.CONFIGURATION,
|
|
176
|
-
context: { message: 'Email components module not available' },
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
return this.emailComponentsModule;
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Create a safe console that logs through our logger
|
|
183
|
-
*/
|
|
184
|
-
createSafeConsole() {
|
|
185
|
-
return {
|
|
186
|
-
log: (...args) => {
|
|
187
|
-
this.logger.debug('Template console.log', { args });
|
|
188
|
-
},
|
|
189
|
-
warn: (...args) => {
|
|
190
|
-
this.logger.warn('Template console.warn', { args });
|
|
191
|
-
},
|
|
192
|
-
error: (...args) => {
|
|
193
|
-
this.logger.error('Template console.error', { args });
|
|
194
|
-
},
|
|
195
|
-
info: (...args) => {
|
|
196
|
-
this.logger.info('Template console.info', { args });
|
|
197
|
-
},
|
|
198
|
-
debug: (...args) => {
|
|
199
|
-
this.logger.debug('Template console.debug', { args });
|
|
200
|
-
},
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Check if a module is allowed in the sandbox
|
|
205
|
-
*/
|
|
206
|
-
isModuleAllowed(moduleName) {
|
|
207
|
-
return ALLOWED_MODULES.has(moduleName);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Get list of allowed modules (for LLM context)
|
|
211
|
-
*/
|
|
212
|
-
getAllowedModules() {
|
|
213
|
-
return Array.from(ALLOWED_MODULES);
|
|
214
|
-
}
|
|
215
|
-
};
|
|
216
|
-
EmailTemplateSandboxBackendService = __decorate([
|
|
217
|
-
injectable(),
|
|
218
|
-
__param(0, inject(SAAS_SERVICE_TYPES.Logger)),
|
|
219
|
-
__param(1, inject(SAAS_SERVICE_TYPES.ErrorBuilderService)),
|
|
220
|
-
__metadata("design:paramtypes", [Function, Function])
|
|
221
|
-
], EmailTemplateSandboxBackendService);
|
|
222
|
-
export { EmailTemplateSandboxBackendService };
|
|
223
|
-
//# sourceMappingURL=email-template-sandbox.backend.service.js.map
|