@justscale/core 0.1.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 +261 -0
- package/bin/just.js +34 -0
- package/dist/app.d.ts +56 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +182 -0
- package/dist/app.js.map +1 -0
- package/dist/builder/build-context.d.ts +8 -0
- package/dist/builder/build-context.d.ts.map +1 -0
- package/dist/builder/build-context.js +4 -0
- package/dist/builder/build-context.js.map +1 -0
- package/dist/builder/builder.d.ts +60 -0
- package/dist/builder/builder.d.ts.map +1 -0
- package/dist/builder/builder.js +72 -0
- package/dist/builder/builder.js.map +1 -0
- package/dist/builder/create-builder.d.ts +36 -0
- package/dist/builder/create-builder.d.ts.map +1 -0
- package/dist/builder/create-builder.js +66 -0
- package/dist/builder/create-builder.js.map +1 -0
- package/dist/builder/execute.d.ts +37 -0
- package/dist/builder/execute.d.ts.map +1 -0
- package/dist/builder/execute.js +62 -0
- package/dist/builder/execute.js.map +1 -0
- package/dist/builder/feature-builder.d.ts +147 -0
- package/dist/builder/feature-builder.d.ts.map +1 -0
- package/dist/builder/feature-builder.js +138 -0
- package/dist/builder/feature-builder.js.map +1 -0
- package/dist/builder/index.d.ts +35 -0
- package/dist/builder/index.d.ts.map +1 -0
- package/dist/builder/index.js +37 -0
- package/dist/builder/index.js.map +1 -0
- package/dist/builder/plugin.d.ts +90 -0
- package/dist/builder/plugin.d.ts.map +1 -0
- package/dist/builder/plugin.js +101 -0
- package/dist/builder/plugin.js.map +1 -0
- package/dist/builder/plugins/query.d.ts +31 -0
- package/dist/builder/plugins/query.d.ts.map +1 -0
- package/dist/builder/plugins/query.js +42 -0
- package/dist/builder/plugins/query.js.map +1 -0
- package/dist/builder/plugins/validation.d.ts +12 -0
- package/dist/builder/plugins/validation.d.ts.map +1 -0
- package/dist/builder/plugins/validation.js +12 -0
- package/dist/builder/plugins/validation.js.map +1 -0
- package/dist/builder/sort.d.ts +27 -0
- package/dist/builder/sort.d.ts.map +1 -0
- package/dist/builder/sort.js +210 -0
- package/dist/builder/sort.js.map +1 -0
- package/dist/builder/stop.d.ts +24 -0
- package/dist/builder/stop.d.ts.map +1 -0
- package/dist/builder/stop.js +27 -0
- package/dist/builder/stop.js.map +1 -0
- package/dist/builder/test/permits-type-spike.d.ts +8 -0
- package/dist/builder/test/permits-type-spike.d.ts.map +1 -0
- package/dist/builder/test/permits-type-spike.js +117 -0
- package/dist/builder/test/permits-type-spike.js.map +1 -0
- package/dist/builder/types.d.ts +678 -0
- package/dist/builder/types.d.ts.map +1 -0
- package/dist/builder/types.js +98 -0
- package/dist/builder/types.js.map +1 -0
- package/dist/builder/validation.d.ts +101 -0
- package/dist/builder/validation.d.ts.map +1 -0
- package/dist/builder/validation.js +335 -0
- package/dist/builder/validation.js.map +1 -0
- package/dist/cli/adapter.d.ts +23 -0
- package/dist/cli/adapter.d.ts.map +1 -0
- package/dist/cli/adapter.js +26 -0
- package/dist/cli/adapter.js.map +1 -0
- package/dist/cli/args.d.ts +150 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +172 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/assemble.d.ts +20 -0
- package/dist/cli/assemble.d.ts.map +1 -0
- package/dist/cli/assemble.js +55 -0
- package/dist/cli/assemble.js.map +1 -0
- package/dist/cli/bin/main.d.ts +26 -0
- package/dist/cli/bin/main.d.ts.map +1 -0
- package/dist/cli/bin/main.js +475 -0
- package/dist/cli/bin/main.js.map +1 -0
- package/dist/cli/build/migrations-plugin.d.ts +21 -0
- package/dist/cli/build/migrations-plugin.d.ts.map +1 -0
- package/dist/cli/build/migrations-plugin.js +41 -0
- package/dist/cli/build/migrations-plugin.js.map +1 -0
- package/dist/cli/build/process-plugin.d.ts +29 -0
- package/dist/cli/build/process-plugin.d.ts.map +1 -0
- package/dist/cli/build/process-plugin.js +66 -0
- package/dist/cli/build/process-plugin.js.map +1 -0
- package/dist/cli/builder/create-cli-builder.d.ts +42 -0
- package/dist/cli/builder/create-cli-builder.d.ts.map +1 -0
- package/dist/cli/builder/create-cli-builder.js +104 -0
- package/dist/cli/builder/create-cli-builder.js.map +1 -0
- package/dist/cli/builder/index.d.ts +8 -0
- package/dist/cli/builder/index.d.ts.map +1 -0
- package/dist/cli/builder/index.js +7 -0
- package/dist/cli/builder/index.js.map +1 -0
- package/dist/cli/builder/types.d.ts +113 -0
- package/dist/cli/builder/types.d.ts.map +1 -0
- package/dist/cli/builder/types.js +7 -0
- package/dist/cli/builder/types.js.map +1 -0
- package/dist/cli/cluster.d.ts +8 -0
- package/dist/cli/cluster.d.ts.map +1 -0
- package/dist/cli/cluster.js +145 -0
- package/dist/cli/cluster.js.map +1 -0
- package/dist/cli/current-app.d.ts +36 -0
- package/dist/cli/current-app.d.ts.map +1 -0
- package/dist/cli/current-app.js +21 -0
- package/dist/cli/current-app.js.map +1 -0
- package/dist/cli/define-app.d.ts +35 -0
- package/dist/cli/define-app.d.ts.map +1 -0
- package/dist/cli/define-app.js +79 -0
- package/dist/cli/define-app.js.map +1 -0
- package/dist/cli/define-main.d.ts +33 -0
- package/dist/cli/define-main.d.ts.map +1 -0
- package/dist/cli/define-main.js +67 -0
- package/dist/cli/define-main.js.map +1 -0
- package/dist/cli/define-project.d.ts +93 -0
- package/dist/cli/define-project.d.ts.map +1 -0
- package/dist/cli/define-project.js +85 -0
- package/dist/cli/define-project.js.map +1 -0
- package/dist/cli/dev-server.d.ts +20 -0
- package/dist/cli/dev-server.d.ts.map +1 -0
- package/dist/cli/dev-server.js +131 -0
- package/dist/cli/dev-server.js.map +1 -0
- package/dist/cli/discovery.d.ts +29 -0
- package/dist/cli/discovery.d.ts.map +1 -0
- package/dist/cli/discovery.js +142 -0
- package/dist/cli/discovery.js.map +1 -0
- package/dist/cli/factory.d.ts +43 -0
- package/dist/cli/factory.d.ts.map +1 -0
- package/dist/cli/factory.js +52 -0
- package/dist/cli/factory.js.map +1 -0
- package/dist/cli/generators/ai.d.ts +3 -0
- package/dist/cli/generators/ai.d.ts.map +1 -0
- package/dist/cli/generators/ai.js +65 -0
- package/dist/cli/generators/ai.js.map +1 -0
- package/dist/cli/generators/ci.d.ts +5 -0
- package/dist/cli/generators/ci.d.ts.map +1 -0
- package/dist/cli/generators/ci.js +102 -0
- package/dist/cli/generators/ci.js.map +1 -0
- package/dist/cli/generators/detect.d.ts +15 -0
- package/dist/cli/generators/detect.d.ts.map +1 -0
- package/dist/cli/generators/detect.js +75 -0
- package/dist/cli/generators/detect.js.map +1 -0
- package/dist/cli/generators/ide.d.ts +3 -0
- package/dist/cli/generators/ide.d.ts.map +1 -0
- package/dist/cli/generators/ide.js +179 -0
- package/dist/cli/generators/ide.js.map +1 -0
- package/dist/cli/generators/index.d.ts +5 -0
- package/dist/cli/generators/index.d.ts.map +1 -0
- package/dist/cli/generators/index.js +5 -0
- package/dist/cli/generators/index.js.map +1 -0
- package/dist/cli/index.d.ts +81 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +88 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/io.d.ts +131 -0
- package/dist/cli/io.d.ts.map +1 -0
- package/dist/cli/io.js +373 -0
- package/dist/cli/io.js.map +1 -0
- package/dist/cli/mcp/server.d.ts +23 -0
- package/dist/cli/mcp/server.d.ts.map +1 -0
- package/dist/cli/mcp/server.js +148 -0
- package/dist/cli/mcp/server.js.map +1 -0
- package/dist/cli/parser.d.ts +106 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +520 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/runner.d.ts +75 -0
- package/dist/cli/runner.d.ts.map +1 -0
- package/dist/cli/runner.js +422 -0
- package/dist/cli/runner.js.map +1 -0
- package/dist/cli/service.d.ts +61 -0
- package/dist/cli/service.d.ts.map +1 -0
- package/dist/cli/service.js +95 -0
- package/dist/cli/service.js.map +1 -0
- package/dist/cli/types.d.ts +47 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +20 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/wizard.d.ts +11 -0
- package/dist/cli/wizard.d.ts.map +1 -0
- package/dist/cli/wizard.js +2 -0
- package/dist/cli/wizard.js.map +1 -0
- package/dist/cli/workspace-controller.d.ts +36 -0
- package/dist/cli/workspace-controller.d.ts.map +1 -0
- package/dist/cli/workspace-controller.js +896 -0
- package/dist/cli/workspace-controller.js.map +1 -0
- package/dist/cluster/client.d.ts +101 -0
- package/dist/cluster/client.d.ts.map +1 -0
- package/dist/cluster/client.js +256 -0
- package/dist/cluster/client.js.map +1 -0
- package/dist/cluster/cluster.d.ts +82 -0
- package/dist/cluster/cluster.d.ts.map +1 -0
- package/dist/cluster/cluster.js +27 -0
- package/dist/cluster/cluster.js.map +1 -0
- package/dist/cluster/coordinator/cluster-node.model.d.ts +14 -0
- package/dist/cluster/coordinator/cluster-node.model.d.ts.map +1 -0
- package/dist/cluster/coordinator/cluster-node.model.js +15 -0
- package/dist/cluster/coordinator/cluster-node.model.js.map +1 -0
- package/dist/cluster/coordinator/cluster-signals.d.ts +45 -0
- package/dist/cluster/coordinator/cluster-signals.d.ts.map +1 -0
- package/dist/cluster/coordinator/cluster-signals.js +24 -0
- package/dist/cluster/coordinator/cluster-signals.js.map +1 -0
- package/dist/cluster/coordinator/coordinator.process.d.ts +21 -0
- package/dist/cluster/coordinator/coordinator.process.d.ts.map +1 -0
- package/dist/cluster/coordinator/coordinator.process.js +221 -0
- package/dist/cluster/coordinator/coordinator.process.js.map +1 -0
- package/dist/cluster/coordinator/index.d.ts +13 -0
- package/dist/cluster/coordinator/index.d.ts.map +1 -0
- package/dist/cluster/coordinator/index.js +13 -0
- package/dist/cluster/coordinator/index.js.map +1 -0
- package/dist/cluster/coordinator/node-lifecycle.d.ts +31 -0
- package/dist/cluster/coordinator/node-lifecycle.d.ts.map +1 -0
- package/dist/cluster/coordinator/node-lifecycle.js +178 -0
- package/dist/cluster/coordinator/node-lifecycle.js.map +1 -0
- package/dist/cluster/index.d.ts +45 -0
- package/dist/cluster/index.d.ts.map +1 -0
- package/dist/cluster/index.js +57 -0
- package/dist/cluster/index.js.map +1 -0
- package/dist/cluster/protocol.d.ts +204 -0
- package/dist/cluster/protocol.d.ts.map +1 -0
- package/dist/cluster/protocol.js +274 -0
- package/dist/cluster/protocol.js.map +1 -0
- package/dist/cluster/scheduled-task/builder.d.ts +24 -0
- package/dist/cluster/scheduled-task/builder.d.ts.map +1 -0
- package/dist/cluster/scheduled-task/builder.js +63 -0
- package/dist/cluster/scheduled-task/builder.js.map +1 -0
- package/dist/cluster/scheduled-task/factory.d.ts +76 -0
- package/dist/cluster/scheduled-task/factory.d.ts.map +1 -0
- package/dist/cluster/scheduled-task/factory.js +64 -0
- package/dist/cluster/scheduled-task/factory.js.map +1 -0
- package/dist/cluster/scheduled-task/index.d.ts +43 -0
- package/dist/cluster/scheduled-task/index.d.ts.map +1 -0
- package/dist/cluster/scheduled-task/index.js +45 -0
- package/dist/cluster/scheduled-task/index.js.map +1 -0
- package/dist/cluster/scheduled-task/transport.d.ts +12 -0
- package/dist/cluster/scheduled-task/transport.d.ts.map +1 -0
- package/dist/cluster/scheduled-task/transport.js +146 -0
- package/dist/cluster/scheduled-task/transport.js.map +1 -0
- package/dist/cluster/scheduled-task/types.d.ts +89 -0
- package/dist/cluster/scheduled-task/types.d.ts.map +1 -0
- package/dist/cluster/scheduled-task/types.js +7 -0
- package/dist/cluster/scheduled-task/types.js.map +1 -0
- package/dist/cluster/server.d.ts +87 -0
- package/dist/cluster/server.d.ts.map +1 -0
- package/dist/cluster/server.js +290 -0
- package/dist/cluster/server.js.map +1 -0
- package/dist/cluster/transport.d.ts +86 -0
- package/dist/cluster/transport.d.ts.map +1 -0
- package/dist/cluster/transport.js +138 -0
- package/dist/cluster/transport.js.map +1 -0
- package/dist/core/container-hooks.d.ts +22 -0
- package/dist/core/container-hooks.d.ts.map +1 -0
- package/dist/core/container-hooks.js +29 -0
- package/dist/core/container-hooks.js.map +1 -0
- package/dist/core/container-reflection.d.ts +71 -0
- package/dist/core/container-reflection.d.ts.map +1 -0
- package/dist/core/container-reflection.js +60 -0
- package/dist/core/container-reflection.js.map +1 -0
- package/dist/core/context.d.ts +146 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +155 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/contribution.d.ts +152 -0
- package/dist/core/contribution.d.ts.map +1 -0
- package/dist/core/contribution.js +213 -0
- package/dist/core/contribution.js.map +1 -0
- package/dist/core/controller.contextual.d.ts +193 -0
- package/dist/core/controller.contextual.d.ts.map +1 -0
- package/dist/core/controller.contextual.js +459 -0
- package/dist/core/controller.contextual.js.map +1 -0
- package/dist/core/controller.d.ts +510 -0
- package/dist/core/controller.d.ts.map +1 -0
- package/dist/core/controller.js +411 -0
- package/dist/core/controller.js.map +1 -0
- package/dist/core/controller.procedure.d.ts +147 -0
- package/dist/core/controller.procedure.d.ts.map +1 -0
- package/dist/core/controller.procedure.js +115 -0
- package/dist/core/controller.procedure.js.map +1 -0
- package/dist/core/disposable.d.ts +126 -0
- package/dist/core/disposable.d.ts.map +1 -0
- package/dist/core/disposable.js +179 -0
- package/dist/core/disposable.js.map +1 -0
- package/dist/core/hmr.d.ts +83 -0
- package/dist/core/hmr.d.ts.map +1 -0
- package/dist/core/hmr.js +211 -0
- package/dist/core/hmr.js.map +1 -0
- package/dist/core/index.d.ts +17 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +25 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/internal/routes.d.ts +26 -0
- package/dist/core/internal/routes.d.ts.map +1 -0
- package/dist/core/internal/routes.js +48 -0
- package/dist/core/internal/routes.js.map +1 -0
- package/dist/core/lifecycle-impl.d.ts +45 -0
- package/dist/core/lifecycle-impl.d.ts.map +1 -0
- package/dist/core/lifecycle-impl.js +102 -0
- package/dist/core/lifecycle-impl.js.map +1 -0
- package/dist/core/lifecycle.d.ts +86 -0
- package/dist/core/lifecycle.d.ts.map +1 -0
- package/dist/core/lifecycle.js +38 -0
- package/dist/core/lifecycle.js.map +1 -0
- package/dist/core/logger.d.ts +282 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +368 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/middleware.d.ts +108 -0
- package/dist/core/middleware.d.ts.map +1 -0
- package/dist/core/middleware.js +60 -0
- package/dist/core/middleware.js.map +1 -0
- package/dist/core/openapi-methods.d.ts +61 -0
- package/dist/core/openapi-methods.d.ts.map +1 -0
- package/dist/core/openapi-methods.js +53 -0
- package/dist/core/openapi-methods.js.map +1 -0
- package/dist/core/plugin.d.ts +209 -0
- package/dist/core/plugin.d.ts.map +1 -0
- package/dist/core/plugin.js +36 -0
- package/dist/core/plugin.js.map +1 -0
- package/dist/core/scope-bridge.d.ts +19 -0
- package/dist/core/scope-bridge.d.ts.map +1 -0
- package/dist/core/scope-bridge.js +34 -0
- package/dist/core/scope-bridge.js.map +1 -0
- package/dist/core/service.d.ts +429 -0
- package/dist/core/service.d.ts.map +1 -0
- package/dist/core/service.js +875 -0
- package/dist/core/service.js.map +1 -0
- package/dist/features/channel/backend.d.ts +98 -0
- package/dist/features/channel/backend.d.ts.map +1 -0
- package/dist/features/channel/backend.js +75 -0
- package/dist/features/channel/backend.js.map +1 -0
- package/dist/features/channel/channel.d.ts +18 -0
- package/dist/features/channel/channel.d.ts.map +1 -0
- package/dist/features/channel/channel.js +219 -0
- package/dist/features/channel/channel.js.map +1 -0
- package/dist/features/channel/channels.d.ts +87 -0
- package/dist/features/channel/channels.d.ts.map +1 -0
- package/dist/features/channel/channels.js +252 -0
- package/dist/features/channel/channels.js.map +1 -0
- package/dist/features/channel/feature.d.ts +40 -0
- package/dist/features/channel/feature.d.ts.map +1 -0
- package/dist/features/channel/feature.js +44 -0
- package/dist/features/channel/feature.js.map +1 -0
- package/dist/features/channel/index.d.ts +41 -0
- package/dist/features/channel/index.d.ts.map +1 -0
- package/dist/features/channel/index.js +41 -0
- package/dist/features/channel/index.js.map +1 -0
- package/dist/features/channel/types.d.ts +165 -0
- package/dist/features/channel/types.d.ts.map +1 -0
- package/dist/features/channel/types.js +10 -0
- package/dist/features/channel/types.js.map +1 -0
- package/dist/features/config/cli/config-controller.d.ts +77 -0
- package/dist/features/config/cli/config-controller.d.ts.map +1 -0
- package/dist/features/config/cli/config-controller.js +209 -0
- package/dist/features/config/cli/config-controller.js.map +1 -0
- package/dist/features/config/cli/index.d.ts +9 -0
- package/dist/features/config/cli/index.d.ts.map +1 -0
- package/dist/features/config/cli/index.js +9 -0
- package/dist/features/config/cli/index.js.map +1 -0
- package/dist/features/config/cli/profile-controller.d.ts +87 -0
- package/dist/features/config/cli/profile-controller.d.ts.map +1 -0
- package/dist/features/config/cli/profile-controller.js +223 -0
- package/dist/features/config/cli/profile-controller.js.map +1 -0
- package/dist/features/config/cli/utils.d.ts +14 -0
- package/dist/features/config/cli/utils.d.ts.map +1 -0
- package/dist/features/config/cli/utils.js +29 -0
- package/dist/features/config/cli/utils.js.map +1 -0
- package/dist/features/config/config-of.d.ts +36 -0
- package/dist/features/config/config-of.d.ts.map +1 -0
- package/dist/features/config/config-of.js +36 -0
- package/dist/features/config/config-of.js.map +1 -0
- package/dist/features/config/config-service.d.ts +54 -0
- package/dist/features/config/config-service.d.ts.map +1 -0
- package/dist/features/config/config-service.js +184 -0
- package/dist/features/config/config-service.js.map +1 -0
- package/dist/features/config/create-config.d.ts +21 -0
- package/dist/features/config/create-config.d.ts.map +1 -0
- package/dist/features/config/create-config.js +16 -0
- package/dist/features/config/create-config.js.map +1 -0
- package/dist/features/config/define-config-partial.d.ts +13 -0
- package/dist/features/config/define-config-partial.d.ts.map +1 -0
- package/dist/features/config/define-config-partial.js +19 -0
- package/dist/features/config/define-config-partial.js.map +1 -0
- package/dist/features/config/env-service.d.ts +54 -0
- package/dist/features/config/env-service.d.ts.map +1 -0
- package/dist/features/config/env-service.js +115 -0
- package/dist/features/config/env-service.js.map +1 -0
- package/dist/features/config/file-watcher.d.ts +13 -0
- package/dist/features/config/file-watcher.d.ts.map +1 -0
- package/dist/features/config/file-watcher.js +98 -0
- package/dist/features/config/file-watcher.js.map +1 -0
- package/dist/features/config/index.d.ts +21 -0
- package/dist/features/config/index.d.ts.map +1 -0
- package/dist/features/config/index.js +24 -0
- package/dist/features/config/index.js.map +1 -0
- package/dist/features/config/profile-service.d.ts +59 -0
- package/dist/features/config/profile-service.d.ts.map +1 -0
- package/dist/features/config/profile-service.js +114 -0
- package/dist/features/config/profile-service.js.map +1 -0
- package/dist/features/config/types.d.ts +38 -0
- package/dist/features/config/types.d.ts.map +1 -0
- package/dist/features/config/types.js +17 -0
- package/dist/features/config/types.js.map +1 -0
- package/dist/features/contract/contract.d.ts +264 -0
- package/dist/features/contract/contract.d.ts.map +1 -0
- package/dist/features/contract/contract.js +183 -0
- package/dist/features/contract/contract.js.map +1 -0
- package/dist/features/contract/index.d.ts +2 -0
- package/dist/features/contract/index.d.ts.map +1 -0
- package/dist/features/contract/index.js +2 -0
- package/dist/features/contract/index.js.map +1 -0
- package/dist/features/env/contribute.d.ts +70 -0
- package/dist/features/env/contribute.d.ts.map +1 -0
- package/dist/features/env/contribute.js +195 -0
- package/dist/features/env/contribute.js.map +1 -0
- package/dist/features/environment/create-environment.d.ts +58 -0
- package/dist/features/environment/create-environment.d.ts.map +1 -0
- package/dist/features/environment/create-environment.js +22 -0
- package/dist/features/environment/create-environment.js.map +1 -0
- package/dist/features/environment/index.d.ts +12 -0
- package/dist/features/environment/index.d.ts.map +1 -0
- package/dist/features/environment/index.js +10 -0
- package/dist/features/environment/index.js.map +1 -0
- package/dist/features/environment/load.d.ts +59 -0
- package/dist/features/environment/load.d.ts.map +1 -0
- package/dist/features/environment/load.js +117 -0
- package/dist/features/environment/load.js.map +1 -0
- package/dist/features/environment/types.d.ts +165 -0
- package/dist/features/environment/types.d.ts.map +1 -0
- package/dist/features/environment/types.js +18 -0
- package/dist/features/environment/types.js.map +1 -0
- package/dist/features/feature-flags/create-feature-flag-provider.d.ts +21 -0
- package/dist/features/feature-flags/create-feature-flag-provider.d.ts.map +1 -0
- package/dist/features/feature-flags/create-feature-flag-provider.js +16 -0
- package/dist/features/feature-flags/create-feature-flag-provider.js.map +1 -0
- package/dist/features/feature-flags/define-feature-flag-partial.d.ts +20 -0
- package/dist/features/feature-flags/define-feature-flag-partial.d.ts.map +1 -0
- package/dist/features/feature-flags/define-feature-flag-partial.js +26 -0
- package/dist/features/feature-flags/define-feature-flag-partial.js.map +1 -0
- package/dist/features/feature-flags/feature-flag-of.d.ts +16 -0
- package/dist/features/feature-flags/feature-flag-of.d.ts.map +1 -0
- package/dist/features/feature-flags/feature-flag-of.js +16 -0
- package/dist/features/feature-flags/feature-flag-of.js.map +1 -0
- package/dist/features/feature-flags/feature-flag-service.d.ts +22 -0
- package/dist/features/feature-flags/feature-flag-service.d.ts.map +1 -0
- package/dist/features/feature-flags/feature-flag-service.js +112 -0
- package/dist/features/feature-flags/feature-flag-service.js.map +1 -0
- package/dist/features/feature-flags/index.d.ts +15 -0
- package/dist/features/feature-flags/index.d.ts.map +1 -0
- package/dist/features/feature-flags/index.js +12 -0
- package/dist/features/feature-flags/index.js.map +1 -0
- package/dist/features/feature-flags/types.d.ts +30 -0
- package/dist/features/feature-flags/types.d.ts.map +1 -0
- package/dist/features/feature-flags/types.js +8 -0
- package/dist/features/feature-flags/types.js.map +1 -0
- package/dist/features/index.d.ts +6 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +7 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/lock/index.d.ts +4 -0
- package/dist/features/lock/index.d.ts.map +1 -0
- package/dist/features/lock/index.js +4 -0
- package/dist/features/lock/index.js.map +1 -0
- package/dist/features/lock/lock-service.d.ts +74 -0
- package/dist/features/lock/lock-service.d.ts.map +1 -0
- package/dist/features/lock/lock-service.js +210 -0
- package/dist/features/lock/lock-service.js.map +1 -0
- package/dist/features/lock/memory.d.ts +60 -0
- package/dist/features/lock/memory.d.ts.map +1 -0
- package/dist/features/lock/memory.js +194 -0
- package/dist/features/lock/memory.js.map +1 -0
- package/dist/features/lock/types.d.ts +151 -0
- package/dist/features/lock/types.d.ts.map +1 -0
- package/dist/features/lock/types.js +17 -0
- package/dist/features/lock/types.js.map +1 -0
- package/dist/features/memory/index.d.ts +18 -0
- package/dist/features/memory/index.d.ts.map +1 -0
- package/dist/features/memory/index.js +18 -0
- package/dist/features/memory/index.js.map +1 -0
- package/dist/features/memory/lock-feature.d.ts +21 -0
- package/dist/features/memory/lock-feature.d.ts.map +1 -0
- package/dist/features/memory/lock-feature.js +24 -0
- package/dist/features/memory/lock-feature.js.map +1 -0
- package/dist/features/secrets/create-secret-provider.d.ts +31 -0
- package/dist/features/secrets/create-secret-provider.d.ts.map +1 -0
- package/dist/features/secrets/create-secret-provider.js +26 -0
- package/dist/features/secrets/create-secret-provider.js.map +1 -0
- package/dist/features/secrets/define-secret-partial.d.ts +16 -0
- package/dist/features/secrets/define-secret-partial.d.ts.map +1 -0
- package/dist/features/secrets/define-secret-partial.js +26 -0
- package/dist/features/secrets/define-secret-partial.js.map +1 -0
- package/dist/features/secrets/index.d.ts +17 -0
- package/dist/features/secrets/index.d.ts.map +1 -0
- package/dist/features/secrets/index.js +14 -0
- package/dist/features/secrets/index.js.map +1 -0
- package/dist/features/secrets/secret-of.d.ts +19 -0
- package/dist/features/secrets/secret-of.d.ts.map +1 -0
- package/dist/features/secrets/secret-of.js +21 -0
- package/dist/features/secrets/secret-of.js.map +1 -0
- package/dist/features/secrets/secret-service.d.ts +21 -0
- package/dist/features/secrets/secret-service.d.ts.map +1 -0
- package/dist/features/secrets/secret-service.js +28 -0
- package/dist/features/secrets/secret-service.js.map +1 -0
- package/dist/features/secrets/types.d.ts +30 -0
- package/dist/features/secrets/types.d.ts.map +1 -0
- package/dist/features/secrets/types.js +8 -0
- package/dist/features/secrets/types.js.map +1 -0
- package/dist/features/vault/env-var-vault.d.ts +24 -0
- package/dist/features/vault/env-var-vault.d.ts.map +1 -0
- package/dist/features/vault/env-var-vault.js +43 -0
- package/dist/features/vault/env-var-vault.js.map +1 -0
- package/dist/features/vault/hardcoded-vault.d.ts +34 -0
- package/dist/features/vault/hardcoded-vault.d.ts.map +1 -0
- package/dist/features/vault/hardcoded-vault.js +46 -0
- package/dist/features/vault/hardcoded-vault.js.map +1 -0
- package/dist/features/vault/hashicorp-vault.d.ts +32 -0
- package/dist/features/vault/hashicorp-vault.d.ts.map +1 -0
- package/dist/features/vault/hashicorp-vault.js +69 -0
- package/dist/features/vault/hashicorp-vault.js.map +1 -0
- package/dist/features/vault/index.d.ts +13 -0
- package/dist/features/vault/index.d.ts.map +1 -0
- package/dist/features/vault/index.js +12 -0
- package/dist/features/vault/index.js.map +1 -0
- package/dist/features/vault/kubernetes-vault.d.ts +27 -0
- package/dist/features/vault/kubernetes-vault.d.ts.map +1 -0
- package/dist/features/vault/kubernetes-vault.js +51 -0
- package/dist/features/vault/kubernetes-vault.js.map +1 -0
- package/dist/features/vault/types.d.ts +41 -0
- package/dist/features/vault/types.d.ts.map +1 -0
- package/dist/features/vault/types.js +21 -0
- package/dist/features/vault/types.js.map +1 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/justscale.d.ts +63 -0
- package/dist/justscale.d.ts.map +1 -0
- package/dist/justscale.js +501 -0
- package/dist/justscale.js.map +1 -0
- package/dist/kernel/adapter.d.ts +9 -0
- package/dist/kernel/adapter.d.ts.map +1 -0
- package/dist/kernel/adapter.js +2 -0
- package/dist/kernel/adapter.js.map +1 -0
- package/dist/kernel/kernel.d.ts +15 -0
- package/dist/kernel/kernel.d.ts.map +1 -0
- package/dist/kernel/kernel.js +134 -0
- package/dist/kernel/kernel.js.map +1 -0
- package/dist/models/access.d.ts +26 -0
- package/dist/models/access.d.ts.map +1 -0
- package/dist/models/access.js +126 -0
- package/dist/models/access.js.map +1 -0
- package/dist/models/apply-types-config.d.ts +52 -0
- package/dist/models/apply-types-config.d.ts.map +1 -0
- package/dist/models/apply-types-config.js +47 -0
- package/dist/models/apply-types-config.js.map +1 -0
- package/dist/models/define-model.d.ts +249 -0
- package/dist/models/define-model.d.ts.map +1 -0
- package/dist/models/define-model.js +388 -0
- package/dist/models/define-model.js.map +1 -0
- package/dist/models/field.d.ts +309 -0
- package/dist/models/field.d.ts.map +1 -0
- package/dist/models/field.js +312 -0
- package/dist/models/field.js.map +1 -0
- package/dist/models/in-memory/condition-evaluator.d.ts +53 -0
- package/dist/models/in-memory/condition-evaluator.d.ts.map +1 -0
- package/dist/models/in-memory/condition-evaluator.js +593 -0
- package/dist/models/in-memory/condition-evaluator.js.map +1 -0
- package/dist/models/in-memory/in-memory-model.d.ts +89 -0
- package/dist/models/in-memory/in-memory-model.d.ts.map +1 -0
- package/dist/models/in-memory/in-memory-model.js +101 -0
- package/dist/models/in-memory/in-memory-model.js.map +1 -0
- package/dist/models/in-memory/in-memory-repository.d.ts +208 -0
- package/dist/models/in-memory/in-memory-repository.d.ts.map +1 -0
- package/dist/models/in-memory/in-memory-repository.js +618 -0
- package/dist/models/in-memory/in-memory-repository.js.map +1 -0
- package/dist/models/in-memory/in-memory-scheduled-task.repository.d.ts +92 -0
- package/dist/models/in-memory/in-memory-scheduled-task.repository.d.ts.map +1 -0
- package/dist/models/in-memory/in-memory-scheduled-task.repository.js +395 -0
- package/dist/models/in-memory/in-memory-scheduled-task.repository.js.map +1 -0
- package/dist/models/in-memory/index.d.ts +35 -0
- package/dist/models/in-memory/index.d.ts.map +1 -0
- package/dist/models/in-memory/index.js +36 -0
- package/dist/models/in-memory/index.js.map +1 -0
- package/dist/models/index.d.ts +52 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +86 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/model-name-registry.d.ts +16 -0
- package/dist/models/model-name-registry.d.ts.map +1 -0
- package/dist/models/model-name-registry.js +19 -0
- package/dist/models/model-name-registry.js.map +1 -0
- package/dist/models/model.d.ts +15 -0
- package/dist/models/model.d.ts.map +1 -0
- package/dist/models/model.js +114 -0
- package/dist/models/model.js.map +1 -0
- package/dist/models/model.repository.d.ts +318 -0
- package/dist/models/model.repository.d.ts.map +1 -0
- package/dist/models/model.repository.js +146 -0
- package/dist/models/model.repository.js.map +1 -0
- package/dist/models/observable.d.ts +15 -0
- package/dist/models/observable.d.ts.map +1 -0
- package/dist/models/observable.js +64 -0
- package/dist/models/observable.js.map +1 -0
- package/dist/models/proxy.d.ts +5 -0
- package/dist/models/proxy.d.ts.map +1 -0
- package/dist/models/proxy.js +407 -0
- package/dist/models/proxy.js.map +1 -0
- package/dist/models/query.d.ts +574 -0
- package/dist/models/query.d.ts.map +1 -0
- package/dist/models/query.js +701 -0
- package/dist/models/query.js.map +1 -0
- package/dist/models/reference/reference.d.ts +229 -0
- package/dist/models/reference/reference.d.ts.map +1 -0
- package/dist/models/reference/reference.js +331 -0
- package/dist/models/reference/reference.js.map +1 -0
- package/dist/models/reference/transient-ref.d.ts +123 -0
- package/dist/models/reference/transient-ref.d.ts.map +1 -0
- package/dist/models/reference/transient-ref.js +152 -0
- package/dist/models/reference/transient-ref.js.map +1 -0
- package/dist/models/repository.d.ts +53 -0
- package/dist/models/repository.d.ts.map +1 -0
- package/dist/models/repository.js +37 -0
- package/dist/models/repository.js.map +1 -0
- package/dist/models/scheduled-task/index.d.ts +13 -0
- package/dist/models/scheduled-task/index.d.ts.map +1 -0
- package/dist/models/scheduled-task/index.js +12 -0
- package/dist/models/scheduled-task/index.js.map +1 -0
- package/dist/models/scheduled-task/scheduled-task.d.ts +73 -0
- package/dist/models/scheduled-task/scheduled-task.d.ts.map +1 -0
- package/dist/models/scheduled-task/scheduled-task.js +95 -0
- package/dist/models/scheduled-task/scheduled-task.js.map +1 -0
- package/dist/models/scheduled-task/scheduled-task.repository.d.ts +150 -0
- package/dist/models/scheduled-task/scheduled-task.repository.d.ts.map +1 -0
- package/dist/models/scheduled-task/scheduled-task.repository.js +40 -0
- package/dist/models/scheduled-task/scheduled-task.repository.js.map +1 -0
- package/dist/models/stream.d.ts +139 -0
- package/dist/models/stream.d.ts.map +1 -0
- package/dist/models/stream.js +153 -0
- package/dist/models/stream.js.map +1 -0
- package/dist/models/symbols.d.ts +73 -0
- package/dist/models/symbols.d.ts.map +1 -0
- package/dist/models/symbols.js +97 -0
- package/dist/models/symbols.js.map +1 -0
- package/dist/models/types.d.ts +291 -0
- package/dist/models/types.d.ts.map +1 -0
- package/dist/models/types.js +50 -0
- package/dist/models/types.js.map +1 -0
- package/dist/models/watch.d.ts +27 -0
- package/dist/models/watch.d.ts.map +1 -0
- package/dist/models/watch.js +124 -0
- package/dist/models/watch.js.map +1 -0
- package/dist/models/zod-ref.d.ts +46 -0
- package/dist/models/zod-ref.d.ts.map +1 -0
- package/dist/models/zod-ref.js +31 -0
- package/dist/models/zod-ref.js.map +1 -0
- package/dist/process/builtin-serializers.d.ts +19 -0
- package/dist/process/builtin-serializers.d.ts.map +1 -0
- package/dist/process/builtin-serializers.js +213 -0
- package/dist/process/builtin-serializers.js.map +1 -0
- package/dist/process/cluster-plugin.d.ts +129 -0
- package/dist/process/cluster-plugin.d.ts.map +1 -0
- package/dist/process/cluster-plugin.js +175 -0
- package/dist/process/cluster-plugin.js.map +1 -0
- package/dist/process/createProcess.d.ts +67 -0
- package/dist/process/createProcess.d.ts.map +1 -0
- package/dist/process/createProcess.js +111 -0
- package/dist/process/createProcess.js.map +1 -0
- package/dist/process/define-signals.d.ts +113 -0
- package/dist/process/define-signals.d.ts.map +1 -0
- package/dist/process/define-signals.js +222 -0
- package/dist/process/define-signals.js.map +1 -0
- package/dist/process/delay-controller.d.ts +35 -0
- package/dist/process/delay-controller.d.ts.map +1 -0
- package/dist/process/delay-controller.js +55 -0
- package/dist/process/delay-controller.js.map +1 -0
- package/dist/process/index.d.ts +38 -0
- package/dist/process/index.d.ts.map +1 -0
- package/dist/process/index.js +47 -0
- package/dist/process/index.js.map +1 -0
- package/dist/process/primitives.d.ts +393 -0
- package/dist/process/primitives.d.ts.map +1 -0
- package/dist/process/primitives.js +325 -0
- package/dist/process/primitives.js.map +1 -0
- package/dist/process/serialization.d.ts +58 -0
- package/dist/process/serialization.d.ts.map +1 -0
- package/dist/process/serialization.js +220 -0
- package/dist/process/serialization.js.map +1 -0
- package/dist/process/stream-utils.d.ts +123 -0
- package/dist/process/stream-utils.d.ts.map +1 -0
- package/dist/process/stream-utils.js +247 -0
- package/dist/process/stream-utils.js.map +1 -0
- package/dist/process/testing/clock.d.ts +115 -0
- package/dist/process/testing/clock.d.ts.map +1 -0
- package/dist/process/testing/clock.js +166 -0
- package/dist/process/testing/clock.js.map +1 -0
- package/dist/process/testing/index.d.ts +9 -0
- package/dist/process/testing/index.d.ts.map +1 -0
- package/dist/process/testing/index.js +9 -0
- package/dist/process/testing/index.js.map +1 -0
- package/dist/process/testing.d.ts +50 -0
- package/dist/process/testing.d.ts.map +1 -0
- package/dist/process/testing.js +59 -0
- package/dist/process/testing.js.map +1 -0
- package/dist/process/types.d.ts +540 -0
- package/dist/process/types.d.ts.map +1 -0
- package/dist/process/types.js +21 -0
- package/dist/process/types.js.map +1 -0
- package/dist/queue/index.d.ts +2 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +2 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/queue/queue.d.ts +34 -0
- package/dist/queue/queue.d.ts.map +1 -0
- package/dist/queue/queue.js +108 -0
- package/dist/queue/queue.js.map +1 -0
- package/dist/runtime/process/compiled.d.ts +56 -0
- package/dist/runtime/process/compiled.d.ts.map +1 -0
- package/dist/runtime/process/compiled.js +221 -0
- package/dist/runtime/process/compiled.js.map +1 -0
- package/dist/runtime/process/executor.d.ts +279 -0
- package/dist/runtime/process/executor.d.ts.map +1 -0
- package/dist/runtime/process/executor.js +1941 -0
- package/dist/runtime/process/executor.js.map +1 -0
- package/dist/runtime/process/factory.d.ts +72 -0
- package/dist/runtime/process/factory.d.ts.map +1 -0
- package/dist/runtime/process/factory.js +78 -0
- package/dist/runtime/process/factory.js.map +1 -0
- package/dist/runtime/process/freeze.d.ts +5 -0
- package/dist/runtime/process/freeze.d.ts.map +1 -0
- package/dist/runtime/process/freeze.js +94 -0
- package/dist/runtime/process/freeze.js.map +1 -0
- package/dist/runtime/process/scheduled-task-timer.d.ts +52 -0
- package/dist/runtime/process/scheduled-task-timer.d.ts.map +1 -0
- package/dist/runtime/process/scheduled-task-timer.js +104 -0
- package/dist/runtime/process/scheduled-task-timer.js.map +1 -0
- package/dist/runtime/process/signal-bus.d.ts +186 -0
- package/dist/runtime/process/signal-bus.d.ts.map +1 -0
- package/dist/runtime/process/signal-bus.js +256 -0
- package/dist/runtime/process/signal-bus.js.map +1 -0
- package/dist/runtime/process/state-serializer.d.ts +30 -0
- package/dist/runtime/process/state-serializer.d.ts.map +1 -0
- package/dist/runtime/process/state-serializer.js +244 -0
- package/dist/runtime/process/state-serializer.js.map +1 -0
- package/dist/runtime/process/storage.d.ts +96 -0
- package/dist/runtime/process/storage.d.ts.map +1 -0
- package/dist/runtime/process/storage.js +165 -0
- package/dist/runtime/process/storage.js.map +1 -0
- package/dist/runtime/process/timer-scheduler.d.ts +115 -0
- package/dist/runtime/process/timer-scheduler.d.ts.map +1 -0
- package/dist/runtime/process/timer-scheduler.js +192 -0
- package/dist/runtime/process/timer-scheduler.js.map +1 -0
- package/dist/runtime/process/trace.d.ts +17 -0
- package/dist/runtime/process/trace.d.ts.map +1 -0
- package/dist/runtime/process/trace.js +26 -0
- package/dist/runtime/process/trace.js.map +1 -0
- package/dist/runtime/protobuf/encoding/index.d.ts +26 -0
- package/dist/runtime/protobuf/encoding/index.d.ts.map +1 -0
- package/dist/runtime/protobuf/encoding/index.js +30 -0
- package/dist/runtime/protobuf/encoding/index.js.map +1 -0
- package/dist/runtime/protobuf/encoding/reader.d.ts +182 -0
- package/dist/runtime/protobuf/encoding/reader.d.ts.map +1 -0
- package/dist/runtime/protobuf/encoding/reader.js +353 -0
- package/dist/runtime/protobuf/encoding/reader.js.map +1 -0
- package/dist/runtime/protobuf/encoding/varint.d.ts +67 -0
- package/dist/runtime/protobuf/encoding/varint.d.ts.map +1 -0
- package/dist/runtime/protobuf/encoding/varint.js +117 -0
- package/dist/runtime/protobuf/encoding/varint.js.map +1 -0
- package/dist/runtime/protobuf/encoding/wire-types.d.ts +62 -0
- package/dist/runtime/protobuf/encoding/wire-types.d.ts.map +1 -0
- package/dist/runtime/protobuf/encoding/wire-types.js +103 -0
- package/dist/runtime/protobuf/encoding/wire-types.js.map +1 -0
- package/dist/runtime/protobuf/encoding/writer.d.ts +147 -0
- package/dist/runtime/protobuf/encoding/writer.d.ts.map +1 -0
- package/dist/runtime/protobuf/encoding/writer.js +214 -0
- package/dist/runtime/protobuf/encoding/writer.js.map +1 -0
- package/dist/runtime/protobuf/index.d.ts +3 -0
- package/dist/runtime/protobuf/index.d.ts.map +1 -0
- package/dist/runtime/protobuf/index.js +3 -0
- package/dist/runtime/protobuf/index.js.map +1 -0
- package/dist/runtime/protobuf/serialized.d.ts +48 -0
- package/dist/runtime/protobuf/serialized.d.ts.map +1 -0
- package/dist/runtime/protobuf/serialized.js +517 -0
- package/dist/runtime/protobuf/serialized.js.map +1 -0
- package/package.json +209 -0
package/dist/core/hmr.js
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hot Module Replacement (HMR) Runtime
|
|
3
|
+
*
|
|
4
|
+
* Provides runtime functions for the compiler-generated HMR code.
|
|
5
|
+
* These functions are prefixed with __ to indicate they're compiler-internal.
|
|
6
|
+
*
|
|
7
|
+
* @module @justscale/core/hmr
|
|
8
|
+
*/
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Global Container Reference
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Global container reference for HMR runtime.
|
|
14
|
+
* Set by setHmrContainer() during app initialization.
|
|
15
|
+
*/
|
|
16
|
+
let hmrContainer = null;
|
|
17
|
+
/**
|
|
18
|
+
* Set the container for HMR runtime.
|
|
19
|
+
* Called by the app builder during initialization in dev mode.
|
|
20
|
+
*
|
|
21
|
+
* @param container - The app's container instance
|
|
22
|
+
*/
|
|
23
|
+
export function setHmrContainer(container) {
|
|
24
|
+
hmrContainer = container;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the current HMR container.
|
|
28
|
+
* Throws if not initialized.
|
|
29
|
+
*/
|
|
30
|
+
function getContainer() {
|
|
31
|
+
if (!hmrContainer) {
|
|
32
|
+
throw new Error('[HMR] Container not initialized. Are you running in dev mode with `just dev`?');
|
|
33
|
+
}
|
|
34
|
+
return hmrContainer;
|
|
35
|
+
}
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Type Hash Registry
|
|
38
|
+
// ============================================================================
|
|
39
|
+
/**
|
|
40
|
+
* Stores the current type hash schema for each service.
|
|
41
|
+
* Updated each time __validateHmrState is called during factory execution.
|
|
42
|
+
* Used by __wrapHmrStateForSave to bundle hashes with saved state.
|
|
43
|
+
*/
|
|
44
|
+
const typeHashRegistry = new Map();
|
|
45
|
+
/**
|
|
46
|
+
* Wrap user-provided hotReload state with type hashes for later validation.
|
|
47
|
+
* Called by the container when saving HMR state during full reload.
|
|
48
|
+
*
|
|
49
|
+
* @param serviceId - The stable service ID
|
|
50
|
+
* @param state - The raw state from the user's hotReload callback
|
|
51
|
+
* @returns Wrapped state with __values and __typeHashes, or the raw state if no hashes registered
|
|
52
|
+
*/
|
|
53
|
+
export function __wrapHmrStateForSave(serviceId, state) {
|
|
54
|
+
if (state == null || typeof state !== 'object') {
|
|
55
|
+
return state;
|
|
56
|
+
}
|
|
57
|
+
const schema = typeHashRegistry.get(serviceId);
|
|
58
|
+
if (!schema) {
|
|
59
|
+
return state;
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
__values: state,
|
|
63
|
+
__typeHashes: { ...schema },
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// ============================================================================
|
|
67
|
+
// Compiler-Generated Functions
|
|
68
|
+
// ============================================================================
|
|
69
|
+
/**
|
|
70
|
+
* Get HMR state for a service during factory execution.
|
|
71
|
+
* Called by compiler-generated factory wrapper:
|
|
72
|
+
*
|
|
73
|
+
* ```typescript
|
|
74
|
+
* factory: ((__hmr) =>
|
|
75
|
+
* ({ lifecycle }) => {
|
|
76
|
+
* const cache = __hmr?.cache ?? new Map()
|
|
77
|
+
* // ...
|
|
78
|
+
* }
|
|
79
|
+
* )(__getHmrState('src/services/cache.ts#CacheService'))
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* @param serviceId - The stable service ID
|
|
83
|
+
* @returns The saved HMR state, or undefined if none
|
|
84
|
+
*/
|
|
85
|
+
export function __getHmrState(serviceId) {
|
|
86
|
+
if (!hmrContainer) {
|
|
87
|
+
// Not in dev mode or container not initialized yet
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
return hmrContainer.getHmrState(serviceId);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Patch methods on a service instance.
|
|
94
|
+
* Called by compiler-generated HMR update code when only method bodies changed.
|
|
95
|
+
*
|
|
96
|
+
* @param serviceId - The stable service ID
|
|
97
|
+
* @param changedMethods - List of method names that changed
|
|
98
|
+
*/
|
|
99
|
+
export async function __hmrPatchMethods(serviceId, changedMethods) {
|
|
100
|
+
const container = getContainer();
|
|
101
|
+
await container.hotReload(serviceId, 'method-patch', changedMethods);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Trigger a full reload of a service.
|
|
105
|
+
* Called by compiler-generated HMR update code when structure changed.
|
|
106
|
+
*
|
|
107
|
+
* @param serviceId - The stable service ID
|
|
108
|
+
*/
|
|
109
|
+
export async function __hmrFullReload(serviceId) {
|
|
110
|
+
const container = getContainer();
|
|
111
|
+
await container.hotReload(serviceId, 'full-reload');
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Validate HMR state before injection.
|
|
115
|
+
*
|
|
116
|
+
* Performs per-variable type-aware validation. The state is stored as:
|
|
117
|
+
* { __values: { cache: ..., counter: ... }, __typeHashes: { cache: 'abc', counter: 'def' } }
|
|
118
|
+
*
|
|
119
|
+
* For each expected variable, compares the stored type hash against the current
|
|
120
|
+
* expected hash. Variables whose types haven't changed are preserved; variables
|
|
121
|
+
* whose types changed are discarded (returning undefined for that key, so the
|
|
122
|
+
* ?? fallback in the factory kicks in).
|
|
123
|
+
*
|
|
124
|
+
* Also supports legacy format (plain object without __values/__typeHashes) for
|
|
125
|
+
* backward compatibility - in that case, all keys are preserved if they match
|
|
126
|
+
* by name (no type validation possible).
|
|
127
|
+
*
|
|
128
|
+
* @param state - The raw state from __getHmrState
|
|
129
|
+
* @param expectedSchema - Map of variable name to type hash (or string[] for legacy)
|
|
130
|
+
* @param serviceId - The service ID (for warning messages)
|
|
131
|
+
* @returns The validated state (partial object with only type-compatible keys), or undefined
|
|
132
|
+
*/
|
|
133
|
+
export function __validateHmrState(state, expectedSchema, serviceId) {
|
|
134
|
+
// Register current schema for future saves (only for Record format)
|
|
135
|
+
if (!Array.isArray(expectedSchema)) {
|
|
136
|
+
typeHashRegistry.set(serviceId, expectedSchema);
|
|
137
|
+
}
|
|
138
|
+
if (state == null) {
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
if (typeof state !== 'object') {
|
|
142
|
+
console.warn(`[HMR] ${serviceId}: discarding state - expected object, got ${typeof state}`);
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
if (Array.isArray(expectedSchema)) {
|
|
146
|
+
const stateKeys = Object.keys(state);
|
|
147
|
+
const expectedSet = new Set(expectedSchema);
|
|
148
|
+
const stateSet = new Set(stateKeys);
|
|
149
|
+
const missing = expectedSchema.filter(k => !stateSet.has(k));
|
|
150
|
+
const extra = stateKeys.filter(k => !expectedSet.has(k));
|
|
151
|
+
if (missing.length > 0 || extra.length > 0) {
|
|
152
|
+
const parts = [];
|
|
153
|
+
if (missing.length > 0)
|
|
154
|
+
parts.push(`missing: ${missing.join(', ')}`);
|
|
155
|
+
if (extra.length > 0)
|
|
156
|
+
parts.push(`extra: ${extra.join(', ')}`);
|
|
157
|
+
console.warn(`[HMR] ${serviceId}: discarding state - shape mismatch (${parts.join('; ')})`);
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
return state;
|
|
161
|
+
}
|
|
162
|
+
const stateObj = state;
|
|
163
|
+
const storedValues = stateObj.__values;
|
|
164
|
+
const storedHashes = stateObj.__typeHashes;
|
|
165
|
+
if (!storedValues) {
|
|
166
|
+
const stateKeys = Object.keys(state);
|
|
167
|
+
const expectedKeys = Object.keys(expectedSchema);
|
|
168
|
+
const expectedSet = new Set(expectedKeys);
|
|
169
|
+
const stateSet = new Set(stateKeys);
|
|
170
|
+
const missing = expectedKeys.filter(k => !stateSet.has(k));
|
|
171
|
+
const extra = stateKeys.filter(k => !expectedSet.has(k));
|
|
172
|
+
if (missing.length > 0 || extra.length > 0) {
|
|
173
|
+
console.warn(`[HMR] ${serviceId}: discarding state - shape mismatch`);
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
return state;
|
|
177
|
+
}
|
|
178
|
+
// Per-key type-aware validation
|
|
179
|
+
const result = {};
|
|
180
|
+
const discarded = [];
|
|
181
|
+
for (const [key, expectedHash] of Object.entries(expectedSchema)) {
|
|
182
|
+
const storedHash = storedHashes?.[key];
|
|
183
|
+
const hasValue = key in storedValues;
|
|
184
|
+
if (!hasValue) {
|
|
185
|
+
// New variable added - will use ?? fallback
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
// Empty hash means no type info (no checker was available) - always accept
|
|
189
|
+
if (expectedHash === '' || storedHash === '' || storedHash === undefined) {
|
|
190
|
+
result[key] = storedValues[key];
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
if (storedHash === expectedHash) {
|
|
194
|
+
result[key] = storedValues[key];
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
discarded.push(key);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (discarded.length > 0) {
|
|
201
|
+
console.warn(`[HMR] ${serviceId}: type changed for ${discarded.join(', ')} - using fresh defaults`);
|
|
202
|
+
}
|
|
203
|
+
return Object.keys(result).length > 0 ? result : undefined;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Check if HMR is available (dev mode with container initialized).
|
|
207
|
+
*/
|
|
208
|
+
export function __hmrAvailable() {
|
|
209
|
+
return hmrContainer !== null;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=hmr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmr.js","sourceRoot":"","sources":["../../src/core/hmr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export * from './service.js';
|
|
2
|
+
export * from './contribution.js';
|
|
3
|
+
export * from './disposable.js';
|
|
4
|
+
export * from './container-reflection.js';
|
|
5
|
+
export * from './scope-bridge.js';
|
|
6
|
+
export * from './context.js';
|
|
7
|
+
export { Lifecycle, isLifecycleToken, LIFECYCLE_TOKEN } from './lifecycle.js';
|
|
8
|
+
export type { LifecycleHooks } from './lifecycle.js';
|
|
9
|
+
export { LifecycleImpl } from './lifecycle-impl.js';
|
|
10
|
+
export * from './logger.js';
|
|
11
|
+
export * from './controller.js';
|
|
12
|
+
export * from './controller.contextual.js';
|
|
13
|
+
export * from './controller.procedure.js';
|
|
14
|
+
export * from './middleware.js';
|
|
15
|
+
export * from './plugin.js';
|
|
16
|
+
export * from './hmr.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAGlC,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAG1C,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Core - Foundation: DI + routing + observability
|
|
2
|
+
// DI Container & Services
|
|
3
|
+
export * from './service.js';
|
|
4
|
+
export * from './contribution.js';
|
|
5
|
+
export * from './disposable.js';
|
|
6
|
+
export * from './container-reflection.js';
|
|
7
|
+
export * from './scope-bridge.js';
|
|
8
|
+
// Request Context
|
|
9
|
+
export * from './context.js';
|
|
10
|
+
// Lifecycle
|
|
11
|
+
export { Lifecycle, isLifecycleToken, LIFECYCLE_TOKEN } from './lifecycle.js';
|
|
12
|
+
export { LifecycleImpl } from './lifecycle-impl.js';
|
|
13
|
+
// Logger
|
|
14
|
+
export * from './logger.js';
|
|
15
|
+
// Controller
|
|
16
|
+
export * from './controller.js';
|
|
17
|
+
export * from './controller.contextual.js';
|
|
18
|
+
export * from './controller.procedure.js';
|
|
19
|
+
// Middleware & Guards
|
|
20
|
+
export * from './middleware.js';
|
|
21
|
+
// Plugin System
|
|
22
|
+
export * from './plugin.js';
|
|
23
|
+
// HMR
|
|
24
|
+
export * from './hmr.js';
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,0BAA0B;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAElC,kBAAkB;AAClB,cAAc,cAAc,CAAC;AAE7B,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,SAAS;AACT,cAAc,aAAa,CAAC;AAE5B,aAAa;AACb,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAE1C,sBAAsB;AACtB,cAAc,iBAAiB,CAAC;AAEhC,gBAAgB;AAChB,cAAc,aAAa,CAAC;AAE5B,MAAM;AACN,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal Route Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for route compilation and matching.
|
|
5
|
+
* Not part of the public API.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Join controller prefix and route path cleanly.
|
|
9
|
+
* Returns both the full path string and an array of segments.
|
|
10
|
+
*
|
|
11
|
+
* Examples:
|
|
12
|
+
* - /players + / = { path: '/players', segments: ['players'] }
|
|
13
|
+
* - /players + /:id = { path: '/players/:id', segments: ['players', ':id'] }
|
|
14
|
+
* - auth + create-user = { path: 'auth/create-user', segments: ['auth', 'create-user'] }
|
|
15
|
+
* - '' + shell = { path: 'shell', segments: ['shell'] }
|
|
16
|
+
*/
|
|
17
|
+
export declare function joinPaths(prefix: string, path: string): {
|
|
18
|
+
path: string;
|
|
19
|
+
segments: string[];
|
|
20
|
+
};
|
|
21
|
+
/** Compile a path pattern to regex */
|
|
22
|
+
export declare function compilePath(path: string): {
|
|
23
|
+
pattern: RegExp;
|
|
24
|
+
paramNames: string[];
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/core/internal/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAoB5F;AAED,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAcnF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal Route Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for route compilation and matching.
|
|
5
|
+
* Not part of the public API.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Join controller prefix and route path cleanly.
|
|
9
|
+
* Returns both the full path string and an array of segments.
|
|
10
|
+
*
|
|
11
|
+
* Examples:
|
|
12
|
+
* - /players + / = { path: '/players', segments: ['players'] }
|
|
13
|
+
* - /players + /:id = { path: '/players/:id', segments: ['players', ':id'] }
|
|
14
|
+
* - auth + create-user = { path: 'auth/create-user', segments: ['auth', 'create-user'] }
|
|
15
|
+
* - '' + shell = { path: 'shell', segments: ['shell'] }
|
|
16
|
+
*/
|
|
17
|
+
export function joinPaths(prefix, path) {
|
|
18
|
+
// Parse prefix into segments (filter empty strings from leading/trailing slashes)
|
|
19
|
+
const prefixSegments = prefix.split('/').filter(s => s !== '');
|
|
20
|
+
// Parse path into segments
|
|
21
|
+
const pathSegments = (path === '/' || path === '')
|
|
22
|
+
? []
|
|
23
|
+
: path.split('/').filter(s => s !== '');
|
|
24
|
+
// Combine segments
|
|
25
|
+
const segments = [...prefixSegments, ...pathSegments];
|
|
26
|
+
// Build path string - HTTP routes need leading slash, CLI routes don't
|
|
27
|
+
// We check both prefix and path to determine this (prefix takes priority, then path)
|
|
28
|
+
const needsLeadingSlash = prefix.startsWith('/') || (prefix === '' && path.startsWith('/'));
|
|
29
|
+
const fullPath = segments.length === 0
|
|
30
|
+
? '/'
|
|
31
|
+
: (needsLeadingSlash ? '/' : '') + segments.join('/');
|
|
32
|
+
return { path: fullPath, segments };
|
|
33
|
+
}
|
|
34
|
+
/** Compile a path pattern to regex */
|
|
35
|
+
export function compilePath(path) {
|
|
36
|
+
const paramNames = [];
|
|
37
|
+
let pattern = path.replace(/:(\w+)/g, (_, name) => {
|
|
38
|
+
paramNames.push(name);
|
|
39
|
+
return '([^/]+)';
|
|
40
|
+
});
|
|
41
|
+
// Make trailing slash optional: /players matches both /players and /players/
|
|
42
|
+
pattern = pattern + '/?';
|
|
43
|
+
return {
|
|
44
|
+
pattern: new RegExp(`^${pattern}$`),
|
|
45
|
+
paramNames,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/core/internal/routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,IAAY;IACpD,kFAAkF;IAClF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAE/D,2BAA2B;IAC3B,MAAM,YAAY,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;QAChD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAE1C,mBAAmB;IACnB,MAAM,QAAQ,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,YAAY,CAAC,CAAC;IAEtD,uEAAuE;IACvE,qFAAqF;IACrF,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC;QACpC,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QAChD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;IAEzB,OAAO;QACL,OAAO,EAAE,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC;QACnC,UAAU;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lifecycle Implementation
|
|
3
|
+
*
|
|
4
|
+
* Concrete implementation of the Lifecycle abstract class.
|
|
5
|
+
* Manages handler registration and execution with proper ordering.
|
|
6
|
+
*/
|
|
7
|
+
import { Lifecycle, type LifecycleHooks } from './lifecycle.js';
|
|
8
|
+
/** @internal Concrete Lifecycle implementation used by the kernel. */
|
|
9
|
+
export declare class LifecycleImpl extends Lifecycle {
|
|
10
|
+
private handlers;
|
|
11
|
+
private currentPhase;
|
|
12
|
+
private hotReloadHandlers;
|
|
13
|
+
private currentServiceId;
|
|
14
|
+
/**
|
|
15
|
+
* Register a lifecycle hook handler.
|
|
16
|
+
*
|
|
17
|
+
* @throws Error if attempting to register during the same hook's execution
|
|
18
|
+
*/
|
|
19
|
+
register<K extends keyof LifecycleHooks>(hook: K, handler: LifecycleHooks[K]): void;
|
|
20
|
+
/**
|
|
21
|
+
* Check if a specific lifecycle phase is currently running.
|
|
22
|
+
*/
|
|
23
|
+
isInPhase(hook: keyof LifecycleHooks): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Run all handlers for a hook.
|
|
26
|
+
*
|
|
27
|
+
* Execution order:
|
|
28
|
+
* - 'stop': LIFO (reverse order) for proper dependency cleanup
|
|
29
|
+
* - All others: FIFO (registration order)
|
|
30
|
+
*
|
|
31
|
+
* Error handling:
|
|
32
|
+
* - Errors are caught and logged
|
|
33
|
+
* - Execution continues with remaining handlers
|
|
34
|
+
* - All handlers are guaranteed to be called
|
|
35
|
+
*
|
|
36
|
+
* @param hook - The hook to execute handlers for
|
|
37
|
+
*/
|
|
38
|
+
runHook(hook: keyof LifecycleHooks): Promise<void>;
|
|
39
|
+
setServiceContext(serviceId: string | null): void;
|
|
40
|
+
getServiceContext(): string | null;
|
|
41
|
+
runHotReload(serviceId: string): Promise<unknown>;
|
|
42
|
+
hasHotReloadHandler(serviceId: string): boolean;
|
|
43
|
+
clearHotReloadHandler(serviceId: string): void;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=lifecycle-impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-impl.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle-impl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAahE,sEAAsE;AACtE,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,QAAQ,CAAkD;IAClE,OAAO,CAAC,YAAY,CAAqC;IAEzD,OAAO,CAAC,iBAAiB,CAAuC;IAChE,OAAO,CAAC,gBAAgB,CAAuB;IAE/C;;;;OAIG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,cAAc,EACrC,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACzB,IAAI;IAqBP;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,cAAc,GAAG,OAAO;IAI9C;;;;;;;;;;;;;OAaG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBxD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIjD,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAI5B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAcvD,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/C,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAG/C"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lifecycle Implementation
|
|
3
|
+
*
|
|
4
|
+
* Concrete implementation of the Lifecycle abstract class.
|
|
5
|
+
* Manages handler registration and execution with proper ordering.
|
|
6
|
+
*/
|
|
7
|
+
import { Lifecycle } from './lifecycle.js';
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Lifecycle Implementation
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/** @internal Concrete Lifecycle implementation used by the kernel. */
|
|
12
|
+
export class LifecycleImpl extends Lifecycle {
|
|
13
|
+
handlers = new Map();
|
|
14
|
+
currentPhase = null;
|
|
15
|
+
hotReloadHandlers = new Map();
|
|
16
|
+
currentServiceId = null;
|
|
17
|
+
/**
|
|
18
|
+
* Register a lifecycle hook handler.
|
|
19
|
+
*
|
|
20
|
+
* @throws Error if attempting to register during the same hook's execution
|
|
21
|
+
*/
|
|
22
|
+
register(hook, handler) {
|
|
23
|
+
if (this.currentPhase === hook) {
|
|
24
|
+
throw new Error(`Cannot register '${hook}' handler while '${hook}' phase is running`);
|
|
25
|
+
}
|
|
26
|
+
if (hook === 'hotReload') {
|
|
27
|
+
if (!this.currentServiceId) {
|
|
28
|
+
console.warn('[Lifecycle] hotReload handler registered without service context - will be ignored');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
this.hotReloadHandlers.set(this.currentServiceId, handler);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const handlers = this.handlers.get(hook) ?? [];
|
|
35
|
+
handlers.push(handler);
|
|
36
|
+
this.handlers.set(hook, handlers);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if a specific lifecycle phase is currently running.
|
|
40
|
+
*/
|
|
41
|
+
isInPhase(hook) {
|
|
42
|
+
return this.currentPhase === hook;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Run all handlers for a hook.
|
|
46
|
+
*
|
|
47
|
+
* Execution order:
|
|
48
|
+
* - 'stop': LIFO (reverse order) for proper dependency cleanup
|
|
49
|
+
* - All others: FIFO (registration order)
|
|
50
|
+
*
|
|
51
|
+
* Error handling:
|
|
52
|
+
* - Errors are caught and logged
|
|
53
|
+
* - Execution continues with remaining handlers
|
|
54
|
+
* - All handlers are guaranteed to be called
|
|
55
|
+
*
|
|
56
|
+
* @param hook - The hook to execute handlers for
|
|
57
|
+
*/
|
|
58
|
+
async runHook(hook) {
|
|
59
|
+
this.currentPhase = hook;
|
|
60
|
+
try {
|
|
61
|
+
const handlers = this.handlers.get(hook) ?? [];
|
|
62
|
+
const ordered = hook === 'stop' ? [...handlers].reverse() : handlers;
|
|
63
|
+
for (const handler of ordered) {
|
|
64
|
+
try {
|
|
65
|
+
await handler();
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error(`[Lifecycle] ${hook} handler threw:`, error);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
this.currentPhase = null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
setServiceContext(serviceId) {
|
|
77
|
+
this.currentServiceId = serviceId;
|
|
78
|
+
}
|
|
79
|
+
getServiceContext() {
|
|
80
|
+
return this.currentServiceId;
|
|
81
|
+
}
|
|
82
|
+
async runHotReload(serviceId) {
|
|
83
|
+
const handler = this.hotReloadHandlers.get(serviceId);
|
|
84
|
+
if (!handler) {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
return await handler();
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error(`[Lifecycle] hotReload handler for ${serviceId} threw:`, error);
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
hasHotReloadHandler(serviceId) {
|
|
96
|
+
return this.hotReloadHandlers.has(serviceId);
|
|
97
|
+
}
|
|
98
|
+
clearHotReloadHandler(serviceId) {
|
|
99
|
+
this.hotReloadHandlers.delete(serviceId);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=lifecycle-impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle-impl.js","sourceRoot":"","sources":["../../src/core/lifecycle-impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lifecycle hook registration for graceful shutdown and extensible events.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Symbol to identify Lifecycle as a built-in service.
|
|
6
|
+
* Used by Container to detect and special-case Lifecycle resolution.
|
|
7
|
+
*/
|
|
8
|
+
export declare const LIFECYCLE_TOKEN: unique symbol;
|
|
9
|
+
/**
|
|
10
|
+
* Extensible lifecycle hooks interface.
|
|
11
|
+
* Transports and features extend this via module augmentation.
|
|
12
|
+
*
|
|
13
|
+
* @example Adding HTTP serving hook (in @justscale/http)
|
|
14
|
+
* ```typescript
|
|
15
|
+
* declare module '@justscale/core' {
|
|
16
|
+
* interface LifecycleHooks {
|
|
17
|
+
* httpServing(): Promise<void> | void
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @example Adding WebSocket ready hook (in @justscale/websocket)
|
|
23
|
+
* ```typescript
|
|
24
|
+
* declare module '@justscale/core' {
|
|
25
|
+
* interface LifecycleHooks {
|
|
26
|
+
* wsReady(): Promise<void> | void
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export interface LifecycleHooks {
|
|
32
|
+
/** Called when cluster.stop() is invoked. LIFO order. */
|
|
33
|
+
stop(): Promise<void> | void;
|
|
34
|
+
/**
|
|
35
|
+
* Called when this service is about to be hot-reloaded (dev mode only).
|
|
36
|
+
* Return state to preserve across the reload.
|
|
37
|
+
*
|
|
38
|
+
* The compiler automatically injects the returned state into variable
|
|
39
|
+
* initializers, so you don't need manual restoration logic.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* class CacheService extends defineService({
|
|
44
|
+
* inject: { lifecycle: Lifecycle },
|
|
45
|
+
* factory: ({ lifecycle }) => {
|
|
46
|
+
* const cache = new Map<string, User>()
|
|
47
|
+
*
|
|
48
|
+
* // Declare what to preserve - compiler handles the rest
|
|
49
|
+
* lifecycle.register('hotReload', () => ({ cache }))
|
|
50
|
+
*
|
|
51
|
+
* return { get: (id) => cache.get(id) }
|
|
52
|
+
* }
|
|
53
|
+
* }) {}
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
hotReload(): Promise<unknown> | unknown;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Lifecycle service for registering hooks.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* class DatabaseService extends defineService({
|
|
64
|
+
* inject: { lifecycle: Lifecycle },
|
|
65
|
+
* factory: async ({ lifecycle }) => {
|
|
66
|
+
* const pool = await createPool()
|
|
67
|
+
* lifecycle.register('stop', async () => { await pool.end() })
|
|
68
|
+
* return { pool }
|
|
69
|
+
* }
|
|
70
|
+
* }) {}
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare abstract class Lifecycle {
|
|
74
|
+
/**
|
|
75
|
+
* Register a lifecycle hook handler.
|
|
76
|
+
* 'stop' runs LIFO; all other hooks run FIFO.
|
|
77
|
+
*
|
|
78
|
+
* @throws Error if registering during the same hook's execution.
|
|
79
|
+
*/
|
|
80
|
+
abstract register<K extends keyof LifecycleHooks>(hook: K, handler: LifecycleHooks[K]): void;
|
|
81
|
+
/** Returns true if the given hook phase is currently executing. */
|
|
82
|
+
abstract isInPhase(hook: keyof LifecycleHooks): boolean;
|
|
83
|
+
}
|
|
84
|
+
/** @internal */
|
|
85
|
+
export declare function isLifecycleToken(token: unknown): token is typeof Lifecycle;
|
|
86
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;;GAGG;AACH,eAAO,MAAM,eAAe,eAAgC,CAAC;AAM7D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAE5B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;CACxC;AAMD;;;;;;;;;;;;;;GAcG;AACH,8BAAsB,SAAS;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,MAAM,cAAc,EAC9C,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACzB,IAAI;IAEP,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,cAAc,GAAG,OAAO;CACxD;AAID,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,SAAS,CAE1E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lifecycle hook registration for graceful shutdown and extensible events.
|
|
3
|
+
*/
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// Lifecycle Token
|
|
6
|
+
// ============================================================================
|
|
7
|
+
/**
|
|
8
|
+
* Symbol to identify Lifecycle as a built-in service.
|
|
9
|
+
* Used by Container to detect and special-case Lifecycle resolution.
|
|
10
|
+
*/
|
|
11
|
+
export const LIFECYCLE_TOKEN = Symbol('justscale:Lifecycle');
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Lifecycle Abstract Class
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Lifecycle service for registering hooks.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* class DatabaseService extends defineService({
|
|
21
|
+
* inject: { lifecycle: Lifecycle },
|
|
22
|
+
* factory: async ({ lifecycle }) => {
|
|
23
|
+
* const pool = await createPool()
|
|
24
|
+
* lifecycle.register('stop', async () => { await pool.end() })
|
|
25
|
+
* return { pool }
|
|
26
|
+
* }
|
|
27
|
+
* }) {}
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export class Lifecycle {
|
|
31
|
+
}
|
|
32
|
+
;
|
|
33
|
+
Lifecycle[LIFECYCLE_TOKEN] = true;
|
|
34
|
+
/** @internal */
|
|
35
|
+
export function isLifecycleToken(token) {
|
|
36
|
+
return token === Lifecycle || token?.[LIFECYCLE_TOKEN] === true;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAyD7D,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAgB,SAAS;CAc9B;AAED,CAAC;AAAC,SAAiB,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;AAE5C,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,KAAK,SAAS,IAAK,KAAa,EAAE,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;AAC3E,CAAC"}
|