@endora-commerce/platform 0.100.0
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/LICENSE +21 -0
- package/README.md +58 -0
- package/dist/cli/dispatch.d.ts +146 -0
- package/dist/cli/dispatch.d.ts.map +1 -0
- package/dist/cli/dispatch.js +259 -0
- package/dist/cli/dispatch.js.map +1 -0
- package/dist/cli/index.d.ts +58 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +58 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/module-commands.d.ts +118 -0
- package/dist/cli/module-commands.d.ts.map +1 -0
- package/dist/cli/module-commands.js +120 -0
- package/dist/cli/module-commands.js.map +1 -0
- package/dist/commands/actor.d.ts +19 -0
- package/dist/commands/actor.d.ts.map +1 -0
- package/dist/commands/actor.js +45 -0
- package/dist/commands/actor.js.map +1 -0
- package/dist/commands/audit-from-context.d.ts +24 -0
- package/dist/commands/audit-from-context.d.ts.map +1 -0
- package/dist/commands/audit-from-context.js +28 -0
- package/dist/commands/audit-from-context.js.map +1 -0
- package/dist/commands/command-bus.d.ts +40 -0
- package/dist/commands/command-bus.d.ts.map +1 -0
- package/dist/commands/command-bus.js +46 -0
- package/dist/commands/command-bus.js.map +1 -0
- package/dist/commands/command.d.ts +76 -0
- package/dist/commands/command.d.ts.map +1 -0
- package/dist/commands/command.js +2 -0
- package/dist/commands/command.js.map +1 -0
- package/dist/commands/index.d.ts +65 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +57 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/reversible.d.ts +66 -0
- package/dist/commands/reversible.d.ts.map +1 -0
- package/dist/commands/reversible.js +41 -0
- package/dist/commands/reversible.js.map +1 -0
- package/dist/composition/compose-app.d.ts +305 -0
- package/dist/composition/compose-app.d.ts.map +1 -0
- package/dist/composition/compose-app.js +939 -0
- package/dist/composition/compose-app.js.map +1 -0
- package/dist/composition/index.d.ts +92 -0
- package/dist/composition/index.d.ts.map +1 -0
- package/dist/composition/index.js +175 -0
- package/dist/composition/index.js.map +1 -0
- package/dist/composition/newsletter-token-secret.d.ts +19 -0
- package/dist/composition/newsletter-token-secret.d.ts.map +1 -0
- package/dist/composition/newsletter-token-secret.js +24 -0
- package/dist/composition/newsletter-token-secret.js.map +1 -0
- package/dist/composition/process-runs-workers.d.ts +17 -0
- package/dist/composition/process-runs-workers.d.ts.map +1 -0
- package/dist/composition/process-runs-workers.js +19 -0
- package/dist/composition/process-runs-workers.js.map +1 -0
- package/dist/db/baseline-migration-inventory.d.ts +15 -0
- package/dist/db/baseline-migration-inventory.d.ts.map +1 -0
- package/dist/db/baseline-migration-inventory.js +115 -0
- package/dist/db/baseline-migration-inventory.js.map +1 -0
- package/dist/db/configured-entities.d.ts +74 -0
- package/dist/db/configured-entities.d.ts.map +1 -0
- package/dist/db/configured-entities.js +20 -0
- package/dist/db/configured-entities.js.map +1 -0
- package/dist/db/configured-migrations.d.ts +199 -0
- package/dist/db/configured-migrations.d.ts.map +1 -0
- package/dist/db/configured-migrations.js +181 -0
- package/dist/db/configured-migrations.js.map +1 -0
- package/dist/db/index.d.ts +54 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +54 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrate.d.ts +21 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +48 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/migration-order.d.ts +159 -0
- package/dist/db/migration-order.d.ts.map +1 -0
- package/dist/db/migration-order.js +273 -0
- package/dist/db/migration-order.js.map +1 -0
- package/dist/db/mikro-orm.config.d.ts +51 -0
- package/dist/db/mikro-orm.config.d.ts.map +1 -0
- package/dist/db/mikro-orm.config.js +64 -0
- package/dist/db/mikro-orm.config.js.map +1 -0
- package/dist/db/orm.d.ts +40 -0
- package/dist/db/orm.d.ts.map +1 -0
- package/dist/db/orm.js +25 -0
- package/dist/db/orm.js.map +1 -0
- package/dist/db/platform-schema.d.ts +102 -0
- package/dist/db/platform-schema.d.ts.map +1 -0
- package/dist/db/platform-schema.js +79 -0
- package/dist/db/platform-schema.js.map +1 -0
- package/dist/db/pluralizing-naming-strategy.d.ts +16 -0
- package/dist/db/pluralizing-naming-strategy.d.ts.map +1 -0
- package/dist/db/pluralizing-naming-strategy.js +66 -0
- package/dist/db/pluralizing-naming-strategy.js.map +1 -0
- package/dist/demo/guard.d.ts +101 -0
- package/dist/demo/guard.d.ts.map +1 -0
- package/dist/demo/guard.js +168 -0
- package/dist/demo/guard.js.map +1 -0
- package/dist/demo/host-command.d.ts +133 -0
- package/dist/demo/host-command.d.ts.map +1 -0
- package/dist/demo/host-command.js +113 -0
- package/dist/demo/host-command.js.map +1 -0
- package/dist/demo/index.d.ts +82 -0
- package/dist/demo/index.d.ts.map +1 -0
- package/dist/demo/index.js +82 -0
- package/dist/demo/index.js.map +1 -0
- package/dist/demo/packages.d.ts +67 -0
- package/dist/demo/packages.d.ts.map +1 -0
- package/dist/demo/packages.js +132 -0
- package/dist/demo/packages.js.map +1 -0
- package/dist/demo/plan.d.ts +111 -0
- package/dist/demo/plan.d.ts.map +1 -0
- package/dist/demo/plan.js +74 -0
- package/dist/demo/plan.js.map +1 -0
- package/dist/demo/report.d.ts +17 -0
- package/dist/demo/report.d.ts.map +1 -0
- package/dist/demo/report.js +85 -0
- package/dist/demo/report.js.map +1 -0
- package/dist/demo/runner.d.ts +207 -0
- package/dist/demo/runner.d.ts.map +1 -0
- package/dist/demo/runner.js +169 -0
- package/dist/demo/runner.js.map +1 -0
- package/dist/demo/scope.d.ts +44 -0
- package/dist/demo/scope.d.ts.map +1 -0
- package/dist/demo/scope.js +44 -0
- package/dist/demo/scope.js.map +1 -0
- package/dist/env/index.d.ts +68 -0
- package/dist/env/index.d.ts.map +1 -0
- package/dist/env/index.js +427 -0
- package/dist/env/index.js.map +1 -0
- package/dist/events/bus.d.ts +29 -0
- package/dist/events/bus.d.ts.map +1 -0
- package/dist/events/bus.js +67 -0
- package/dist/events/bus.js.map +1 -0
- package/dist/events/index.d.ts +19 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +19 -0
- package/dist/events/index.js.map +1 -0
- package/dist/http/cursor.d.ts +10 -0
- package/dist/http/cursor.d.ts.map +1 -0
- package/dist/http/cursor.js +20 -0
- package/dist/http/cursor.js.map +1 -0
- package/dist/http/error-envelope.d.ts +127 -0
- package/dist/http/error-envelope.d.ts.map +1 -0
- package/dist/http/error-envelope.js +402 -0
- package/dist/http/error-envelope.js.map +1 -0
- package/dist/http/health.d.ts +88 -0
- package/dist/http/health.d.ts.map +1 -0
- package/dist/http/health.js +77 -0
- package/dist/http/health.js.map +1 -0
- package/dist/http/index.d.ts +50 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +50 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/interceptors/dispatch.d.ts +14 -0
- package/dist/http/interceptors/dispatch.d.ts.map +1 -0
- package/dist/http/interceptors/dispatch.js +113 -0
- package/dist/http/interceptors/dispatch.js.map +1 -0
- package/dist/http/interceptors/index.d.ts +6 -0
- package/dist/http/interceptors/index.d.ts.map +1 -0
- package/dist/http/interceptors/index.js +5 -0
- package/dist/http/interceptors/index.js.map +1 -0
- package/dist/http/interceptors/registry.d.ts +44 -0
- package/dist/http/interceptors/registry.d.ts.map +1 -0
- package/dist/http/interceptors/registry.js +123 -0
- package/dist/http/interceptors/registry.js.map +1 -0
- package/dist/http/interceptors/route-table.d.ts +33 -0
- package/dist/http/interceptors/route-table.d.ts.map +1 -0
- package/dist/http/interceptors/route-table.js +39 -0
- package/dist/http/interceptors/route-table.js.map +1 -0
- package/dist/http/interceptors/types.d.ts +101 -0
- package/dist/http/interceptors/types.d.ts.map +1 -0
- package/dist/http/interceptors/types.js +2 -0
- package/dist/http/interceptors/types.js.map +1 -0
- package/dist/http/interceptors/validation.d.ts +22 -0
- package/dist/http/interceptors/validation.d.ts.map +1 -0
- package/dist/http/interceptors/validation.js +39 -0
- package/dist/http/interceptors/validation.js.map +1 -0
- package/dist/http/logger.d.ts +9 -0
- package/dist/http/logger.d.ts.map +1 -0
- package/dist/http/logger.js +25 -0
- package/dist/http/logger.js.map +1 -0
- package/dist/http/openapi.d.ts +21 -0
- package/dist/http/openapi.d.ts.map +1 -0
- package/dist/http/openapi.js +114 -0
- package/dist/http/openapi.js.map +1 -0
- package/dist/http/product-audience.d.ts +78 -0
- package/dist/http/product-audience.d.ts.map +1 -0
- package/dist/http/product-audience.js +92 -0
- package/dist/http/product-audience.js.map +1 -0
- package/dist/http/request-actor.d.ts +82 -0
- package/dist/http/request-actor.d.ts.map +1 -0
- package/dist/http/request-actor.js +2 -0
- package/dist/http/request-actor.js.map +1 -0
- package/dist/http/server.d.ts +60 -0
- package/dist/http/server.d.ts.map +1 -0
- package/dist/http/server.js +117 -0
- package/dist/http/server.js.map +1 -0
- package/dist/http/storefront-revalidator.d.ts +29 -0
- package/dist/http/storefront-revalidator.d.ts.map +1 -0
- package/dist/http/storefront-revalidator.js +34 -0
- package/dist/http/storefront-revalidator.js.map +1 -0
- package/dist/http/test-actor-carrier.d.ts +28 -0
- package/dist/http/test-actor-carrier.d.ts.map +1 -0
- package/dist/http/test-actor-carrier.js +10 -0
- package/dist/http/test-actor-carrier.js.map +1 -0
- package/dist/http/trusted-proxy.d.ts +48 -0
- package/dist/http/trusted-proxy.d.ts.map +1 -0
- package/dist/http/trusted-proxy.js +136 -0
- package/dist/http/trusted-proxy.js.map +1 -0
- package/dist/kernel/audit/audit-log-entry.entity.d.ts +33 -0
- package/dist/kernel/audit/audit-log-entry.entity.d.ts.map +1 -0
- package/dist/kernel/audit/audit-log-entry.entity.js +102 -0
- package/dist/kernel/audit/audit-log-entry.entity.js.map +1 -0
- package/dist/kernel/audit/audit-log-service.d.ts +63 -0
- package/dist/kernel/audit/audit-log-service.d.ts.map +1 -0
- package/dist/kernel/audit/audit-log-service.js +107 -0
- package/dist/kernel/audit/audit-log-service.js.map +1 -0
- package/dist/kernel/cache/in-process-cache-registry.d.ts +93 -0
- package/dist/kernel/cache/in-process-cache-registry.d.ts.map +1 -0
- package/dist/kernel/cache/in-process-cache-registry.js +78 -0
- package/dist/kernel/cache/in-process-cache-registry.js.map +1 -0
- package/dist/kernel/cache/shared-drop-marks.d.ts +39 -0
- package/dist/kernel/cache/shared-drop-marks.d.ts.map +1 -0
- package/dist/kernel/cache/shared-drop-marks.js +68 -0
- package/dist/kernel/cache/shared-drop-marks.js.map +1 -0
- package/dist/kernel/compose.d.ts +234 -0
- package/dist/kernel/compose.d.ts.map +1 -0
- package/dist/kernel/compose.js +279 -0
- package/dist/kernel/compose.js.map +1 -0
- package/dist/kernel/container.d.ts +95 -0
- package/dist/kernel/container.d.ts.map +1 -0
- package/dist/kernel/container.js +90 -0
- package/dist/kernel/container.js.map +1 -0
- package/dist/kernel/contribution-sinks.d.ts +106 -0
- package/dist/kernel/contribution-sinks.d.ts.map +1 -0
- package/dist/kernel/contribution-sinks.js +153 -0
- package/dist/kernel/contribution-sinks.js.map +1 -0
- package/dist/kernel/crypto/password-hasher.d.ts +3 -0
- package/dist/kernel/crypto/password-hasher.d.ts.map +1 -0
- package/dist/kernel/crypto/password-hasher.js +44 -0
- package/dist/kernel/crypto/password-hasher.js.map +1 -0
- package/dist/kernel/i18n/error-envelope-options.d.ts +56 -0
- package/dist/kernel/i18n/error-envelope-options.d.ts.map +1 -0
- package/dist/kernel/i18n/error-envelope-options.js +46 -0
- package/dist/kernel/i18n/error-envelope-options.js.map +1 -0
- package/dist/kernel/i18n/error-translation.d.ts +144 -0
- package/dist/kernel/i18n/error-translation.d.ts.map +1 -0
- package/dist/kernel/i18n/error-translation.js +84 -0
- package/dist/kernel/i18n/error-translation.js.map +1 -0
- package/dist/kernel/i18n/request-language.d.ts +80 -0
- package/dist/kernel/i18n/request-language.d.ts.map +1 -0
- package/dist/kernel/i18n/request-language.js +168 -0
- package/dist/kernel/i18n/request-language.js.map +1 -0
- package/dist/kernel/index.d.ts +142 -0
- package/dist/kernel/index.d.ts.map +1 -0
- package/dist/kernel/index.js +160 -0
- package/dist/kernel/index.js.map +1 -0
- package/dist/kernel/lazy-port.d.ts +59 -0
- package/dist/kernel/lazy-port.d.ts.map +1 -0
- package/dist/kernel/lazy-port.js +78 -0
- package/dist/kernel/lazy-port.js.map +1 -0
- package/dist/kernel/lifecycle/activation-resolver.d.ts +63 -0
- package/dist/kernel/lifecycle/activation-resolver.d.ts.map +1 -0
- package/dist/kernel/lifecycle/activation-resolver.js +70 -0
- package/dist/kernel/lifecycle/activation-resolver.js.map +1 -0
- package/dist/kernel/lifecycle/capability-registry.d.ts +145 -0
- package/dist/kernel/lifecycle/capability-registry.d.ts.map +1 -0
- package/dist/kernel/lifecycle/capability-registry.js +170 -0
- package/dist/kernel/lifecycle/capability-registry.js.map +1 -0
- package/dist/kernel/lifecycle/effective-state.d.ts +126 -0
- package/dist/kernel/lifecycle/effective-state.d.ts.map +1 -0
- package/dist/kernel/lifecycle/effective-state.js +111 -0
- package/dist/kernel/lifecycle/effective-state.js.map +1 -0
- package/dist/kernel/lifecycle/module-registration.entity.d.ts +57 -0
- package/dist/kernel/lifecycle/module-registration.entity.d.ts.map +1 -0
- package/dist/kernel/lifecycle/module-registration.entity.js +111 -0
- package/dist/kernel/lifecycle/module-registration.entity.js.map +1 -0
- package/dist/kernel/lifecycle/plugin-helpers.d.ts +165 -0
- package/dist/kernel/lifecycle/plugin-helpers.d.ts.map +1 -0
- package/dist/kernel/lifecycle/plugin-helpers.js +395 -0
- package/dist/kernel/lifecycle/plugin-helpers.js.map +1 -0
- package/dist/kernel/lifecycle/registry-cache.d.ts +318 -0
- package/dist/kernel/lifecycle/registry-cache.d.ts.map +1 -0
- package/dist/kernel/lifecycle/registry-cache.js +509 -0
- package/dist/kernel/lifecycle/registry-cache.js.map +1 -0
- package/dist/kernel/lifecycle/required-modules.d.ts +137 -0
- package/dist/kernel/lifecycle/required-modules.d.ts.map +1 -0
- package/dist/kernel/lifecycle/required-modules.js +80 -0
- package/dist/kernel/lifecycle/required-modules.js.map +1 -0
- package/dist/kernel/lifecycle/unique-module-ids.d.ts +58 -0
- package/dist/kernel/lifecycle/unique-module-ids.d.ts.map +1 -0
- package/dist/kernel/lifecycle/unique-module-ids.js +82 -0
- package/dist/kernel/lifecycle/unique-module-ids.js.map +1 -0
- package/dist/kernel/logging.d.ts +116 -0
- package/dist/kernel/logging.d.ts.map +1 -0
- package/dist/kernel/logging.js +71 -0
- package/dist/kernel/logging.js.map +1 -0
- package/dist/kernel/module-context.d.ts +563 -0
- package/dist/kernel/module-context.d.ts.map +1 -0
- package/dist/kernel/module-context.js +670 -0
- package/dist/kernel/module-context.js.map +1 -0
- package/dist/kernel/ports/audit.d.ts +115 -0
- package/dist/kernel/ports/audit.d.ts.map +1 -0
- package/dist/kernel/ports/audit.js +2 -0
- package/dist/kernel/ports/audit.js.map +1 -0
- package/dist/kernel/ports/organizations.d.ts +56 -0
- package/dist/kernel/ports/organizations.d.ts.map +1 -0
- package/dist/kernel/ports/organizations.js +2 -0
- package/dist/kernel/ports/organizations.js.map +1 -0
- package/dist/kernel/ports/provide.d.ts +14 -0
- package/dist/kernel/ports/provide.d.ts.map +1 -0
- package/dist/kernel/ports/provide.js +50 -0
- package/dist/kernel/ports/provide.js.map +1 -0
- package/dist/kernel/ports/require-admin.d.ts +61 -0
- package/dist/kernel/ports/require-admin.d.ts.map +1 -0
- package/dist/kernel/ports/require-admin.js +2 -0
- package/dist/kernel/ports/require-admin.js.map +1 -0
- package/dist/kernel/ports/require-customer.d.ts +17 -0
- package/dist/kernel/ports/require-customer.d.ts.map +1 -0
- package/dist/kernel/ports/require-customer.js +2 -0
- package/dist/kernel/ports/require-customer.js.map +1 -0
- package/dist/kernel/ports/sales-channel.d.ts +84 -0
- package/dist/kernel/ports/sales-channel.d.ts.map +1 -0
- package/dist/kernel/ports/sales-channel.js +2 -0
- package/dist/kernel/ports/sales-channel.js.map +1 -0
- package/dist/kernel/ports/settings.d.ts +59 -0
- package/dist/kernel/ports/settings.d.ts.map +1 -0
- package/dist/kernel/ports/settings.js +2 -0
- package/dist/kernel/ports/settings.js.map +1 -0
- package/dist/kernel/public-api-base-url.d.ts +98 -0
- package/dist/kernel/public-api-base-url.d.ts.map +1 -0
- package/dist/kernel/public-api-base-url.js +144 -0
- package/dist/kernel/public-api-base-url.js.map +1 -0
- package/dist/kernel/request-scope-hook.d.ts +63 -0
- package/dist/kernel/request-scope-hook.d.ts.map +1 -0
- package/dist/kernel/request-scope-hook.js +67 -0
- package/dist/kernel/request-scope-hook.js.map +1 -0
- package/dist/kernel/sales-channels/channel-bridge-registry.d.ts +109 -0
- package/dist/kernel/sales-channels/channel-bridge-registry.d.ts.map +1 -0
- package/dist/kernel/sales-channels/channel-bridge-registry.js +75 -0
- package/dist/kernel/sales-channels/channel-bridge-registry.js.map +1 -0
- package/dist/kernel/sales-channels/compose.d.ts +69 -0
- package/dist/kernel/sales-channels/compose.d.ts.map +1 -0
- package/dist/kernel/sales-channels/compose.js +43 -0
- package/dist/kernel/sales-channels/compose.js.map +1 -0
- package/dist/kernel/sales-channels/default-channel-reconciler.d.ts +66 -0
- package/dist/kernel/sales-channels/default-channel-reconciler.d.ts.map +1 -0
- package/dist/kernel/sales-channels/default-channel-reconciler.js +91 -0
- package/dist/kernel/sales-channels/default-channel-reconciler.js.map +1 -0
- package/dist/kernel/sales-channels/no-system-default-channel.error.d.ts +28 -0
- package/dist/kernel/sales-channels/no-system-default-channel.error.d.ts.map +1 -0
- package/dist/kernel/sales-channels/no-system-default-channel.error.js +33 -0
- package/dist/kernel/sales-channels/no-system-default-channel.error.js.map +1 -0
- package/dist/kernel/sales-channels/request-channel-assortment.d.ts +72 -0
- package/dist/kernel/sales-channels/request-channel-assortment.d.ts.map +1 -0
- package/dist/kernel/sales-channels/request-channel-assortment.js +83 -0
- package/dist/kernel/sales-channels/request-channel-assortment.js.map +1 -0
- package/dist/kernel/sales-channels/sales-channel-membership.service.d.ts +157 -0
- package/dist/kernel/sales-channels/sales-channel-membership.service.d.ts.map +1 -0
- package/dist/kernel/sales-channels/sales-channel-membership.service.js +302 -0
- package/dist/kernel/sales-channels/sales-channel-membership.service.js.map +1 -0
- package/dist/kernel/sales-channels/sales-channel-resolver.middleware.d.ts +76 -0
- package/dist/kernel/sales-channels/sales-channel-resolver.middleware.d.ts.map +1 -0
- package/dist/kernel/sales-channels/sales-channel-resolver.middleware.js +184 -0
- package/dist/kernel/sales-channels/sales-channel-resolver.middleware.js.map +1 -0
- package/dist/kernel/sales-channels/sales-channel-resolver.service.d.ts +82 -0
- package/dist/kernel/sales-channels/sales-channel-resolver.service.d.ts.map +1 -0
- package/dist/kernel/sales-channels/sales-channel-resolver.service.js +126 -0
- package/dist/kernel/sales-channels/sales-channel-resolver.service.js.map +1 -0
- package/dist/kernel/sales-channels/sales-channel.entity.d.ts +50 -0
- package/dist/kernel/sales-channels/sales-channel.entity.d.ts.map +1 -0
- package/dist/kernel/sales-channels/sales-channel.entity.js +132 -0
- package/dist/kernel/sales-channels/sales-channel.entity.js.map +1 -0
- package/dist/kernel/sales-channels/sales-channels-cache.d.ts +170 -0
- package/dist/kernel/sales-channels/sales-channels-cache.d.ts.map +1 -0
- package/dist/kernel/sales-channels/sales-channels-cache.js +243 -0
- package/dist/kernel/sales-channels/sales-channels-cache.js.map +1 -0
- package/dist/kernel/scope.d.ts +153 -0
- package/dist/kernel/scope.d.ts.map +1 -0
- package/dist/kernel/scope.js +172 -0
- package/dist/kernel/scope.js.map +1 -0
- package/dist/kernel/settings/compose.d.ts +49 -0
- package/dist/kernel/settings/compose.d.ts.map +1 -0
- package/dist/kernel/settings/compose.js +21 -0
- package/dist/kernel/settings/compose.js.map +1 -0
- package/dist/kernel/settings/manifest-reconciler.d.ts +78 -0
- package/dist/kernel/settings/manifest-reconciler.d.ts.map +1 -0
- package/dist/kernel/settings/manifest-reconciler.js +343 -0
- package/dist/kernel/settings/manifest-reconciler.js.map +1 -0
- package/dist/kernel/settings/secret-value-codec.d.ts +52 -0
- package/dist/kernel/settings/secret-value-codec.d.ts.map +1 -0
- package/dist/kernel/settings/secret-value-codec.js +102 -0
- package/dist/kernel/settings/secret-value-codec.js.map +1 -0
- package/dist/kernel/settings/setting-group.entity.d.ts +25 -0
- package/dist/kernel/settings/setting-group.entity.d.ts.map +1 -0
- package/dist/kernel/settings/setting-group.entity.js +79 -0
- package/dist/kernel/settings/setting-group.entity.js.map +1 -0
- package/dist/kernel/settings/setting-value.entity.d.ts +23 -0
- package/dist/kernel/settings/setting-value.entity.d.ts.map +1 -0
- package/dist/kernel/settings/setting-value.entity.js +66 -0
- package/dist/kernel/settings/setting-value.entity.js.map +1 -0
- package/dist/kernel/settings/setting.entity.d.ts +56 -0
- package/dist/kernel/settings/setting.entity.d.ts.map +1 -0
- package/dist/kernel/settings/setting.entity.js +147 -0
- package/dist/kernel/settings/setting.entity.js.map +1 -0
- package/dist/kernel/settings/settings-cache.d.ts +158 -0
- package/dist/kernel/settings/settings-cache.d.ts.map +1 -0
- package/dist/kernel/settings/settings-cache.js +253 -0
- package/dist/kernel/settings/settings-cache.js.map +1 -0
- package/dist/kernel/settings/settings.service.d.ts +142 -0
- package/dist/kernel/settings/settings.service.d.ts.map +1 -0
- package/dist/kernel/settings/settings.service.js +294 -0
- package/dist/kernel/settings/settings.service.js.map +1 -0
- package/dist/lifecycle/backend.d.ts +51 -0
- package/dist/lifecycle/backend.d.ts.map +1 -0
- package/dist/lifecycle/backend.js +40 -0
- package/dist/lifecycle/backend.js.map +1 -0
- package/dist/lifecycle/commands/activation.commands.d.ts +97 -0
- package/dist/lifecycle/commands/activation.commands.d.ts.map +1 -0
- package/dist/lifecycle/commands/activation.commands.js +142 -0
- package/dist/lifecycle/commands/activation.commands.js.map +1 -0
- package/dist/lifecycle/commands/disable.d.ts +3 -0
- package/dist/lifecycle/commands/disable.d.ts.map +1 -0
- package/dist/lifecycle/commands/disable.js +126 -0
- package/dist/lifecycle/commands/disable.js.map +1 -0
- package/dist/lifecycle/commands/enable.d.ts +3 -0
- package/dist/lifecycle/commands/enable.d.ts.map +1 -0
- package/dist/lifecycle/commands/enable.js +102 -0
- package/dist/lifecycle/commands/enable.js.map +1 -0
- package/dist/lifecycle/commands/install.d.ts +3 -0
- package/dist/lifecycle/commands/install.d.ts.map +1 -0
- package/dist/lifecycle/commands/install.js +263 -0
- package/dist/lifecycle/commands/install.js.map +1 -0
- package/dist/lifecycle/commands/operator-entry.d.ts +104 -0
- package/dist/lifecycle/commands/operator-entry.d.ts.map +1 -0
- package/dist/lifecycle/commands/operator-entry.js +127 -0
- package/dist/lifecycle/commands/operator-entry.js.map +1 -0
- package/dist/lifecycle/commands/operator-runtime.d.ts +147 -0
- package/dist/lifecycle/commands/operator-runtime.d.ts.map +1 -0
- package/dist/lifecycle/commands/operator-runtime.js +40 -0
- package/dist/lifecycle/commands/operator-runtime.js.map +1 -0
- package/dist/lifecycle/commands/status.d.ts +3 -0
- package/dist/lifecycle/commands/status.d.ts.map +1 -0
- package/dist/lifecycle/commands/status.js +108 -0
- package/dist/lifecycle/commands/status.js.map +1 -0
- package/dist/lifecycle/commands/uninstall.d.ts +3 -0
- package/dist/lifecycle/commands/uninstall.d.ts.map +1 -0
- package/dist/lifecycle/commands/uninstall.js +223 -0
- package/dist/lifecycle/commands/uninstall.js.map +1 -0
- package/dist/lifecycle/divergence-declaration.d.ts +74 -0
- package/dist/lifecycle/divergence-declaration.d.ts.map +1 -0
- package/dist/lifecycle/divergence-declaration.js +92 -0
- package/dist/lifecycle/divergence-declaration.js.map +1 -0
- package/dist/lifecycle/i18n/en.json +4 -0
- package/dist/lifecycle/i18n/pl.json +4 -0
- package/dist/lifecycle/index.d.ts +110 -0
- package/dist/lifecycle/index.d.ts.map +1 -0
- package/dist/lifecycle/index.js +189 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/manifest-registry.d.ts +244 -0
- package/dist/lifecycle/manifest-registry.d.ts.map +1 -0
- package/dist/lifecycle/manifest-registry.js +223 -0
- package/dist/lifecycle/manifest-registry.js.map +1 -0
- package/dist/lifecycle/manifest.d.ts +166 -0
- package/dist/lifecycle/manifest.d.ts.map +1 -0
- package/dist/lifecycle/manifest.js +121 -0
- package/dist/lifecycle/manifest.js.map +1 -0
- package/dist/lifecycle/plugin.d.ts +56 -0
- package/dist/lifecycle/plugin.d.ts.map +1 -0
- package/dist/lifecycle/plugin.js +59 -0
- package/dist/lifecycle/plugin.js.map +1 -0
- package/dist/lifecycle/resident.d.ts +16 -0
- package/dist/lifecycle/resident.d.ts.map +1 -0
- package/dist/lifecycle/resident.js +59 -0
- package/dist/lifecycle/resident.js.map +1 -0
- package/dist/lifecycle/routes.admin.d.ts +57 -0
- package/dist/lifecycle/routes.admin.d.ts.map +1 -0
- package/dist/lifecycle/routes.admin.js +162 -0
- package/dist/lifecycle/routes.admin.js.map +1 -0
- package/dist/lifecycle/routes.storefront.d.ts +26 -0
- package/dist/lifecycle/routes.storefront.d.ts.map +1 -0
- package/dist/lifecycle/routes.storefront.js +36 -0
- package/dist/lifecycle/routes.storefront.js.map +1 -0
- package/dist/lifecycle/services/deactivation-ledger.d.ts +216 -0
- package/dist/lifecycle/services/deactivation-ledger.d.ts.map +1 -0
- package/dist/lifecycle/services/deactivation-ledger.js +171 -0
- package/dist/lifecycle/services/deactivation-ledger.js.map +1 -0
- package/dist/lifecycle/services/dep-graph.d.ts +119 -0
- package/dist/lifecycle/services/dep-graph.d.ts.map +1 -0
- package/dist/lifecycle/services/dep-graph.js +334 -0
- package/dist/lifecycle/services/dep-graph.js.map +1 -0
- package/dist/lifecycle/services/gating-graph.d.ts +164 -0
- package/dist/lifecycle/services/gating-graph.d.ts.map +1 -0
- package/dist/lifecycle/services/gating-graph.js +203 -0
- package/dist/lifecycle/services/gating-graph.js.map +1 -0
- package/dist/lifecycle/services/lock.d.ts +27 -0
- package/dist/lifecycle/services/lock.d.ts.map +1 -0
- package/dist/lifecycle/services/lock.js +82 -0
- package/dist/lifecycle/services/lock.js.map +1 -0
- package/dist/lifecycle/services/manifest-loader.d.ts +125 -0
- package/dist/lifecycle/services/manifest-loader.d.ts.map +1 -0
- package/dist/lifecycle/services/manifest-loader.js +210 -0
- package/dist/lifecycle/services/manifest-loader.js.map +1 -0
- package/dist/lifecycle/services/migration-ownership.d.ts +36 -0
- package/dist/lifecycle/services/migration-ownership.d.ts.map +1 -0
- package/dist/lifecycle/services/migration-ownership.js +15 -0
- package/dist/lifecycle/services/migration-ownership.js.map +1 -0
- package/dist/lifecycle/services/module-id-claims.d.ts +38 -0
- package/dist/lifecycle/services/module-id-claims.d.ts.map +1 -0
- package/dist/lifecycle/services/module-id-claims.js +123 -0
- package/dist/lifecycle/services/module-id-claims.js.map +1 -0
- package/dist/lifecycle/services/module-origin.d.ts +55 -0
- package/dist/lifecycle/services/module-origin.d.ts.map +1 -0
- package/dist/lifecycle/services/module-origin.js +47 -0
- package/dist/lifecycle/services/module-origin.js.map +1 -0
- package/dist/lifecycle/services/orchestrator.d.ts +235 -0
- package/dist/lifecycle/services/orchestrator.d.ts.map +1 -0
- package/dist/lifecycle/services/orchestrator.js +954 -0
- package/dist/lifecycle/services/orchestrator.js.map +1 -0
- package/dist/lifecycle/services/presence-load.d.ts +281 -0
- package/dist/lifecycle/services/presence-load.d.ts.map +1 -0
- package/dist/lifecycle/services/presence-load.js +437 -0
- package/dist/lifecycle/services/presence-load.js.map +1 -0
- package/dist/lifecycle/services/static-registry.d.ts +47 -0
- package/dist/lifecycle/services/static-registry.d.ts.map +1 -0
- package/dist/lifecycle/services/static-registry.js +41 -0
- package/dist/lifecycle/services/static-registry.js.map +1 -0
- package/dist/migrations/20260424T165847_core_foundation_init.d.ts +25 -0
- package/dist/migrations/20260424T165847_core_foundation_init.d.ts.map +1 -0
- package/dist/migrations/20260424T165847_core_foundation_init.js +238 -0
- package/dist/migrations/20260424T165847_core_foundation_init.js.map +1 -0
- package/dist/migrations/20260425T050720_core_commerce_init.d.ts +19 -0
- package/dist/migrations/20260425T050720_core_commerce_init.d.ts.map +1 -0
- package/dist/migrations/20260425T050720_core_commerce_init.js +200 -0
- package/dist/migrations/20260425T050720_core_commerce_init.js.map +1 -0
- package/dist/migrations/20260430T101450_core_settings_init.d.ts +25 -0
- package/dist/migrations/20260430T101450_core_settings_init.d.ts.map +1 -0
- package/dist/migrations/20260430T101450_core_settings_init.js +113 -0
- package/dist/migrations/20260430T101450_core_settings_init.js.map +1 -0
- package/dist/migrations/20260430T170044_core_sales_channels_promote.d.ts +67 -0
- package/dist/migrations/20260430T170044_core_sales_channels_promote.d.ts.map +1 -0
- package/dist/migrations/20260430T170044_core_sales_channels_promote.js +101 -0
- package/dist/migrations/20260430T170044_core_sales_channels_promote.js.map +1 -0
- package/dist/migrations/20260506T200657_core_module_lifecycle_init.d.ts +21 -0
- package/dist/migrations/20260506T200657_core_module_lifecycle_init.d.ts.map +1 -0
- package/dist/migrations/20260506T200657_core_module_lifecycle_init.js +41 -0
- package/dist/migrations/20260506T200657_core_module_lifecycle_init.js.map +1 -0
- package/dist/migrations/20260514T111329_core_settings_global_value.d.ts +30 -0
- package/dist/migrations/20260514T111329_core_settings_global_value.d.ts.map +1 -0
- package/dist/migrations/20260514T111329_core_settings_global_value.js +34 -0
- package/dist/migrations/20260514T111329_core_settings_global_value.js.map +1 -0
- package/dist/migrations/20260611T140411_core_settings_secret_value_type.d.ts +26 -0
- package/dist/migrations/20260611T140411_core_settings_secret_value_type.d.ts.map +1 -0
- package/dist/migrations/20260611T140411_core_settings_secret_value_type.js +63 -0
- package/dist/migrations/20260611T140411_core_settings_secret_value_type.js.map +1 -0
- package/dist/migrations/20260611T140419_core_settings_enum_options.d.ts +19 -0
- package/dist/migrations/20260611T140419_core_settings_enum_options.d.ts.map +1 -0
- package/dist/migrations/20260611T140419_core_settings_enum_options.js +23 -0
- package/dist/migrations/20260611T140419_core_settings_enum_options.js.map +1 -0
- package/dist/migrations/20260629T090100_core_settings_hidden_flag.d.ts +20 -0
- package/dist/migrations/20260629T090100_core_settings_hidden_flag.d.ts.map +1 -0
- package/dist/migrations/20260629T090100_core_settings_hidden_flag.js +24 -0
- package/dist/migrations/20260629T090100_core_settings_hidden_flag.js.map +1 -0
- package/dist/migrations/20260717T134752_core_tenant_scope_indexes.d.ts +27 -0
- package/dist/migrations/20260717T134752_core_tenant_scope_indexes.d.ts.map +1 -0
- package/dist/migrations/20260717T134752_core_tenant_scope_indexes.js +32 -0
- package/dist/migrations/20260717T134752_core_tenant_scope_indexes.js.map +1 -0
- package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.d.ts +24 -0
- package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.d.ts.map +1 -0
- package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.js +57 -0
- package/dist/migrations/20260721T011510_core_settings_credential_ref_value_type.js.map +1 -0
- package/dist/migrations/20260816T203339_core_retire_core_activation_settings.d.ts +39 -0
- package/dist/migrations/20260816T203339_core_retire_core_activation_settings.d.ts.map +1 -0
- package/dist/migrations/20260816T203339_core_retire_core_activation_settings.js +59 -0
- package/dist/migrations/20260816T203339_core_retire_core_activation_settings.js.map +1 -0
- package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.d.ts +34 -0
- package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.d.ts.map +1 -0
- package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.js +38 -0
- package/dist/migrations/20260919T101500_core_module_registrations_boot_converged.js.map +1 -0
- package/dist/migrations/baseline-migrations.generated.d.ts +2 -0
- package/dist/migrations/baseline-migrations.generated.d.ts.map +1 -0
- package/dist/migrations/baseline-migrations.generated.js +136 -0
- package/dist/migrations/baseline-migrations.generated.js.map +1 -0
- package/dist/migrations/index.d.ts +62 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +75 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/overlay/deployment-roots.d.ts +37 -0
- package/dist/overlay/deployment-roots.d.ts.map +1 -0
- package/dist/overlay/deployment-roots.js +90 -0
- package/dist/overlay/deployment-roots.js.map +1 -0
- package/dist/overlay/index.d.ts +62 -0
- package/dist/overlay/index.d.ts.map +1 -0
- package/dist/overlay/index.js +62 -0
- package/dist/overlay/index.js.map +1 -0
- package/dist/overlay/overlay-runtime.d.ts +173 -0
- package/dist/overlay/overlay-runtime.d.ts.map +1 -0
- package/dist/overlay/overlay-runtime.js +281 -0
- package/dist/overlay/overlay-runtime.js.map +1 -0
- package/dist/overlay/resolve-overlay.d.ts +41 -0
- package/dist/overlay/resolve-overlay.d.ts.map +1 -0
- package/dist/overlay/resolve-overlay.js +72 -0
- package/dist/overlay/resolve-overlay.js.map +1 -0
- package/dist/packages/index.d.ts +57 -0
- package/dist/packages/index.d.ts.map +1 -0
- package/dist/packages/index.js +57 -0
- package/dist/packages/index.js.map +1 -0
- package/dist/packages/installed-packages.d.ts +79 -0
- package/dist/packages/installed-packages.d.ts.map +1 -0
- package/dist/packages/installed-packages.js +312 -0
- package/dist/packages/installed-packages.js.map +1 -0
- package/dist/packages/package-entity-lookup.d.ts +120 -0
- package/dist/packages/package-entity-lookup.d.ts.map +1 -0
- package/dist/packages/package-entity-lookup.js +17 -0
- package/dist/packages/package-entity-lookup.js.map +1 -0
- package/dist/packages/package-runtime.d.ts +177 -0
- package/dist/packages/package-runtime.d.ts.map +1 -0
- package/dist/packages/package-runtime.js +386 -0
- package/dist/packages/package-runtime.js.map +1 -0
- package/dist/tenancy/derived-scope.d.ts +43 -0
- package/dist/tenancy/derived-scope.d.ts.map +1 -0
- package/dist/tenancy/derived-scope.js +76 -0
- package/dist/tenancy/derived-scope.js.map +1 -0
- package/dist/tenancy/escape-hatch.d.ts +30 -0
- package/dist/tenancy/escape-hatch.d.ts.map +1 -0
- package/dist/tenancy/escape-hatch.js +50 -0
- package/dist/tenancy/escape-hatch.js.map +1 -0
- package/dist/tenancy/filters.d.ts +87 -0
- package/dist/tenancy/filters.d.ts.map +1 -0
- package/dist/tenancy/filters.js +126 -0
- package/dist/tenancy/filters.js.map +1 -0
- package/dist/tenancy/index.d.ts +63 -0
- package/dist/tenancy/index.d.ts.map +1 -0
- package/dist/tenancy/index.js +61 -0
- package/dist/tenancy/index.js.map +1 -0
- package/dist/tenancy/org-scoped.decorator.d.ts +150 -0
- package/dist/tenancy/org-scoped.decorator.d.ts.map +1 -0
- package/dist/tenancy/org-scoped.decorator.js +339 -0
- package/dist/tenancy/org-scoped.decorator.js.map +1 -0
- package/dist/tenancy/org-write-guard.d.ts +106 -0
- package/dist/tenancy/org-write-guard.d.ts.map +1 -0
- package/dist/tenancy/org-write-guard.js +141 -0
- package/dist/tenancy/org-write-guard.js.map +1 -0
- package/dist/tenancy/resolve-tenant-context.d.ts +91 -0
- package/dist/tenancy/resolve-tenant-context.d.ts.map +1 -0
- package/dist/tenancy/resolve-tenant-context.js +85 -0
- package/dist/tenancy/resolve-tenant-context.js.map +1 -0
- package/dist/tenancy/scoped-em.d.ts +10 -0
- package/dist/tenancy/scoped-em.d.ts.map +1 -0
- package/dist/tenancy/scoped-em.js +11 -0
- package/dist/tenancy/scoped-em.js.map +1 -0
- package/dist/tenancy/tenant-context.d.ts +154 -0
- package/dist/tenancy/tenant-context.d.ts.map +1 -0
- package/dist/tenancy/tenant-context.js +109 -0
- package/dist/tenancy/tenant-context.js.map +1 -0
- package/package.json +123 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which bundle holds which error code's sentence — the **routing**, derived
|
|
3
|
+
* from the modules' own `errorCodes` declarations.
|
|
4
|
+
*
|
|
5
|
+
* **This file is the platform's and was `_i18n`'s until
|
|
6
|
+
* `specs/117-instance-bring-up/` FR-030.** The line it moved across is the one
|
|
7
|
+
* that matters and is worth stating in place: *the routing is derived from
|
|
8
|
+
* manifests, the translation is a service*. `translateErrorMessage` — the other
|
|
9
|
+
* half of the error envelope's i18n injection — resolves a key against a bundle
|
|
10
|
+
* and stays `_i18n`'s, correctly, reached through that module's own registration.
|
|
11
|
+
* Nothing here translates anything. It reads `manifest.errorCodes` and answers
|
|
12
|
+
* with `{ moduleId, key }` pairs, and its input is the **resolved manifest set**,
|
|
13
|
+
* which is a composition-root input rather than anything `_i18n` owns.
|
|
14
|
+
*
|
|
15
|
+
* Four measured facts put it here rather than in the module (T040b's criterion
|
|
16
|
+
* 8, the test `absolutizePublicUrl` moved out of `email` under):
|
|
17
|
+
*
|
|
18
|
+
* 1. `_i18n` had **no consumer of it inside its own module** — its barrel
|
|
19
|
+
* re-exported it and nothing else in the package called it.
|
|
20
|
+
* 2. Its callers are the two composition roots and one host check script.
|
|
21
|
+
* 3. Its input type restates `RegisteredManifestEntry`, a host type, and says
|
|
22
|
+
* so — it was restated because a module may not name another module's file.
|
|
23
|
+
* 4. Its output feeds `ErrorEnvelopeOptions.errorTranslationTargets`, whose
|
|
24
|
+
* type the platform already declares in `http/error-envelope.ts`.
|
|
25
|
+
*
|
|
26
|
+
* A **port** was the alternative and is structurally unavailable, not merely
|
|
27
|
+
* unattractive: the production root calls this *before* `composeModules`, so
|
|
28
|
+
* there is no container to resolve one from, and moving the call after
|
|
29
|
+
* composition would move the collision warning with it — a diagnostic that is
|
|
30
|
+
* logged where it is precisely so an operator reads it before the first request
|
|
31
|
+
* that renders wrong. Gating a derivation over a root's own input on a module's
|
|
32
|
+
* effective state would also be an answer to a question nobody asked.
|
|
33
|
+
*
|
|
34
|
+
* It sits beside `request-language.ts` because that file is the same kind of
|
|
35
|
+
* thing: the producer of another `ErrorEnvelopeOptions` member, platform-owned,
|
|
36
|
+
* injected by a root. It is on **no barrel** — no module calls it, so
|
|
37
|
+
* `specs/080-f4-real-scope/contracts/host-package.md` §1.3 classifies it
|
|
38
|
+
* *unreached* and publishing it would put a host-only name into the platform's
|
|
39
|
+
* module-facing contract.
|
|
40
|
+
*/
|
|
41
|
+
export interface ErrorTranslationTarget {
|
|
42
|
+
moduleId: string;
|
|
43
|
+
/**
|
|
44
|
+
* Widened from `errors.${ErrorCode}` by feature 090: a module declares codes
|
|
45
|
+
* the platform's enumeration does not hold, and the key is built from the
|
|
46
|
+
* code either way.
|
|
47
|
+
*/
|
|
48
|
+
key: `errors.${string}`;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* One manifest, and the file it was declared in.
|
|
52
|
+
*
|
|
53
|
+
* Structurally what `RegisteredManifestEntry` already is, and still restated
|
|
54
|
+
* rather than imported. The original reason — *"`_lifecycle` owns that type and
|
|
55
|
+
* a module may not name a file in another module's directory"* — retired with
|
|
56
|
+
* the move; the restatement stays for a second reason that did not, and that is
|
|
57
|
+
* now the load-bearing one: this function's callers include a **check script**
|
|
58
|
+
* that builds its declarations from source text rather than from a composed
|
|
59
|
+
* registry, so the parameter has to be the narrowest shape the answer needs and
|
|
60
|
+
* not whatever `RegisteredManifestEntry` happens to carry. The `filePath` is
|
|
61
|
+
* not decoration — it is what §3.1 rule 3 requires a collision report to name
|
|
62
|
+
* for **every** claimant, and a module id alone does not tell an operator which
|
|
63
|
+
* package on their disk to look at.
|
|
64
|
+
*/
|
|
65
|
+
export interface ErrorCodeDeclarationSource {
|
|
66
|
+
readonly manifest: {
|
|
67
|
+
readonly id: string;
|
|
68
|
+
readonly errorCodes?: readonly {
|
|
69
|
+
readonly code: string;
|
|
70
|
+
}[] | undefined;
|
|
71
|
+
};
|
|
72
|
+
readonly filePath: string;
|
|
73
|
+
}
|
|
74
|
+
/** One module's claim on a code. */
|
|
75
|
+
export interface ErrorCodeClaim {
|
|
76
|
+
readonly moduleId: string;
|
|
77
|
+
readonly declaredIn: string;
|
|
78
|
+
}
|
|
79
|
+
/** A code more than one registered module declares. Nobody wins. */
|
|
80
|
+
export interface ErrorCodeCollision {
|
|
81
|
+
readonly code: string;
|
|
82
|
+
readonly claims: readonly ErrorCodeClaim[];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The whole answer: the routing, and the codes it refuses to route.
|
|
86
|
+
*
|
|
87
|
+
* Named `Routing` rather than `Targets` since the move, and the rename is not
|
|
88
|
+
* cosmetic: `http/error-envelope.ts` declares an `ErrorTranslationTargets` of
|
|
89
|
+
* its own — the record this one's `targets` member is assigned to — and two
|
|
90
|
+
* types of one name inside one package, one being the input to the other's
|
|
91
|
+
* consumer, is a confusion with a real cost. Nothing outside this package ever
|
|
92
|
+
* named the aggregate, so the rename cost one file.
|
|
93
|
+
*/
|
|
94
|
+
export interface ErrorTranslationRouting {
|
|
95
|
+
readonly targets: Readonly<Record<string, ErrorTranslationTarget>>;
|
|
96
|
+
readonly collisions: readonly ErrorCodeCollision[];
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Which bundle holds which code's sentence, derived from the manifests.
|
|
100
|
+
*
|
|
101
|
+
* The input is **every registered manifest** — core, this deployment's overlay
|
|
102
|
+
* modules and every installed package — which is the set `resolvedManifestEntries()`
|
|
103
|
+
* produces and `admin_roles` builds the permission catalogue from. Activation
|
|
104
|
+
* and platform availability are **not** consulted, and that is a standing ruling
|
|
105
|
+
* rather than an omission (`specs/082-error-code-ownership/contracts/error-code-ownership.md`
|
|
106
|
+
* §1.3): a code owned by a switchable module is raised by other modules too, so
|
|
107
|
+
* a switched-off `carts` must not cost `orders` its checkout sentence.
|
|
108
|
+
*
|
|
109
|
+
* **Collisions: nobody wins** (§3). A code more than one module declares is
|
|
110
|
+
* *absent* from `targets` and present in `collisions` with every claimant named.
|
|
111
|
+
* There is no tie-break — not first-wins, not last-wins, not by origin, not by
|
|
112
|
+
* manifest order, not by module id — because every one of them renders one
|
|
113
|
+
* raiser's condition under the other's sentence: good prose about the wrong
|
|
114
|
+
* thing, with no symptom an operator or a client can detect. The envelope
|
|
115
|
+
* already rules that trade at five other exits from the same hook, and the
|
|
116
|
+
* answer is the same one: untranslated prose which is true beats a rendered
|
|
117
|
+
* sentence that is not.
|
|
118
|
+
*
|
|
119
|
+
* **One derivation** (D-100): the report and the routing come out of this one
|
|
120
|
+
* call, so they cannot come to disagree about which codes are contested.
|
|
121
|
+
*
|
|
122
|
+
* **Deterministic**: the answer does not depend on the order the manifests
|
|
123
|
+
* arrive in. Claims are sorted by module id, collisions by code.
|
|
124
|
+
*
|
|
125
|
+
* **There is no fall-through** (§4.1). A code no registered manifest declares is
|
|
126
|
+
* *absent* from `targets`: it is not routed to the platform, to `core`, or to
|
|
127
|
+
* anything else, and the envelope answers the raising code's own English. That
|
|
128
|
+
* is `specs/082-error-code-ownership/rulings.md` §9 (D-129) delivered — *"`core`
|
|
129
|
+
* is only ever reached by being named"* — and it is what the deleted prefix
|
|
130
|
+
* chain could not do, because its last line was `return 'core'`.
|
|
131
|
+
*
|
|
132
|
+
* **The chain and `composeErrorTranslationTargets` are gone** (feature 090
|
|
133
|
+
* Phase 4). The transitional composition laid these declarations over
|
|
134
|
+
* `moduleIdForErrorCode` so that the migration could be delivered one module per
|
|
135
|
+
* merge request while staying answer-preserving; all eighteen owners have
|
|
136
|
+
* declared, so both roots call this directly. The answer it gives for every
|
|
137
|
+
* member of `ERROR_CODES` is still measured against the frozen capture in
|
|
138
|
+
* `backend/test/fixtures/error-code-routing/chain-answers.ts`, which is now the
|
|
139
|
+
* only record of what the chain said.
|
|
140
|
+
*/
|
|
141
|
+
export declare function buildErrorTranslationTargets(manifests: readonly ErrorCodeDeclarationSource[]): ErrorTranslationRouting;
|
|
142
|
+
/** One line per claimant, in the words an operator reads on `/platform/modules`. */
|
|
143
|
+
export declare function describeErrorCodeCollisions(collisions: readonly ErrorCodeCollision[]): string;
|
|
144
|
+
//# sourceMappingURL=error-translation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-translation.d.ts","sourceRoot":"","sources":["../../../src/kernel/i18n/error-translation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,GAAG,EAAE,UAAU,MAAM,EAAE,CAAC;CACzB;AAOD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAKpB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,GAAG,SAAS,CAAC;KACxE,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,oCAAoC;AACpC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,oEAAoE;AACpE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,SAAS,0BAA0B,EAAE,GAC/C,uBAAuB,CA6BzB;AAED,oFAAoF;AACpF,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,SAAS,kBAAkB,EAAE,GACxC,MAAM,CAYR"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which bundle holds which code's sentence, derived from the manifests.
|
|
3
|
+
*
|
|
4
|
+
* The input is **every registered manifest** — core, this deployment's overlay
|
|
5
|
+
* modules and every installed package — which is the set `resolvedManifestEntries()`
|
|
6
|
+
* produces and `admin_roles` builds the permission catalogue from. Activation
|
|
7
|
+
* and platform availability are **not** consulted, and that is a standing ruling
|
|
8
|
+
* rather than an omission (`specs/082-error-code-ownership/contracts/error-code-ownership.md`
|
|
9
|
+
* §1.3): a code owned by a switchable module is raised by other modules too, so
|
|
10
|
+
* a switched-off `carts` must not cost `orders` its checkout sentence.
|
|
11
|
+
*
|
|
12
|
+
* **Collisions: nobody wins** (§3). A code more than one module declares is
|
|
13
|
+
* *absent* from `targets` and present in `collisions` with every claimant named.
|
|
14
|
+
* There is no tie-break — not first-wins, not last-wins, not by origin, not by
|
|
15
|
+
* manifest order, not by module id — because every one of them renders one
|
|
16
|
+
* raiser's condition under the other's sentence: good prose about the wrong
|
|
17
|
+
* thing, with no symptom an operator or a client can detect. The envelope
|
|
18
|
+
* already rules that trade at five other exits from the same hook, and the
|
|
19
|
+
* answer is the same one: untranslated prose which is true beats a rendered
|
|
20
|
+
* sentence that is not.
|
|
21
|
+
*
|
|
22
|
+
* **One derivation** (D-100): the report and the routing come out of this one
|
|
23
|
+
* call, so they cannot come to disagree about which codes are contested.
|
|
24
|
+
*
|
|
25
|
+
* **Deterministic**: the answer does not depend on the order the manifests
|
|
26
|
+
* arrive in. Claims are sorted by module id, collisions by code.
|
|
27
|
+
*
|
|
28
|
+
* **There is no fall-through** (§4.1). A code no registered manifest declares is
|
|
29
|
+
* *absent* from `targets`: it is not routed to the platform, to `core`, or to
|
|
30
|
+
* anything else, and the envelope answers the raising code's own English. That
|
|
31
|
+
* is `specs/082-error-code-ownership/rulings.md` §9 (D-129) delivered — *"`core`
|
|
32
|
+
* is only ever reached by being named"* — and it is what the deleted prefix
|
|
33
|
+
* chain could not do, because its last line was `return 'core'`.
|
|
34
|
+
*
|
|
35
|
+
* **The chain and `composeErrorTranslationTargets` are gone** (feature 090
|
|
36
|
+
* Phase 4). The transitional composition laid these declarations over
|
|
37
|
+
* `moduleIdForErrorCode` so that the migration could be delivered one module per
|
|
38
|
+
* merge request while staying answer-preserving; all eighteen owners have
|
|
39
|
+
* declared, so both roots call this directly. The answer it gives for every
|
|
40
|
+
* member of `ERROR_CODES` is still measured against the frozen capture in
|
|
41
|
+
* `backend/test/fixtures/error-code-routing/chain-answers.ts`, which is now the
|
|
42
|
+
* only record of what the chain said.
|
|
43
|
+
*/
|
|
44
|
+
export function buildErrorTranslationTargets(manifests) {
|
|
45
|
+
const claimsByCode = new Map();
|
|
46
|
+
for (const entry of manifests) {
|
|
47
|
+
for (const declaration of entry.manifest.errorCodes ?? []) {
|
|
48
|
+
const claims = claimsByCode.get(declaration.code);
|
|
49
|
+
const claim = {
|
|
50
|
+
moduleId: entry.manifest.id,
|
|
51
|
+
declaredIn: entry.filePath,
|
|
52
|
+
};
|
|
53
|
+
if (claims)
|
|
54
|
+
claims.push(claim);
|
|
55
|
+
else
|
|
56
|
+
claimsByCode.set(declaration.code, [claim]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const targets = {};
|
|
60
|
+
const collisions = [];
|
|
61
|
+
for (const [code, claims] of claimsByCode) {
|
|
62
|
+
if (claims.length === 1) {
|
|
63
|
+
targets[code] = { moduleId: claims[0].moduleId, key: `errors.${code}` };
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
collisions.push({
|
|
67
|
+
code,
|
|
68
|
+
claims: [...claims].sort((a, b) => a.moduleId.localeCompare(b.moduleId) || a.declaredIn.localeCompare(b.declaredIn)),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return { targets, collisions: collisions.sort((a, b) => a.code.localeCompare(b.code)) };
|
|
72
|
+
}
|
|
73
|
+
/** One line per claimant, in the words an operator reads on `/platform/modules`. */
|
|
74
|
+
export function describeErrorCodeCollisions(collisions) {
|
|
75
|
+
return collisions
|
|
76
|
+
.map((collision) => ` - "${collision.code}" is declared by ${collision.claims.length} modules and ` +
|
|
77
|
+
'therefore routes to none of them; the raising code\'s own message is answered ' +
|
|
78
|
+
'until one of them gives it up:\n' +
|
|
79
|
+
collision.claims
|
|
80
|
+
.map((claim) => ` ${claim.moduleId} (${claim.declaredIn})`)
|
|
81
|
+
.join('\n'))
|
|
82
|
+
.join('\n');
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=error-translation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-translation.js","sourceRoot":"","sources":["../../../src/kernel/i18n/error-translation.ts"],"names":[],"mappings":"AA6GA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,4BAA4B,CAC1C,SAAgD;IAEhD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,KAAK,GAAmB;gBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;gBAC3B,UAAU,EAAE,KAAK,CAAC,QAAQ;aAC3B,CAAC;YACF,IAAI,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;gBAC1B,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAA2C,EAAE,CAAC;IAC3D,MAAM,UAAU,GAAyB,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;YACzE,SAAS;QACX,CAAC;QACD,UAAU,CAAC,IAAI,CAAC;YACd,IAAI;YACJ,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAC3F;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,2BAA2B,CACzC,UAAyC;IAEzC,OAAO,UAAU;SACd,GAAG,CACF,CAAC,SAAS,EAAE,EAAE,CACZ,QAAQ,SAAS,CAAC,IAAI,oBAAoB,SAAS,CAAC,MAAM,CAAC,MAAM,eAAe;QAChF,gFAAgF;QAChF,kCAAkC;QAClC,SAAS,CAAC,MAAM;aACb,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,UAAU,GAAG,CAAC;aAC/D,IAAI,CAAC,IAAI,CAAC,CAChB;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { FastifyRequest } from 'fastify';
|
|
2
|
+
import { type SupportedLanguage } from '@endora-commerce/contracts';
|
|
3
|
+
export interface RequestLanguageDeps {
|
|
4
|
+
/**
|
|
5
|
+
* The admin's stored `preferredLanguage`, or `null`.
|
|
6
|
+
*
|
|
7
|
+
* Supplied by the composition root rather than resolved here (D-137): the
|
|
8
|
+
* policy is the kernel's, the one rung that reads a module's data is not.
|
|
9
|
+
*
|
|
10
|
+
* **What the root supplies it out of is a gated port, and this doc block used
|
|
11
|
+
* to say it must not be.** The paragraph read: "a gated port would throw
|
|
12
|
+
* `ModuleDisabledError` while another error is being serialised, and the
|
|
13
|
+
* guard that mistake needs is a `catch` around a port — `check:port-catches`
|
|
14
|
+
* refuses one, and is right to. A root reading its own entity has no gate and
|
|
15
|
+
* no such failure mode." Feature 080's T052 then converted the closure from
|
|
16
|
+
* `em().findOne(AdminUser, …)` to `adminUserReadPort.findById(…)`, because
|
|
17
|
+
* D-168 leaves a packaged module no named entity class for a root to read —
|
|
18
|
+
* so the entity-reading alternative the paragraph rested on no longer exists.
|
|
19
|
+
*
|
|
20
|
+
* The prediction was exactly right about the consequence. With `admin_users`
|
|
21
|
+
* platform-absent, every error answered to a signed-in admin lost its
|
|
22
|
+
* `ErrorEnvelope` outright: the throw lands in `preSerialization` of a reply
|
|
23
|
+
* Fastify is already treating as an error, so it cannot be routed back
|
|
24
|
+
* through `setErrorHandler` and Fastify's own fallback serialiser answers
|
|
25
|
+
* instead. The remedy is not the `catch` the paragraph refused — the guard
|
|
26
|
+
* lives in `registerErrorEnvelope`, around the whole decoration, where it is
|
|
27
|
+
* a renderer declining to let a decoration replace the thing it decorates
|
|
28
|
+
* rather than a caller hiding a capability's absence.
|
|
29
|
+
*
|
|
30
|
+
* So the standing rule for this dependency is the weaker, true one: it may
|
|
31
|
+
* throw, and a caller that cannot afford the throw must say so at its own
|
|
32
|
+
* seam. {@link createRequestLanguageResolver} does not catch it.
|
|
33
|
+
*/
|
|
34
|
+
adminPreferredLanguage: (adminUserId: string) => Promise<string | null>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A tag reduced to a language the platform ships a bundle for, or `null`.
|
|
38
|
+
*
|
|
39
|
+
* The candidate set is `SUPPORTED_LANGUAGES` and nothing else — **not** the
|
|
40
|
+
* channel's `languages[]` (D-135). That column is a market's content offer, is
|
|
41
|
+
* empty on most rows that exist, and bounding by it would need an "empty means
|
|
42
|
+
* unbounded" carve-out: an absent value silently becoming a permissive one.
|
|
43
|
+
*
|
|
44
|
+
* A tag that does not normalise is not an error and is not echoed anywhere. It
|
|
45
|
+
* falls to the next rung; it never becomes one.
|
|
46
|
+
*/
|
|
47
|
+
export declare function normalise(tag: string | null | undefined): SupportedLanguage | null;
|
|
48
|
+
/**
|
|
49
|
+
* `Accept-Language` as an ordered list of tags, heaviest `q` first.
|
|
50
|
+
*
|
|
51
|
+
* RFC 9110 makes the header a q-weighted list, and three sites in the tree read
|
|
52
|
+
* it as `split(',')[0]` — so `en;q=0.2,pl;q=0.9` is read as English by every
|
|
53
|
+
* one of them. Exported for their conversion (T024); nothing else in this
|
|
54
|
+
* feature reads it.
|
|
55
|
+
*
|
|
56
|
+
* Bounded twice, because the header is attacker-controlled on every request:
|
|
57
|
+
* to {@link MAX_HEADER_LENGTH} characters and, after weighting, to
|
|
58
|
+
* {@link MAX_TAGS} tags. Exceeding either is not an error — the remainder is
|
|
59
|
+
* simply not read. A malformed `q` drops its tag rather than guessing a weight.
|
|
60
|
+
* `*` is returned as an ordinary tag and never normalises.
|
|
61
|
+
*/
|
|
62
|
+
export declare function parseAcceptLanguage(header: string | string[] | undefined): string[];
|
|
63
|
+
/**
|
|
64
|
+
* The ladder in this file's header, as a function of the request.
|
|
65
|
+
*
|
|
66
|
+
* Every rung that cannot *answer* falls to the next, and the last always
|
|
67
|
+
* answers. The buyer arm performs no database read at all — the channel is
|
|
68
|
+
* already resolved and cached on the request scope.
|
|
69
|
+
*
|
|
70
|
+
* The admin arm is the exception and this used to claim otherwise ("it never
|
|
71
|
+
* throws"): it calls {@link RequestLanguageDeps.adminPreferredLanguage}, which
|
|
72
|
+
* a root supplies out of a gated port, so it throws while the owner of that
|
|
73
|
+
* port is absent. Not caught here, deliberately — a `catch` around a port at
|
|
74
|
+
* the one site that reads it is the shape `check:port-catches` refuses. The
|
|
75
|
+
* caller that cannot afford the throw guards at its own seam, and there is one:
|
|
76
|
+
* `registerErrorEnvelope`, whose decoration falls back to the untranslated
|
|
77
|
+
* envelope.
|
|
78
|
+
*/
|
|
79
|
+
export declare function createRequestLanguageResolver(deps: RequestLanguageDeps): (request: FastifyRequest) => Promise<SupportedLanguage>;
|
|
80
|
+
//# sourceMappingURL=request-language.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-language.d.ts","sourceRoot":"","sources":["../../../src/kernel/i18n/request-language.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AA4CpC,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,GAAG,IAAI,CAMlF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAcnF;AAgBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,mBAAmB,GACxB,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,iBAAiB,CAAC,CA6CzD"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { LANGUAGE_FALLBACK, SUPPORTED_LANGUAGES, } from '@endora-commerce/contracts';
|
|
2
|
+
import { currentSalesChannel } from '../sales-channels/sales-channel-resolver.middleware.js';
|
|
3
|
+
/**
|
|
4
|
+
* Which language the platform answers a request in (feature 083, D-130 … D-139).
|
|
5
|
+
*
|
|
6
|
+
* **The platform answers in the language the client is rendering in, and each
|
|
7
|
+
* audience states that language the way its own client already computes it.**
|
|
8
|
+
* The two shipped clients compute it differently, so this is one function with
|
|
9
|
+
* one branch on actor kind rather than one ladder pretending to serve both:
|
|
10
|
+
*
|
|
11
|
+
* ```
|
|
12
|
+
* actor.kind === 'admin'
|
|
13
|
+
* 1. the stored `preferredLanguage` — the admin SPA renders from this
|
|
14
|
+
* 2. LANGUAGE_FALLBACK field and ignores the browser
|
|
15
|
+
*
|
|
16
|
+
* otherwise (anonymous | customer | api_key)
|
|
17
|
+
* 0. [reserved] a stored per-customer preference — see below
|
|
18
|
+
* 1. Accept-Language, q-sorted, first tag that normalises
|
|
19
|
+
* 2. the resolved sales channel's `defaultLanguage`
|
|
20
|
+
* 3. LANGUAGE_FALLBACK
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* **The channel is the buyer's backstop, never their override** (D-131). The
|
|
24
|
+
* platform already resolves product *content* header-first
|
|
25
|
+
* (`CatalogQueryService.pickLang`, feature 022); inverting it here would name a
|
|
26
|
+
* product in one language and refuse it in another inside one response body.
|
|
27
|
+
* And the header is not a browser setting on this platform — it is the
|
|
28
|
+
* storefront's own answer, written by its language switcher, so overriding it
|
|
29
|
+
* from the channel would contradict a choice the buyer made two clicks ago.
|
|
30
|
+
*
|
|
31
|
+
* Before this file, `resolvePreferredLanguage` was a closure in each of the two
|
|
32
|
+
* composition roots and both began `if (actor.kind !== 'admin') return null`.
|
|
33
|
+
* Every Polish error sentence the platform ships was therefore unreachable for
|
|
34
|
+
* a buyer, from the day the hook was written (issue #234). The policy lives in
|
|
35
|
+
* one kernel file now: the roots keep one line each, the admin lookup, which is
|
|
36
|
+
* the only rung that reads a module's table.
|
|
37
|
+
*/
|
|
38
|
+
/** Bound on the header read — the parse half of the security bound (D-139 § 8.1). */
|
|
39
|
+
const MAX_HEADER_LENGTH = 512;
|
|
40
|
+
/** Bound on how many tags are considered, applied **after** q-sorting. */
|
|
41
|
+
const MAX_TAGS = 10;
|
|
42
|
+
/**
|
|
43
|
+
* A tag reduced to a language the platform ships a bundle for, or `null`.
|
|
44
|
+
*
|
|
45
|
+
* The candidate set is `SUPPORTED_LANGUAGES` and nothing else — **not** the
|
|
46
|
+
* channel's `languages[]` (D-135). That column is a market's content offer, is
|
|
47
|
+
* empty on most rows that exist, and bounding by it would need an "empty means
|
|
48
|
+
* unbounded" carve-out: an absent value silently becoming a permissive one.
|
|
49
|
+
*
|
|
50
|
+
* A tag that does not normalise is not an error and is not echoed anywhere. It
|
|
51
|
+
* falls to the next rung; it never becomes one.
|
|
52
|
+
*/
|
|
53
|
+
export function normalise(tag) {
|
|
54
|
+
if (!tag)
|
|
55
|
+
return null;
|
|
56
|
+
const primary = tag.split('-', 1)[0]?.trim().toLowerCase() ?? '';
|
|
57
|
+
return SUPPORTED_LANGUAGES.includes(primary)
|
|
58
|
+
? primary
|
|
59
|
+
: null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* `Accept-Language` as an ordered list of tags, heaviest `q` first.
|
|
63
|
+
*
|
|
64
|
+
* RFC 9110 makes the header a q-weighted list, and three sites in the tree read
|
|
65
|
+
* it as `split(',')[0]` — so `en;q=0.2,pl;q=0.9` is read as English by every
|
|
66
|
+
* one of them. Exported for their conversion (T024); nothing else in this
|
|
67
|
+
* feature reads it.
|
|
68
|
+
*
|
|
69
|
+
* Bounded twice, because the header is attacker-controlled on every request:
|
|
70
|
+
* to {@link MAX_HEADER_LENGTH} characters and, after weighting, to
|
|
71
|
+
* {@link MAX_TAGS} tags. Exceeding either is not an error — the remainder is
|
|
72
|
+
* simply not read. A malformed `q` drops its tag rather than guessing a weight.
|
|
73
|
+
* `*` is returned as an ordinary tag and never normalises.
|
|
74
|
+
*/
|
|
75
|
+
export function parseAcceptLanguage(header) {
|
|
76
|
+
const raw = Array.isArray(header) ? header[0] : header;
|
|
77
|
+
if (!raw)
|
|
78
|
+
return [];
|
|
79
|
+
const weighted = [];
|
|
80
|
+
for (const part of raw.slice(0, MAX_HEADER_LENGTH).split(',')) {
|
|
81
|
+
const [tagPart, ...parameters] = part.split(';');
|
|
82
|
+
const tag = tagPart?.trim() ?? '';
|
|
83
|
+
if (tag.length === 0)
|
|
84
|
+
continue;
|
|
85
|
+
const weight = readWeight(parameters);
|
|
86
|
+
if (weight === null)
|
|
87
|
+
continue;
|
|
88
|
+
weighted.push({ tag, weight, order: weighted.length });
|
|
89
|
+
}
|
|
90
|
+
weighted.sort((a, b) => b.weight - a.weight || a.order - b.order);
|
|
91
|
+
return weighted.slice(0, MAX_TAGS).map((entry) => entry.tag);
|
|
92
|
+
}
|
|
93
|
+
/** The `q` parameter of one list element: its weight, `1` by default, or `null` if malformed. */
|
|
94
|
+
function readWeight(parameters) {
|
|
95
|
+
for (const parameter of parameters) {
|
|
96
|
+
const separator = parameter.indexOf('=');
|
|
97
|
+
if (separator < 0)
|
|
98
|
+
continue;
|
|
99
|
+
if (parameter.slice(0, separator).trim().toLowerCase() !== 'q')
|
|
100
|
+
continue;
|
|
101
|
+
const value = parameter.slice(separator + 1).trim();
|
|
102
|
+
const parsed = Number(value);
|
|
103
|
+
if (value.length === 0 || !Number.isFinite(parsed))
|
|
104
|
+
return null;
|
|
105
|
+
return parsed;
|
|
106
|
+
}
|
|
107
|
+
return 1;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The ladder in this file's header, as a function of the request.
|
|
111
|
+
*
|
|
112
|
+
* Every rung that cannot *answer* falls to the next, and the last always
|
|
113
|
+
* answers. The buyer arm performs no database read at all — the channel is
|
|
114
|
+
* already resolved and cached on the request scope.
|
|
115
|
+
*
|
|
116
|
+
* The admin arm is the exception and this used to claim otherwise ("it never
|
|
117
|
+
* throws"): it calls {@link RequestLanguageDeps.adminPreferredLanguage}, which
|
|
118
|
+
* a root supplies out of a gated port, so it throws while the owner of that
|
|
119
|
+
* port is absent. Not caught here, deliberately — a `catch` around a port at
|
|
120
|
+
* the one site that reads it is the shape `check:port-catches` refuses. The
|
|
121
|
+
* caller that cannot afford the throw guards at its own seam, and there is one:
|
|
122
|
+
* `registerErrorEnvelope`, whose decoration falls back to the untranslated
|
|
123
|
+
* envelope.
|
|
124
|
+
*/
|
|
125
|
+
export function createRequestLanguageResolver(deps) {
|
|
126
|
+
return async (request) => {
|
|
127
|
+
// `Actor | undefined` rather than `Actor`, and the widening is this site's
|
|
128
|
+
// rather than the declaration's (T118b). `request.actor` is decorated by
|
|
129
|
+
// `auth`'s `onRequest` hook, and this resolver runs while an error is being
|
|
130
|
+
// **serialised** — a reply Fastify rejected before that hook ran carries no
|
|
131
|
+
// decoration at all. Throwing here would mean failing to render an error
|
|
132
|
+
// with another error, so the absent case falls through to the rungs below.
|
|
133
|
+
//
|
|
134
|
+
// Until T118b this read went through a private `ActorSlice` interface,
|
|
135
|
+
// declared here because D-52 forbids the kernel an import of `auth`. The
|
|
136
|
+
// shape is `@endora-commerce/contracts`' now and the augmentation is the
|
|
137
|
+
// platform's own, so the restatement is gone and this reads the type every
|
|
138
|
+
// other consumer reads.
|
|
139
|
+
const actor = request.actor;
|
|
140
|
+
// The admin arm reads the stored preference and nothing else (D-132).
|
|
141
|
+
// `admin/src/App.tsx` renders the chrome from `preferredLanguage ?? 'en'`
|
|
142
|
+
// and does not send `Accept-Language` at all, so consulting the browser
|
|
143
|
+
// here would put Polish refusals on an English screen. Consulting the
|
|
144
|
+
// channel would make an operator's error language depend on whichever
|
|
145
|
+
// channel their last request happened to resolve, which is not a thing
|
|
146
|
+
// any operator chose.
|
|
147
|
+
if (actor?.kind === 'admin' && typeof actor.adminUserId === 'string') {
|
|
148
|
+
return normalise(await deps.adminPreferredLanguage(actor.adminUserId)) ?? LANGUAGE_FALLBACK;
|
|
149
|
+
}
|
|
150
|
+
// Rung 0 — a stored per-customer preference goes here when one exists, and
|
|
151
|
+
// the storefront's language switcher must write it for a logged-in buyer
|
|
152
|
+
// (D-133). Deliberately a comment and not a branch: there is no column, no
|
|
153
|
+
// contract field and no screen, and #234 does not need one.
|
|
154
|
+
for (const tag of parseAcceptLanguage(request.headers['accept-language'])) {
|
|
155
|
+
const language = normalise(tag);
|
|
156
|
+
if (language)
|
|
157
|
+
return language;
|
|
158
|
+
}
|
|
159
|
+
// A `null` channel is **normal**, not a failure: the resolver middleware
|
|
160
|
+
// does not run on `/api/v1/_health` or off the API prefix, and a request
|
|
161
|
+
// with no scope open has none either. The rung falls through; nothing is
|
|
162
|
+
// logged and nothing throws. Do not add a throw here — `currentSalesChannel`
|
|
163
|
+
// has a throwing sibling (`getResolvedChannel`) and reaching for it would
|
|
164
|
+
// turn every health-path error into a 500.
|
|
165
|
+
return normalise(currentSalesChannel()?.defaultLanguage) ?? LANGUAGE_FALLBACK;
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=request-language.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-language.js","sourceRoot":"","sources":["../../../src/kernel/i18n/request-language.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kernel (feature 072) — the platform's module-facing surface.
|
|
3
|
+
* Peer of `events/`, `tenancy/`, `http/`, `db/`; becomes the `./kernel` subpath
|
|
4
|
+
* of `@endora-commerce/platform` in F4 (D-160.1 — one host package, not five
|
|
5
|
+
* mirroring the five directories).
|
|
6
|
+
*
|
|
7
|
+
* **That subpath is the boundary a future `@endora-commerce/kernel` would
|
|
8
|
+
* take.** D-160.6 answered the meta-package *no* on measurement rather than on
|
|
9
|
+
* possibility — over the five publishable directories the graph holds one
|
|
10
|
+
* breakable cycle, and the median module needs four of the five — and it kept
|
|
11
|
+
* the split available in the direction it is cheap: one package becomes five by
|
|
12
|
+
* re-pointing a subpath, while five published packages become one only by
|
|
13
|
+
* breaking every dependent. So this barrel is a package boundary in waiting,
|
|
14
|
+
* and it carries **this directory's** symbols and nothing else. A symbol from
|
|
15
|
+
* `http/`, `events/`, `tenancy/` or `commands/` re-exported here to save a
|
|
16
|
+
* consumer one import line spends that option for a convenience.
|
|
17
|
+
*
|
|
18
|
+
* **What is on it is decided by `contracts/host-package.md` §1.3, not by what
|
|
19
|
+
* happens to be here** (T042c). Until T042c the barrel was an accumulation:
|
|
20
|
+
* 126 names, of which modules took **six** — `ModuleContext`, `lazyPort`, the
|
|
21
|
+
* two public-origin readers and two settings errors — while every other module
|
|
22
|
+
* reach into this directory went by relative path and will become a bare
|
|
23
|
+
* specifier when its module moves. Publishing the rest of the directory
|
|
24
|
+
* alongside them would have made `@endora-commerce/platform` owe a major
|
|
25
|
+
* version for `ManifestReconciler` (§1.3 row 46, **A**, on the barrel since
|
|
26
|
+
* feature 072), for the container the host builds once, and for
|
|
27
|
+
* `AuditLogService`, whose class D-160.10 replaced with {@link AuditPort}
|
|
28
|
+
* precisely so the platform does not freeze into a contract the shape
|
|
29
|
+
* Principle XIII routes around.
|
|
30
|
+
*
|
|
31
|
+
* So the rule is: a symbol is here when §1.3 records a module taking it from a
|
|
32
|
+
* file it marks **P**, or when it is the argument, return or thrown shape of a
|
|
33
|
+
* published method — a `@throws` a caller cannot name is a method a caller
|
|
34
|
+
* cannot call. Everything else is reachable by relative path, which the two
|
|
35
|
+
* composition roots and the tests have and a packaged module does not.
|
|
36
|
+
* `test/unit/kernel/published-surface.test.ts` is the two-way ratchet, and it
|
|
37
|
+
* carries the reason each removed name is not published.
|
|
38
|
+
*
|
|
39
|
+
* Three groups deserve naming here because a future author will look for them:
|
|
40
|
+
*
|
|
41
|
+
* - **the composition machinery** — `createRootContainer`, `composeModules`,
|
|
42
|
+
* `registerValues`, `createModuleContext`, `registerRequestScopeHook`,
|
|
43
|
+
* `requiredModulesFrom` and the errors they raise. D-45 gives a module one
|
|
44
|
+
* registration pass and one boot phase, both run by the host; no module
|
|
45
|
+
* builds a container or composes a module list.
|
|
46
|
+
* - **the seams a `ModuleContext` already exposes** — `registerPort`
|
|
47
|
+
* (`ctx.di.providePort`), `defineModuleWorker` / `subscribeForModule` /
|
|
48
|
+
* `pauseWorkersFor` / `resumeWorkersFor` (`ctx.worker`, `ctx.subscribe`),
|
|
49
|
+
* `moduleLogger` (`ctx.log`). Publishing the function re-opens by bare
|
|
50
|
+
* specifier the seam the context closed, which is `check:subscribe-seam`'s
|
|
51
|
+
* argument in reverse.
|
|
52
|
+
* - **the three classes §1.4d/§1.4e make ports** — `SettingsService`,
|
|
53
|
+
* `SalesChannelMembershipService` and `SalesChannelResolverService` are
|
|
54
|
+
* reached through `settingsReadPort`, `salesChannelMembershipPort` and
|
|
55
|
+
* `salesChannelResolutionPort`; their error and mutation shapes stay,
|
|
56
|
+
* because those are what a caller of the port catches and passes.
|
|
57
|
+
*
|
|
58
|
+
* Also not here, and classified **A** outright by §1.3: the registry cache,
|
|
59
|
+
* `ModuleRegistration`, `activationDeclarationsFrom`, and anything under `db/`,
|
|
60
|
+
* `overlay/` or `packages/`.
|
|
61
|
+
*
|
|
62
|
+
* The boundary rule, enforced by `scripts/check-kernel-boundary.ts`: a module
|
|
63
|
+
* may declare an ORM relation into the kernel, never into another module, and
|
|
64
|
+
* the kernel never relates into a module.
|
|
65
|
+
*/
|
|
66
|
+
export { type ModuleContext } from './module-context.js';
|
|
67
|
+
export { lazyPort } from './lazy-port.js';
|
|
68
|
+
/**
|
|
69
|
+
* The public origin of this backend, and the error the second one throws when a
|
|
70
|
+
* production deployment has none (issue #218). The root's boot-time refusal,
|
|
71
|
+
* `assertPublicApiBaseUrlConfigured`, is not published: it is the host's.
|
|
72
|
+
*/
|
|
73
|
+
export { PublicApiBaseUrlNotConfiguredError, configuredPublicApiBaseUrl, resolvePublicApiBaseUrl, } from './public-api-base-url.js';
|
|
74
|
+
export { effectiveState, toModulePresenceDto } from './lifecycle/effective-state.js';
|
|
75
|
+
export type { CapabilityRegistry, ExclusiveCapabilityDeclaration, ModuleCapabilityDeclaration, } from './lifecycle/capability-registry.js';
|
|
76
|
+
/**
|
|
77
|
+
* The **P** half of `plugin-helpers` (§1.4c). `rethrowIfModuleDisabled` and
|
|
78
|
+
* `ModuleDisabledError` are mandated by composition-checklist item 7, and
|
|
79
|
+
* `requireModuleEnabled` is the sanctioned call for an entry point with no port
|
|
80
|
+
* and no request. The four worker/subscriber wrappers are not here — a composed
|
|
81
|
+
* module uses `ctx.worker` and `ctx.subscribe`.
|
|
82
|
+
*/
|
|
83
|
+
export { ModuleDisabledError, rethrowIfModuleDisabled, requireModuleEnabled, } from './lifecycle/plugin-helpers.js';
|
|
84
|
+
/**
|
|
85
|
+
* The platform's structured-logger shape: `ctx.log`, the optional worker
|
|
86
|
+
* logger, and every `log` a module is handed or holds.
|
|
87
|
+
*
|
|
88
|
+
* The **type** is published and the destination machinery around it is not —
|
|
89
|
+
* `attachPlatformLogger` and `moduleLogger` are the host's, and a module that
|
|
90
|
+
* could call the second would re-open by bare specifier the attribution seam
|
|
91
|
+
* `ModuleContext` closed. A module needs the name because it declares fields
|
|
92
|
+
* and constructor parameters of this shape; it needs none of the rest.
|
|
93
|
+
*
|
|
94
|
+
* It was published under the name `WorkerLogger` from
|
|
95
|
+
* `lifecycle/plugin-helpers.js`, an identical interface declared a second time
|
|
96
|
+
* because nothing had noticed the first. Naming a consumer rather than a shape
|
|
97
|
+
* is what made a second declaration look reasonable — `ctx.log` is not a
|
|
98
|
+
* worker's — and the two spellings then diverged into a third name, an alias
|
|
99
|
+
* called `ModuleLifecycleLogger`, colliding with the unrelated hook logger
|
|
100
|
+
* `@endora-commerce/contracts` publishes under exactly that name.
|
|
101
|
+
*/
|
|
102
|
+
export { type PlatformLogger } from './logging.js';
|
|
103
|
+
/**
|
|
104
|
+
* The one scope entry a module opens for itself (§1.3 row 13, 27 reaches). The
|
|
105
|
+
* platform-scope family below it is the host's: a module never asks which scope
|
|
106
|
+
* it is in, and the balance counter is a harness assertion.
|
|
107
|
+
*/
|
|
108
|
+
export { enterSystemScope } from './scope.js';
|
|
109
|
+
/**
|
|
110
|
+
* The audit seam (D-160.10). `AuditLogService` is the host's implementation and
|
|
111
|
+
* is deliberately **not** published: Principle XIII routes a domain write
|
|
112
|
+
* through `CommandBus.run`, which makes the bus the audit log's caller, and
|
|
113
|
+
* freezing the writer class into the platform contract would owe third-party
|
|
114
|
+
* packages a major version to change the shape the principle routes around.
|
|
115
|
+
*/
|
|
116
|
+
export { type AuditPort, type RecordAuditInput, type AuditLogFilter } from './ports/audit.js';
|
|
117
|
+
export { AuditLogEntry } from './audit/audit-log-entry.entity.js';
|
|
118
|
+
export { InProcessCacheRegistry, inProcessCaches, type InProcessCacheLayer, } from './cache/in-process-cache-registry.js';
|
|
119
|
+
export { hashPassword, verifyPassword } from './crypto/password-hasher.js';
|
|
120
|
+
export { SalesChannel } from './sales-channels/sales-channel.entity.js';
|
|
121
|
+
/**
|
|
122
|
+
* The channel cache as a module reads it. `toCachedChannel`, `CachedChannel`
|
|
123
|
+
* and the LRU TTL are how it is *filled*, which is the kernel's own half.
|
|
124
|
+
*/
|
|
125
|
+
export { SalesChannelsCache, SALES_CHANNELS_CACHE_KEY_PREFIX, SALES_CHANNELS_CACHE_NAMESPACE, type SalesChannelsCacheInvalidation, } from './sales-channels/sales-channels-cache.js';
|
|
126
|
+
export { parseHostMap, type ResolverError, } from './sales-channels/sales-channel-resolver.service.js';
|
|
127
|
+
export { NoSystemDefaultChannel } from './sales-channels/no-system-default-channel.error.js';
|
|
128
|
+
export { type MembershipMutationOptions, type MembershipMutationResult, } from './sales-channels/sales-channel-membership.service.js';
|
|
129
|
+
export { getResolvedChannel, currentSalesChannel, } from './sales-channels/sales-channel-resolver.middleware.js';
|
|
130
|
+
export { productIdsInRequestChannel, outOfRequestChannel, } from './sales-channels/request-channel-assortment.js';
|
|
131
|
+
export { Setting } from './settings/setting.entity.js';
|
|
132
|
+
export { SettingGroup } from './settings/setting-group.entity.js';
|
|
133
|
+
export { SettingValue } from './settings/setting-value.entity.js';
|
|
134
|
+
export { SettingNotRegistered, SettingOutOfScopeForChannel, SettingValueShapeMismatch, SettingsChannelIdInvalid, } from './settings/settings.service.js';
|
|
135
|
+
export { SETTINGS_CACHE_KEY_PREFIX, SETTINGS_CACHE_NAMESPACE, type SettingsCacheInvalidation, } from './settings/settings-cache.js';
|
|
136
|
+
export { encryptSecretValue, secretValueIsSet, SecretKeyMissing, SecretKeyInvalid, } from './settings/secret-value-codec.js';
|
|
137
|
+
export { type AdminPermissionChecker, type RequireAdminAnyFactory, type RequireAdminFactory, } from './ports/require-admin.js';
|
|
138
|
+
export { type OrganizationReadPort, type OrganizationSnapshot } from './ports/organizations.js';
|
|
139
|
+
export { type RequireCustomerGuard } from './ports/require-customer.js';
|
|
140
|
+
export { type SettingsReadPort, type SettingsReadResult } from './ports/settings.js';
|
|
141
|
+
export { type ResolvedChannel, type SalesChannelMembershipPort, type SalesChannelResolutionPort, } from './ports/sales-channel.js';
|
|
142
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kernel/index.ts"],"names":[],"mappings":"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"}
|