@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,510 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Controller Factory
|
|
3
|
+
*
|
|
4
|
+
* A controller is a service that exposes routes.
|
|
5
|
+
* Transport-agnostic - transports (HTTP, gRPC, etc.) augment the types.
|
|
6
|
+
*/
|
|
7
|
+
import type { z } from 'zod';
|
|
8
|
+
import { type ServiceToken, type ResolvedDeps, type ServiceDef, type Logger } from './service.js';
|
|
9
|
+
import { type RouteMethod, type RouteHandler, type RouteFactories, type RouteContext, type Prettify, type SupportedMethods, createRouteFactories } from './plugin.js';
|
|
10
|
+
import { type Middleware, type Guard, type MiddlewareDef, type GuardDef } from './middleware.js';
|
|
11
|
+
import type { Step, RouteDef as RouteDefV2 } from '../builder/types.js';
|
|
12
|
+
import type { ProcedureDef as ProcedureDefType } from './controller.procedure.js';
|
|
13
|
+
type AnyRouteDef = RouteDefV2<any, any, any> | ProcedureDefType<any, any, any>;
|
|
14
|
+
import type { TypesConfig } from '../models/apply-types-config.js';
|
|
15
|
+
/**
|
|
16
|
+
* Controller settings - augmented by transports.
|
|
17
|
+
* Each transport adds its own settings via declaration merging:
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* declare module "@justscale/core" {
|
|
22
|
+
* interface ControllerSettings {
|
|
23
|
+
* prefix?: string; // HTTP adds this
|
|
24
|
+
* }
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export interface ControllerSettings {
|
|
29
|
+
/** CLI command namespace (e.g., 'db' for 'mycli db migrate') */
|
|
30
|
+
command?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Transport context additions - augmented by transports.
|
|
34
|
+
* HTTP adds: { body, query, res, params }
|
|
35
|
+
* gRPC might add: { metadata, call }
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* declare module "@justscale/core" {
|
|
40
|
+
* interface TransportContext {
|
|
41
|
+
* body: unknown;
|
|
42
|
+
* query: Record<string, string>;
|
|
43
|
+
* res: JsonResponse;
|
|
44
|
+
* params: Record<string, string>;
|
|
45
|
+
* }
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export interface TransportContext {
|
|
50
|
+
/** CLI: Parsed command arguments */
|
|
51
|
+
args: Record<string, unknown>;
|
|
52
|
+
/** CLI: I/O interface for terminal interaction */
|
|
53
|
+
io: unknown;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Reserved context keys from transport - used for conflict validation.
|
|
57
|
+
* Automatically derived from TransportContext.
|
|
58
|
+
*/
|
|
59
|
+
export type ReservedContextKeys = keyof TransportContext;
|
|
60
|
+
/**
|
|
61
|
+
* Validate that dependency names don't conflict with transport context keys.
|
|
62
|
+
* Returns `true` if valid, or an error type showing conflicting keys.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* // This would error because 'res' conflicts with HTTP's TransportContext
|
|
67
|
+
* inject: { res: SomeService }
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export type ValidateDepsNoConflict<TDeps extends Record<string, ServiceToken>> = keyof ResolvedDeps<TDeps> & ReservedContextKeys extends never ? true : {
|
|
71
|
+
__deps_conflict__: 'Dependency name conflicts with transport context key';
|
|
72
|
+
conflicting: keyof ResolvedDeps<TDeps> & ReservedContextKeys;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Built-in context that's always available to handlers.
|
|
76
|
+
* This includes the logger, which is automatically injected.
|
|
77
|
+
*
|
|
78
|
+
* Other packages can extend this via module augmentation:
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* declare module "@justscale/core" {
|
|
82
|
+
* interface BuiltinContext {
|
|
83
|
+
* requestId: string;
|
|
84
|
+
* }
|
|
85
|
+
* }
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export interface BuiltinContext {
|
|
89
|
+
/** Logger instance with controller context */
|
|
90
|
+
logger: Logger;
|
|
91
|
+
/**
|
|
92
|
+
* Register a cleanup function to run after the handler completes.
|
|
93
|
+
* Cleanups run in reverse registration order (LIFO), even if the handler throws.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* .use(async (ctx) => {
|
|
98
|
+
* const lock = await lockService.acquire(entity);
|
|
99
|
+
* ctx.onCleanup(() => lock[Symbol.dispose]());
|
|
100
|
+
* return { player: lock };
|
|
101
|
+
* })
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
onCleanup: (fn: () => void | Promise<void>) => void;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Context passed to builtin providers when creating context values.
|
|
108
|
+
*/
|
|
109
|
+
export interface BuiltinProviderContext {
|
|
110
|
+
/** The route being executed */
|
|
111
|
+
route: CompiledRoute<any>;
|
|
112
|
+
/** Resolved controller dependencies */
|
|
113
|
+
deps: Record<string, unknown>;
|
|
114
|
+
/** Create a logger with a specific context name */
|
|
115
|
+
createLogger: (context: string) => Logger;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* A function that provides builtin context values.
|
|
119
|
+
* Called for each request to create the builtin context.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* registerBuiltinProvider((ctx) => ({
|
|
124
|
+
* requestId: crypto.randomUUID().slice(0, 8),
|
|
125
|
+
* }));
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
export type BuiltinProvider = (ctx: BuiltinProviderContext) => Partial<BuiltinContext>;
|
|
129
|
+
/**
|
|
130
|
+
* Register a provider that adds values to the builtin context.
|
|
131
|
+
* Providers are called in registration order for each request.
|
|
132
|
+
*
|
|
133
|
+
* Use module augmentation to add type declarations for new builtins:
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* // In your package
|
|
137
|
+
* declare module "@justscale/core" {
|
|
138
|
+
* interface BuiltinContext {
|
|
139
|
+
* myService: MyService;
|
|
140
|
+
* }
|
|
141
|
+
* }
|
|
142
|
+
*
|
|
143
|
+
* registerBuiltinProvider(() => ({
|
|
144
|
+
* myService: new MyService(),
|
|
145
|
+
* }));
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export declare function registerBuiltinProvider(provider: BuiltinProvider): void;
|
|
149
|
+
/**
|
|
150
|
+
* Collect all builtin context values from registered providers.
|
|
151
|
+
* @internal Used by app.execute()
|
|
152
|
+
*/
|
|
153
|
+
export declare function collectBuiltins(ctx: BuiltinProviderContext): Partial<BuiltinContext>;
|
|
154
|
+
/**
|
|
155
|
+
* Full handler context - transport context plus builtins.
|
|
156
|
+
* Dependencies are accessed via closure capture from the routes function.
|
|
157
|
+
* Logger is always available as a built-in.
|
|
158
|
+
*/
|
|
159
|
+
export type HandlerContext = Prettify<TransportContext & BuiltinContext>;
|
|
160
|
+
export type { RouteMethod, RouteHandler, RouteFactories, RouteContext, Middleware, Guard, MiddlewareDef, GuardDef, Prettify, SupportedMethods, };
|
|
161
|
+
export { createRouteFactories };
|
|
162
|
+
/**
|
|
163
|
+
* Normalize settings input - handles string shorthand.
|
|
164
|
+
* String becomes { prefix: string } for HTTP compatibility.
|
|
165
|
+
*/
|
|
166
|
+
export type NormalizeSettings<T> = T extends string ? {
|
|
167
|
+
prefix: T;
|
|
168
|
+
} & ControllerSettings : T extends ControllerSettings ? T : ControllerSettings;
|
|
169
|
+
/**
|
|
170
|
+
* A controller definition - a service that has routes.
|
|
171
|
+
*
|
|
172
|
+
* Type parameters:
|
|
173
|
+
* - TDeps: Dependencies injected into the controller
|
|
174
|
+
* - TRoutes: The routes object with full type info (path, body, response per route)
|
|
175
|
+
* - TSettings: Controller settings (augmented by transports)
|
|
176
|
+
*/
|
|
177
|
+
export interface ControllerDef<TDeps extends Record<string, ServiceToken> = Record<string, ServiceToken>, TRoutes extends Record<string, AnyRouteDef> | AnyRouteDef[] = Record<string, AnyRouteDef>, TSettings extends ControllerSettings = ControllerSettings> extends ServiceDef<ControllerInstance<TDeps, TSettings>, TDeps> {
|
|
178
|
+
readonly __controllerBrand: unique symbol;
|
|
179
|
+
readonly prefix: TSettings extends {
|
|
180
|
+
prefix: infer P;
|
|
181
|
+
} ? P : string;
|
|
182
|
+
readonly settings: TSettings;
|
|
183
|
+
}
|
|
184
|
+
/** The runtime instance of a controller */
|
|
185
|
+
export interface ControllerInstance<TDeps extends Record<string, ServiceToken> = Record<string, ServiceToken>, TSettings extends ControllerSettings = ControllerSettings> {
|
|
186
|
+
prefix: string;
|
|
187
|
+
settings: TSettings;
|
|
188
|
+
routes: CompiledRoute<ResolvedDeps<TDeps>>[];
|
|
189
|
+
deps: ResolvedDeps<TDeps>;
|
|
190
|
+
}
|
|
191
|
+
/** A compiled route ready for matching */
|
|
192
|
+
export interface CompiledRoute<_TDeps = Record<string, unknown>> {
|
|
193
|
+
/** Route name from the controller's routes object (e.g., 'list', 'getOne') */
|
|
194
|
+
name: string;
|
|
195
|
+
/** Route method - extended by transports via SupportedMethods */
|
|
196
|
+
method: keyof SupportedMethods extends never ? string : keyof SupportedMethods;
|
|
197
|
+
/** Full path as string */
|
|
198
|
+
path: string;
|
|
199
|
+
/** Path segments as array (e.g., ['auth', 'create-user']) */
|
|
200
|
+
segments: string[];
|
|
201
|
+
pattern: RegExp;
|
|
202
|
+
paramNames: string[];
|
|
203
|
+
schema?: z.ZodType | undefined;
|
|
204
|
+
middlewares: Middleware<any, any>[];
|
|
205
|
+
guards: Guard<any>[];
|
|
206
|
+
steps: Step[];
|
|
207
|
+
responseSchemas?: Map<number, z.ZodType | null>;
|
|
208
|
+
/** Permission-scoped returns - used by the permissions middleware at runtime */
|
|
209
|
+
permissionReturns?: ReadonlyArray<{
|
|
210
|
+
status: number;
|
|
211
|
+
schema: z.ZodType | null;
|
|
212
|
+
permission: {
|
|
213
|
+
readonly name: string;
|
|
214
|
+
};
|
|
215
|
+
}>;
|
|
216
|
+
handler: (ctx: any) => void | Promise<void> | AsyncGenerator<unknown>;
|
|
217
|
+
/** Types config from controller - maps model classes to path params */
|
|
218
|
+
types?: TypesConfig;
|
|
219
|
+
}
|
|
220
|
+
/** Config object for createController */
|
|
221
|
+
interface ControllerConfig<TDeps extends Record<string, ServiceToken>, TRoutes extends Record<string, AnyRouteDef> | AnyRouteDef[]> {
|
|
222
|
+
inject: TDeps;
|
|
223
|
+
routes: (services: ResolvedDeps<TDeps>) => TRoutes;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Create a controller with typed dependencies.
|
|
227
|
+
*
|
|
228
|
+
* The routes function receives a `services` object containing resolved dependencies
|
|
229
|
+
* for use via closure capture in handlers. Route factories (Get, Post, etc.) should
|
|
230
|
+
* be imported directly from their respective packages (@justscale/http, @justscale/cli, etc.).
|
|
231
|
+
*
|
|
232
|
+
* Supports two forms:
|
|
233
|
+
* - `createController('/prefix', { inject, routes })` - string shorthand for HTTP
|
|
234
|
+
* - `createController({ prefix: '/prefix', inject, routes })` - full object form
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* ```typescript
|
|
238
|
+
* import { Get, Post } from '@justscale/http';
|
|
239
|
+
*
|
|
240
|
+
* // String shorthand (HTTP)
|
|
241
|
+
* const UsersController = createController('/users', {
|
|
242
|
+
* inject: { users: UserRepository },
|
|
243
|
+
* routes: (services) => ({
|
|
244
|
+
* list: Get('/').handle(async ({ res }) => {
|
|
245
|
+
* const all = await services.users.find();
|
|
246
|
+
* res.json({ users: all });
|
|
247
|
+
* }),
|
|
248
|
+
* }),
|
|
249
|
+
* });
|
|
250
|
+
*
|
|
251
|
+
* // Object form
|
|
252
|
+
* const UsersController = createController({
|
|
253
|
+
* prefix: '/users',
|
|
254
|
+
* inject: { users: UserRepository },
|
|
255
|
+
* routes: (services) => ({ ... }),
|
|
256
|
+
* });
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
/**
|
|
260
|
+
* Symbol attached to a resolved guard function carrying its source
|
|
261
|
+
* GuardDef. Introspection tools (OpenAPI generator, debug UIs, etc.)
|
|
262
|
+
* read this to recover the original permission/action name that was
|
|
263
|
+
* lost when the def was resolved into a plain function.
|
|
264
|
+
*/
|
|
265
|
+
export declare const GUARD_DEF_SOURCE: unique symbol;
|
|
266
|
+
declare function _createControllerImpl<const TDeps extends Record<string, ServiceToken>, const TRoutes extends Record<string, AnyRouteDef> | AnyRouteDef[], const TPrefix extends string>(prefix: TPrefix, config: ControllerConfig<TDeps, TRoutes>): ValidateDepsNoConflict<TDeps> extends true ? ControllerDef<TDeps, TRoutes extends any[] ? Record<string, AnyRouteDef> : TRoutes, NormalizeSettings<TPrefix>> : ValidateDepsNoConflict<TDeps>;
|
|
267
|
+
declare function _createControllerImpl<const TDeps extends Record<string, ServiceToken>, const TRoutes extends Record<string, AnyRouteDef> | AnyRouteDef[], const TSettings extends ControllerSettings>(config: TSettings & ControllerConfig<TDeps, TRoutes>): ValidateDepsNoConflict<TDeps> extends true ? ControllerDef<TDeps, TRoutes extends any[] ? Record<string, AnyRouteDef> : TRoutes, TSettings> : ValidateDepsNoConflict<TDeps>;
|
|
268
|
+
import { type Session, type SessionOptions, type ContextualControllerInstance } from './controller.contextual.js';
|
|
269
|
+
import type { ProcedureBuilder, ProcedureContext } from './controller.procedure.js';
|
|
270
|
+
import type { ExtractParams } from './plugin.js';
|
|
271
|
+
/**
|
|
272
|
+
* Contextual controller definition - a controller that requires session context.
|
|
273
|
+
* Cannot be mounted on HTTP transport directly - must use createSession().
|
|
274
|
+
*/
|
|
275
|
+
export interface ContextualControllerDef<TSessionContext, TDeps extends Record<string, ServiceToken> = Record<string, ServiceToken>, TRoutes extends Record<string, AnyRouteDef> | AnyRouteDef[] = Record<string, AnyRouteDef>> extends ServiceDef<ContextualControllerInstance<TSessionContext>, TDeps> {
|
|
276
|
+
readonly __contextualBrand: unique symbol;
|
|
277
|
+
readonly __contextType: TSessionContext;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Bound Procedure factory type - knows about the session type.
|
|
281
|
+
*/
|
|
282
|
+
type BoundProcedure<TSession> = <TPath extends string>(path: TPath) => ProcedureBuilder<TSession, ExtractParams<TPath>, ProcedureContext<TSession, ExtractParams<TPath>>, unknown, unknown, TPath>;
|
|
283
|
+
/**
|
|
284
|
+
* Route factories provided to contextual controller routes function.
|
|
285
|
+
* Extensible via module augmentation:
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```typescript
|
|
289
|
+
* declare module '@justscale/core' {
|
|
290
|
+
* interface ContextualRouteFactories<TSession> {
|
|
291
|
+
* Saga: BoundSaga<TSession>;
|
|
292
|
+
* }
|
|
293
|
+
* }
|
|
294
|
+
* ```
|
|
295
|
+
*/
|
|
296
|
+
export interface ContextualRouteFactories<TSession> {
|
|
297
|
+
/** Procedure factory bound to the session type */
|
|
298
|
+
Procedure: BoundProcedure<TSession>;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* A factory provider creates a session-bound route factory.
|
|
302
|
+
* Used by packages like @justscale/process to register their builders.
|
|
303
|
+
*/
|
|
304
|
+
export type RouteFactoryProvider = () => unknown;
|
|
305
|
+
/**
|
|
306
|
+
* Register a route factory provider for contextual controllers.
|
|
307
|
+
* Call this as a side-effect when your package is imported.
|
|
308
|
+
*
|
|
309
|
+
* @example
|
|
310
|
+
* ```typescript
|
|
311
|
+
* // In @justscale/process
|
|
312
|
+
* import { registerContextualFactory } from '@justscale/core';
|
|
313
|
+
* import { createProcessFactory } from './builder.js';
|
|
314
|
+
*
|
|
315
|
+
* registerContextualFactory('Process', createProcessFactory);
|
|
316
|
+
* ```
|
|
317
|
+
*/
|
|
318
|
+
export declare function registerContextualFactory<K extends string>(name: K, provider: () => unknown): void;
|
|
319
|
+
/**
|
|
320
|
+
* Config for contextual controllers.
|
|
321
|
+
*/
|
|
322
|
+
interface ContextualControllerConfig<TSessionContext, TDeps extends Record<string, ServiceToken>, TRoutes extends Record<string, AnyRouteDef> | AnyRouteDef[]> {
|
|
323
|
+
inject: TDeps;
|
|
324
|
+
routes: (services: ResolvedDeps<TDeps>, factories: ContextualRouteFactories<TSessionContext>) => TRoutes;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Curried builder returned by createContextualController<T>().
|
|
328
|
+
*/
|
|
329
|
+
interface ContextualControllerBuilder<TSessionContext> {
|
|
330
|
+
/**
|
|
331
|
+
* Create the contextual controller with dependencies and routes.
|
|
332
|
+
*/
|
|
333
|
+
create<const TDeps extends Record<string, ServiceToken>, const TRoutes extends Record<string, AnyRouteDef> | AnyRouteDef[]>(config: ContextualControllerConfig<TSessionContext, TDeps, TRoutes>): ContextualControllerDef<TSessionContext, TDeps, TRoutes extends any[] ? Record<string, AnyRouteDef> : TRoutes>;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Create a contextual controller builder bound to a session type.
|
|
337
|
+
* Use this for WebSocket and similar scenarios where controllers are
|
|
338
|
+
* invoked programmatically with caller-provided context.
|
|
339
|
+
*
|
|
340
|
+
* @example
|
|
341
|
+
* ```typescript
|
|
342
|
+
* interface GameSession {
|
|
343
|
+
* user: User;
|
|
344
|
+
* ws: WebSocket;
|
|
345
|
+
* }
|
|
346
|
+
*
|
|
347
|
+
* const RoomProcedures = createController
|
|
348
|
+
* .withContext<GameSession>()
|
|
349
|
+
* .create({
|
|
350
|
+
* inject: { rooms: RoomService },
|
|
351
|
+
* routes: (services, { Procedure }) => ({
|
|
352
|
+
* // ^^^^^^^^^^^ bound to GameSession
|
|
353
|
+
* join: Procedure('room/:roomId/join')
|
|
354
|
+
* .handle(({ session, params }) => {
|
|
355
|
+
* // session is typed as GameSession!
|
|
356
|
+
* services.rooms.addPlayer(params.roomId, session.user);
|
|
357
|
+
* return { joined: params.roomId };
|
|
358
|
+
* }),
|
|
359
|
+
* })
|
|
360
|
+
* });
|
|
361
|
+
*
|
|
362
|
+
* // In WebSocket handler
|
|
363
|
+
* const ctrl = container.resolve(RoomProcedures);
|
|
364
|
+
* using session = ctrl.createSession({ user, ws });
|
|
365
|
+
* await session.run();
|
|
366
|
+
* ```
|
|
367
|
+
*/
|
|
368
|
+
declare function withContext<TSessionContext>(): ContextualControllerBuilder<TSessionContext>;
|
|
369
|
+
import type { AnyContract, ContractImplementation, ContractMetadata, MessageSchema } from '../features/contract/contract.js';
|
|
370
|
+
/** Symbol to mark contract controllers. Cross-realm: tests forge via Symbol.for(). */
|
|
371
|
+
export declare const CONTRACT_CONTROLLER: unique symbol;
|
|
372
|
+
/**
|
|
373
|
+
* Contract controller definition - a controller that implements a contract.
|
|
374
|
+
*/
|
|
375
|
+
export interface ContractControllerDef<TContract extends AnyContract, TDeps extends Record<string, ServiceToken> = Record<string, ServiceToken>> extends ServiceDef<ContractControllerInstance<TContract>, TDeps> {
|
|
376
|
+
readonly __contractControllerBrand: unique symbol;
|
|
377
|
+
readonly [CONTRACT_CONTROLLER]: true;
|
|
378
|
+
readonly contract: TContract;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Runtime instance of a contract controller.
|
|
382
|
+
* Contains compiled RPC methods ready for protocol adapters.
|
|
383
|
+
*/
|
|
384
|
+
export interface ContractControllerInstance<TContract extends AnyContract> {
|
|
385
|
+
/** The contract this controller implements */
|
|
386
|
+
contract: TContract;
|
|
387
|
+
/** Contract metadata (protocol, serviceName, methods) */
|
|
388
|
+
metadata: ContractMetadata;
|
|
389
|
+
/** Compiled method handlers */
|
|
390
|
+
methods: Map<string, CompiledRpcMethod>;
|
|
391
|
+
/** Resolved dependencies */
|
|
392
|
+
deps: Record<string, unknown>;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* A compiled RPC method ready for execution.
|
|
396
|
+
*/
|
|
397
|
+
export interface CompiledRpcMethod {
|
|
398
|
+
/** Method name */
|
|
399
|
+
name: string;
|
|
400
|
+
/** Input message schema */
|
|
401
|
+
inputSchema: MessageSchema;
|
|
402
|
+
/** Output message schema */
|
|
403
|
+
outputSchema: MessageSchema;
|
|
404
|
+
/** Streaming mode */
|
|
405
|
+
streaming: 'unary' | 'server' | 'client' | 'bidi';
|
|
406
|
+
/** The handler function */
|
|
407
|
+
handler: (ctx: any) => unknown;
|
|
408
|
+
/**
|
|
409
|
+
* Ordered middleware/guard steps - the canonical execution chain.
|
|
410
|
+
* Protocol adapters should run these via executeSteps() before calling
|
|
411
|
+
* handler, identical to how HTTP/CLI/EVENT dispatch works.
|
|
412
|
+
*/
|
|
413
|
+
steps: Array<{
|
|
414
|
+
type: 'use' | 'guard';
|
|
415
|
+
fn: unknown;
|
|
416
|
+
}>;
|
|
417
|
+
/** @deprecated Use steps. Always empty - kept for interface compatibility. */
|
|
418
|
+
middlewares: Middleware<any, any>[];
|
|
419
|
+
/** @deprecated Use steps. Always empty - kept for interface compatibility. */
|
|
420
|
+
guards: Guard<any>[];
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Config for contract-based controllers.
|
|
424
|
+
* Uses `methods` instead of `routes` for clarity.
|
|
425
|
+
*/
|
|
426
|
+
interface ContractControllerConfig<TContract extends AnyContract, TDeps extends Record<string, ServiceToken>, TSession = unknown> {
|
|
427
|
+
inject: TDeps;
|
|
428
|
+
methods: (services: ResolvedDeps<TDeps>) => ContractImplementation<TContract, TSession>;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Builder returned by createController.implements(Contract).
|
|
432
|
+
*/
|
|
433
|
+
interface ContractControllerBuilder<TContract extends AnyContract> {
|
|
434
|
+
/**
|
|
435
|
+
* Create the contract controller with dependencies and method implementations.
|
|
436
|
+
*
|
|
437
|
+
* @example
|
|
438
|
+
* ```typescript
|
|
439
|
+
* createController
|
|
440
|
+
* .implements(GreeterService)
|
|
441
|
+
* .create({
|
|
442
|
+
* inject: { db: Database },
|
|
443
|
+
* methods: ({ db }) => ({
|
|
444
|
+
* sayHello: async ({ body }) => ({
|
|
445
|
+
* message: `Hello, ${body.name}!`,
|
|
446
|
+
* }),
|
|
447
|
+
* sayHelloStream: async function* ({ body }) {
|
|
448
|
+
* for (let i = 0; i < 5; i++) {
|
|
449
|
+
* yield { message: `Hello ${body.name} #${i}` }
|
|
450
|
+
* }
|
|
451
|
+
* },
|
|
452
|
+
* }),
|
|
453
|
+
* })
|
|
454
|
+
* ```
|
|
455
|
+
*/
|
|
456
|
+
create<const TDeps extends Record<string, ServiceToken>, TSession = unknown>(config: ContractControllerConfig<TContract, TDeps, TSession>): ContractControllerDef<TContract, TDeps>;
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Create a controller that implements a contract (RPC service).
|
|
460
|
+
* The contract defines the methods, inputs, and outputs.
|
|
461
|
+
* The controller provides the implementations.
|
|
462
|
+
*
|
|
463
|
+
* @example
|
|
464
|
+
* ```typescript
|
|
465
|
+
* // Given a contract generated from .proto or defined manually:
|
|
466
|
+
* abstract class GreeterService extends defineContract({
|
|
467
|
+
* protocol: 'grpc',
|
|
468
|
+
* serviceName: 'helloworld.Greeter',
|
|
469
|
+
* methods: {
|
|
470
|
+
* sayHello: rpc(HelloRequestSchema, HelloReplySchema),
|
|
471
|
+
* },
|
|
472
|
+
* }) {}
|
|
473
|
+
*
|
|
474
|
+
* // Implement it:
|
|
475
|
+
* const GreeterController = createController
|
|
476
|
+
* .implements(GreeterService)
|
|
477
|
+
* .create({
|
|
478
|
+
* inject: { db: Database },
|
|
479
|
+
* methods: ({ db }) => ({
|
|
480
|
+
* sayHello: async ({ body }) => ({
|
|
481
|
+
* message: `Hello, ${body.name}!`,
|
|
482
|
+
* }),
|
|
483
|
+
* }),
|
|
484
|
+
* })
|
|
485
|
+
* ```
|
|
486
|
+
*/
|
|
487
|
+
declare function implementsContract<TContract extends AnyContract>(contract: TContract): ContractControllerBuilder<TContract>;
|
|
488
|
+
/**
|
|
489
|
+
* Create a controller with dependency injection and route definitions.
|
|
490
|
+
*
|
|
491
|
+
* Supports multiple patterns:
|
|
492
|
+
* - `createController('/prefix', { inject, routes })` - HTTP route controller
|
|
493
|
+
* - `createController.withContext<T>().create({ ... })` - contextual controller
|
|
494
|
+
* - `createController.implements(Contract).create({ ... })` - contract controller
|
|
495
|
+
*/
|
|
496
|
+
declare const createController: typeof _createControllerImpl & {
|
|
497
|
+
/** Create a contextual controller bound to a session type */
|
|
498
|
+
withContext: typeof withContext;
|
|
499
|
+
/** Create a controller that implements a contract (RPC service) */
|
|
500
|
+
implements: typeof implementsContract;
|
|
501
|
+
};
|
|
502
|
+
/**
|
|
503
|
+
* Create a contextual controller bound to a session type.
|
|
504
|
+
* Use this for WebSocket and similar scenarios where controllers
|
|
505
|
+
* are invoked programmatically with caller-provided context.
|
|
506
|
+
*/
|
|
507
|
+
declare const createContextualController: typeof withContext;
|
|
508
|
+
export { createController, createContextualController };
|
|
509
|
+
export type { ContextualControllerBuilder, Session, SessionOptions };
|
|
510
|
+
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/core/controller.ts"],"names":[],"mappings":"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"}
|