@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,325 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @justscale/process - Signal Primitives
|
|
3
|
+
*
|
|
4
|
+
* These functions provide the developer API for process control flow.
|
|
5
|
+
* The actual behavior is implemented through compiler transforms that convert
|
|
6
|
+
* calls to these functions into opcodes for the process runtime.
|
|
7
|
+
*/
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Durable Iterator Protocol
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Symbol for getting the current cursor from a durable iterator.
|
|
13
|
+
* Called by runtime before suspension to persist position.
|
|
14
|
+
*/
|
|
15
|
+
export const DurableCursor = Symbol.for('justscale:DurableCursor');
|
|
16
|
+
/**
|
|
17
|
+
* Symbol for restoring an iterator from a saved cursor.
|
|
18
|
+
* Called by runtime on resume to continue iteration.
|
|
19
|
+
*/
|
|
20
|
+
export const FromCursor = Symbol.for('justscale:FromCursor');
|
|
21
|
+
/**
|
|
22
|
+
* Wrapper that makes regular arrays durable.
|
|
23
|
+
* The cursor is simply the index.
|
|
24
|
+
*/
|
|
25
|
+
export class DurableArrayIterator {
|
|
26
|
+
items;
|
|
27
|
+
index;
|
|
28
|
+
constructor(items, initialCursor) {
|
|
29
|
+
this.items = items;
|
|
30
|
+
if (typeof initialCursor === 'number' && Number.isFinite(initialCursor)) {
|
|
31
|
+
// Floor non-integers, clamp to valid range [0, items.length]
|
|
32
|
+
// Upper bound is items.length (not length-1) to allow "done" position
|
|
33
|
+
const floored = Math.floor(initialCursor);
|
|
34
|
+
this.index = Math.max(0, Math.min(floored, items.length));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// NaN, Infinity, strings, objects, etc. all reset to 0
|
|
38
|
+
this.index = 0;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
[DurableCursor]() {
|
|
42
|
+
return this.index;
|
|
43
|
+
}
|
|
44
|
+
[FromCursor](cursor) {
|
|
45
|
+
return new DurableArrayIterator(this.items, cursor);
|
|
46
|
+
}
|
|
47
|
+
[Symbol.asyncIterator]() {
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
async next() {
|
|
51
|
+
if (this.index >= this.items.length) {
|
|
52
|
+
return { done: true, value: undefined };
|
|
53
|
+
}
|
|
54
|
+
const value = this.items[this.index];
|
|
55
|
+
this.index++;
|
|
56
|
+
return { done: false, value };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if a value implements the durable iterator protocol.
|
|
61
|
+
*/
|
|
62
|
+
export function isDurableIterable(value) {
|
|
63
|
+
return (typeof value === 'object' &&
|
|
64
|
+
value !== null &&
|
|
65
|
+
DurableCursor in value &&
|
|
66
|
+
FromCursor in value);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create a durable iterator from an array.
|
|
70
|
+
* If a cursor is provided, resumes from that position.
|
|
71
|
+
*/
|
|
72
|
+
export function createDurableArrayIterator(items, cursor) {
|
|
73
|
+
return new DurableArrayIterator(items, cursor);
|
|
74
|
+
}
|
|
75
|
+
// ============================================================================
|
|
76
|
+
// Signal Primitives
|
|
77
|
+
// ============================================================================
|
|
78
|
+
/** Symbol to identify signal placeholders at runtime */
|
|
79
|
+
const SIGNAL_PLACEHOLDER = Symbol.for('@justscale/process/signal');
|
|
80
|
+
/** Symbol to identify signal.all() placeholders at runtime. Cross-realm with tests. */
|
|
81
|
+
const SIGNAL_ALL_PLACEHOLDER = Symbol.for('@justscale/process/signal.all');
|
|
82
|
+
/** Symbol to identify signal.settled() placeholders at runtime. Cross-realm with tests. */
|
|
83
|
+
const SIGNAL_SETTLED_PLACEHOLDER = Symbol.for('@justscale/process/signal.settled');
|
|
84
|
+
/** Symbol to identify race placeholders at runtime. Cross-realm with tests. */
|
|
85
|
+
const RACE_PLACEHOLDER = Symbol.for('@justscale/process/race');
|
|
86
|
+
/** Symbol to identify delay placeholders at runtime. Cross-realm with tests. */
|
|
87
|
+
const DELAY_PLACEHOLDER = Symbol.for('@justscale/process/delay');
|
|
88
|
+
/**
|
|
89
|
+
* Wait for a signal inside a process, or use as a case discriminant in race().
|
|
90
|
+
*
|
|
91
|
+
* **Awaiting a signal (single arg):**
|
|
92
|
+
* When awaited inside a process handler, this suspends the process until
|
|
93
|
+
* the signal is emitted and returns the payload.
|
|
94
|
+
*
|
|
95
|
+
* **In a race switch (two args):**
|
|
96
|
+
* Pass the race result as first arg to narrow its type in the case branch.
|
|
97
|
+
*
|
|
98
|
+
* The compiler transforms this into appropriate opcodes.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* // Simple wait
|
|
103
|
+
* const payload = await signal(orders.complete)
|
|
104
|
+
*
|
|
105
|
+
* // Race with narrowing - pass r to narrow its type
|
|
106
|
+
* const r = race()
|
|
107
|
+
* switch (r) {
|
|
108
|
+
* case signal(r, orders.complete):
|
|
109
|
+
* // r is narrowed to the payload type
|
|
110
|
+
* console.log(r.orderId)
|
|
111
|
+
* break
|
|
112
|
+
* case delay.hours(r, 24):
|
|
113
|
+
* // timeout
|
|
114
|
+
* break
|
|
115
|
+
* }
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
function signalImpl(...args) {
|
|
119
|
+
// Two distinct overloads, disambiguated by arity (not coalescing):
|
|
120
|
+
// signal(signalDef) - arg0 is the target
|
|
121
|
+
// signal(racer, signalDef) - arg1 is the target
|
|
122
|
+
// Passing `undefined` explicitly for the target is a caller bug, not a
|
|
123
|
+
// legitimate "fall back to the other arg" signal. We error loudly so
|
|
124
|
+
// race() misuse doesn't silently resolve to the race context itself.
|
|
125
|
+
let target;
|
|
126
|
+
if (args.length >= 2) {
|
|
127
|
+
if (args[0] === undefined) {
|
|
128
|
+
throw new TypeError('signal() target is undefined');
|
|
129
|
+
}
|
|
130
|
+
target = args[1];
|
|
131
|
+
if (target === undefined) {
|
|
132
|
+
throw new TypeError('signal() target is undefined');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else if (args.length === 1) {
|
|
136
|
+
target = args[0];
|
|
137
|
+
if (target === undefined) {
|
|
138
|
+
throw new TypeError('signal() target is undefined');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
throw new TypeError('signal() requires a target');
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
[SIGNAL_PLACEHOLDER]: true,
|
|
146
|
+
signal: target,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function signalAll(signalsOrRacer, maybeSignals) {
|
|
150
|
+
const signals = maybeSignals ?? signalsOrRacer;
|
|
151
|
+
const isRace = maybeSignals !== undefined;
|
|
152
|
+
return {
|
|
153
|
+
[SIGNAL_ALL_PLACEHOLDER]: true,
|
|
154
|
+
signals,
|
|
155
|
+
isRace,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function signalSettled(signals) {
|
|
159
|
+
return {
|
|
160
|
+
[SIGNAL_SETTLED_PLACEHOLDER]: true,
|
|
161
|
+
signals,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export const signal = Object.assign(signalImpl, {
|
|
165
|
+
all: signalAll,
|
|
166
|
+
settled: signalSettled,
|
|
167
|
+
});
|
|
168
|
+
/**
|
|
169
|
+
* Create a race context for waiting on multiple signals simultaneously.
|
|
170
|
+
*
|
|
171
|
+
* Used with a switch statement to handle whichever signal arrives first.
|
|
172
|
+
* The compiler transforms this pattern into RACE_START and RACE_SUSPEND opcodes.
|
|
173
|
+
*
|
|
174
|
+
* @returns An unknown value that gets narrowed by signal()/delay() in switch cases
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```typescript
|
|
178
|
+
* const r = race()
|
|
179
|
+
* switch (r) {
|
|
180
|
+
* case signal(payment.received):
|
|
181
|
+
* // r is the payload type: { txId: string }
|
|
182
|
+
* return { status: 'paid', txId: r.txId }
|
|
183
|
+
*
|
|
184
|
+
* case signal(payment.failed):
|
|
185
|
+
* return { status: 'failed', reason: r.reason }
|
|
186
|
+
*
|
|
187
|
+
* case delay.hours(r, 24):
|
|
188
|
+
* return { status: 'timeout' }
|
|
189
|
+
* }
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
export function race() {
|
|
193
|
+
return {
|
|
194
|
+
[RACE_PLACEHOLDER]: true,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function createDelayMethod(unit) {
|
|
198
|
+
const multipliers = {
|
|
199
|
+
seconds: 1000,
|
|
200
|
+
minutes: 60 * 1000,
|
|
201
|
+
hours: 60 * 60 * 1000,
|
|
202
|
+
days: 24 * 60 * 60 * 1000,
|
|
203
|
+
};
|
|
204
|
+
const multiplier = multipliers[unit];
|
|
205
|
+
return function (nOrRacer, maybeN) {
|
|
206
|
+
const n = maybeN ?? nOrRacer;
|
|
207
|
+
// Validate delay duration
|
|
208
|
+
if (typeof n !== 'number' || !Number.isFinite(n)) {
|
|
209
|
+
throw new Error(`delay.${unit}() requires a finite number, got ${n}`);
|
|
210
|
+
}
|
|
211
|
+
if (n < 0) {
|
|
212
|
+
throw new Error(`delay.${unit}() requires a non-negative number, got ${n}`);
|
|
213
|
+
}
|
|
214
|
+
return {
|
|
215
|
+
[DELAY_PLACEHOLDER]: true,
|
|
216
|
+
duration: { ms: n * multiplier },
|
|
217
|
+
unit,
|
|
218
|
+
};
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
export const delay = {
|
|
222
|
+
seconds: createDelayMethod('seconds'),
|
|
223
|
+
minutes: createDelayMethod('minutes'),
|
|
224
|
+
hours: createDelayMethod('hours'),
|
|
225
|
+
days: createDelayMethod('days'),
|
|
226
|
+
};
|
|
227
|
+
// ============================================================================
|
|
228
|
+
// Scope Primitive
|
|
229
|
+
// ============================================================================
|
|
230
|
+
/** Symbol to identify scope placeholders at runtime. Cross-realm with tests. */
|
|
231
|
+
const SCOPE_PLACEHOLDER = Symbol.for('@justscale/process/scope');
|
|
232
|
+
function scopeImpl(...args) {
|
|
233
|
+
if (args.length >= 2) {
|
|
234
|
+
const [first, second] = args;
|
|
235
|
+
// Signal-first form: scope(signal, entities, ?idFn)
|
|
236
|
+
if (typeof first === 'object' && first !== null && 'then' in first) {
|
|
237
|
+
return {
|
|
238
|
+
[SCOPE_PLACEHOLDER]: true,
|
|
239
|
+
type: 'signal',
|
|
240
|
+
signal: first,
|
|
241
|
+
entities: second,
|
|
242
|
+
idFn: args[2],
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
// Entities-first form: scope(entities, handler) or scope(entities, idFn/alias, handler)
|
|
246
|
+
if (typeof second === 'function') {
|
|
247
|
+
return {
|
|
248
|
+
[SCOPE_PLACEHOLDER]: true,
|
|
249
|
+
type: 'handler',
|
|
250
|
+
entities: first,
|
|
251
|
+
handler: second,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
if (args.length >= 3 && typeof args[2] === 'function') {
|
|
255
|
+
return {
|
|
256
|
+
[SCOPE_PLACEHOLDER]: true,
|
|
257
|
+
type: 'handler',
|
|
258
|
+
entities: first,
|
|
259
|
+
idFnOrAlias: second,
|
|
260
|
+
handler: args[2],
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
throw new Error('Invalid scope() arguments');
|
|
265
|
+
}
|
|
266
|
+
export const scope = scopeImpl;
|
|
267
|
+
/** @internal Check if a value is a scope placeholder */
|
|
268
|
+
export function isScopePlaceholder(value) {
|
|
269
|
+
return (typeof value === 'object' &&
|
|
270
|
+
value !== null &&
|
|
271
|
+
SCOPE_PLACEHOLDER in value);
|
|
272
|
+
}
|
|
273
|
+
// ============================================================================
|
|
274
|
+
// Internal: Runtime Detection Helpers
|
|
275
|
+
// ============================================================================
|
|
276
|
+
/** @internal Check if a value is a signal placeholder */
|
|
277
|
+
export function isSignalPlaceholder(value) {
|
|
278
|
+
return (typeof value === 'object' &&
|
|
279
|
+
value !== null &&
|
|
280
|
+
SIGNAL_PLACEHOLDER in value);
|
|
281
|
+
}
|
|
282
|
+
/** @internal Check if a value is a race placeholder */
|
|
283
|
+
export function isRacePlaceholder(value) {
|
|
284
|
+
return (typeof value === 'object' &&
|
|
285
|
+
value !== null &&
|
|
286
|
+
RACE_PLACEHOLDER in value);
|
|
287
|
+
}
|
|
288
|
+
/** @internal Check if a value is a delay placeholder */
|
|
289
|
+
export function isDelayPlaceholder(value) {
|
|
290
|
+
return (typeof value === 'object' &&
|
|
291
|
+
value !== null &&
|
|
292
|
+
DELAY_PLACEHOLDER in value);
|
|
293
|
+
}
|
|
294
|
+
/** @internal Check if a value is a signal.all placeholder */
|
|
295
|
+
export function isSignalAllPlaceholder(value) {
|
|
296
|
+
return (typeof value === 'object' &&
|
|
297
|
+
value !== null &&
|
|
298
|
+
SIGNAL_ALL_PLACEHOLDER in value);
|
|
299
|
+
}
|
|
300
|
+
/** @internal Check if a value is a signal.settled placeholder */
|
|
301
|
+
export function isSignalSettledPlaceholder(value) {
|
|
302
|
+
return (typeof value === 'object' &&
|
|
303
|
+
value !== null &&
|
|
304
|
+
SIGNAL_SETTLED_PLACEHOLDER in value);
|
|
305
|
+
}
|
|
306
|
+
// ============================================================================
|
|
307
|
+
// Stream Primitive
|
|
308
|
+
// ============================================================================
|
|
309
|
+
/** Symbol to identify stream placeholders at runtime. Cross-realm with tests. */
|
|
310
|
+
const STREAM_PLACEHOLDER = Symbol.for('@justscale/process/stream');
|
|
311
|
+
// Implementation
|
|
312
|
+
function streamImpl(racer, target) {
|
|
313
|
+
return {
|
|
314
|
+
[STREAM_PLACEHOLDER]: true,
|
|
315
|
+
stream: target,
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
export const stream = streamImpl;
|
|
319
|
+
/** @internal Check if a value is a stream placeholder */
|
|
320
|
+
export function isStreamPlaceholder(value) {
|
|
321
|
+
return (typeof value === 'object' &&
|
|
322
|
+
value !== null &&
|
|
323
|
+
STREAM_PLACEHOLDER in value);
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=primitives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/process/primitives.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Processable Protocol — unified serialization for durable processes,
|
|
3
|
+
* channels, signals, and cluster transport.
|
|
4
|
+
*
|
|
5
|
+
* Types that implement `Processable<T>` via `Symbol.process` get automatic
|
|
6
|
+
* serialization everywhere the framework persists or transmits data.
|
|
7
|
+
*
|
|
8
|
+
* - Proto types: codegen adds `[Symbol.process]` automatically
|
|
9
|
+
* - Framework builtins (Reference, Date, Map, Set, BigInt): implemented internally
|
|
10
|
+
* - User types: opt-in via `static [Symbol.process] = { name, serialize, deserialize }`
|
|
11
|
+
* - Plain types: JSON fallback (existing behavior)
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerProcessType<T>(descriptor: ProcessDescriptor<T>): void;
|
|
14
|
+
export declare function getProcessDescriptor(name: string): ProcessDescriptor | undefined;
|
|
15
|
+
export declare function getProcessRegistry(): ReadonlyMap<string, ProcessDescriptor>;
|
|
16
|
+
/**
|
|
17
|
+
* Runtime check: does this value (instance or schema) implement Processable?
|
|
18
|
+
*/
|
|
19
|
+
export declare function isProcessable(value: unknown): value is {
|
|
20
|
+
[Symbol.process]: ProcessDescriptor;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Check if a constructor/schema has the Processable protocol.
|
|
24
|
+
* Works with both plain objects and class constructors (static [Symbol.process]).
|
|
25
|
+
*/
|
|
26
|
+
export declare function hasProcessDescriptor(schema: unknown): schema is Processable;
|
|
27
|
+
/**
|
|
28
|
+
* Auto-register a Processable type in the registry.
|
|
29
|
+
* Call this when a Processable type is first encountered at runtime.
|
|
30
|
+
*/
|
|
31
|
+
export declare function ensureRegistered(schema: Processable): void;
|
|
32
|
+
/**
|
|
33
|
+
* Find the ProcessDescriptor for a value.
|
|
34
|
+
* Checks instance directly, then constructor (for class instances).
|
|
35
|
+
*/
|
|
36
|
+
export declare function findProcessDescriptor(value: unknown): ProcessDescriptor | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Encode a value using its Processable descriptor for JSON-safe storage.
|
|
39
|
+
* Recursively walks plain objects and arrays to encode nested Processables.
|
|
40
|
+
* Returns the original value unchanged if it's not Processable and contains none.
|
|
41
|
+
*
|
|
42
|
+
* Throws if a Locked<T> value is passed — lock guarantees must not cross a
|
|
43
|
+
* wire. Unlock the value and send only the underlying reference.
|
|
44
|
+
*
|
|
45
|
+
* Throws with path context when a descriptor's serialize call fails.
|
|
46
|
+
*/
|
|
47
|
+
export declare function encodeProcessable(value: unknown, seen?: Set<unknown>, path?: string): unknown;
|
|
48
|
+
/**
|
|
49
|
+
* Decode a value that may have been encoded via encodeProcessable.
|
|
50
|
+
* Recursively walks plain objects and arrays to decode nested Processables.
|
|
51
|
+
* Returns the original value unchanged if it wasn't encoded.
|
|
52
|
+
*
|
|
53
|
+
* When a descriptor has a `validate` function, the raw payload is checked
|
|
54
|
+
* before deserialize is called. A failing validation throws with a clear
|
|
55
|
+
* error, preventing type-confusion from mismatched __$p tags.
|
|
56
|
+
*/
|
|
57
|
+
export declare function decodeProcessable(value: unknown): unknown;
|
|
58
|
+
//# sourceMappingURL=serialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../src/process/serialization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CA2B7E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEhF;AAED,wBAAgB,kBAAkB,IAAI,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAE3E;AAcD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAE9F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,WAAW,CAE3E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAG1D;AAmCD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAUnF;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,GAAG,CAAC,OAAO,CAAa,EAC9B,IAAI,SAAW,GACd,OAAO,CA0CT;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA6CzD"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Processable Protocol — unified serialization for durable processes,
|
|
3
|
+
* channels, signals, and cluster transport.
|
|
4
|
+
*
|
|
5
|
+
* Types that implement `Processable<T>` via `Symbol.process` get automatic
|
|
6
|
+
* serialization everywhere the framework persists or transmits data.
|
|
7
|
+
*
|
|
8
|
+
* - Proto types: codegen adds `[Symbol.process]` automatically
|
|
9
|
+
* - Framework builtins (Reference, Date, Map, Set, BigInt): implemented internally
|
|
10
|
+
* - User types: opt-in via `static [Symbol.process] = { name, serialize, deserialize }`
|
|
11
|
+
* - Plain types: JSON fallback (existing behavior)
|
|
12
|
+
*/
|
|
13
|
+
// Register Symbol.process on the global Symbol object (idempotent)
|
|
14
|
+
;
|
|
15
|
+
Symbol.process ??= Symbol.for('@justscale/process');
|
|
16
|
+
/**
|
|
17
|
+
* Runtime type registry — maps descriptor names to their ProcessDescriptor.
|
|
18
|
+
* Used during deserialization to look up the right deserializer by name.
|
|
19
|
+
*/
|
|
20
|
+
const registry = new Map();
|
|
21
|
+
export function registerProcessType(descriptor) {
|
|
22
|
+
const { name } = descriptor;
|
|
23
|
+
if (name === '') {
|
|
24
|
+
throw new Error('[Processable] Descriptor name must not be empty — a codegen bug emitting "" would silently pollute the registry');
|
|
25
|
+
}
|
|
26
|
+
if (name !== name.trim()) {
|
|
27
|
+
throw new Error(`[Processable] Descriptor name '${name}' has leading or trailing whitespace — this is almost certainly a bug`);
|
|
28
|
+
}
|
|
29
|
+
if (name === PAYLOAD_TAG) {
|
|
30
|
+
throw new Error(`[Processable] Descriptor name '${PAYLOAD_TAG}' conflicts with the envelope tag key and is reserved`);
|
|
31
|
+
}
|
|
32
|
+
if (registry.has(name)) {
|
|
33
|
+
const existing = registry.get(name);
|
|
34
|
+
if (existing !== descriptor) {
|
|
35
|
+
throw new Error(`[Processable] Duplicate registration for '${name}' — each processable type must have a unique name`);
|
|
36
|
+
}
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
registry.set(name, descriptor);
|
|
40
|
+
}
|
|
41
|
+
export function getProcessDescriptor(name) {
|
|
42
|
+
return registry.get(name);
|
|
43
|
+
}
|
|
44
|
+
export function getProcessRegistry() {
|
|
45
|
+
return registry;
|
|
46
|
+
}
|
|
47
|
+
function checkProcessDescriptor(value) {
|
|
48
|
+
if (value == null)
|
|
49
|
+
return false;
|
|
50
|
+
const desc = value[Symbol.process];
|
|
51
|
+
return (desc != null &&
|
|
52
|
+
typeof desc === 'object' &&
|
|
53
|
+
typeof desc.name === 'string' &&
|
|
54
|
+
typeof desc.serialize === 'function' &&
|
|
55
|
+
typeof desc.deserialize === 'function');
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Runtime check: does this value (instance or schema) implement Processable?
|
|
59
|
+
*/
|
|
60
|
+
export function isProcessable(value) {
|
|
61
|
+
return checkProcessDescriptor(value);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if a constructor/schema has the Processable protocol.
|
|
65
|
+
* Works with both plain objects and class constructors (static [Symbol.process]).
|
|
66
|
+
*/
|
|
67
|
+
export function hasProcessDescriptor(schema) {
|
|
68
|
+
return checkProcessDescriptor(schema);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Auto-register a Processable type in the registry.
|
|
72
|
+
* Call this when a Processable type is first encountered at runtime.
|
|
73
|
+
*/
|
|
74
|
+
export function ensureRegistered(schema) {
|
|
75
|
+
const descriptor = schema[Symbol.process];
|
|
76
|
+
registerProcessType(descriptor);
|
|
77
|
+
}
|
|
78
|
+
// ============================================================================
|
|
79
|
+
// Payload Encoding/Decoding
|
|
80
|
+
// ============================================================================
|
|
81
|
+
/** Tag for Processable-encoded payloads (signals, channels) */
|
|
82
|
+
const PAYLOAD_TAG = '__$p';
|
|
83
|
+
/**
|
|
84
|
+
* Wire-format version. Increment this only when the envelope structure changes
|
|
85
|
+
* in a way that older decoders cannot handle. Currently:
|
|
86
|
+
* version 1 — { __$p: name, __$v: 1, d: payload }
|
|
87
|
+
*
|
|
88
|
+
* Envelopes without __$v are treated as version 1 for backwards compatibility
|
|
89
|
+
* (any data encoded before versioning was introduced still decodes correctly).
|
|
90
|
+
*/
|
|
91
|
+
const ENVELOPE_VERSION = 1;
|
|
92
|
+
/** Property key used by Lock<T> to carry lock metadata (defined in lock/types.ts). */
|
|
93
|
+
const LOCK_KEY = '__lock';
|
|
94
|
+
/**
|
|
95
|
+
* Returns true when the value looks like a Lock<T> — it carries a __lock
|
|
96
|
+
* metadata object and a Symbol.dispose slot, both assigned by LockServiceImpl.
|
|
97
|
+
*/
|
|
98
|
+
function isLockedValue(value) {
|
|
99
|
+
return (value !== null &&
|
|
100
|
+
typeof value === 'object' &&
|
|
101
|
+
LOCK_KEY in value &&
|
|
102
|
+
Symbol.dispose in value);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Find the ProcessDescriptor for a value.
|
|
106
|
+
* Checks instance directly, then constructor (for class instances).
|
|
107
|
+
*/
|
|
108
|
+
export function findProcessDescriptor(value) {
|
|
109
|
+
if (value == null || typeof value !== 'object')
|
|
110
|
+
return undefined;
|
|
111
|
+
const desc = value[Symbol.process];
|
|
112
|
+
if (desc && typeof desc.serialize === 'function')
|
|
113
|
+
return desc;
|
|
114
|
+
const ctor = value.constructor;
|
|
115
|
+
if (ctor && ctor !== Object && ctor !== Array) {
|
|
116
|
+
const ctorDesc = ctor[Symbol.process];
|
|
117
|
+
if (ctorDesc && typeof ctorDesc.serialize === 'function')
|
|
118
|
+
return ctorDesc;
|
|
119
|
+
}
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Encode a value using its Processable descriptor for JSON-safe storage.
|
|
124
|
+
* Recursively walks plain objects and arrays to encode nested Processables.
|
|
125
|
+
* Returns the original value unchanged if it's not Processable and contains none.
|
|
126
|
+
*
|
|
127
|
+
* Throws if a Locked<T> value is passed — lock guarantees must not cross a
|
|
128
|
+
* wire. Unlock the value and send only the underlying reference.
|
|
129
|
+
*
|
|
130
|
+
* Throws with path context when a descriptor's serialize call fails.
|
|
131
|
+
*/
|
|
132
|
+
export function encodeProcessable(value, seen = new Set(), path = '<root>') {
|
|
133
|
+
if (isLockedValue(value)) {
|
|
134
|
+
throw new Error(`[Processable] Cannot encode a Locked<T> value at path "${path}" — ` +
|
|
135
|
+
'lock guarantees do not survive serialization. Unlock the value and ' +
|
|
136
|
+
'send only the underlying reference or plain data.');
|
|
137
|
+
}
|
|
138
|
+
const descriptor = findProcessDescriptor(value);
|
|
139
|
+
if (descriptor) {
|
|
140
|
+
let serialized;
|
|
141
|
+
try {
|
|
142
|
+
serialized = descriptor.serialize(value);
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
146
|
+
throw new Error(`[Processable] encode failed at path "${path}": ${msg}`, { cause: err });
|
|
147
|
+
}
|
|
148
|
+
return { [PAYLOAD_TAG]: descriptor.name, __$v: ENVELOPE_VERSION, d: serialized };
|
|
149
|
+
}
|
|
150
|
+
if (Array.isArray(value)) {
|
|
151
|
+
if (seen.has(value)) {
|
|
152
|
+
throw new TypeError(`[Processable] cycle at ${path}`);
|
|
153
|
+
}
|
|
154
|
+
seen.add(value);
|
|
155
|
+
const result = value.map((item, i) => encodeProcessable(item, seen, `${path}[${i}]`));
|
|
156
|
+
seen.delete(value);
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
159
|
+
if (value !== null && typeof value === 'object') {
|
|
160
|
+
if (seen.has(value)) {
|
|
161
|
+
throw new TypeError(`[Processable] cycle at ${path}`);
|
|
162
|
+
}
|
|
163
|
+
seen.add(value);
|
|
164
|
+
const result = {};
|
|
165
|
+
for (const key of Object.keys(value)) {
|
|
166
|
+
result[key] = encodeProcessable(value[key], seen, `${path}.${key}`);
|
|
167
|
+
}
|
|
168
|
+
seen.delete(value);
|
|
169
|
+
return result;
|
|
170
|
+
}
|
|
171
|
+
return value;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Decode a value that may have been encoded via encodeProcessable.
|
|
175
|
+
* Recursively walks plain objects and arrays to decode nested Processables.
|
|
176
|
+
* Returns the original value unchanged if it wasn't encoded.
|
|
177
|
+
*
|
|
178
|
+
* When a descriptor has a `validate` function, the raw payload is checked
|
|
179
|
+
* before deserialize is called. A failing validation throws with a clear
|
|
180
|
+
* error, preventing type-confusion from mismatched __$p tags.
|
|
181
|
+
*/
|
|
182
|
+
export function decodeProcessable(value) {
|
|
183
|
+
if (value != null &&
|
|
184
|
+
typeof value === 'object' &&
|
|
185
|
+
PAYLOAD_TAG in value &&
|
|
186
|
+
typeof value[PAYLOAD_TAG] === 'string') {
|
|
187
|
+
const encoded = value;
|
|
188
|
+
const name = encoded[PAYLOAD_TAG];
|
|
189
|
+
const version = '__$v' in encoded ? encoded.__$v : 1;
|
|
190
|
+
if (version !== ENVELOPE_VERSION) {
|
|
191
|
+
throw new Error(`[Processable] Unsupported envelope version ${version} for '${name}' — ` +
|
|
192
|
+
`this runtime expects version ${ENVELOPE_VERSION}. ` +
|
|
193
|
+
'Update both encoder and decoder when bumping the version.');
|
|
194
|
+
}
|
|
195
|
+
const descriptor = getProcessDescriptor(name);
|
|
196
|
+
if (descriptor) {
|
|
197
|
+
if (typeof descriptor.validate === 'function' && !descriptor.validate(encoded.d)) {
|
|
198
|
+
throw new Error(`[Processable] Payload shape validation failed for descriptor '${name}' — ` +
|
|
199
|
+
'the envelope\'s payload does not match the expected shape. ' +
|
|
200
|
+
'This indicates a corrupted or forged __$p tag.');
|
|
201
|
+
}
|
|
202
|
+
return descriptor.deserialize(encoded.d);
|
|
203
|
+
}
|
|
204
|
+
throw new Error(`[Processable] Unknown descriptor '${name}' — type is not registered. ` +
|
|
205
|
+
`Call registerProcessType({ name: '${name}', ... }) before deserializing. ` +
|
|
206
|
+
'If you want permissive behaviour, catch this error and handle unknown descriptors yourself.');
|
|
207
|
+
}
|
|
208
|
+
if (Array.isArray(value)) {
|
|
209
|
+
return value.map(decodeProcessable);
|
|
210
|
+
}
|
|
211
|
+
if (value !== null && typeof value === 'object') {
|
|
212
|
+
const result = {};
|
|
213
|
+
for (const key of Object.keys(value)) {
|
|
214
|
+
result[key] = decodeProcessable(value[key]);
|
|
215
|
+
}
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
return value;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=serialization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../../src/process/serialization.ts"],"names":[],"mappings":"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"}
|