@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
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @justscale/process - Process Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates durable process definitions that are transformed by the compiler
|
|
5
|
+
* into opcode-based execution graphs.
|
|
6
|
+
*/
|
|
7
|
+
import type { ServiceToken } from '../core/index.js';
|
|
8
|
+
import type { ExtractPathParams, ProcessConfig, ProcessDefinition } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Symbol marking a process definition for compiler detection.
|
|
11
|
+
* The compiler uses this to identify and transform process handlers.
|
|
12
|
+
*/
|
|
13
|
+
export declare const PROCESS_DEFINITION: unique symbol;
|
|
14
|
+
export declare const SUBPROCESS_DEFINITION: unique symbol;
|
|
15
|
+
/**
|
|
16
|
+
* Creates a durable process definition.
|
|
17
|
+
*
|
|
18
|
+
* Process definitions are compiled by the JustScale compiler into opcode-based
|
|
19
|
+
* execution graphs that support:
|
|
20
|
+
* - Durable execution across restarts
|
|
21
|
+
* - Signal-based suspension and resumption
|
|
22
|
+
* - Transactional state persistence
|
|
23
|
+
* - Race conditions between signals and timers
|
|
24
|
+
*
|
|
25
|
+
* The runtime stub returned by this function throws at runtime - the actual
|
|
26
|
+
* implementation is injected by the compiler transform.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* import { createProcess } from '@justscale/process'
|
|
31
|
+
*
|
|
32
|
+
* const OrderFulfillment = createProcess({
|
|
33
|
+
* path: '/order/:orderId/fulfillment',
|
|
34
|
+
* inject: { payments: PaymentService, shipping: ShippingService },
|
|
35
|
+
* async handler({ payments, shipping }, [orderId]) {
|
|
36
|
+
* // Suspend until payment is received
|
|
37
|
+
* const payment = await payments.received(orderId)
|
|
38
|
+
*
|
|
39
|
+
* // Continue with shipping
|
|
40
|
+
* await shipping.dispatch(orderId, payment.address)
|
|
41
|
+
*
|
|
42
|
+
* return { status: 'fulfilled' }
|
|
43
|
+
* },
|
|
44
|
+
* })
|
|
45
|
+
*
|
|
46
|
+
* // Start a process instance
|
|
47
|
+
* const handle = await OrderFulfillment(['order-123'])
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @param config - Process configuration including path, dependencies, and handler
|
|
51
|
+
* @returns A process definition that can start and query process instances
|
|
52
|
+
*/
|
|
53
|
+
export declare function createProcess<TPath extends string, TDeps extends Record<string, ServiceToken>, TResult, TExports = void, TTypes extends Record<string, import('./types.js').ModelClass> = {}>(config: ProcessConfig<TPath, TDeps, TResult, TExports, TTypes>): ProcessDefinition<TPath, ExtractPathParams<TPath>, TResult, TExports>;
|
|
54
|
+
export interface SubProcessConfig<THandler extends (...args: any[]) => Promise<any> = (...args: any[]) => Promise<unknown>> {
|
|
55
|
+
name: string;
|
|
56
|
+
path: string;
|
|
57
|
+
handler: THandler;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Declares a named subprocess inside a process handler.
|
|
61
|
+
* The compiler transforms this into nested state within the parent process.
|
|
62
|
+
* At runtime, the returned callable spawns subprocess instances.
|
|
63
|
+
*/
|
|
64
|
+
export declare function createSubProcess<THandler extends (...args: any[]) => Promise<any>>(config: SubProcessConfig<THandler>): THandler & {
|
|
65
|
+
[SUBPROCESS_DEFINITION]: true;
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=createProcess.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createProcess.d.ts","sourceRoot":"","sources":["../../src/process/createProcess.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AAIH,eAAO,MAAM,kBAAkB,eAA4C,CAAC;AAC5E,eAAO,MAAM,qBAAqB,eAA+C,CAAC;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,aAAa,CAC3B,KAAK,SAAS,MAAM,EACpB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC1C,OAAO,EACP,QAAQ,GAAG,IAAI,EACf,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,YAAY,EAAE,UAAU,CAAC,GAAG,EAAE,EAEnE,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,GAC7D,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CA8DvE;AAED,MAAM,WAAW,gBAAgB,CAAC,QAAQ,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC;IACxH,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,QAAQ,CAAA;CAClB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAChF,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GACjC,QAAQ,GAAG;IAAE,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAA;CAAE,CAU9C"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @justscale/process - Process Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates durable process definitions that are transformed by the compiler
|
|
5
|
+
* into opcode-based execution graphs.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Symbol marking a process definition for compiler detection.
|
|
9
|
+
* The compiler uses this to identify and transform process handlers.
|
|
10
|
+
*/
|
|
11
|
+
// Cross-realm: tests forge these via Symbol.for() and the compiler emits
|
|
12
|
+
// references in user code. Keep interned so identity matches across module
|
|
13
|
+
// instances and across the test/runtime boundary.
|
|
14
|
+
export const PROCESS_DEFINITION = Symbol.for('justscale:processDefinition');
|
|
15
|
+
export const SUBPROCESS_DEFINITION = Symbol.for('justscale:subprocessDefinition');
|
|
16
|
+
/**
|
|
17
|
+
* Creates a durable process definition.
|
|
18
|
+
*
|
|
19
|
+
* Process definitions are compiled by the JustScale compiler into opcode-based
|
|
20
|
+
* execution graphs that support:
|
|
21
|
+
* - Durable execution across restarts
|
|
22
|
+
* - Signal-based suspension and resumption
|
|
23
|
+
* - Transactional state persistence
|
|
24
|
+
* - Race conditions between signals and timers
|
|
25
|
+
*
|
|
26
|
+
* The runtime stub returned by this function throws at runtime - the actual
|
|
27
|
+
* implementation is injected by the compiler transform.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { createProcess } from '@justscale/process'
|
|
32
|
+
*
|
|
33
|
+
* const OrderFulfillment = createProcess({
|
|
34
|
+
* path: '/order/:orderId/fulfillment',
|
|
35
|
+
* inject: { payments: PaymentService, shipping: ShippingService },
|
|
36
|
+
* async handler({ payments, shipping }, [orderId]) {
|
|
37
|
+
* // Suspend until payment is received
|
|
38
|
+
* const payment = await payments.received(orderId)
|
|
39
|
+
*
|
|
40
|
+
* // Continue with shipping
|
|
41
|
+
* await shipping.dispatch(orderId, payment.address)
|
|
42
|
+
*
|
|
43
|
+
* return { status: 'fulfilled' }
|
|
44
|
+
* },
|
|
45
|
+
* })
|
|
46
|
+
*
|
|
47
|
+
* // Start a process instance
|
|
48
|
+
* const handle = await OrderFulfillment(['order-123'])
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @param config - Process configuration including path, dependencies, and handler
|
|
52
|
+
* @returns A process definition that can start and query process instances
|
|
53
|
+
*/
|
|
54
|
+
export function createProcess(config) {
|
|
55
|
+
const storedConfig = config;
|
|
56
|
+
const processCallable = async (_params) => {
|
|
57
|
+
throw new Error(`Process "${config.path}" not compiled. ` +
|
|
58
|
+
'Run the JustScale compiler to transform process definitions into executable opcodes.');
|
|
59
|
+
};
|
|
60
|
+
const get = async (_params) => {
|
|
61
|
+
throw new Error(`Process "${config.path}" not compiled. ` +
|
|
62
|
+
'The get() method requires the compiler transform to be applied.');
|
|
63
|
+
};
|
|
64
|
+
const query = (_pattern) => {
|
|
65
|
+
return {
|
|
66
|
+
[Symbol.asyncIterator]() {
|
|
67
|
+
return {
|
|
68
|
+
async next() {
|
|
69
|
+
throw new Error(`Process "${config.path}" not compiled. ` +
|
|
70
|
+
'The query() method requires the compiler transform to be applied.');
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Emit a signal to processes waiting for it.
|
|
78
|
+
* @deprecated Use service methods instead. Provided for testing.
|
|
79
|
+
*/
|
|
80
|
+
const emit = async (_signal, _identity, _payload) => {
|
|
81
|
+
throw new Error(`Process "${config.path}" not compiled. ` +
|
|
82
|
+
'The emit() method requires the compiler transform to be applied.');
|
|
83
|
+
};
|
|
84
|
+
const definition = Object.assign(processCallable, {
|
|
85
|
+
path: config.path,
|
|
86
|
+
get,
|
|
87
|
+
query,
|
|
88
|
+
emit,
|
|
89
|
+
exports: undefined,
|
|
90
|
+
[PROCESS_DEFINITION]: true,
|
|
91
|
+
__config: storedConfig,
|
|
92
|
+
deps: config.inject,
|
|
93
|
+
factory: (_resolvedDeps) => processCallable,
|
|
94
|
+
});
|
|
95
|
+
return definition;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Declares a named subprocess inside a process handler.
|
|
99
|
+
* The compiler transforms this into nested state within the parent process.
|
|
100
|
+
* At runtime, the returned callable spawns subprocess instances.
|
|
101
|
+
*/
|
|
102
|
+
export function createSubProcess(config) {
|
|
103
|
+
const callable = (..._args) => {
|
|
104
|
+
throw new Error(`createSubProcess("${config.name}") not compiled. ` +
|
|
105
|
+
'Run the JustScale compiler to transform subprocess definitions.');
|
|
106
|
+
};
|
|
107
|
+
callable[SUBPROCESS_DEFINITION] = true;
|
|
108
|
+
callable.__config = config;
|
|
109
|
+
return callable;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=createProcess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createProcess.js","sourceRoot":"","sources":["../../src/process/createProcess.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;;GAGG;AACH,yEAAyE;AACzE,2EAA2E;AAC3E,kDAAkD;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,aAAa,CAO3B,MAA8D;IAI9D,MAAM,YAAY,GAAG,MAAM,CAAC;IAE5B,MAAM,eAAe,GAAG,KAAK,EAAE,OAAgB,EAA6C,EAAE;QAC5F,MAAM,IAAI,KAAK,CACb,YAAY,MAAM,CAAC,IAAI,kBAAkB;YACzC,sFAAsF,CACvF,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,KAAK,EAAE,OAAgB,EAAoD,EAAE;QACvF,MAAM,IAAI,KAAK,CACb,YAAY,MAAM,CAAC,IAAI,kBAAkB;YACzC,iEAAiE,CAClE,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,QAAyC,EAAmD,EAAE;QAC3G,OAAO;YACL,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpB,OAAO;oBACL,KAAK,CAAC,IAAI;wBACR,MAAM,IAAI,KAAK,CACb,YAAY,MAAM,CAAC,IAAI,kBAAkB;4BACzC,mEAAmE,CACpE,CAAC;oBACJ,CAAC;iBACF,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;IAEF;;;OAGG;IACH,MAAM,IAAI,GAAG,KAAK,EAChB,OAAe,EACf,SAAoB,EACpB,QAAiB,EACF,EAAE;QACjB,MAAM,IAAI,KAAK,CACb,YAAY,MAAM,CAAC,IAAI,kBAAkB;YACzC,kEAAkE,CACnE,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE;QAChD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG;QACH,KAAK;QACL,IAAI;QACJ,OAAO,EAAE,SAAS;QAClB,CAAC,kBAAkB,CAAC,EAAE,IAAI;QAC1B,QAAQ,EAAE,YAAY;QACtB,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,OAAO,EAAE,CAAC,aAAsC,EAAE,EAAE,CAAC,eAAe;KACrE,CAAyD,CAAC;IAE3D,OAAO,UAAU,CAAC;AACpB,CAAC;AAQD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAkC;IAElC,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAgB,EAAoB,EAAE;QACzD,MAAM,IAAI,KAAK,CACb,qBAAqB,MAAM,CAAC,IAAI,mBAAmB;YACnD,iEAAiE,CAClE,CAAC;IACJ,CAAC,CAAC;IACD,QAAgB,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC;IAC/C,QAAgB,CAAC,QAAQ,GAAG,MAAM,CAAC;IACpC,OAAO,QAAe,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* defineSignals — declarative signal group with DI-wired executor.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the manual pattern of injecting AbstractProcessExecutor and
|
|
5
|
+
* calling executor.createSignal() in every signal service.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* export class PaymentSignals extends defineSignals(signal => ({
|
|
10
|
+
* confirmed: signal('/payment/:order/confirmed').types({ Order }),
|
|
11
|
+
* failed: signal<{ reason: string }>('/payment/:order/failed').types({ Order }),
|
|
12
|
+
* })) {}
|
|
13
|
+
*
|
|
14
|
+
* // Inject and emit:
|
|
15
|
+
* class OrderService extends defineService({
|
|
16
|
+
* inject: { payment: PaymentSignals },
|
|
17
|
+
* factory: ({ payment }) => ({
|
|
18
|
+
* async markPaid(order: Locked<Order>) {
|
|
19
|
+
* await payment.confirmed({ order });
|
|
20
|
+
* },
|
|
21
|
+
* }),
|
|
22
|
+
* }) {}
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import type { ResolveParamType, ExtractParamNames } from '../models/apply-types-config.js';
|
|
26
|
+
import type { Locked } from '../models/types.js';
|
|
27
|
+
import { AbstractProcessExecutor } from '../runtime/process/executor.js';
|
|
28
|
+
import { type ModelClass, type Signal } from './types.js';
|
|
29
|
+
/**
|
|
30
|
+
* Per-path-param, build the emit/receive type.
|
|
31
|
+
* If the param matches a model in .types(), it's Locked<T>. Otherwise string.
|
|
32
|
+
*/
|
|
33
|
+
type SignalPathArgs<TPath extends string, TTypes extends Record<string, ModelClass>> = {
|
|
34
|
+
[P in ExtractParamNames<TPath>]: ResolveParamType<P, TTypes> extends never ? string : Locked<InstanceType<Extract<ResolveParamType<P, TTypes>, ModelClass>>>;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Full signal args: path params (typed or string) + data fields from generic.
|
|
38
|
+
* If there are no path params and no data, the arg is void (just call with ()).
|
|
39
|
+
*/
|
|
40
|
+
type SignalArgs<TPath extends string, TTypes extends Record<string, ModelClass>, TData> = [ExtractParamNames<TPath>] extends [never] ? (TData extends void ? void : TData) : TData extends void ? SignalPathArgs<TPath, TTypes> : SignalPathArgs<TPath, TTypes> & TData;
|
|
41
|
+
/**
|
|
42
|
+
* A built, callable signal.
|
|
43
|
+
*
|
|
44
|
+
* Structurally compatible with `Signal<[], TArgs, string>`:
|
|
45
|
+
* - Identity tuple is empty (no positional args)
|
|
46
|
+
* - TPayload is the full args object (merged path + data fields)
|
|
47
|
+
* - Callable signature: `(args: TArgs)` — single object
|
|
48
|
+
*
|
|
49
|
+
* This lets the existing `signal()` primitive and race narrowing work
|
|
50
|
+
* unchanged. The compiler reads `.signalName` for routing.
|
|
51
|
+
*/
|
|
52
|
+
export interface BuiltSignal<TPath extends string, TTypes extends Record<string, ModelClass>, TData> extends Signal<[], SignalArgs<TPath, TTypes, TData>, string> {
|
|
53
|
+
/** Path pattern for identity extraction */
|
|
54
|
+
readonly path: TPath;
|
|
55
|
+
/** Types config, if .types() was called */
|
|
56
|
+
readonly typesConfig: TTypes;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Intermediate builder returned by `signal(path)`.
|
|
60
|
+
* Supports:
|
|
61
|
+
* - `.data<T>()` to attach an extra data payload type
|
|
62
|
+
* - `.types(config)` to attach model classes to path params
|
|
63
|
+
*/
|
|
64
|
+
export interface SignalBuilder<TPath extends string, TData> extends BuiltSignal<TPath, {}, TData> {
|
|
65
|
+
/**
|
|
66
|
+
* Attach model types to path params.
|
|
67
|
+
* Matched params become `Locked<T>` in the emit/receive signature.
|
|
68
|
+
*/
|
|
69
|
+
types<TTypes extends Record<string, ModelClass>>(config: TTypes): BuiltSignal<TPath, TTypes, TData>;
|
|
70
|
+
/**
|
|
71
|
+
* Attach an extra data payload type. Fields from the generic are merged
|
|
72
|
+
* into the signal args alongside path params.
|
|
73
|
+
*
|
|
74
|
+
* Use `.data<T>()` instead of `signal<T>('/path')` — the latter doesn't
|
|
75
|
+
* work because TypeScript can't mix explicit + inferred generics.
|
|
76
|
+
*/
|
|
77
|
+
data<TNewData>(): SignalBuilder<TPath, TNewData>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The `signal` factory passed to `defineSignals`.
|
|
81
|
+
* Single generic `TPath` inferred from the path argument (via `const`).
|
|
82
|
+
*
|
|
83
|
+
* To add a data payload, use `.data<T>()`:
|
|
84
|
+
* signal('/path').data<{ code: string }>()
|
|
85
|
+
* signal('/path').data<{ reason: string }>().types({ Order })
|
|
86
|
+
*/
|
|
87
|
+
export interface SignalFactory {
|
|
88
|
+
<const TPath extends string>(path: TPath): SignalBuilder<TPath, void>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Factory type — no constraint on TSignals to preserve literal type inference.
|
|
92
|
+
* The factory return is just a record of signal-like values.
|
|
93
|
+
*/
|
|
94
|
+
type SignalsFactory<TSignals> = (signal: SignalFactory) => TSignals;
|
|
95
|
+
/**
|
|
96
|
+
* Define a group of signals. Returns a class that can be injected via DI.
|
|
97
|
+
*
|
|
98
|
+
* The factory receives a `signal` builder that's wired to the executor
|
|
99
|
+
* internally — no need to inject AbstractProcessExecutor manually.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* export class PaymentSignals extends defineSignals(signal => ({
|
|
104
|
+
* confirmed: signal('/payment/:order/confirmed').types({ Order }),
|
|
105
|
+
* failed: signal<{ reason: string }>('/payment/:order/failed').types({ Order }),
|
|
106
|
+
* })) {}
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export declare function defineSignals<TSignals>(factory: SignalsFactory<TSignals>): import("../core/service.js").Service<Awaited<TSignals>, {
|
|
110
|
+
readonly executor: typeof AbstractProcessExecutor;
|
|
111
|
+
}>;
|
|
112
|
+
export {};
|
|
113
|
+
//# sourceMappingURL=define-signals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-signals.d.ts","sourceRoot":"","sources":["../../src/process/define-signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAG3F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAMxE;;;GAGG;AACH,KAAK,cAAc,CACjB,KAAK,SAAS,MAAM,EACpB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IACvC;KACD,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAC9B,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,KAAK,GACrC,MAAM,GACN,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;CAC3E,CAAC;AAEF;;;GAGG;AACH,KAAK,UAAU,CACb,KAAK,SAAS,MAAM,EACpB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACzC,KAAK,IACH,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC1C,CAAC,KAAK,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,GACnC,KAAK,SAAS,IAAI,GAChB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,GAC7B,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW,CAC1B,KAAK,SAAS,MAAM,EACpB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACzC,KAAK,CACL,SAAQ,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAC5D,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAC5B,KAAK,SAAS,MAAM,EACpB,KAAK,CACL,SAAQ,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC;IACrC;;;OAGG;IACH,KAAK,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7C,MAAM,EAAE,MAAM,GACb,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAErC;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,KAAK,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;CAClD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,KAAK,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;CACvE;AAqLD;;;GAGG;AACH,KAAK,cAAc,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,aAAa,KAAK,QAAQ,CAAC;AAEpE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;;GA0BxE"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* defineSignals — declarative signal group with DI-wired executor.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the manual pattern of injecting AbstractProcessExecutor and
|
|
5
|
+
* calling executor.createSignal() in every signal service.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* export class PaymentSignals extends defineSignals(signal => ({
|
|
10
|
+
* confirmed: signal('/payment/:order/confirmed').types({ Order }),
|
|
11
|
+
* failed: signal<{ reason: string }>('/payment/:order/failed').types({ Order }),
|
|
12
|
+
* })) {}
|
|
13
|
+
*
|
|
14
|
+
* // Inject and emit:
|
|
15
|
+
* class OrderService extends defineService({
|
|
16
|
+
* inject: { payment: PaymentSignals },
|
|
17
|
+
* factory: ({ payment }) => ({
|
|
18
|
+
* async markPaid(order: Locked<Order>) {
|
|
19
|
+
* await payment.confirmed({ order });
|
|
20
|
+
* },
|
|
21
|
+
* }),
|
|
22
|
+
* }) {}
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import { defineService } from '../core/index.js';
|
|
26
|
+
import { ADAPTER_KEY } from '../models/symbols.js';
|
|
27
|
+
import { isReference } from '../models/reference/reference.js';
|
|
28
|
+
import { AbstractProcessExecutor } from '../runtime/process/executor.js';
|
|
29
|
+
import { SIGNAL_BRAND } from './types.js';
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Runtime: build a signal from a path + options
|
|
32
|
+
// ============================================================================
|
|
33
|
+
/**
|
|
34
|
+
* Derive the signal name (for routing) from a path.
|
|
35
|
+
* `/payment/:order/confirmed` → `payment.order.confirmed`
|
|
36
|
+
* (strips leading `/`, replaces `/` with `.`, strips `:` prefix from params)
|
|
37
|
+
*/
|
|
38
|
+
function pathToSignalName(path) {
|
|
39
|
+
if (!path)
|
|
40
|
+
return `anonymous.${Math.random().toString(36).slice(2, 10)}`;
|
|
41
|
+
return path
|
|
42
|
+
.replace(/^\//, '')
|
|
43
|
+
.replace(/\//g, '.')
|
|
44
|
+
.replace(/:/g, '');
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Extract path param names from a path string.
|
|
48
|
+
* `/payment/:order/confirmed` → ['order']
|
|
49
|
+
*/
|
|
50
|
+
function extractPathParams(path) {
|
|
51
|
+
if (!path)
|
|
52
|
+
return [];
|
|
53
|
+
const params = [];
|
|
54
|
+
const regex = /:([a-zA-Z_][a-zA-Z0-9_]*)/g;
|
|
55
|
+
let match;
|
|
56
|
+
while ((match = regex.exec(path)) !== null) {
|
|
57
|
+
params.push(match[1]);
|
|
58
|
+
}
|
|
59
|
+
return params;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Resolve path param name against a types config using the same matching
|
|
63
|
+
* rules as applyTypesConfig: direct key, lowercased key, lowercased + "Ref".
|
|
64
|
+
*/
|
|
65
|
+
function resolveModelForParam(paramName, typesConfig) {
|
|
66
|
+
if (!typesConfig)
|
|
67
|
+
return undefined;
|
|
68
|
+
for (const [key, model] of Object.entries(typesConfig)) {
|
|
69
|
+
if (key === paramName)
|
|
70
|
+
return model;
|
|
71
|
+
if (key.toLowerCase() === paramName)
|
|
72
|
+
return model;
|
|
73
|
+
if (key.toLowerCase() + 'Ref' === paramName)
|
|
74
|
+
return model;
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Extract identifier from a value that could be:
|
|
80
|
+
* - A string (raw ID)
|
|
81
|
+
* - A Reference (has .identifier)
|
|
82
|
+
* - A Persistent or Lock entity (has ADAPTER_KEY)
|
|
83
|
+
* - A plain object with .id
|
|
84
|
+
*
|
|
85
|
+
* Throws on null/undefined: silent string coercion to "null"/"undefined"
|
|
86
|
+
* produces valid-looking but colliding identities that stomp unrelated
|
|
87
|
+
* runs on the same path.
|
|
88
|
+
*/
|
|
89
|
+
function extractIdentifier(value) {
|
|
90
|
+
if (value === null || value === undefined) {
|
|
91
|
+
throw new Error('extractIdentifier: identifier is null/undefined');
|
|
92
|
+
}
|
|
93
|
+
if (typeof value === 'string')
|
|
94
|
+
return value;
|
|
95
|
+
// Reference
|
|
96
|
+
if (isReference(value)) {
|
|
97
|
+
return value.identifier;
|
|
98
|
+
}
|
|
99
|
+
// Persistent/Lock entity — check ADAPTER_KEY symbol
|
|
100
|
+
const rec = value;
|
|
101
|
+
const adapterKey = rec[ADAPTER_KEY];
|
|
102
|
+
if (adapterKey !== undefined)
|
|
103
|
+
return String(adapterKey);
|
|
104
|
+
// Fallback: .id property
|
|
105
|
+
if (rec.id !== undefined)
|
|
106
|
+
return String(rec.id);
|
|
107
|
+
throw new Error(`Cannot extract identifier from value: ${JSON.stringify(value)}`);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Build a callable signal for a given path + types config.
|
|
111
|
+
* The signal is wired to the executor for emission.
|
|
112
|
+
*/
|
|
113
|
+
function buildSignal(executor, path, typesConfig) {
|
|
114
|
+
const signalName = pathToSignalName(path);
|
|
115
|
+
const pathParams = extractPathParams(path);
|
|
116
|
+
// Duplicate path params collapse into a single identity key on emit
|
|
117
|
+
// (last write wins), which silently conflates two distinct entities.
|
|
118
|
+
// Fail at definition time so '/order/:id/line/:id' can't ship.
|
|
119
|
+
const seenParams = new Set();
|
|
120
|
+
for (const name of pathParams) {
|
|
121
|
+
if (seenParams.has(name)) {
|
|
122
|
+
throw new Error(`defineSignals: path '${path}' has duplicate param ':${name}'`);
|
|
123
|
+
}
|
|
124
|
+
seenParams.add(name);
|
|
125
|
+
}
|
|
126
|
+
const signal = async (argsOrVoid) => {
|
|
127
|
+
const args = argsOrVoid ?? {};
|
|
128
|
+
// Extract identity: for each path param, pull from args and get its identifier
|
|
129
|
+
const identity = {};
|
|
130
|
+
for (const param of pathParams) {
|
|
131
|
+
const value = args[param];
|
|
132
|
+
if (value === undefined) {
|
|
133
|
+
throw new Error(`Signal "${signalName}" missing required path param: ${param}`);
|
|
134
|
+
}
|
|
135
|
+
identity[param] = extractIdentifier(value);
|
|
136
|
+
}
|
|
137
|
+
// Build payload. Path params passed as Locked<T> cannot cross the wire —
|
|
138
|
+
// lock guarantees are local. Replace each typed path param with its
|
|
139
|
+
// Reference equivalent via Model.ref(locked) — receivers get Reference<T>
|
|
140
|
+
// and re-acquire a lock themselves if they need mutating access.
|
|
141
|
+
// Non-path-param fields pass through unchanged; the encoder throws on Locked<T>.
|
|
142
|
+
const payload = {};
|
|
143
|
+
for (const [key, value] of Object.entries(args)) {
|
|
144
|
+
if (pathParams.includes(key)) {
|
|
145
|
+
const model = resolveModelForParam(key, typesConfig);
|
|
146
|
+
if (model && value && typeof value === 'object') {
|
|
147
|
+
payload[key] = model.ref(value);
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
payload[key] = value;
|
|
152
|
+
}
|
|
153
|
+
await executor.emit(signalName, identity, payload);
|
|
154
|
+
};
|
|
155
|
+
// Add signal metadata
|
|
156
|
+
Object.defineProperty(signal, SIGNAL_BRAND, {
|
|
157
|
+
value: SIGNAL_BRAND,
|
|
158
|
+
enumerable: false,
|
|
159
|
+
});
|
|
160
|
+
Object.defineProperty(signal, 'signalName', {
|
|
161
|
+
value: signalName,
|
|
162
|
+
enumerable: false,
|
|
163
|
+
});
|
|
164
|
+
Object.defineProperty(signal, '__identityParams', {
|
|
165
|
+
value: pathParams,
|
|
166
|
+
enumerable: false,
|
|
167
|
+
});
|
|
168
|
+
Object.defineProperty(signal, 'path', {
|
|
169
|
+
value: path,
|
|
170
|
+
enumerable: false,
|
|
171
|
+
});
|
|
172
|
+
Object.defineProperty(signal, 'typesConfig', {
|
|
173
|
+
value: typesConfig,
|
|
174
|
+
enumerable: false,
|
|
175
|
+
});
|
|
176
|
+
// Block direct `await signal` outside of process handlers
|
|
177
|
+
Object.defineProperty(signal, 'then', {
|
|
178
|
+
value: () => {
|
|
179
|
+
throw new Error(`Cannot await signal "${signalName}" directly. Use signal() inside a process handler.`);
|
|
180
|
+
},
|
|
181
|
+
enumerable: false,
|
|
182
|
+
});
|
|
183
|
+
return signal;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Define a group of signals. Returns a class that can be injected via DI.
|
|
187
|
+
*
|
|
188
|
+
* The factory receives a `signal` builder that's wired to the executor
|
|
189
|
+
* internally — no need to inject AbstractProcessExecutor manually.
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```typescript
|
|
193
|
+
* export class PaymentSignals extends defineSignals(signal => ({
|
|
194
|
+
* confirmed: signal('/payment/:order/confirmed').types({ Order }),
|
|
195
|
+
* failed: signal<{ reason: string }>('/payment/:order/failed').types({ Order }),
|
|
196
|
+
* })) {}
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
export function defineSignals(factory) {
|
|
200
|
+
return defineService({
|
|
201
|
+
inject: { executor: AbstractProcessExecutor },
|
|
202
|
+
factory: ({ executor }) => {
|
|
203
|
+
const makeBuilder = (resolvedPath, typesConfig) => {
|
|
204
|
+
const s = buildSignal(executor, resolvedPath, typesConfig);
|
|
205
|
+
// .types() → new builder with types config (runtime identical)
|
|
206
|
+
Object.defineProperty(s, 'types', {
|
|
207
|
+
value: (config) => makeBuilder(resolvedPath, config),
|
|
208
|
+
enumerable: false,
|
|
209
|
+
});
|
|
210
|
+
// .data<T>() → type-level only; runtime returns the same signal
|
|
211
|
+
Object.defineProperty(s, 'data', {
|
|
212
|
+
value: () => s,
|
|
213
|
+
enumerable: false,
|
|
214
|
+
});
|
|
215
|
+
return s;
|
|
216
|
+
};
|
|
217
|
+
const signalFactory = ((path) => makeBuilder(path, {}));
|
|
218
|
+
return factory(signalFactory);
|
|
219
|
+
},
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=define-signals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-signals.js","sourceRoot":"","sources":["../../src/process/define-signals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process Delay Controller
|
|
3
|
+
*
|
|
4
|
+
* Handles process delay timers via the ScheduledTask transport.
|
|
5
|
+
* Add this controller to your cluster to enable durable process delays.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import '@justscale/process/cluster'
|
|
10
|
+
* import '@justscale/core/cluster/scheduled-task'
|
|
11
|
+
* import { ProcessDelayController } from '@justscale/process/delay-controller'
|
|
12
|
+
*
|
|
13
|
+
* const cluster = createClusterBuilder()
|
|
14
|
+
* .add(InMemoryScheduledTaskRepository)
|
|
15
|
+
* .add(ProcessDelayController)
|
|
16
|
+
* .build()
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
import { ProcessRuntimeService } from './cluster-plugin.js';
|
|
20
|
+
/**
|
|
21
|
+
* Controller that handles process delay timers.
|
|
22
|
+
*
|
|
23
|
+
* When a process calls `delay.seconds(30)`, the runtime schedules a task
|
|
24
|
+
* with namespace 'process' and type 'delay'. This controller receives
|
|
25
|
+
* those tasks when they're due and resumes the waiting process.
|
|
26
|
+
*/
|
|
27
|
+
export declare const ProcessDelayController: import("@justscale/core").ControllerDef<{
|
|
28
|
+
readonly runtime: typeof ProcessRuntimeService;
|
|
29
|
+
}, {
|
|
30
|
+
readonly handleDelay: import("../cluster/scheduled-task/types.js").ScheduledTaskRouteDef<Record<string, unknown>, {
|
|
31
|
+
instanceId: string;
|
|
32
|
+
branchId?: string | undefined;
|
|
33
|
+
}>;
|
|
34
|
+
}, import("@justscale/core").ControllerSettings>;
|
|
35
|
+
//# sourceMappingURL=delay-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delay-controller.d.ts","sourceRoot":"","sources":["../../src/process/delay-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAY5D;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;;;;;gDAejC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process Delay Controller
|
|
3
|
+
*
|
|
4
|
+
* Handles process delay timers via the ScheduledTask transport.
|
|
5
|
+
* Add this controller to your cluster to enable durable process delays.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import '@justscale/process/cluster'
|
|
10
|
+
* import '@justscale/core/cluster/scheduled-task'
|
|
11
|
+
* import { ProcessDelayController } from '@justscale/process/delay-controller'
|
|
12
|
+
*
|
|
13
|
+
* const cluster = createClusterBuilder()
|
|
14
|
+
* .add(InMemoryScheduledTaskRepository)
|
|
15
|
+
* .add(ProcessDelayController)
|
|
16
|
+
* .build()
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
import { createController } from '../index.js';
|
|
20
|
+
import { z } from 'zod';
|
|
21
|
+
import { ScheduledTask } from '../cluster/scheduled-task/index.js';
|
|
22
|
+
import { ProcessRuntimeService } from './cluster-plugin.js';
|
|
23
|
+
import { TIMER_NAMESPACE, TIMER_TYPE } from '../runtime/process/scheduled-task-timer.js';
|
|
24
|
+
import { ADAPTER_KEY } from '../models/symbols.js';
|
|
25
|
+
/**
|
|
26
|
+
* Zod schema for process delay task payloads.
|
|
27
|
+
*/
|
|
28
|
+
const TimerPayloadSchema = z.object({
|
|
29
|
+
instanceId: z.string(),
|
|
30
|
+
branchId: z.string().optional(),
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Controller that handles process delay timers.
|
|
34
|
+
*
|
|
35
|
+
* When a process calls `delay.seconds(30)`, the runtime schedules a task
|
|
36
|
+
* with namespace 'process' and type 'delay'. This controller receives
|
|
37
|
+
* those tasks when they're due and resumes the waiting process.
|
|
38
|
+
*/
|
|
39
|
+
export const ProcessDelayController = createController({
|
|
40
|
+
inject: {
|
|
41
|
+
runtime: ProcessRuntimeService,
|
|
42
|
+
},
|
|
43
|
+
routes: ({ runtime }) => ({
|
|
44
|
+
handleDelay: ScheduledTask(TIMER_NAMESPACE, TIMER_TYPE)
|
|
45
|
+
.payload(TimerPayloadSchema)
|
|
46
|
+
.handle(async ({ task, payload }) => {
|
|
47
|
+
runtime.handleTimerFired({
|
|
48
|
+
timerId: task[ADAPTER_KEY],
|
|
49
|
+
instanceId: payload.instanceId,
|
|
50
|
+
branchId: payload.branchId,
|
|
51
|
+
});
|
|
52
|
+
}),
|
|
53
|
+
}),
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=delay-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delay-controller.js","sourceRoot":"","sources":["../../src/process/delay-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;IACrD,MAAM,EAAE;QACN,OAAO,EAAE,qBAAqB;KAC/B;IACD,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACxB,WAAW,EAAE,aAAa,CAAC,eAAe,EAAE,UAAU,CAAC;aACpD,OAAO,CAAC,kBAAkB,CAAC;aAC3B,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;YAClC,OAAO,CAAC,gBAAgB,CAAC;gBACvB,OAAO,EAAG,IAA2C,CAAC,WAAW,CAAW;gBAC5E,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC,CAAC;QACL,CAAC,CAAC;KACL,CAAC;CACH,CAAC,CAAC"}
|