@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,160 @@
|
|
|
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 {} 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
|
+
/**
|
|
76
|
+
* The **P** half of `plugin-helpers` (§1.4c). `rethrowIfModuleDisabled` and
|
|
77
|
+
* `ModuleDisabledError` are mandated by composition-checklist item 7, and
|
|
78
|
+
* `requireModuleEnabled` is the sanctioned call for an entry point with no port
|
|
79
|
+
* and no request. The four worker/subscriber wrappers are not here — a composed
|
|
80
|
+
* module uses `ctx.worker` and `ctx.subscribe`.
|
|
81
|
+
*/
|
|
82
|
+
export { ModuleDisabledError, rethrowIfModuleDisabled, requireModuleEnabled, } from './lifecycle/plugin-helpers.js';
|
|
83
|
+
/**
|
|
84
|
+
* The platform's structured-logger shape: `ctx.log`, the optional worker
|
|
85
|
+
* logger, and every `log` a module is handed or holds.
|
|
86
|
+
*
|
|
87
|
+
* The **type** is published and the destination machinery around it is not —
|
|
88
|
+
* `attachPlatformLogger` and `moduleLogger` are the host's, and a module that
|
|
89
|
+
* could call the second would re-open by bare specifier the attribution seam
|
|
90
|
+
* `ModuleContext` closed. A module needs the name because it declares fields
|
|
91
|
+
* and constructor parameters of this shape; it needs none of the rest.
|
|
92
|
+
*
|
|
93
|
+
* It was published under the name `WorkerLogger` from
|
|
94
|
+
* `lifecycle/plugin-helpers.js`, an identical interface declared a second time
|
|
95
|
+
* because nothing had noticed the first. Naming a consumer rather than a shape
|
|
96
|
+
* is what made a second declaration look reasonable — `ctx.log` is not a
|
|
97
|
+
* worker's — and the two spellings then diverged into a third name, an alias
|
|
98
|
+
* called `ModuleLifecycleLogger`, colliding with the unrelated hook logger
|
|
99
|
+
* `@endora-commerce/contracts` publishes under exactly that name.
|
|
100
|
+
*/
|
|
101
|
+
export {} from './logging.js';
|
|
102
|
+
/**
|
|
103
|
+
* The one scope entry a module opens for itself (§1.3 row 13, 27 reaches). The
|
|
104
|
+
* platform-scope family below it is the host's: a module never asks which scope
|
|
105
|
+
* it is in, and the balance counter is a harness assertion.
|
|
106
|
+
*/
|
|
107
|
+
export { enterSystemScope } from './scope.js';
|
|
108
|
+
/**
|
|
109
|
+
* The audit seam (D-160.10). `AuditLogService` is the host's implementation and
|
|
110
|
+
* is deliberately **not** published: Principle XIII routes a domain write
|
|
111
|
+
* through `CommandBus.run`, which makes the bus the audit log's caller, and
|
|
112
|
+
* freezing the writer class into the platform contract would owe third-party
|
|
113
|
+
* packages a major version to change the shape the principle routes around.
|
|
114
|
+
*/
|
|
115
|
+
export {} from './ports/audit.js';
|
|
116
|
+
export { AuditLogEntry } from './audit/audit-log-entry.entity.js';
|
|
117
|
+
export { InProcessCacheRegistry, inProcessCaches, } from './cache/in-process-cache-registry.js';
|
|
118
|
+
export { hashPassword, verifyPassword } from './crypto/password-hasher.js';
|
|
119
|
+
export { SalesChannel } from './sales-channels/sales-channel.entity.js';
|
|
120
|
+
/**
|
|
121
|
+
* The channel cache as a module reads it. `toCachedChannel`, `CachedChannel`
|
|
122
|
+
* and the LRU TTL are how it is *filled*, which is the kernel's own half.
|
|
123
|
+
*/
|
|
124
|
+
export { SalesChannelsCache, SALES_CHANNELS_CACHE_KEY_PREFIX, SALES_CHANNELS_CACHE_NAMESPACE, } from './sales-channels/sales-channels-cache.js';
|
|
125
|
+
// `SalesChannelResolverService` itself is **not** published (§1.4e): a consumer
|
|
126
|
+
// resolves `salesChannelResolutionPort` and types on `SalesChannelResolutionPort`.
|
|
127
|
+
// `parseHostMap` is the host-map parser a composition root calls, and
|
|
128
|
+
// `ResolverError` is the refusal shape the port's `resolveActive` returns.
|
|
129
|
+
export { parseHostMap, } from './sales-channels/sales-channel-resolver.service.js';
|
|
130
|
+
export { NoSystemDefaultChannel } from './sales-channels/no-system-default-channel.error.js';
|
|
131
|
+
// `SalesChannelMembershipService` itself is **not** published (§1.4e): a
|
|
132
|
+
// consumer resolves `salesChannelMembershipPort` and types on
|
|
133
|
+
// `SalesChannelMembershipPort`. The two mutation types stay — they are
|
|
134
|
+
// parameter and return shapes of that port's own methods.
|
|
135
|
+
export {} from './sales-channels/sales-channel-membership.service.js';
|
|
136
|
+
// `registerSalesChannelResolverMiddleware` is the host's: the root registers
|
|
137
|
+
// the middleware, a module reads the channel it resolved.
|
|
138
|
+
export { getResolvedChannel, currentSalesChannel, } from './sales-channels/sales-channel-resolver.middleware.js';
|
|
139
|
+
export { productIdsInRequestChannel, outOfRequestChannel, } from './sales-channels/request-channel-assortment.js';
|
|
140
|
+
export { Setting } from './settings/setting.entity.js';
|
|
141
|
+
export { SettingGroup } from './settings/setting-group.entity.js';
|
|
142
|
+
export { SettingValue } from './settings/setting-value.entity.js';
|
|
143
|
+
// `SettingsService` itself is **not** published (§1.4d): a consumer resolves
|
|
144
|
+
// `settingsReadPort` and types on `SettingsReadPort`. The four errors stay —
|
|
145
|
+
// they are what a caller of that port catches, and the port's doc block names
|
|
146
|
+
// each one in a `@throws`.
|
|
147
|
+
export { SettingNotRegistered, SettingOutOfScopeForChannel, SettingValueShapeMismatch, SettingsChannelIdInvalid, } from './settings/settings.service.js';
|
|
148
|
+
// The settings cache's *invalidation* seam and its key namespace. `SettingsCache`
|
|
149
|
+
// itself is the store the kernel reads through (§1.4d); a module goes through
|
|
150
|
+
// `settingsReadPort`.
|
|
151
|
+
export { SETTINGS_CACHE_KEY_PREFIX, SETTINGS_CACHE_NAMESPACE, } from './settings/settings-cache.js';
|
|
152
|
+
// A module writes a secret and asks whether one is set; decrypting is the
|
|
153
|
+
// store's, and the envelope shape with it.
|
|
154
|
+
export { encryptSecretValue, secretValueIsSet, SecretKeyMissing, SecretKeyInvalid, } from './settings/secret-value-codec.js';
|
|
155
|
+
export {} from './ports/require-admin.js';
|
|
156
|
+
export {} from './ports/organizations.js';
|
|
157
|
+
export {} from './ports/require-customer.js';
|
|
158
|
+
export {} from './ports/settings.js';
|
|
159
|
+
export {} from './ports/sales-channel.js';
|
|
160
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kernel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAEH,OAAO,EAAsB,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;;GAIG;AACH,OAAO,EACL,kCAAkC,EAClC,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAQrF;;;;;;GAMG;AACH,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAEvC;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAuB,MAAM,cAAc,CAAC;AAEnD;;;;GAIG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;GAMG;AACH,OAAO,EAA8D,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,EACL,sBAAsB,EACtB,eAAe,GAEhB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE;;;GAGG;AACH,OAAO,EACL,kBAAkB,EAClB,+BAA+B,EAC/B,8BAA8B,GAE/B,MAAM,0CAA0C,CAAC;AAClD,gFAAgF;AAChF,mFAAmF;AACnF,sEAAsE;AACtE,2EAA2E;AAC3E,OAAO,EACL,YAAY,GAEb,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,yEAAyE;AACzE,8DAA8D;AAC9D,uEAAuE;AACvE,0DAA0D;AAC1D,OAAO,EAGN,MAAM,sDAAsD,CAAC;AAC9D,6EAA6E;AAC7E,0DAA0D;AAC1D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,2BAA2B;AAC3B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,gCAAgC,CAAC;AACxC,kFAAkF;AAClF,8EAA8E;AAC9E,sBAAsB;AACtB,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GAEzB,MAAM,8BAA8B,CAAC;AACtC,0EAA0E;AAC1E,2CAA2C;AAC3C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAIN,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAwD,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAA6B,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAkD,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAIN,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { ModuleContext } from './module-context.js';
|
|
2
|
+
/**
|
|
3
|
+
* A stand-in that resolves `name` from the container on **every method call**
|
|
4
|
+
* rather than once, when the holder is constructed.
|
|
5
|
+
*
|
|
6
|
+
* This exists because feature 072 kept producing the same two failures, and
|
|
7
|
+
* neither is visible at the call site or caught by `tsc`:
|
|
8
|
+
*
|
|
9
|
+
* 1. **Lifetime.** A name registered with `providePort` is a transient gate
|
|
10
|
+
* that consults its module's effective state. Awilix's strict mode refuses
|
|
11
|
+
* a singleton that captures one — correctly, because a captured gate goes
|
|
12
|
+
* on answering after an operator switches the module off.
|
|
13
|
+
* 2. **Ordering.** A name a composition root registers does not exist yet when
|
|
14
|
+
* a module composes — that is the whole shape of a composition since D-45:
|
|
15
|
+
* `composeModules(MODULES, …)` runs first and every root contribution lands
|
|
16
|
+
* after it. A capture taken during registration therefore captures nothing,
|
|
17
|
+
* or, worse, captures the module's own default and never sees the root's
|
|
18
|
+
* value. That happened twice.
|
|
19
|
+
*
|
|
20
|
+
* The rule `scripts/check-port-dependencies.ts` enforces is therefore blunt: a
|
|
21
|
+
* module may capture only names it owns and the handful of eagerly-registered
|
|
22
|
+
* kernel ones. Everything else goes through the cradle at the point of use, and
|
|
23
|
+
* this is the ergonomic way to spell that when a constructor wants an object
|
|
24
|
+
* rather than a getter.
|
|
25
|
+
*
|
|
26
|
+
* ```ts
|
|
27
|
+
* new GaConfigService(lazyPort<SettingsService>(ctx, 'settingsReadPort'), …)
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* **Methods only.** The proxy forwards calls; it does not forward property
|
|
31
|
+
* reads, because a property read cannot be deferred — there is nothing to
|
|
32
|
+
* defer it to. A collaborator exposing data rather than behaviour is not a
|
|
33
|
+
* candidate for this, and should be read from the cradle explicitly where it
|
|
34
|
+
* is used.
|
|
35
|
+
*
|
|
36
|
+
* **And therefore: never feature-detect through one** (D-97.3). The `get` trap
|
|
37
|
+
* below answers *every* non-symbol property with a function, so `x.maybe`,
|
|
38
|
+
* `!x.maybe` and `typeof x.maybe === 'function'` are all truthy whatever is
|
|
39
|
+
* registered, and `x.maybe?.()` always calls — into a provider that may not
|
|
40
|
+
* implement it, where the forward throws "is not a function". This is not a
|
|
41
|
+
* sharp edge to be careful around, it is impossible by construction, and the
|
|
42
|
+
* trap **cannot be fixed** to answer honestly: making the property read tell
|
|
43
|
+
* the truth means resolving the name at access time to look at the real object,
|
|
44
|
+
* and for a gated port that turns a `typeof` probe into a `ModuleDisabledError`
|
|
45
|
+
* — a presence check that throws when the module is absent, which is worse than
|
|
46
|
+
* the hazard it repairs. Deferring resolution to the call is the whole reason
|
|
47
|
+
* this function exists (items 1 and 2 above).
|
|
48
|
+
*
|
|
49
|
+
* So the rule is at the type level instead: **no published port, and no
|
|
50
|
+
* interface extending one, may declare an optional method.** Optional
|
|
51
|
+
* parameters and optional data properties on record types are untouched. The
|
|
52
|
+
* one occurrence in the tree — `catalog` widening the custom-field read port
|
|
53
|
+
* with `publishInvalidate?` — fired its recovery branch on every integrity
|
|
54
|
+
* error and turned a self-healing cache window into a 500 on the attribute
|
|
55
|
+
* screens; D-97.1 replaced it with a required method that answers the
|
|
56
|
+
* consumer's actual question. `check:port-shape` refuses the shape.
|
|
57
|
+
*/
|
|
58
|
+
export declare function lazyPort<T extends object>(ctx: ModuleContext, name: string): T;
|
|
59
|
+
//# sourceMappingURL=lazy-port.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy-port.d.ts","sourceRoot":"","sources":["../../src/kernel/lazy-port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAyB9E"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A stand-in that resolves `name` from the container on **every method call**
|
|
3
|
+
* rather than once, when the holder is constructed.
|
|
4
|
+
*
|
|
5
|
+
* This exists because feature 072 kept producing the same two failures, and
|
|
6
|
+
* neither is visible at the call site or caught by `tsc`:
|
|
7
|
+
*
|
|
8
|
+
* 1. **Lifetime.** A name registered with `providePort` is a transient gate
|
|
9
|
+
* that consults its module's effective state. Awilix's strict mode refuses
|
|
10
|
+
* a singleton that captures one — correctly, because a captured gate goes
|
|
11
|
+
* on answering after an operator switches the module off.
|
|
12
|
+
* 2. **Ordering.** A name a composition root registers does not exist yet when
|
|
13
|
+
* a module composes — that is the whole shape of a composition since D-45:
|
|
14
|
+
* `composeModules(MODULES, …)` runs first and every root contribution lands
|
|
15
|
+
* after it. A capture taken during registration therefore captures nothing,
|
|
16
|
+
* or, worse, captures the module's own default and never sees the root's
|
|
17
|
+
* value. That happened twice.
|
|
18
|
+
*
|
|
19
|
+
* The rule `scripts/check-port-dependencies.ts` enforces is therefore blunt: a
|
|
20
|
+
* module may capture only names it owns and the handful of eagerly-registered
|
|
21
|
+
* kernel ones. Everything else goes through the cradle at the point of use, and
|
|
22
|
+
* this is the ergonomic way to spell that when a constructor wants an object
|
|
23
|
+
* rather than a getter.
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* new GaConfigService(lazyPort<SettingsService>(ctx, 'settingsReadPort'), …)
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* **Methods only.** The proxy forwards calls; it does not forward property
|
|
30
|
+
* reads, because a property read cannot be deferred — there is nothing to
|
|
31
|
+
* defer it to. A collaborator exposing data rather than behaviour is not a
|
|
32
|
+
* candidate for this, and should be read from the cradle explicitly where it
|
|
33
|
+
* is used.
|
|
34
|
+
*
|
|
35
|
+
* **And therefore: never feature-detect through one** (D-97.3). The `get` trap
|
|
36
|
+
* below answers *every* non-symbol property with a function, so `x.maybe`,
|
|
37
|
+
* `!x.maybe` and `typeof x.maybe === 'function'` are all truthy whatever is
|
|
38
|
+
* registered, and `x.maybe?.()` always calls — into a provider that may not
|
|
39
|
+
* implement it, where the forward throws "is not a function". This is not a
|
|
40
|
+
* sharp edge to be careful around, it is impossible by construction, and the
|
|
41
|
+
* trap **cannot be fixed** to answer honestly: making the property read tell
|
|
42
|
+
* the truth means resolving the name at access time to look at the real object,
|
|
43
|
+
* and for a gated port that turns a `typeof` probe into a `ModuleDisabledError`
|
|
44
|
+
* — a presence check that throws when the module is absent, which is worse than
|
|
45
|
+
* the hazard it repairs. Deferring resolution to the call is the whole reason
|
|
46
|
+
* this function exists (items 1 and 2 above).
|
|
47
|
+
*
|
|
48
|
+
* So the rule is at the type level instead: **no published port, and no
|
|
49
|
+
* interface extending one, may declare an optional method.** Optional
|
|
50
|
+
* parameters and optional data properties on record types are untouched. The
|
|
51
|
+
* one occurrence in the tree — `catalog` widening the custom-field read port
|
|
52
|
+
* with `publishInvalidate?` — fired its recovery branch on every integrity
|
|
53
|
+
* error and turned a self-healing cache window into a 500 on the attribute
|
|
54
|
+
* screens; D-97.1 replaced it with a required method that answers the
|
|
55
|
+
* consumer's actual question. `check:port-shape` refuses the shape.
|
|
56
|
+
*/
|
|
57
|
+
export function lazyPort(ctx, name) {
|
|
58
|
+
return new Proxy({}, {
|
|
59
|
+
get(_target, property) {
|
|
60
|
+
if (typeof property === 'symbol')
|
|
61
|
+
return undefined;
|
|
62
|
+
return (...args) => {
|
|
63
|
+
const resolved = ctx.cradle()[name];
|
|
64
|
+
if (resolved === undefined) {
|
|
65
|
+
throw new Error(`[kernel] '${name}' is not registered in this composition — ` +
|
|
66
|
+
`${ctx.module.id} resolved it lazily and found nothing.`);
|
|
67
|
+
}
|
|
68
|
+
const method = resolved[property];
|
|
69
|
+
if (typeof method !== 'function') {
|
|
70
|
+
throw new Error(`[kernel] '${name}.${property}' is not a function — ` +
|
|
71
|
+
`\`lazyPort\` forwards method calls only (see its note on property reads).`);
|
|
72
|
+
}
|
|
73
|
+
return method.apply(resolved, args);
|
|
74
|
+
};
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=lazy-port.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy-port.js","sourceRoot":"","sources":["../../src/kernel/lazy-port.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,MAAM,UAAU,QAAQ,CAAmB,GAAkB,EAAE,IAAY;IACzE,OAAO,IAAI,KAAK,CAAC,EAAO,EAAE;QACxB,GAAG,CAAC,OAAO,EAAE,QAAQ;YACnB,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;YACnD,OAAO,CAAC,GAAG,IAAe,EAAW,EAAE;gBACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAA2B,CAAC,IAAI,CAE9C,CAAC;gBACd,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,4CAA4C;wBAC3D,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,wCAAwC,CAC3D,CAAC;gBACJ,CAAC;gBACD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,IAAI,QAAQ,wBAAwB;wBACnD,2EAA2E,CAC9E,CAAC;gBACJ,CAAC;gBACD,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtC,CAAC,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { EntityManager } from '@mikro-orm/postgresql';
|
|
2
|
+
import type { ModuleManifest } from '@endora-commerce/contracts';
|
|
3
|
+
/**
|
|
4
|
+
* Operator activation — the second presence axis (feature 073, Constitution
|
|
5
|
+
* XVII, research R-5).
|
|
6
|
+
*
|
|
7
|
+
* Platform availability answers "is this module installed and wired in this
|
|
8
|
+
* deployment?" and lives in `module_registrations`. This file answers "does
|
|
9
|
+
* this client want this capability?", which lives in an ordinary `Setting`
|
|
10
|
+
* row the module declares in its manifest.
|
|
11
|
+
*
|
|
12
|
+
* Two properties of this read are load-bearing:
|
|
13
|
+
*
|
|
14
|
+
* - **It does not go through `SettingsService`.** Every read path there is
|
|
15
|
+
* `async` behind a two-layer cache, while the hot-path gate must stay a
|
|
16
|
+
* synchronous in-memory lookup (FR-004). Reading the rows keeps the
|
|
17
|
+
* dependency on the settings *schema* — an edge the orchestrator already
|
|
18
|
+
* has — rather than on the settings *service graph*, which is the edge
|
|
19
|
+
* that would create a bootstrap cycle (FR-070).
|
|
20
|
+
* - **It stops at two tiers.** Settings normally resolve per-channel
|
|
21
|
+
* (`setting_values`) → `global_value` → `default_value`. Activation is
|
|
22
|
+
* platform-wide (FR-009), so the per-channel tier is never joined;
|
|
23
|
+
* including it would reintroduce channel dependence through the back door
|
|
24
|
+
* (Constitution XII).
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* A module's activation declaration, distilled from its manifest. Keeping it
|
|
28
|
+
* as plain data rather than passing manifests around means the registry cache
|
|
29
|
+
* — which lives on the hot path — never imports the manifest graph.
|
|
30
|
+
*/
|
|
31
|
+
export interface ModuleActivationDeclaration {
|
|
32
|
+
readonly moduleId: string;
|
|
33
|
+
/** `null` for a module that declared itself non-deactivatable. */
|
|
34
|
+
readonly settingCode: string | null;
|
|
35
|
+
/** Applies when the Setting row does not exist yet, or carries no override. */
|
|
36
|
+
readonly default: boolean;
|
|
37
|
+
/** Operator-facing reason; non-null exactly when `settingCode` is null. */
|
|
38
|
+
readonly nonDeactivatableReason: string | null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Distil the activation declarations from a manifest list. A module that
|
|
42
|
+
* declares nothing is omitted: it owns no operator control, so only the
|
|
43
|
+
* platform axis governs it until its batch converts it.
|
|
44
|
+
*/
|
|
45
|
+
export declare function activationDeclarationsFrom(manifests: readonly ModuleManifest[]): ModuleActivationDeclaration[];
|
|
46
|
+
/**
|
|
47
|
+
* Resolve each declared module's activation.
|
|
48
|
+
*
|
|
49
|
+
* One query, keyed by an explicit code list built from the declarations —
|
|
50
|
+
* never a `LIKE` scan, because `Setting.code`'s only index is its unique
|
|
51
|
+
* constraint and the adopted codes make the suffix non-uniform anyway.
|
|
52
|
+
*
|
|
53
|
+
* Fail-closed reading (FR-005): a value that is not a JSON boolean resolves
|
|
54
|
+
* to **off**, because `global_value` is jsonb and its `null` is ambiguous
|
|
55
|
+
* between "no override" and a literal JSON null. A missing row resolves to
|
|
56
|
+
* the manifest-declared default — an explicit state, not a fall-open.
|
|
57
|
+
*
|
|
58
|
+
* A non-deactivatable module resolves to `true` without being queried at all,
|
|
59
|
+
* which is what removes the recursion that would otherwise arise from gating
|
|
60
|
+
* `settings` on a value stored in `settings` (FR-071).
|
|
61
|
+
*/
|
|
62
|
+
export declare function resolveActivation(em: EntityManager, declarations: readonly ModuleActivationDeclaration[]): Promise<Map<string, boolean>>;
|
|
63
|
+
//# sourceMappingURL=activation-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation-resolver.d.ts","sourceRoot":"","sources":["../../../src/kernel/lifecycle/activation-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,cAAc,EAAE,GACnC,2BAA2B,EAAE,CAsB/B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,aAAa,EACjB,YAAY,EAAE,SAAS,2BAA2B,EAAE,GACnD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAuB/B"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Setting } from '../settings/setting.entity.js';
|
|
2
|
+
/**
|
|
3
|
+
* Distil the activation declarations from a manifest list. A module that
|
|
4
|
+
* declares nothing is omitted: it owns no operator control, so only the
|
|
5
|
+
* platform axis governs it until its batch converts it.
|
|
6
|
+
*/
|
|
7
|
+
export function activationDeclarationsFrom(manifests) {
|
|
8
|
+
const declarations = [];
|
|
9
|
+
for (const manifest of manifests) {
|
|
10
|
+
const activation = manifest.activation;
|
|
11
|
+
if (!activation)
|
|
12
|
+
continue;
|
|
13
|
+
if ('nonDeactivatable' in activation) {
|
|
14
|
+
declarations.push({
|
|
15
|
+
moduleId: manifest.id,
|
|
16
|
+
settingCode: null,
|
|
17
|
+
default: true,
|
|
18
|
+
nonDeactivatableReason: activation.reason,
|
|
19
|
+
});
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
declarations.push({
|
|
23
|
+
moduleId: manifest.id,
|
|
24
|
+
settingCode: activation.settingCode,
|
|
25
|
+
default: activation.default,
|
|
26
|
+
nonDeactivatableReason: null,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return declarations;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Resolve each declared module's activation.
|
|
33
|
+
*
|
|
34
|
+
* One query, keyed by an explicit code list built from the declarations —
|
|
35
|
+
* never a `LIKE` scan, because `Setting.code`'s only index is its unique
|
|
36
|
+
* constraint and the adopted codes make the suffix non-uniform anyway.
|
|
37
|
+
*
|
|
38
|
+
* Fail-closed reading (FR-005): a value that is not a JSON boolean resolves
|
|
39
|
+
* to **off**, because `global_value` is jsonb and its `null` is ambiguous
|
|
40
|
+
* between "no override" and a literal JSON null. A missing row resolves to
|
|
41
|
+
* the manifest-declared default — an explicit state, not a fall-open.
|
|
42
|
+
*
|
|
43
|
+
* A non-deactivatable module resolves to `true` without being queried at all,
|
|
44
|
+
* which is what removes the recursion that would otherwise arise from gating
|
|
45
|
+
* `settings` on a value stored in `settings` (FR-071).
|
|
46
|
+
*/
|
|
47
|
+
export async function resolveActivation(em, declarations) {
|
|
48
|
+
const resolved = new Map();
|
|
49
|
+
const byCode = new Map();
|
|
50
|
+
for (const declaration of declarations) {
|
|
51
|
+
if (declaration.settingCode === null) {
|
|
52
|
+
resolved.set(declaration.moduleId, true);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
byCode.set(declaration.settingCode, declaration);
|
|
56
|
+
resolved.set(declaration.moduleId, declaration.default);
|
|
57
|
+
}
|
|
58
|
+
if (byCode.size === 0)
|
|
59
|
+
return resolved;
|
|
60
|
+
const rows = await em.find(Setting, { code: { $in: [...byCode.keys()] } });
|
|
61
|
+
for (const row of rows) {
|
|
62
|
+
const declaration = byCode.get(row.code);
|
|
63
|
+
if (!declaration)
|
|
64
|
+
continue;
|
|
65
|
+
const value = row.globalValue ?? row.defaultValue;
|
|
66
|
+
resolved.set(declaration.moduleId, typeof value === 'boolean' ? value : false);
|
|
67
|
+
}
|
|
68
|
+
return resolved;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=activation-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activation-resolver.js","sourceRoot":"","sources":["../../../src/kernel/lifecycle/activation-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAyCxD;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAoC;IAEpC,MAAM,YAAY,GAAkC,EAAE,CAAC;IACvD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,IAAI,kBAAkB,IAAI,UAAU,EAAE,CAAC;YACrC,YAAY,CAAC,IAAI,CAAC;gBAChB,QAAQ,EAAE,QAAQ,CAAC,EAAE;gBACrB,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,IAAI;gBACb,sBAAsB,EAAE,UAAU,CAAC,MAAM;aAC1C,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,YAAY,CAAC,IAAI,CAAC;YAChB,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACrB,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAiB,EACjB,YAAoD;IAEpD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuC,CAAC;IAE9D,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,WAAW,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YACrC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACjD,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEvC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW;YAAE,SAAS;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,YAAY,CAAC;QAClD,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import type { ModuleManifest } from '@endora-commerce/contracts';
|
|
2
|
+
/**
|
|
3
|
+
* The derived capability registry — which modules declare membership of which
|
|
4
|
+
* named family, and which module owns each family it is mutually exclusive in
|
|
5
|
+
* (feature 132, `specs/132-connector-family-discovery/contracts/module-capabilities.md`,
|
|
6
|
+
* `data-model.md` §2).
|
|
7
|
+
*
|
|
8
|
+
* ## What it replaces
|
|
9
|
+
*
|
|
10
|
+
* Three hand-maintained arrays in `@endora-commerce/contracts` —
|
|
11
|
+
* `PIM_CONNECTOR_MODULES`, `INVOICE_LEDGER_MODULES`, `ERP_CONNECTOR_MODULES` —
|
|
12
|
+
* each of which is a copy of a fact the manifests already carry. The copy is
|
|
13
|
+
* D-100's shape and it had already gone wrong in both directions: two of the four
|
|
14
|
+
* shipped PIM connectors were not on the list, so exclusivity covered 2 of the 12
|
|
15
|
+
* ordered pairs; and an **overlay** module had to be written into a core contracts
|
|
16
|
+
* file to join its family, which is Principle XV failing in the only way it can
|
|
17
|
+
* fail quietly — the overlay was written correctly and the core edit was made
|
|
18
|
+
* anyway, because there was no other way in.
|
|
19
|
+
*
|
|
20
|
+
* The rule this is an instance of is the one `requiredModulesFrom`'s header
|
|
21
|
+
* states: derive it on every composition, so a member who joins or withdraws
|
|
22
|
+
* changes the answer in the same run, with no list to edit.
|
|
23
|
+
*
|
|
24
|
+
* ## Why it is a parameter and not an import
|
|
25
|
+
*
|
|
26
|
+
* **The platform may not import a module** (D-52/D-53). So the manifests arrive
|
|
27
|
+
* as an argument, exactly as they do for `activationDeclarationsFrom` and
|
|
28
|
+
* `requiredModulesFrom`, and the population is whatever the composition root
|
|
29
|
+
* resolved: core modules, this deployment's overlay modules, and every installed
|
|
30
|
+
* Endora module package. That is the whole reason the field exists — a connector
|
|
31
|
+
* living outside this repository can declare membership, and no file in this
|
|
32
|
+
* repository names it.
|
|
33
|
+
*
|
|
34
|
+
* ## Why it is plain data
|
|
35
|
+
*
|
|
36
|
+
* Same reason `ModuleActivationDeclaration` is: it is installed into the registry
|
|
37
|
+
* cache, which is on the hot path, and that cache must never import the manifest
|
|
38
|
+
* graph.
|
|
39
|
+
*/
|
|
40
|
+
/** One module's capability declarations, distilled from its manifest. */
|
|
41
|
+
export interface ModuleCapabilityDeclaration {
|
|
42
|
+
readonly moduleId: string;
|
|
43
|
+
readonly capabilities: readonly string[];
|
|
44
|
+
}
|
|
45
|
+
/** One exclusive capability, and who owns it. */
|
|
46
|
+
export interface ExclusiveCapabilityDeclaration {
|
|
47
|
+
readonly key: string;
|
|
48
|
+
readonly ownerModuleId: string;
|
|
49
|
+
readonly errorCode: string;
|
|
50
|
+
}
|
|
51
|
+
export interface CapabilityRegistry {
|
|
52
|
+
readonly declarations: readonly ModuleCapabilityDeclaration[];
|
|
53
|
+
readonly exclusive: readonly ExclusiveCapabilityDeclaration[];
|
|
54
|
+
}
|
|
55
|
+
/** One key claimed by more than one installed module. */
|
|
56
|
+
export interface ContestedCapabilityFinding {
|
|
57
|
+
readonly key: string;
|
|
58
|
+
readonly ownerModuleIds: readonly string[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Two modules claim to own one capability (R3.4).
|
|
62
|
+
*
|
|
63
|
+
* A distinct error type, per D-101's closing rule about the refusals that share a
|
|
64
|
+
* manifest declaration and share nothing else: this refuses a **deployment that
|
|
65
|
+
* was assembled wrong**, from the manifests, before the first module registers —
|
|
66
|
+
* not a transition an operator asked for, and not something to answer with an
|
|
67
|
+
* HTTP envelope.
|
|
68
|
+
*
|
|
69
|
+
* It fails closed rather than picking a claimant, because a contested capability
|
|
70
|
+
* routes to neither: the refusal code, the lock row and the admin page all belong
|
|
71
|
+
* to "the owner", and with two of them every one of those three answers is
|
|
72
|
+
* arbitrary. `check:error-translations` reaches the same verdict about a code with
|
|
73
|
+
* two declarers, and for the same reason.
|
|
74
|
+
*/
|
|
75
|
+
export declare class ContestedCapabilityError extends Error {
|
|
76
|
+
readonly findings: readonly ContestedCapabilityFinding[];
|
|
77
|
+
constructor(findings: readonly ContestedCapabilityFinding[]);
|
|
78
|
+
}
|
|
79
|
+
/** One member of an exclusive key that ships activated. */
|
|
80
|
+
export interface DefaultActivatedMemberFinding {
|
|
81
|
+
readonly moduleId: string;
|
|
82
|
+
readonly key: string;
|
|
83
|
+
/** The activation control whose declared default is the problem. */
|
|
84
|
+
readonly settingCode: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* A member of an **exclusive** capability declares `activation.default: true`
|
|
88
|
+
* (R3.6, spec FR-016).
|
|
89
|
+
*
|
|
90
|
+
* ## Why this is a refusal and not a runtime tolerance
|
|
91
|
+
*
|
|
92
|
+
* `resolveActivation` returns `Map<string, boolean>` and carries **no provenance**:
|
|
93
|
+
* nothing downstream can tell "the operator wrote this row" from "no row exists and
|
|
94
|
+
* the manifest said `true`". So a mutual exclusion resolved on the activation axis
|
|
95
|
+
* cannot ask the question it needs to ask, and a default-activated member holds a
|
|
96
|
+
* claim nobody made — which is what an operator meets as a refusal naming a
|
|
97
|
+
* connector they never configured.
|
|
98
|
+
*
|
|
99
|
+
* The tempting repair is to add provenance and have the exclusion require an
|
|
100
|
+
* **explicit** choice. It is unsafe, and `research.md` D6 records why: member `A`
|
|
101
|
+
* default-activated and member `B` explicitly activated would then **both** be
|
|
102
|
+
* active, because the test that was supposed to refuse `B` now ignores `A`. A mutual
|
|
103
|
+
* exclusion may not fail open. Refusing the manifest makes the state unreachable
|
|
104
|
+
* rather than tolerated, which is the difference between a guard and a repair.
|
|
105
|
+
*
|
|
106
|
+
* ## Why it is weaker-looking than the defect it prevents, and is not
|
|
107
|
+
*
|
|
108
|
+
* The exclusion is a `pre` interceptor on the activation route, so it guards the
|
|
109
|
+
* **transition** and not the **existing state**: two default-activated members are
|
|
110
|
+
* both present from the first boot and no transition ever happens to be refused.
|
|
111
|
+
* Nothing surfaces it. That is not a hypothetical — it was measured on a freshly
|
|
112
|
+
* migrated database, three connectors deep, before this refusal existed.
|
|
113
|
+
*
|
|
114
|
+
* ## Why not `defineModuleManifest`
|
|
115
|
+
*
|
|
116
|
+
* Same reason {@link ContestedCapabilityError} is not there: that function sees one
|
|
117
|
+
* manifest and cannot see whether the key is **exclusive**, which is the owner's
|
|
118
|
+
* declaration. Both facts are in hand only here. `check:port-dependencies` carries
|
|
119
|
+
* the same assertion as an earlier instrument for this repository's own modules
|
|
120
|
+
* (R3.7); the two layers cover what the other cannot — the check sees a member merged
|
|
121
|
+
* here before anybody boots, and this sees a connector installed from npm, which no
|
|
122
|
+
* check in this repository walks.
|
|
123
|
+
*/
|
|
124
|
+
export declare class DefaultActivatedMemberError extends Error {
|
|
125
|
+
readonly findings: readonly DefaultActivatedMemberFinding[];
|
|
126
|
+
constructor(findings: readonly DefaultActivatedMemberFinding[]);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Distil the capability registry from a manifest list.
|
|
130
|
+
*
|
|
131
|
+
* A module that declares nothing is omitted, and so is one whose `capabilities`
|
|
132
|
+
* is present but empty: an empty array says nothing a missing field does not, and
|
|
133
|
+
* carrying it would put a member with no family into every family read.
|
|
134
|
+
*
|
|
135
|
+
* **A member of a key that no installed module owns is not an error** (R3.5). The
|
|
136
|
+
* capability is simply not exclusive in that deployment and the member works.
|
|
137
|
+
* Refusing would turn a shared layer into an undeclared hard dependency, which is
|
|
138
|
+
* what `dependencies` is for and which the member already declares if it genuinely
|
|
139
|
+
* needs it.
|
|
140
|
+
*
|
|
141
|
+
* Order is manifest order, deliberately: every message derived from this reads in
|
|
142
|
+
* the order the deployment composes, which is the order the author is looking at.
|
|
143
|
+
*/
|
|
144
|
+
export declare function capabilityRegistryFrom(manifests: readonly ModuleManifest[]): CapabilityRegistry;
|
|
145
|
+
//# sourceMappingURL=capability-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-registry.d.ts","sourceRoot":"","sources":["../../../src/kernel/lifecycle/capability-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,yEAAyE;AACzE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,iDAAiD;AACjD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC9D,QAAQ,CAAC,SAAS,EAAE,SAAS,8BAA8B,EAAE,CAAC;CAC/D;AAED,yDAAyD;AACzD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,QAAQ,EAAE,SAAS,0BAA0B,EAAE,CAAC;gBAE7C,QAAQ,EAAE,SAAS,0BAA0B,EAAE;CAK5D;AAwBD,2DAA2D;AAC3D,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,QAAQ,EAAE,SAAS,6BAA6B,EAAE,CAAC;gBAEhD,QAAQ,EAAE,SAAS,6BAA6B,EAAE;CAK/D;AAiCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,cAAc,EAAE,GACnC,kBAAkB,CAwDpB"}
|