@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,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contract-Based Services
|
|
3
|
+
*
|
|
4
|
+
* Contracts define the shape of a service (methods, inputs, outputs).
|
|
5
|
+
* Controllers can implement contracts to provide type-safe RPC handlers.
|
|
6
|
+
*/
|
|
7
|
+
/** Streaming modes for RPC methods */
|
|
8
|
+
export type StreamingMode = 'unary' | 'server' | 'client' | 'bidi';
|
|
9
|
+
/**
|
|
10
|
+
* A message schema defines runtime encode/decode capabilities.
|
|
11
|
+
* This is the interface that defineMessage() will implement.
|
|
12
|
+
*/
|
|
13
|
+
export interface MessageSchema<T = unknown> {
|
|
14
|
+
/** Type brand for type inference */
|
|
15
|
+
readonly $type: 'message';
|
|
16
|
+
/** Message name (e.g., "HelloRequest") */
|
|
17
|
+
readonly $name: string;
|
|
18
|
+
/** Create a new instance with defaults */
|
|
19
|
+
create(partial?: Partial<T>): T;
|
|
20
|
+
/** Encode to binary (protobuf wire format) */
|
|
21
|
+
encode?(value: T): Uint8Array;
|
|
22
|
+
/** Decode from binary */
|
|
23
|
+
decode?(data: Uint8Array): T;
|
|
24
|
+
/** Convert to JSON-safe object */
|
|
25
|
+
toJSON?(value: T): unknown;
|
|
26
|
+
/** Convert from JSON */
|
|
27
|
+
fromJSON?(json: unknown): T;
|
|
28
|
+
}
|
|
29
|
+
/** Extract the type from a MessageSchema */
|
|
30
|
+
export type MessageType<S> = S extends MessageSchema<infer T> ? T : never;
|
|
31
|
+
/**
|
|
32
|
+
* A MessageSchema with guaranteed binary encode/decode.
|
|
33
|
+
* Proto codegen generates this type - encode and decode are always present.
|
|
34
|
+
*/
|
|
35
|
+
export interface ProtoSchema<T = unknown> extends MessageSchema<T> {
|
|
36
|
+
encode(value: T): Uint8Array;
|
|
37
|
+
decode(data: Uint8Array): T;
|
|
38
|
+
}
|
|
39
|
+
/** Field descriptor for message fields */
|
|
40
|
+
export interface FieldDescriptor {
|
|
41
|
+
/** Field number (1-based, from protobuf) */
|
|
42
|
+
number: number;
|
|
43
|
+
/** Field type (primitive or message reference) */
|
|
44
|
+
type: string;
|
|
45
|
+
/** Whether this field is repeated */
|
|
46
|
+
repeated?: boolean;
|
|
47
|
+
/** Whether this field is a map */
|
|
48
|
+
map?: boolean;
|
|
49
|
+
/** Map key type (if map) */
|
|
50
|
+
mapKey?: string;
|
|
51
|
+
/** Optional field (proto3 optional keyword or proto2 optional) */
|
|
52
|
+
optional?: boolean;
|
|
53
|
+
/** Oneof group name (if part of a oneof) */
|
|
54
|
+
oneof?: string;
|
|
55
|
+
}
|
|
56
|
+
/** Configuration for defineMessage */
|
|
57
|
+
export interface MessageConfig<T> {
|
|
58
|
+
/** Fully qualified message name (e.g., "helloworld.HelloRequest") */
|
|
59
|
+
name: string;
|
|
60
|
+
/** Field descriptors */
|
|
61
|
+
fields: Record<keyof T & string, FieldDescriptor>;
|
|
62
|
+
/** Create default instance */
|
|
63
|
+
create?: (partial?: Partial<T>) => T;
|
|
64
|
+
/** Encode to binary */
|
|
65
|
+
encode?: (value: T) => Uint8Array;
|
|
66
|
+
/** Decode from binary */
|
|
67
|
+
decode?: (data: Uint8Array) => T;
|
|
68
|
+
/** Convert to JSON-safe object */
|
|
69
|
+
toJSON?: (value: T) => unknown;
|
|
70
|
+
/** Convert from JSON */
|
|
71
|
+
fromJSON?: (json: unknown) => T;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Define a message schema for runtime encode/decode.
|
|
75
|
+
* This is used by code generators (protobuf, etc.) to create
|
|
76
|
+
* message schemas that can serialize/deserialize data.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* // Generated from .proto
|
|
81
|
+
* export interface HelloRequest {
|
|
82
|
+
* name: string
|
|
83
|
+
* }
|
|
84
|
+
*
|
|
85
|
+
* export const HelloRequestSchema = defineMessage<HelloRequest>({
|
|
86
|
+
* name: 'helloworld.HelloRequest',
|
|
87
|
+
* fields: {
|
|
88
|
+
* name: { number: 1, type: 'string' },
|
|
89
|
+
* },
|
|
90
|
+
* create: (partial) => ({ name: '', ...partial }),
|
|
91
|
+
* encode: (value) => { ... },
|
|
92
|
+
* decode: (data) => { ... },
|
|
93
|
+
* })
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export declare function defineMessage<T>(config: MessageConfig<T>): MessageSchema<T>;
|
|
97
|
+
/**
|
|
98
|
+
* Create a simple message schema without encode/decode.
|
|
99
|
+
* Use this for manual contract definitions where you don't need
|
|
100
|
+
* binary serialization.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const HelloRequestSchema = simpleMessage<HelloRequest>('HelloRequest')
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare function simpleMessage<T>(name: string): MessageSchema<T>;
|
|
108
|
+
/** Definition of an RPC method */
|
|
109
|
+
export interface RpcMethodDef<TInput = unknown, TOutput = unknown, TStreaming extends StreamingMode = StreamingMode> {
|
|
110
|
+
readonly input: MessageSchema<TInput>;
|
|
111
|
+
readonly output: MessageSchema<TOutput>;
|
|
112
|
+
readonly streaming: TStreaming;
|
|
113
|
+
}
|
|
114
|
+
/** Builder interface returned by rpc() before streaming is set */
|
|
115
|
+
export interface RpcMethodBuilder<TInput, TOutput> {
|
|
116
|
+
/** Make this a server streaming RPC (client sends one, server streams many) */
|
|
117
|
+
serverStream(): RpcMethodDef<TInput, TOutput, 'server'>;
|
|
118
|
+
/** Make this a client streaming RPC (client streams many, server sends one) */
|
|
119
|
+
clientStream(): RpcMethodDef<TInput, TOutput, 'client'>;
|
|
120
|
+
/** Make this a bidirectional streaming RPC */
|
|
121
|
+
bidiStream(): RpcMethodDef<TInput, TOutput, 'bidi'>;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Define an RPC method with input and output schemas.
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* // Unary (default)
|
|
129
|
+
* rpc(HelloRequestSchema, HelloReplySchema)
|
|
130
|
+
*
|
|
131
|
+
* // Server streaming
|
|
132
|
+
* rpc(HelloRequestSchema, HelloReplySchema).serverStream()
|
|
133
|
+
*
|
|
134
|
+
* // Bidirectional streaming
|
|
135
|
+
* rpc(ChatMessageSchema, ChatMessageSchema).bidiStream()
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
export declare function rpc<TInput, TOutput>(input: MessageSchema<TInput>, output: MessageSchema<TOutput>): RpcMethodDef<TInput, TOutput, 'unary'> & RpcMethodBuilder<TInput, TOutput>;
|
|
139
|
+
/** Symbol for contract metadata */
|
|
140
|
+
export declare const CONTRACT_METADATA: unique symbol;
|
|
141
|
+
/** Symbol for unique contract ID */
|
|
142
|
+
export declare const CONTRACT_ID: unique symbol;
|
|
143
|
+
/** Runtime metadata stored on contract classes */
|
|
144
|
+
export interface ContractMetadata<TProtocol extends string = string, TMethods extends Record<string, RpcMethodDef> = Record<string, RpcMethodDef>> {
|
|
145
|
+
readonly protocol: TProtocol;
|
|
146
|
+
readonly serviceName: string;
|
|
147
|
+
readonly methods: TMethods;
|
|
148
|
+
}
|
|
149
|
+
/** Base class for contracts (never instantiated) */
|
|
150
|
+
export declare abstract class ContractBase {
|
|
151
|
+
static readonly [CONTRACT_METADATA]: ContractMetadata;
|
|
152
|
+
static readonly [CONTRACT_ID]: number;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The "class" type returned by defineContract.
|
|
156
|
+
* This is an abstract class that carries contract metadata.
|
|
157
|
+
*
|
|
158
|
+
* Supports both direct usage and `abstract class X extends defineContract(...)` pattern.
|
|
159
|
+
*/
|
|
160
|
+
export interface Contract<TProtocol extends string = string, TMethods extends Record<string, RpcMethodDef> = Record<string, RpcMethodDef>> {
|
|
161
|
+
/** Abstract constructor signature - makes it extendable (never actually called) */
|
|
162
|
+
new (...args: never[]): ContractBase;
|
|
163
|
+
/** Runtime contract metadata */
|
|
164
|
+
readonly [CONTRACT_METADATA]: ContractMetadata<TProtocol, TMethods>;
|
|
165
|
+
/** Unique ID for cross-module matching */
|
|
166
|
+
readonly [CONTRACT_ID]: number;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Extract the contract type from an abstract class that extends defineContract().
|
|
170
|
+
* Works with both `Contract<...>` directly and `typeof MyContract` where MyContract
|
|
171
|
+
* is an abstract class extending defineContract().
|
|
172
|
+
*/
|
|
173
|
+
export type ExtractContract<T> = T extends {
|
|
174
|
+
[CONTRACT_METADATA]: ContractMetadata<infer P, infer M>;
|
|
175
|
+
} ? Contract<P, M> : never;
|
|
176
|
+
/**
|
|
177
|
+
* Any type that has contract metadata (Contract or abstract class extending it).
|
|
178
|
+
*/
|
|
179
|
+
export type AnyContract = {
|
|
180
|
+
readonly [CONTRACT_METADATA]: ContractMetadata<any, any>;
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Define a contract (service interface) for RPC.
|
|
184
|
+
*
|
|
185
|
+
* Returns an abstract class that can be extended for named exports,
|
|
186
|
+
* carrying runtime metadata for protocol adapters and code generation.
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```typescript
|
|
190
|
+
* // Manual definition
|
|
191
|
+
* export abstract class GreeterService extends defineContract({
|
|
192
|
+
* protocol: 'grpc',
|
|
193
|
+
* serviceName: 'helloworld.Greeter',
|
|
194
|
+
* methods: {
|
|
195
|
+
* sayHello: rpc(HelloRequestSchema, HelloReplySchema),
|
|
196
|
+
* sayHelloStream: rpc(HelloRequestSchema, HelloReplySchema).serverStream(),
|
|
197
|
+
* chat: rpc(ChatMessageSchema, ChatMessageSchema).bidiStream(),
|
|
198
|
+
* },
|
|
199
|
+
* }) {}
|
|
200
|
+
*
|
|
201
|
+
* // Generated from .proto
|
|
202
|
+
* export abstract class UserService extends defineContract({
|
|
203
|
+
* protocol: 'grpc',
|
|
204
|
+
* serviceName: 'user.UserService',
|
|
205
|
+
* methods: {
|
|
206
|
+
* createUser: rpc(CreateUserRequestSchema, CreateUserResponseSchema),
|
|
207
|
+
* getUser: rpc(GetUserRequestSchema, UserSchema),
|
|
208
|
+
* },
|
|
209
|
+
* }) {}
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
export declare function defineContract<TProtocol extends string, TMethods extends Record<string, RpcMethodDef>>(config: {
|
|
213
|
+
protocol: TProtocol;
|
|
214
|
+
serviceName: string;
|
|
215
|
+
methods: TMethods;
|
|
216
|
+
}): Contract<TProtocol, TMethods>;
|
|
217
|
+
/** Helper to extract methods from any contract-like type */
|
|
218
|
+
type ExtractMethods<C> = C extends {
|
|
219
|
+
[CONTRACT_METADATA]: ContractMetadata<any, infer M>;
|
|
220
|
+
} ? M : never;
|
|
221
|
+
/** Extract method names from a contract */
|
|
222
|
+
export type ContractMethods<C extends AnyContract> = keyof ExtractMethods<C> & string;
|
|
223
|
+
/** Extract input type for a method */
|
|
224
|
+
export type MethodInput<C extends AnyContract, M extends ContractMethods<C>> = ExtractMethods<C>[M] extends RpcMethodDef<infer TInput, any, any> ? TInput : never;
|
|
225
|
+
/** Extract output type for a method */
|
|
226
|
+
export type MethodOutput<C extends AnyContract, M extends ContractMethods<C>> = ExtractMethods<C>[M] extends RpcMethodDef<any, infer TOutput, any> ? TOutput : never;
|
|
227
|
+
/** Extract streaming mode for a method */
|
|
228
|
+
export type MethodStreaming<C extends AnyContract, M extends ContractMethods<C>> = ExtractMethods<C>[M] extends RpcMethodDef<any, any, infer TStreaming> ? TStreaming : never;
|
|
229
|
+
/** Get contract metadata from a contract class */
|
|
230
|
+
export declare function getContractMetadata<C extends AnyContract>(contract: C): ContractMetadata;
|
|
231
|
+
/** Context passed to RPC handlers */
|
|
232
|
+
export interface RpcContext<TBody, TSession = unknown> {
|
|
233
|
+
/** Request body (or async iterable for client/bidi streaming) */
|
|
234
|
+
body: TBody;
|
|
235
|
+
/** gRPC metadata / HTTP headers */
|
|
236
|
+
metadata: Map<string, string>;
|
|
237
|
+
/** Cancellation signal */
|
|
238
|
+
signal: AbortSignal;
|
|
239
|
+
/** Request deadline (if set) */
|
|
240
|
+
deadline?: Date;
|
|
241
|
+
/** Session data (set by auth middleware) */
|
|
242
|
+
session: TSession;
|
|
243
|
+
}
|
|
244
|
+
/** Streaming context for client/bidi streaming */
|
|
245
|
+
export interface StreamingRpcContext<TBody, TSession = unknown> extends Omit<RpcContext<TBody, TSession>, 'body'> {
|
|
246
|
+
/** Incoming message stream */
|
|
247
|
+
body: AsyncIterable<TBody>;
|
|
248
|
+
}
|
|
249
|
+
/** Handler for unary RPC */
|
|
250
|
+
export type UnaryHandler<TInput, TOutput, TSession = unknown> = (ctx: RpcContext<TInput, TSession>) => Promise<TOutput> | TOutput;
|
|
251
|
+
/** Handler for server streaming RPC */
|
|
252
|
+
export type ServerStreamHandler<TInput, TOutput, TSession = unknown> = (ctx: RpcContext<TInput, TSession>) => AsyncGenerator<TOutput, void, unknown>;
|
|
253
|
+
/** Handler for client streaming RPC */
|
|
254
|
+
export type ClientStreamHandler<TInput, TOutput, TSession = unknown> = (ctx: StreamingRpcContext<TInput, TSession>) => Promise<TOutput> | TOutput;
|
|
255
|
+
/** Handler for bidirectional streaming RPC */
|
|
256
|
+
export type BidiStreamHandler<TInput, TOutput, TSession = unknown> = (ctx: StreamingRpcContext<TInput, TSession>) => AsyncGenerator<TOutput, void, unknown>;
|
|
257
|
+
/** Get the handler type for a method based on its streaming mode */
|
|
258
|
+
export type MethodHandler<C extends AnyContract, M extends ContractMethods<C>, TSession = unknown> = MethodStreaming<C, M> extends 'unary' ? UnaryHandler<MethodInput<C, M>, MethodOutput<C, M>, TSession> : MethodStreaming<C, M> extends 'server' ? ServerStreamHandler<MethodInput<C, M>, MethodOutput<C, M>, TSession> : MethodStreaming<C, M> extends 'client' ? ClientStreamHandler<MethodInput<C, M>, MethodOutput<C, M>, TSession> : MethodStreaming<C, M> extends 'bidi' ? BidiStreamHandler<MethodInput<C, M>, MethodOutput<C, M>, TSession> : never;
|
|
259
|
+
/** Required implementation shape for a contract */
|
|
260
|
+
export type ContractImplementation<C extends AnyContract, TSession = unknown> = {
|
|
261
|
+
[M in ContractMethods<C>]: MethodHandler<C, M, TSession>;
|
|
262
|
+
};
|
|
263
|
+
export {};
|
|
264
|
+
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/features/contract/contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contract-Based Services
|
|
3
|
+
*
|
|
4
|
+
* Contracts define the shape of a service (methods, inputs, outputs).
|
|
5
|
+
* Controllers can implement contracts to provide type-safe RPC handlers.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Define a message schema for runtime encode/decode.
|
|
9
|
+
* This is used by code generators (protobuf, etc.) to create
|
|
10
|
+
* message schemas that can serialize/deserialize data.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Generated from .proto
|
|
15
|
+
* export interface HelloRequest {
|
|
16
|
+
* name: string
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* export const HelloRequestSchema = defineMessage<HelloRequest>({
|
|
20
|
+
* name: 'helloworld.HelloRequest',
|
|
21
|
+
* fields: {
|
|
22
|
+
* name: { number: 1, type: 'string' },
|
|
23
|
+
* },
|
|
24
|
+
* create: (partial) => ({ name: '', ...partial }),
|
|
25
|
+
* encode: (value) => { ... },
|
|
26
|
+
* decode: (data) => { ... },
|
|
27
|
+
* })
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export function defineMessage(config) {
|
|
31
|
+
const shortName = config.name.split('.').pop() ?? config.name;
|
|
32
|
+
const schema = {
|
|
33
|
+
$type: 'message',
|
|
34
|
+
$name: shortName,
|
|
35
|
+
create: config.create ?? ((partial) => ({ ...partial })),
|
|
36
|
+
encode: config.encode,
|
|
37
|
+
decode: config.decode,
|
|
38
|
+
toJSON: config.toJSON,
|
|
39
|
+
fromJSON: config.fromJSON,
|
|
40
|
+
};
|
|
41
|
+
// Forward Processable descriptor so proto schemas retain [Symbol.process]
|
|
42
|
+
if (typeof Symbol.process === 'symbol' && Symbol.process in config) {
|
|
43
|
+
Object.defineProperty(schema, Symbol.process, {
|
|
44
|
+
value: config[Symbol.process],
|
|
45
|
+
enumerable: false,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return schema;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create a simple message schema without encode/decode.
|
|
52
|
+
* Use this for manual contract definitions where you don't need
|
|
53
|
+
* binary serialization.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const HelloRequestSchema = simpleMessage<HelloRequest>('HelloRequest')
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export function simpleMessage(name) {
|
|
61
|
+
return {
|
|
62
|
+
$type: 'message',
|
|
63
|
+
$name: name,
|
|
64
|
+
create: (partial) => ({ ...partial }),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Define an RPC method with input and output schemas.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* // Unary (default)
|
|
73
|
+
* rpc(HelloRequestSchema, HelloReplySchema)
|
|
74
|
+
*
|
|
75
|
+
* // Server streaming
|
|
76
|
+
* rpc(HelloRequestSchema, HelloReplySchema).serverStream()
|
|
77
|
+
*
|
|
78
|
+
* // Bidirectional streaming
|
|
79
|
+
* rpc(ChatMessageSchema, ChatMessageSchema).bidiStream()
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export function rpc(input, output) {
|
|
83
|
+
const def = {
|
|
84
|
+
input,
|
|
85
|
+
output,
|
|
86
|
+
streaming: 'unary',
|
|
87
|
+
};
|
|
88
|
+
return Object.assign(def, {
|
|
89
|
+
serverStream: () => ({
|
|
90
|
+
input,
|
|
91
|
+
output,
|
|
92
|
+
streaming: 'server',
|
|
93
|
+
}),
|
|
94
|
+
clientStream: () => ({
|
|
95
|
+
input,
|
|
96
|
+
output,
|
|
97
|
+
streaming: 'client',
|
|
98
|
+
}),
|
|
99
|
+
bidiStream: () => ({
|
|
100
|
+
input,
|
|
101
|
+
output,
|
|
102
|
+
streaming: 'bidi',
|
|
103
|
+
}),
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
// ============================================================================
|
|
107
|
+
// Contract Definition
|
|
108
|
+
// ============================================================================
|
|
109
|
+
/** Symbol for contract metadata */
|
|
110
|
+
export const CONTRACT_METADATA = Symbol('justscale:contractMetadata');
|
|
111
|
+
/** Symbol for unique contract ID */
|
|
112
|
+
export const CONTRACT_ID = Symbol('justscale:contractId');
|
|
113
|
+
/** Symbol for global counter */
|
|
114
|
+
const CONTRACT_ID_COUNTER = Symbol.for('justscale:contractIdCounter');
|
|
115
|
+
// Use global counter to handle multiple module instances
|
|
116
|
+
const _global = globalThis;
|
|
117
|
+
_global[CONTRACT_ID_COUNTER] = _global[CONTRACT_ID_COUNTER] ?? 0;
|
|
118
|
+
/** Get next unique ID (global) */
|
|
119
|
+
function nextContractId() {
|
|
120
|
+
return ++_global[CONTRACT_ID_COUNTER];
|
|
121
|
+
}
|
|
122
|
+
/** Base class for contracts (never instantiated) */
|
|
123
|
+
export class ContractBase {
|
|
124
|
+
static [CONTRACT_METADATA];
|
|
125
|
+
static [CONTRACT_ID];
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Define a contract (service interface) for RPC.
|
|
129
|
+
*
|
|
130
|
+
* Returns an abstract class that can be extended for named exports,
|
|
131
|
+
* carrying runtime metadata for protocol adapters and code generation.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* // Manual definition
|
|
136
|
+
* export abstract class GreeterService extends defineContract({
|
|
137
|
+
* protocol: 'grpc',
|
|
138
|
+
* serviceName: 'helloworld.Greeter',
|
|
139
|
+
* methods: {
|
|
140
|
+
* sayHello: rpc(HelloRequestSchema, HelloReplySchema),
|
|
141
|
+
* sayHelloStream: rpc(HelloRequestSchema, HelloReplySchema).serverStream(),
|
|
142
|
+
* chat: rpc(ChatMessageSchema, ChatMessageSchema).bidiStream(),
|
|
143
|
+
* },
|
|
144
|
+
* }) {}
|
|
145
|
+
*
|
|
146
|
+
* // Generated from .proto
|
|
147
|
+
* export abstract class UserService extends defineContract({
|
|
148
|
+
* protocol: 'grpc',
|
|
149
|
+
* serviceName: 'user.UserService',
|
|
150
|
+
* methods: {
|
|
151
|
+
* createUser: rpc(CreateUserRequestSchema, CreateUserResponseSchema),
|
|
152
|
+
* getUser: rpc(GetUserRequestSchema, UserSchema),
|
|
153
|
+
* },
|
|
154
|
+
* }) {}
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
export function defineContract(config) {
|
|
158
|
+
const id = nextContractId();
|
|
159
|
+
function ContractImpl() {
|
|
160
|
+
throw new Error(`Contract '${config.serviceName}' cannot be instantiated directly. ` +
|
|
161
|
+
'Use createController.implements() to create an implementation.');
|
|
162
|
+
}
|
|
163
|
+
Object.defineProperty(ContractImpl, 'name', {
|
|
164
|
+
value: config.serviceName.split('.').pop() ?? config.serviceName,
|
|
165
|
+
configurable: true,
|
|
166
|
+
});
|
|
167
|
+
ContractImpl[CONTRACT_METADATA] = {
|
|
168
|
+
protocol: config.protocol,
|
|
169
|
+
serviceName: config.serviceName,
|
|
170
|
+
methods: config.methods,
|
|
171
|
+
};
|
|
172
|
+
ContractImpl[CONTRACT_ID] = id;
|
|
173
|
+
return ContractImpl;
|
|
174
|
+
}
|
|
175
|
+
/** Get contract metadata from a contract class */
|
|
176
|
+
export function getContractMetadata(contract) {
|
|
177
|
+
const metadata = contract[CONTRACT_METADATA];
|
|
178
|
+
if (!metadata) {
|
|
179
|
+
throw new Error(`Not a valid contract: missing ${String(CONTRACT_METADATA)}`);
|
|
180
|
+
}
|
|
181
|
+
return metadata;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/features/contract/contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/contract/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/contract/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Env contribution helpers for assembling an environment declaratively.
|
|
3
|
+
*
|
|
4
|
+
* `buildProviders([...])` partitions contributions into the three
|
|
5
|
+
* providers `createEnvironment` expects (config, secrets, flags).
|
|
6
|
+
*
|
|
7
|
+
* `fromVault(partial, mapping)` builds an async config source that reads
|
|
8
|
+
* each field from the vault and coerces the raw string using the partial's
|
|
9
|
+
* zod schema. Fields with `.default()` or `.optional()` are silently
|
|
10
|
+
* dropped when the vault path is missing; required fields throw at boot.
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { type VaultClient } from '../vault/types.js';
|
|
14
|
+
import type { ConfigPartial, ConfigComponent } from '../config/types.js';
|
|
15
|
+
import type { SecretPartial, SecretComponent } from '../secrets/types.js';
|
|
16
|
+
import type { FeatureFlagPartial, FeatureFlagComponent } from '../feature-flags/types.js';
|
|
17
|
+
declare const CONFIG_CONTRIB: unique symbol;
|
|
18
|
+
declare const SECRET_CONTRIB: unique symbol;
|
|
19
|
+
declare const FLAG_CONTRIB: unique symbol;
|
|
20
|
+
type VaultDeps = {
|
|
21
|
+
vault: VaultClient;
|
|
22
|
+
};
|
|
23
|
+
/** A config override: static object or async factory that reads the vault. */
|
|
24
|
+
export type ConfigSource<T> = Partial<T> | ((deps: VaultDeps) => Partial<T> | Promise<Partial<T>>);
|
|
25
|
+
export interface ConfigContribution<T = unknown> {
|
|
26
|
+
readonly [CONFIG_CONTRIB]: true;
|
|
27
|
+
readonly partial: ConfigPartial<T>;
|
|
28
|
+
readonly source: ConfigSource<T>;
|
|
29
|
+
}
|
|
30
|
+
export interface SecretContribution<T = unknown> {
|
|
31
|
+
readonly [SECRET_CONTRIB]: true;
|
|
32
|
+
readonly partial: SecretPartial<T>;
|
|
33
|
+
readonly factory: (deps: VaultDeps) => T | Promise<T>;
|
|
34
|
+
}
|
|
35
|
+
export interface FlagContribution<T = unknown> {
|
|
36
|
+
readonly [FLAG_CONTRIB]: true;
|
|
37
|
+
readonly partial: FeatureFlagPartial<T>;
|
|
38
|
+
readonly value: Partial<T>;
|
|
39
|
+
}
|
|
40
|
+
export type EnvContribution = ConfigContribution<any> | SecretContribution<any> | FlagContribution<any>;
|
|
41
|
+
/** Contribute values for a config partial. Unset fields fall through to the partial's zod defaults. */
|
|
42
|
+
export declare function config<S extends z.ZodType<any>>(partial: ConfigPartial<z.infer<S>> & {
|
|
43
|
+
schema: S;
|
|
44
|
+
}, source?: ConfigSource<z.infer<S>>): ConfigContribution<z.infer<S>>;
|
|
45
|
+
/** Contribute a factory for a secret partial. Runs with the env's injected vault client. */
|
|
46
|
+
export declare function secret<T>(partial: SecretPartial<T>, factory: SecretContribution<T>['factory']): SecretContribution<T>;
|
|
47
|
+
/** Contribute values for a feature-flag partial. Unset fields fall through to the partial's zod defaults. */
|
|
48
|
+
export declare function flag<S extends z.ZodType<any>>(partial: FeatureFlagPartial<z.infer<S>> & {
|
|
49
|
+
schema: S;
|
|
50
|
+
}, value?: Partial<z.infer<S>>): FlagContribution<z.infer<S>>;
|
|
51
|
+
/**
|
|
52
|
+
* Build an async config source that reads mapped fields from the vault.
|
|
53
|
+
* Each raw string is coerced to the field's zod type before returning.
|
|
54
|
+
* Required fields throw at boot; optional/defaulted fields are silently skipped.
|
|
55
|
+
*/
|
|
56
|
+
export declare function fromVault<T>(partial: ConfigPartial<T>, mapping: Partial<Record<keyof T & string, string>>): (deps: VaultDeps) => Promise<Partial<T>>;
|
|
57
|
+
type PickConfigPartials<T extends readonly EnvContribution[]> = T extends readonly [infer H, ...infer R extends readonly EnvContribution[]] ? H extends ConfigContribution<infer V> ? readonly [ConfigPartial<V>, ...PickConfigPartials<R>] : PickConfigPartials<R> : readonly [];
|
|
58
|
+
type PickSecretPartials<T extends readonly EnvContribution[]> = T extends readonly [infer H, ...infer R extends readonly EnvContribution[]] ? H extends SecretContribution<infer V> ? readonly [SecretPartial<V>, ...PickSecretPartials<R>] : PickSecretPartials<R> : readonly [];
|
|
59
|
+
type PickFlagPartials<T extends readonly EnvContribution[]> = T extends readonly [infer H, ...infer R extends readonly EnvContribution[]] ? H extends FlagContribution<infer V> ? readonly [FeatureFlagPartial<V>, ...PickFlagPartials<R>] : PickFlagPartials<R> : readonly [];
|
|
60
|
+
/**
|
|
61
|
+
* Partition contributions by kind and assemble the `[Config, Secrets, Flags]`
|
|
62
|
+
* provider triple that `createEnvironment({ providers })` expects.
|
|
63
|
+
*/
|
|
64
|
+
export declare function buildProviders<const T extends readonly EnvContribution[]>(contributions: T): [
|
|
65
|
+
ConfigComponent<PickConfigPartials<T>>,
|
|
66
|
+
SecretComponent<PickSecretPartials<T>>,
|
|
67
|
+
FeatureFlagComponent<PickFlagPartials<T>>
|
|
68
|
+
];
|
|
69
|
+
export {};
|
|
70
|
+
//# sourceMappingURL=contribute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contribute.d.ts","sourceRoot":"","sources":["../../../src/features/env/contribute.ts"],"names":[],"mappings":"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"}
|