@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,223 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { LifecycleError } from '../services/orchestrator.js';
|
|
3
|
+
import { buildStaticRegistry } from '../services/static-registry.js';
|
|
4
|
+
import { orchestratorFor } from './operator-runtime.js';
|
|
5
|
+
/**
|
|
6
|
+
* `module:uninstall <module-id> [--hard] [--force] [--json]` — the body
|
|
7
|
+
* (`specs/115-lifecycle-container-move/`, D115-1).
|
|
8
|
+
*
|
|
9
|
+
* Soft uninstall (default): unregisters the module's settings, marks the
|
|
10
|
+
* registry row as `uninstalled`, leaves DB tables / data intact.
|
|
11
|
+
* Hard uninstall (`--hard`): also reverts the module's migrations and
|
|
12
|
+
* deletes the registry row. `--hard` additionally requires `--force` — on every
|
|
13
|
+
* run, terminal or not (owner ruling **D-217**), because no caller supplies
|
|
14
|
+
* {@link OperatorRuntime.confirm} and absent means this run cannot ask
|
|
15
|
+
* (D115-7, R2.7).
|
|
16
|
+
*
|
|
17
|
+
* Exit codes (per `specs/018-module-lifecycle/contracts/cli-commands.md` §C-2),
|
|
18
|
+
* preserved byte-for-byte by the move (R2.3):
|
|
19
|
+
* - 0 success (or already uninstalled — no-op)
|
|
20
|
+
* - 64 misuse: bad argv, --hard without --force (D-217: every run)
|
|
21
|
+
* - 66 conflict: dependents still installed
|
|
22
|
+
* - 70 internal error during uninstall
|
|
23
|
+
* - 75 lock unavailable
|
|
24
|
+
* - 77 refused: the module declares itself non-deactivatable (D-69)
|
|
25
|
+
*/
|
|
26
|
+
const UninstallArgsSchema = z.object({
|
|
27
|
+
id: z.string().regex(/^_?[a-z][a-z0-9_]*$/),
|
|
28
|
+
hard: z.boolean().default(false),
|
|
29
|
+
force: z.boolean().default(false),
|
|
30
|
+
json: z.boolean().default(false),
|
|
31
|
+
});
|
|
32
|
+
function parseArgv(argv) {
|
|
33
|
+
const positional = [];
|
|
34
|
+
let hard = false;
|
|
35
|
+
let force = false;
|
|
36
|
+
let json = false;
|
|
37
|
+
// Backward-compat aliases for the legacy modules:uninstall flags.
|
|
38
|
+
for (const arg of argv) {
|
|
39
|
+
if (arg === '--hard')
|
|
40
|
+
hard = true;
|
|
41
|
+
else if (arg === '--force')
|
|
42
|
+
force = true;
|
|
43
|
+
else if (arg === '--json')
|
|
44
|
+
json = true;
|
|
45
|
+
else if (arg === '--remove-settings') {
|
|
46
|
+
hard = true;
|
|
47
|
+
force = true;
|
|
48
|
+
}
|
|
49
|
+
else if (arg === '--preserve-settings') {
|
|
50
|
+
// soft default — no-op flag, kept for back-compat
|
|
51
|
+
}
|
|
52
|
+
else if (arg.startsWith('--'))
|
|
53
|
+
return { error: `unknown flag: ${arg}` };
|
|
54
|
+
else
|
|
55
|
+
positional.push(arg);
|
|
56
|
+
}
|
|
57
|
+
if (positional.length === 0)
|
|
58
|
+
return { error: 'missing module id' };
|
|
59
|
+
if (positional.length > 1) {
|
|
60
|
+
return { error: `extra positional args: ${positional.slice(1).join(' ')}` };
|
|
61
|
+
}
|
|
62
|
+
const result = UninstallArgsSchema.safeParse({
|
|
63
|
+
id: positional[0],
|
|
64
|
+
hard,
|
|
65
|
+
force,
|
|
66
|
+
json,
|
|
67
|
+
});
|
|
68
|
+
if (!result.success) {
|
|
69
|
+
return {
|
|
70
|
+
error: `invalid argument: ${result.error.issues.map((i) => i.message).join('; ')}`,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return result.data;
|
|
74
|
+
}
|
|
75
|
+
export async function runUninstallCommand(argv, rt) {
|
|
76
|
+
const parsed = parseArgv(argv);
|
|
77
|
+
if ('error' in parsed) {
|
|
78
|
+
rt.err(`usage: module:uninstall <module-id> [--hard] [--force] [--json]\n` +
|
|
79
|
+
`error: ${parsed.error}\n`);
|
|
80
|
+
return 64;
|
|
81
|
+
}
|
|
82
|
+
const args = parsed;
|
|
83
|
+
// Hard uninstall without --force requires a confirmation this run can
|
|
84
|
+
// obtain, and whether it can is the *caller's* answer rather than this file's
|
|
85
|
+
// (D115-7, R2.7). It used to be `!process.stdout.isTTY` here. That read is a
|
|
86
|
+
// decision taken from a process global, which defeats R2.4's two reasons —
|
|
87
|
+
// *testable without a process*, and *an instance may frame the output* —
|
|
88
|
+
// exactly as writing to one would: a body test has to mutate a global to
|
|
89
|
+
// reach this branch, and a deploy script, a systemd unit or an admin action
|
|
90
|
+
// has its destructive-write policy decided by whether *its own* stdout
|
|
91
|
+
// happens to be a terminal, which is a fact about the wrapper and not about
|
|
92
|
+
// the operator. It was also wrong on its own terms — it tested stdout alone,
|
|
93
|
+
// so `docker run -t`, a `script -qec` wrapper or any CI configuration that
|
|
94
|
+
// allocates a terminal for coloured output read as interactive and took the
|
|
95
|
+
// branch that **proceeds**, which is the mirror of the predicate
|
|
96
|
+
// `specs/117-instance-bring-up/contracts/input-resolution.md` R3.5 refuses.
|
|
97
|
+
//
|
|
98
|
+
// The exit code and the sentence stay here, on this side of the partition
|
|
99
|
+
// with the rest of the table (§1.1, R2.3); only the fact travels.
|
|
100
|
+
//
|
|
101
|
+
// **Absent means this run cannot ask**, and nothing supplies `confirm`, so the
|
|
102
|
+
// refusal is what every invocation meets — which is the whole of §C-2 step 6
|
|
103
|
+
// since owner ruling **D-217** (2026-09-07). That ruling struck the step's
|
|
104
|
+
// second half, *"or a tty prompt confirming "yes" verbatim"*, which had been
|
|
105
|
+
// contract since feature 018 and was never implemented in either tree: a
|
|
106
|
+
// promise that went unimplemented that long, in a destructive path, with
|
|
107
|
+
// nobody noticing, is evidence nobody needed it. `--hard` requires `--force`
|
|
108
|
+
// whether or not the run has a terminal, and nothing in the platform ever
|
|
109
|
+
// needs stdin.
|
|
110
|
+
//
|
|
111
|
+
// **The field stays** and this predicate keeps reading it, both by the
|
|
112
|
+
// ruling's own words. Supplying `confirm` from an entry point *without* also
|
|
113
|
+
// building the prompt is therefore the one way back to the data loss above —
|
|
114
|
+
// and it is the shape D115-7 anticipated, since it recorded the intent that
|
|
115
|
+
// the entry points would supply it on the R2.7 conjunction. It is pinned by
|
|
116
|
+
// `uninstall-hard-needs-force.integration.test.ts`, whose second case runs
|
|
117
|
+
// this entry point with every interactivity signal reading true; the first
|
|
118
|
+
// case spawns through a pipe and, measured, stays green under exactly that
|
|
119
|
+
// change.
|
|
120
|
+
if (args.hard && !args.force && !rt.confirm) {
|
|
121
|
+
rt.err(`[uninstall] --hard requires --force unless this run can ask for confirmation ` +
|
|
122
|
+
`(refusing to delete data without explicit confirmation).\n`);
|
|
123
|
+
return 64;
|
|
124
|
+
}
|
|
125
|
+
let registry;
|
|
126
|
+
try {
|
|
127
|
+
// The entries are the **instance-resolved** set (D-157.6a) — core, this
|
|
128
|
+
// deployment's overlay modules and every installed Endora module package —
|
|
129
|
+
// resolved by the entry point, which is where the collision refusal reaches
|
|
130
|
+
// an operator (R2.2). The runtime carries no container, so a command cannot
|
|
131
|
+
// compose the platform it operates on (D-157.2).
|
|
132
|
+
registry = buildStaticRegistry(rt.entries);
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
136
|
+
rt.err(`[manifest] ${msg}\n`);
|
|
137
|
+
return 65;
|
|
138
|
+
}
|
|
139
|
+
// A platform command composes nothing (D-157.2), so the merged ownership a
|
|
140
|
+
// composition root builds is not available to it: it answers for the committed
|
|
141
|
+
// core registry and for nothing else, and a hard uninstall of a package module
|
|
142
|
+
// is refused from the terminal rather than reverting core's rows and leaving the
|
|
143
|
+
// package's behind. The map is read from the host's generated registry, which
|
|
144
|
+
// is why it arrives on the runtime rather than being reached for here.
|
|
145
|
+
const migrationOwnership = rt.migrationOwnership
|
|
146
|
+
? await rt.migrationOwnership()
|
|
147
|
+
: undefined;
|
|
148
|
+
const orchestrator = await orchestratorFor(rt, registry, migrationOwnership ? { migrationOwnership } : {});
|
|
149
|
+
try {
|
|
150
|
+
const result = await orchestrator.uninstall(args.id, { hard: args.hard });
|
|
151
|
+
if (args.json) {
|
|
152
|
+
rt.out(JSON.stringify(result) + '\n');
|
|
153
|
+
}
|
|
154
|
+
else if (result.state === 'already-uninstalled') {
|
|
155
|
+
rt.out(`[uninstall] ${args.id} — already uninstalled (no-op)\n`);
|
|
156
|
+
}
|
|
157
|
+
else if (args.hard) {
|
|
158
|
+
rt.out(`[uninstall] ${args.id} --hard (DATA DELETED)\n` +
|
|
159
|
+
` ✓ uninstall hook completed\n` +
|
|
160
|
+
` ✓ settings removed: ${result.removedGroups} groups, ${result.removedSettings} settings\n` +
|
|
161
|
+
` ✓ migrations reverted: ${result.revertedMigrations.length === 0 ? '(none matched filename pattern)' : result.revertedMigrations.join(', ')}\n` +
|
|
162
|
+
` ✓ registry row deleted\n`);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
rt.out(`[uninstall] ${args.id} (soft, data preserved)\n` +
|
|
166
|
+
` ✓ uninstall hook completed\n` +
|
|
167
|
+
` ✓ settings unregistered: ${result.removedGroups} groups, ${result.removedSettings} settings (rows removed; tables intact)\n` +
|
|
168
|
+
` ✓ registry updated: state=uninstalled\n` +
|
|
169
|
+
`re-installing re-uses the applied migrations, but not the configuration:\n` +
|
|
170
|
+
`the settings above are gone; a re-install recreates them from the manifest defaults.\n` +
|
|
171
|
+
`Use module:disable to pause a module without losing its configuration.\n`);
|
|
172
|
+
}
|
|
173
|
+
return 0;
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
return mapError(err, args.json, rt);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
function mapError(err, asJson, rt) {
|
|
180
|
+
if (err instanceof LifecycleError) {
|
|
181
|
+
if (asJson) {
|
|
182
|
+
rt.err(JSON.stringify({
|
|
183
|
+
error: err.kind,
|
|
184
|
+
message: err.message,
|
|
185
|
+
...err.details,
|
|
186
|
+
}) + '\n');
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
rt.err(`[uninstall] ${err.message}\n`);
|
|
190
|
+
if (err.kind === 'non-deactivatable') {
|
|
191
|
+
// Same hint the disable path prints, for the same reason: there is no
|
|
192
|
+
// `--force` to suggest. The consequence of removing one of these is a
|
|
193
|
+
// deployment that cannot authenticate the operator who would put it
|
|
194
|
+
// back — and after `--hard` the tables that recovery needs are gone.
|
|
195
|
+
rt.err(`hint: this module declares itself non-deactivatable in its manifest, which refuses ` +
|
|
196
|
+
`uninstall as well as disable. If that declaration is wrong, change the manifest — ` +
|
|
197
|
+
`there is no override flag.\n`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
switch (err.kind) {
|
|
201
|
+
case 'unknown-module':
|
|
202
|
+
case 'wrong-state':
|
|
203
|
+
return 64;
|
|
204
|
+
case 'manifest-cycle':
|
|
205
|
+
return 65;
|
|
206
|
+
case 'missing-deps':
|
|
207
|
+
case 'dependents-block':
|
|
208
|
+
return 66;
|
|
209
|
+
case 'install-failed':
|
|
210
|
+
case 'uninstall-failed':
|
|
211
|
+
return 70;
|
|
212
|
+
case 'lock-busy':
|
|
213
|
+
return 75;
|
|
214
|
+
case 'non-deactivatable':
|
|
215
|
+
// EX_NOPERM — the request was well-formed and is not permitted.
|
|
216
|
+
return 77;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
const msg = err instanceof Error ? `${err.name}: ${err.message}` : String(err);
|
|
220
|
+
rt.err(`[internal] ${msg}\n`);
|
|
221
|
+
return 70;
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/lifecycle/commands/uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A deployment's divergence declaration — the **shape half**
|
|
3
|
+
* (`specs/115-lifecycle-container-move/`, D115-3;
|
|
4
|
+
* `contracts/operator-half.md` §4).
|
|
5
|
+
*
|
|
6
|
+
* What a deployment declares about how it means to differ from core. Its first
|
|
7
|
+
* content is the declared escape from D-101's boot refusal: a deployment may
|
|
8
|
+
* ship fewer modules than its manifests declare — that is the reduced
|
|
9
|
+
* deployment feature 071's packaging split exists to make possible — and what it
|
|
10
|
+
* may not do is arrive at that state silently. The owner's E1 ruling is that
|
|
11
|
+
* *"someone deliberately assembling a reduced deployment must declare that they
|
|
12
|
+
* know"*.
|
|
13
|
+
*
|
|
14
|
+
* The declaration is a **committed, reviewed, per-deployment file**, not a flag.
|
|
15
|
+
* D-69 refused a `--force` on the orchestrator's withdrawal guard on the ground
|
|
16
|
+
* that a flag is weighed once, at 2 a.m., by one person; the same reasoning
|
|
17
|
+
* points the same way here. A committed entry appears in the merge request that
|
|
18
|
+
* assembles the deployment, where somebody who is not mid-incident reads it.
|
|
19
|
+
*
|
|
20
|
+
* No file, or a declaration with nothing in it, means "this deployment differs
|
|
21
|
+
* from core in no way it has to declare" — the two states are deliberately the
|
|
22
|
+
* same answer, which is what makes the split below load-bearing rather than
|
|
23
|
+
* tidy.
|
|
24
|
+
*
|
|
25
|
+
* ## Why only two functions are here
|
|
26
|
+
*
|
|
27
|
+
* `divergence.ts` was one file with three things in it: this parser, a path
|
|
28
|
+
* derivation and a loader. The rule that splits them is `contracts/operator-half.md`
|
|
29
|
+
* §1's — *a file belongs to `@endora-commerce/platform` unless it names a path in
|
|
30
|
+
* the tree that installs the platform* — and these two name none. They are pure
|
|
31
|
+
* over {@link DeploymentDivergenceDeclarationSchema}: no disk, no environment,
|
|
32
|
+
* no deployment. `path` is a caller-supplied string that appears in a refusal
|
|
33
|
+
* and is never composed, resolved or read.
|
|
34
|
+
*
|
|
35
|
+
* **The other half may not follow them here, and that is measured rather than
|
|
36
|
+
* preferred.** The loader derives its root from its own `import.meta.url`, and
|
|
37
|
+
* that chain is correct for its location and for no other: it was one `dirname`
|
|
38
|
+
* too high once, so it composed `backend/apps/<d>/divergence.ts`, `existsSync`
|
|
39
|
+
* said no, and **every deployment read as declaring nothing** — D-101's declared
|
|
40
|
+
* escape had never worked, in production or under `tsx`, and nothing could see
|
|
41
|
+
* it because an absent file and an empty declaration are the same answer. Three
|
|
42
|
+
* `dirname`s from a file in this directory's neighbourhood give
|
|
43
|
+
* `packages/platform/src` or `packages/platform`, so a wholesale move reproduces
|
|
44
|
+
* that state exactly. The locator stays in the tree that owns `apps/`, and the
|
|
45
|
+
* platform receives the *value* — which is the seam it already had:
|
|
46
|
+
* `kernel/compose.ts` takes the declaration as a field of `ComposeModulesOptions`
|
|
47
|
+
* and has never called the loader.
|
|
48
|
+
*
|
|
49
|
+
* @see `backend/src/overlay/divergence-loader.ts` — the half that reads the disk.
|
|
50
|
+
*/
|
|
51
|
+
import { type DeploymentDivergenceDeclaration } from '@endora-commerce/contracts';
|
|
52
|
+
/** A declaration that declares nothing — an absent file's answer, as data. */
|
|
53
|
+
export declare function emptyDivergenceDeclaration(): DeploymentDivergenceDeclaration;
|
|
54
|
+
/**
|
|
55
|
+
* A declaration is only a declaration if each entry carries its reason.
|
|
56
|
+
*
|
|
57
|
+
* Exported and pure so the shape rules have a proof that does not need a
|
|
58
|
+
* deployment on disk: a fixture enters here as the raw exported value, which is
|
|
59
|
+
* the top of this analysis rather than something the loader already computed.
|
|
60
|
+
*
|
|
61
|
+
* A field left out means *none of these*, which is the reading an absent file
|
|
62
|
+
* already gets; a field that is present and malformed is refused, naming the
|
|
63
|
+
* deployment's own file. An **array** is refused with the shape it should have
|
|
64
|
+
* had, because that is what every declaration in the tree looked like before
|
|
65
|
+
* D-205 and a client copying an older one deserves the sentence rather than
|
|
66
|
+
* `expected object, received array`.
|
|
67
|
+
*
|
|
68
|
+
* @param path the declaration's own location, as the caller wishes to name it
|
|
69
|
+
* to its reader. It is prose in a refusal and nothing else — this function
|
|
70
|
+
* neither composes it nor reads it, which is what lets the platform hold the
|
|
71
|
+
* shape rule while the tree that owns `apps/` holds the layout.
|
|
72
|
+
*/
|
|
73
|
+
export declare function parseDivergenceDeclaration(value: unknown, path: string): DeploymentDivergenceDeclaration;
|
|
74
|
+
//# sourceMappingURL=divergence-declaration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"divergence-declaration.d.ts","sourceRoot":"","sources":["../../src/lifecycle/divergence-declaration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,4BAA4B,CAAC;AAEpC,8EAA8E;AAC9E,wBAAgB,0BAA0B,IAAI,+BAA+B,CAE5E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,GACX,+BAA+B,CAoBjC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A deployment's divergence declaration — the **shape half**
|
|
3
|
+
* (`specs/115-lifecycle-container-move/`, D115-3;
|
|
4
|
+
* `contracts/operator-half.md` §4).
|
|
5
|
+
*
|
|
6
|
+
* What a deployment declares about how it means to differ from core. Its first
|
|
7
|
+
* content is the declared escape from D-101's boot refusal: a deployment may
|
|
8
|
+
* ship fewer modules than its manifests declare — that is the reduced
|
|
9
|
+
* deployment feature 071's packaging split exists to make possible — and what it
|
|
10
|
+
* may not do is arrive at that state silently. The owner's E1 ruling is that
|
|
11
|
+
* *"someone deliberately assembling a reduced deployment must declare that they
|
|
12
|
+
* know"*.
|
|
13
|
+
*
|
|
14
|
+
* The declaration is a **committed, reviewed, per-deployment file**, not a flag.
|
|
15
|
+
* D-69 refused a `--force` on the orchestrator's withdrawal guard on the ground
|
|
16
|
+
* that a flag is weighed once, at 2 a.m., by one person; the same reasoning
|
|
17
|
+
* points the same way here. A committed entry appears in the merge request that
|
|
18
|
+
* assembles the deployment, where somebody who is not mid-incident reads it.
|
|
19
|
+
*
|
|
20
|
+
* No file, or a declaration with nothing in it, means "this deployment differs
|
|
21
|
+
* from core in no way it has to declare" — the two states are deliberately the
|
|
22
|
+
* same answer, which is what makes the split below load-bearing rather than
|
|
23
|
+
* tidy.
|
|
24
|
+
*
|
|
25
|
+
* ## Why only two functions are here
|
|
26
|
+
*
|
|
27
|
+
* `divergence.ts` was one file with three things in it: this parser, a path
|
|
28
|
+
* derivation and a loader. The rule that splits them is `contracts/operator-half.md`
|
|
29
|
+
* §1's — *a file belongs to `@endora-commerce/platform` unless it names a path in
|
|
30
|
+
* the tree that installs the platform* — and these two name none. They are pure
|
|
31
|
+
* over {@link DeploymentDivergenceDeclarationSchema}: no disk, no environment,
|
|
32
|
+
* no deployment. `path` is a caller-supplied string that appears in a refusal
|
|
33
|
+
* and is never composed, resolved or read.
|
|
34
|
+
*
|
|
35
|
+
* **The other half may not follow them here, and that is measured rather than
|
|
36
|
+
* preferred.** The loader derives its root from its own `import.meta.url`, and
|
|
37
|
+
* that chain is correct for its location and for no other: it was one `dirname`
|
|
38
|
+
* too high once, so it composed `backend/apps/<d>/divergence.ts`, `existsSync`
|
|
39
|
+
* said no, and **every deployment read as declaring nothing** — D-101's declared
|
|
40
|
+
* escape had never worked, in production or under `tsx`, and nothing could see
|
|
41
|
+
* it because an absent file and an empty declaration are the same answer. Three
|
|
42
|
+
* `dirname`s from a file in this directory's neighbourhood give
|
|
43
|
+
* `packages/platform/src` or `packages/platform`, so a wholesale move reproduces
|
|
44
|
+
* that state exactly. The locator stays in the tree that owns `apps/`, and the
|
|
45
|
+
* platform receives the *value* — which is the seam it already had:
|
|
46
|
+
* `kernel/compose.ts` takes the declaration as a field of `ComposeModulesOptions`
|
|
47
|
+
* and has never called the loader.
|
|
48
|
+
*
|
|
49
|
+
* @see `backend/src/overlay/divergence-loader.ts` — the half that reads the disk.
|
|
50
|
+
*/
|
|
51
|
+
import { DeploymentDivergenceDeclarationSchema, } from '@endora-commerce/contracts';
|
|
52
|
+
/** A declaration that declares nothing — an absent file's answer, as data. */
|
|
53
|
+
export function emptyDivergenceDeclaration() {
|
|
54
|
+
return { omittedModules: [], decorationOrder: {}, reasons: {} };
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* A declaration is only a declaration if each entry carries its reason.
|
|
58
|
+
*
|
|
59
|
+
* Exported and pure so the shape rules have a proof that does not need a
|
|
60
|
+
* deployment on disk: a fixture enters here as the raw exported value, which is
|
|
61
|
+
* the top of this analysis rather than something the loader already computed.
|
|
62
|
+
*
|
|
63
|
+
* A field left out means *none of these*, which is the reading an absent file
|
|
64
|
+
* already gets; a field that is present and malformed is refused, naming the
|
|
65
|
+
* deployment's own file. An **array** is refused with the shape it should have
|
|
66
|
+
* had, because that is what every declaration in the tree looked like before
|
|
67
|
+
* D-205 and a client copying an older one deserves the sentence rather than
|
|
68
|
+
* `expected object, received array`.
|
|
69
|
+
*
|
|
70
|
+
* @param path the declaration's own location, as the caller wishes to name it
|
|
71
|
+
* to its reader. It is prose in a refusal and nothing else — this function
|
|
72
|
+
* neither composes it nor reads it, which is what lets the platform hold the
|
|
73
|
+
* shape rule while the tree that owns `apps/` holds the layout.
|
|
74
|
+
*/
|
|
75
|
+
export function parseDivergenceDeclaration(value, path) {
|
|
76
|
+
if (Array.isArray(value)) {
|
|
77
|
+
throw new Error(`${path} must export \`divergence\` as an object — ` +
|
|
78
|
+
'{ omittedModules, decorationOrder, reasons }. It was an array, which is the shape ' +
|
|
79
|
+
'the declaration had while it carried omissions and nothing else (D-205); the ' +
|
|
80
|
+
'omissions move into `omittedModules` unchanged.');
|
|
81
|
+
}
|
|
82
|
+
const parsed = DeploymentDivergenceDeclarationSchema.safeParse(value);
|
|
83
|
+
if (!parsed.success) {
|
|
84
|
+
const detail = parsed.error.issues
|
|
85
|
+
.map((issue) => `${issue.path.join('.') || '(declaration)'}: ${issue.message}`)
|
|
86
|
+
.join('; ');
|
|
87
|
+
throw new Error(`${path} is not a declaration — ${detail}. An omission says which module this ` +
|
|
88
|
+
'deployment does not ship and what it does instead; the sentence is the review.');
|
|
89
|
+
}
|
|
90
|
+
return parsed.data;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=divergence-declaration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"divergence-declaration.js","sourceRoot":"","sources":["../../src/lifecycle/divergence-declaration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,EACL,qCAAqC,GAEtC,MAAM,4BAA4B,CAAC;AAEpC,8EAA8E;AAC9E,MAAM,UAAU,0BAA0B;IACxC,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAc,EACd,IAAY;IAEZ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,6CAA6C;YAClD,oFAAoF;YACpF,+EAA+E;YAC/E,iDAAiD,CACpD,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,qCAAqC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,eAAe,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aAC9E,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,2BAA2B,MAAM,uCAAuC;YAC7E,gFAAgF,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `./lifecycle` — the platform's operator surface, and the third subpath that is
|
|
3
|
+
* **declared and not published** (`specs/115-lifecycle-container-move/`, D115-4;
|
|
4
|
+
* `contracts/operator-half.md` §5).
|
|
5
|
+
*
|
|
6
|
+
* ## Why it exists at all
|
|
7
|
+
*
|
|
8
|
+
* `_lifecycle` is one module whose sources sit in two artefacts. The manifest,
|
|
9
|
+
* the routes, the Commands, the orchestrator and eight services are in
|
|
10
|
+
* `packages/platform/src/lifecycle/`; the manifest registry, the divergence
|
|
11
|
+
* loader and the five `module:*` commands are still in the application. The
|
|
12
|
+
* application reaches the first half through twelve re-export shims, and each of
|
|
13
|
+
* those shims forwards to `../../../../packages/platform/dist/lifecycle/…` — a
|
|
14
|
+
* relative path into a sibling package's build output, which resolves in this
|
|
15
|
+
* checkout and in **no client instance**. `manifest-index.generated.ts` carries
|
|
16
|
+
* the same reach for `_lifecycle`'s manifest, which is the sharpest form of it:
|
|
17
|
+
* the artefact whose whole job is to register the modules a build ships cannot
|
|
18
|
+
* register `_lifecycle` anywhere but here.
|
|
19
|
+
*
|
|
20
|
+
* This barrel is the address those reaches are drained onto. It is one subpath
|
|
21
|
+
* for one surface, deliberately — a second, `./lifecycle/commands`, would be a
|
|
22
|
+
* second address for one thing, and a consumer that wants one symbol imports one
|
|
23
|
+
* symbol.
|
|
24
|
+
*
|
|
25
|
+
* ## The rule it carries: no module may name it, ever
|
|
26
|
+
*
|
|
27
|
+
* D-160.11 refused to make `_lifecycle` its own package on the ground that it
|
|
28
|
+
* would be *"a public API with one consumer forever"*. That is an argument
|
|
29
|
+
* against **publishing** a surface and not against giving it an address, which
|
|
30
|
+
* is the distinction this subpath is built on: it is declared by the `exports`
|
|
31
|
+
* map, so `node` and `tsc` resolve it for the host, its five entry points and
|
|
32
|
+
* the test kit, and it is carried by no *published* barrel, so
|
|
33
|
+
* `check:platform-surface` reports a module naming it as `host-internal-subpath`
|
|
34
|
+
* — with no change to that check, because `declaredSubpaths` is read off the
|
|
35
|
+
* manifest rather than written down.
|
|
36
|
+
*
|
|
37
|
+
* `PUBLISHED_SUBPATHS` therefore stays at five, and that is not an omission to
|
|
38
|
+
* be tidied later. `PlatformSurface.published` is keyed by target file with no
|
|
39
|
+
* subpath dimension, so a sixth entry there would publish
|
|
40
|
+
* `ModuleLifecycleOrchestrator` and `installGatingGraph` for a module's
|
|
41
|
+
* *relative* reach at those files too, and — the check reporting `violations=0`
|
|
42
|
+
* — would change nothing it prints. A blindness that arrives green.
|
|
43
|
+
*
|
|
44
|
+
* The rule the class encodes is one sentence: this surface **drives** the
|
|
45
|
+
* platform's own presence axis, so a module that could name it could install,
|
|
46
|
+
* uninstall, enable or disable its siblings. That is `./composition`'s reason
|
|
47
|
+
* with one noun changed.
|
|
48
|
+
*
|
|
49
|
+
* ## What is on it, and why exactly this
|
|
50
|
+
*
|
|
51
|
+
* Exactly the names a first-party source outside the platform imports through
|
|
52
|
+
* `@endora-commerce/platform/lifecycle`, and nothing else. It is a
|
|
53
|
+
* **consequence** rather than a ruling — unlike `./composition`, whose 27
|
|
54
|
+
* symbols D-160.14 names one by one — so writing the set down anywhere would be
|
|
55
|
+
* a derived fact copied into a second place (D-100).
|
|
56
|
+
* `test/unit/kernel/published-surface.test.ts` derives it from the consumers on
|
|
57
|
+
* every run and holds the two to each other in both directions: a name here
|
|
58
|
+
* that nobody imports is surface parked against a future need, and a name
|
|
59
|
+
* imported that is not here is a consumer that cannot compile.
|
|
60
|
+
*
|
|
61
|
+
* A symbol **graduates** to a public barrel in the merge request that first
|
|
62
|
+
* gives it a module-package production consumer, and leaves this one in the same
|
|
63
|
+
* merge request (§5, R5.5). Two homes would be two answers to "is this public
|
|
64
|
+
* API?". There is no such consumer today and none is anticipated.
|
|
65
|
+
*
|
|
66
|
+
* ## The population it was derived from until Phase 7, and why that ended
|
|
67
|
+
*
|
|
68
|
+
* The consumer rule could not be the rule while the application reached this
|
|
69
|
+
* surface through fifteen re-export shims: nothing outside the platform named
|
|
70
|
+
* the specifier, so the ratchet would have been green over nothing — issue
|
|
71
|
+
* #113's shape. What stood in its place was a *ledger*-derived rule. Each shim
|
|
72
|
+
* spells `export * from '<target>'`, so the application holds that file's whole
|
|
73
|
+
* namespace, and a reach could retire onto this barrel only if every name it
|
|
74
|
+
* yielded were here; the expected set was therefore a function of
|
|
75
|
+
* `RELATIVE_HOST_REACHES` and the fourteen files it named.
|
|
76
|
+
*
|
|
77
|
+
* Phase 3 gave the subpath its first consumers, Phase 5 and Phase 6 added the
|
|
78
|
+
* five command bodies and the two generated artefacts, and Phase 7 re-pointed
|
|
79
|
+
* the 112 reaches in `backend/test/**` and deleted the last nine shims. So the
|
|
80
|
+
* ledger derivation has no population left — no ledgered reach names a platform
|
|
81
|
+
* lifecycle file, and none will again, because the address exists — and 28
|
|
82
|
+
* names left with it: symbols that were here only because some shim's
|
|
83
|
+
* `export *` yielded them and that nobody had ever asked for by name.
|
|
84
|
+
* `routes.storefront.ts` and `commands/activation.commands.ts` were absent for
|
|
85
|
+
* that same reason all along.
|
|
86
|
+
*/
|
|
87
|
+
export { type OperatorResources, type OperatorRuntime, } from './commands/operator-runtime.js';
|
|
88
|
+
export { runInstallCommand } from './commands/install.js';
|
|
89
|
+
export { runUninstallCommand } from './commands/uninstall.js';
|
|
90
|
+
export { runEnableCommand } from './commands/enable.js';
|
|
91
|
+
export { runDisableCommand } from './commands/disable.js';
|
|
92
|
+
export { runStatusCommand } from './commands/status.js';
|
|
93
|
+
export { runInstanceOperatorCommand } from './commands/operator-entry.js';
|
|
94
|
+
export { registerModule } from './backend.js';
|
|
95
|
+
export { manifest } from './manifest.js';
|
|
96
|
+
export { lifecycleModuleFromStaticEntries } from './plugin.js';
|
|
97
|
+
export { registerLifecycleAdminRoutes, } from './routes.admin.js';
|
|
98
|
+
export { LifecycleError, ModuleLifecycleOrchestrator, } from './services/orchestrator.js';
|
|
99
|
+
export { LOCK_KEY } from './services/lock.js';
|
|
100
|
+
export { ModuleDepGraph } from './services/dep-graph.js';
|
|
101
|
+
export { acknowledgedPortEdgesFrom, gatingGraph, installGatingGraph, ModuleGatingGraph, nonBindingPortEdgesFrom, provideDefaultGatingManifests, type NonBindingPortEdge, } from './services/gating-graph.js';
|
|
102
|
+
export { buildDeactivationLedger, deactivationConsequencesFor, type CrossModuleRead, type DeactivationLedger, type LedgerEntry, type UnassignedEdge, } from './services/deactivation-ledger.js';
|
|
103
|
+
export { discoverManifests, folderNameFromPath, ManifestLoadError, type LoadedLifecycleParticipant, type LoadedManifestRegistry, } from './services/manifest-loader.js';
|
|
104
|
+
export { deploymentShippedEntries, type ModuleIdClaimOrigin, } from './services/module-origin.js';
|
|
105
|
+
export { assertNoModuleIdCollisions, moduleIdCollisions, ModuleIdCollisionError, type ModuleIdClaim, type ModuleIdCollision, } from './services/module-id-claims.js';
|
|
106
|
+
export { coreManifestEntries, ManifestPathMissingError, resolveManifestEntries, type ManifestSources, type RegisteredManifestEntry, } from './manifest-registry.js';
|
|
107
|
+
export { buildStaticRegistry } from './services/static-registry.js';
|
|
108
|
+
export { emptyDivergenceDeclaration, parseDivergenceDeclaration, } from './divergence-declaration.js';
|
|
109
|
+
export { assertLockedModulesPresent, bootConvergenceWarnings, firstBootInsertPopulation, loadModulePresence, ReducedDeploymentError, type ShippedModuleEntry, } from './services/presence-load.js';
|
|
110
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFG;AAQH,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAkBxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAmB1E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,cAAc,EACd,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAS9C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAC7B,KAAK,kBAAkB,GACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,GAC5B,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EACL,wBAAwB,EACxB,KAAK,mBAAmB,GACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,gCAAgC,CAAC;AAMxC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,uBAAuB,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAYpE,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,0BAA0B,EAK1B,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,kBAAkB,GACxB,MAAM,6BAA6B,CAAC"}
|