@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,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builder V2 Module
|
|
3
|
+
*
|
|
4
|
+
* Fluent builder API for creating apps with type-safe dependency tracking.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import JustScale, { bindRepository } from '@justscale/core'
|
|
9
|
+
* import { ModelRepository } from '@justscale/core/models'
|
|
10
|
+
*
|
|
11
|
+
* const app = JustScale()
|
|
12
|
+
* .add(PgClient)
|
|
13
|
+
* .add(bindRepository(ModelRepository.of(User), PgUser))
|
|
14
|
+
* .add(UserService)
|
|
15
|
+
* .build()
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
// Type guards
|
|
19
|
+
export { isServiceDef, isControllerDef, isRepositoryBinding, isServiceBinding, isInstanceBinding, isFeatureToken, isBuilderCallback, isComponentArray, FEATURE_TOKEN, FEATURE_META, REPO_BINDING, SERVICE_BINDING, INSTANCE_BINDING, } from './types.js';
|
|
20
|
+
// Builder utilities
|
|
21
|
+
export { bindRepository, bindService, bindInstance } from './builder.js';
|
|
22
|
+
// Feature Builder
|
|
23
|
+
export { createFeatureBuilder, getFeatureMetadata, getFeatureRequirements, getFeatureName, } from './feature-builder.js';
|
|
24
|
+
// Validation
|
|
25
|
+
export { DependencyError, validateDependencies, buildDependencyGraph, findMissingDependencies, getTokenDescription, registerPluginProvides, getPluginProvides, registerImplicitService, getImplicitServices, } from './validation.js';
|
|
26
|
+
// Topological Sort
|
|
27
|
+
export { topologicalSort, CycleError, } from './sort.js';
|
|
28
|
+
export { isStop, createStopFn } from './stop.js';
|
|
29
|
+
// Plugin System
|
|
30
|
+
export { PLUGIN_SYMBOL, isPlugin, createPlugin } from './plugin.js';
|
|
31
|
+
export { createBuilderState, createBaseBuilder } from './create-builder.js';
|
|
32
|
+
// Route Execution
|
|
33
|
+
export { executeRoute, executeSteps } from './execute.js';
|
|
34
|
+
// Plugins
|
|
35
|
+
export { query } from './plugins/query.js';
|
|
36
|
+
export { ValidationErrorSchema } from './plugins/validation.js';
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAuBH,cAAc;AACd,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,oBAAoB;AACpB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEzE,kBAAkB;AAClB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAG9B,aAAa;AACb,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAMzB,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,UAAU,GACX,MAAM,WAAW,CAAC;AAInB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAyBjD,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIpE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1D,UAAU;AACV,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin System for Route Builder
|
|
3
|
+
*
|
|
4
|
+
* Plugins are reusable route transformations that can:
|
|
5
|
+
* - Add middleware (use)
|
|
6
|
+
* - Add guards
|
|
7
|
+
* - Declare response types (returns)
|
|
8
|
+
* - Require DI dependencies (inject)
|
|
9
|
+
*
|
|
10
|
+
* Dependencies are resolved lazily - when the controller registers with the container.
|
|
11
|
+
*/
|
|
12
|
+
import type { RouteBuilder } from './types.js';
|
|
13
|
+
import type { Container, ServiceToken, ResolvedDeps } from '../core/service.js';
|
|
14
|
+
/**
|
|
15
|
+
* Symbol to identify plugins.
|
|
16
|
+
* Brands plugin functions to distinguish them from regular callbacks.
|
|
17
|
+
*/
|
|
18
|
+
export declare const PLUGIN_SYMBOL: unique symbol;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a value is a plugin.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isPlugin(value: unknown): value is BuilderPlugin<any, any, any, any, any, any, any>;
|
|
23
|
+
/**
|
|
24
|
+
* A plugin is a function that transforms a RouteBuilder.
|
|
25
|
+
* It can chain any combination of use/guard/returns.
|
|
26
|
+
*
|
|
27
|
+
* Plugins can optionally declare DI requirements which are resolved
|
|
28
|
+
* when the controller registers with the container.
|
|
29
|
+
*
|
|
30
|
+
* @typeParam TCtxIn - Input context type
|
|
31
|
+
* @typeParam TCtxOut - Output context type (after transformations)
|
|
32
|
+
* @typeParam TRetIn - Input returns union
|
|
33
|
+
* @typeParam TRetOut - Output returns union (after adding response types)
|
|
34
|
+
* @typeParam TReqIn - Input DI requirements
|
|
35
|
+
* @typeParam TReqOut - Output DI requirements (accumulated from this plugin)
|
|
36
|
+
* @typeParam TPath - Route path literal
|
|
37
|
+
*/
|
|
38
|
+
export interface BuilderPlugin<TCtxIn, TCtxOut, TRetIn, TRetOut, TReqIn, TReqOut, TPath extends string, THandlerReturn = void | Promise<void>> {
|
|
39
|
+
(builder: RouteBuilder<TCtxIn, TRetIn, TReqIn, TPath, unknown, THandlerReturn>): RouteBuilder<TCtxOut, TRetOut, TReqOut, TPath, unknown, THandlerReturn>;
|
|
40
|
+
/** Brand to identify plugins */
|
|
41
|
+
readonly [PLUGIN_SYMBOL]: true;
|
|
42
|
+
/** DI requirements (for type tracking) */
|
|
43
|
+
readonly requirements?: TReqOut;
|
|
44
|
+
/** Resolve dependencies - called by controller at registration time */
|
|
45
|
+
resolve?(container: Container): void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create a reusable plugin with optional DI dependencies.
|
|
49
|
+
*
|
|
50
|
+
* Dependencies are resolved LAZILY - the plugin captures the build function,
|
|
51
|
+
* and deps are resolved when controller.resolve() is called (at registration time).
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* // Plugin without dependencies
|
|
56
|
+
* const addCors = () => createPlugin({
|
|
57
|
+
* build: () => builder => builder
|
|
58
|
+
* .use(ctx => ({ _cors: true }))
|
|
59
|
+
* .guard(ctx => {
|
|
60
|
+
* ctx.res.setHeader('Access-Control-Allow-Origin', '*')
|
|
61
|
+
* })
|
|
62
|
+
* })
|
|
63
|
+
*
|
|
64
|
+
* // Plugin with DI dependencies
|
|
65
|
+
* const requireAuth = () => createPlugin({
|
|
66
|
+
* inject: { auth: AuthService },
|
|
67
|
+
* build: ({ auth }) => builder => builder
|
|
68
|
+
* .returns(401, UnauthorizedSchema)
|
|
69
|
+
* .use(async ctx => {
|
|
70
|
+
* const token = ctx.headers.authorization?.replace('Bearer ', '')
|
|
71
|
+
* const session = token ? await auth.validate(token) : null
|
|
72
|
+
* return { _session: session }
|
|
73
|
+
* })
|
|
74
|
+
* .guard(ctx => {
|
|
75
|
+
* if (!ctx._session) {
|
|
76
|
+
* ctx.res.status(401).json({ message: 'Unauthorized' })
|
|
77
|
+
* return ctx.stop()
|
|
78
|
+
* }
|
|
79
|
+
* })
|
|
80
|
+
* .use(ctx => ({ session: ctx._session! }))
|
|
81
|
+
* })
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare function createPlugin<TDeps extends Record<string, ServiceToken<any>>, TCtxIn, TCtxOut, TRetIn, TRetOut>(options: {
|
|
85
|
+
/** DI dependencies required by this plugin */
|
|
86
|
+
inject?: TDeps;
|
|
87
|
+
/** Build function that receives resolved dependencies and returns a builder transformer */
|
|
88
|
+
build: (deps: ResolvedDeps<TDeps>) => <TPath extends string>(builder: RouteBuilder<TCtxIn, TRetIn, {}, TPath>) => RouteBuilder<TCtxOut, TRetOut, {}, TPath>;
|
|
89
|
+
}): BuilderPlugin<TCtxIn, TCtxOut, TRetIn, TRetOut, {}, TDeps, any>;
|
|
90
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/builder/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMhF;;;GAGG;AACH,eAAO,MAAM,aAAa,eAA6B,CAAC;AAExD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAElG;AAMD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa,CAC5B,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,KAAK,SAAS,MAAM,EACpB,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAErC,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAAA;IAExJ,gCAAgC;IAChC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,CAAA;IAE9B,0CAA0C;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAE/B,uEAAuE;IACvE,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAA;CACrC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,YAAY,CAC1B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAC/C,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,EAAE;IACT,8CAA8C;IAC9C,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,2FAA2F;IAC3F,KAAK,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,MAAM,EACzD,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,KAC7C,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;CAC/C,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAwClE"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin System for Route Builder
|
|
3
|
+
*
|
|
4
|
+
* Plugins are reusable route transformations that can:
|
|
5
|
+
* - Add middleware (use)
|
|
6
|
+
* - Add guards
|
|
7
|
+
* - Declare response types (returns)
|
|
8
|
+
* - Require DI dependencies (inject)
|
|
9
|
+
*
|
|
10
|
+
* Dependencies are resolved lazily - when the controller registers with the container.
|
|
11
|
+
*/
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Plugin Symbol and Type Guard
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Symbol to identify plugins.
|
|
17
|
+
* Brands plugin functions to distinguish them from regular callbacks.
|
|
18
|
+
*/
|
|
19
|
+
export const PLUGIN_SYMBOL = Symbol('justscale:plugin');
|
|
20
|
+
/**
|
|
21
|
+
* Check if a value is a plugin.
|
|
22
|
+
*/
|
|
23
|
+
export function isPlugin(value) {
|
|
24
|
+
return typeof value === 'function' && value[PLUGIN_SYMBOL] === true;
|
|
25
|
+
}
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// Plugin Factory
|
|
28
|
+
// ============================================================================
|
|
29
|
+
/**
|
|
30
|
+
* Create a reusable plugin with optional DI dependencies.
|
|
31
|
+
*
|
|
32
|
+
* Dependencies are resolved LAZILY - the plugin captures the build function,
|
|
33
|
+
* and deps are resolved when controller.resolve() is called (at registration time).
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* // Plugin without dependencies
|
|
38
|
+
* const addCors = () => createPlugin({
|
|
39
|
+
* build: () => builder => builder
|
|
40
|
+
* .use(ctx => ({ _cors: true }))
|
|
41
|
+
* .guard(ctx => {
|
|
42
|
+
* ctx.res.setHeader('Access-Control-Allow-Origin', '*')
|
|
43
|
+
* })
|
|
44
|
+
* })
|
|
45
|
+
*
|
|
46
|
+
* // Plugin with DI dependencies
|
|
47
|
+
* const requireAuth = () => createPlugin({
|
|
48
|
+
* inject: { auth: AuthService },
|
|
49
|
+
* build: ({ auth }) => builder => builder
|
|
50
|
+
* .returns(401, UnauthorizedSchema)
|
|
51
|
+
* .use(async ctx => {
|
|
52
|
+
* const token = ctx.headers.authorization?.replace('Bearer ', '')
|
|
53
|
+
* const session = token ? await auth.validate(token) : null
|
|
54
|
+
* return { _session: session }
|
|
55
|
+
* })
|
|
56
|
+
* .guard(ctx => {
|
|
57
|
+
* if (!ctx._session) {
|
|
58
|
+
* ctx.res.status(401).json({ message: 'Unauthorized' })
|
|
59
|
+
* return ctx.stop()
|
|
60
|
+
* }
|
|
61
|
+
* })
|
|
62
|
+
* .use(ctx => ({ session: ctx._session! }))
|
|
63
|
+
* })
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export function createPlugin(options) {
|
|
67
|
+
// For plugins without deps, resolve immediately
|
|
68
|
+
const hasDeps = options.inject && Object.keys(options.inject).length > 0;
|
|
69
|
+
let resolvedDeps = hasDeps ? null : {};
|
|
70
|
+
const plugin = ((builder) => {
|
|
71
|
+
if (!resolvedDeps) {
|
|
72
|
+
throw new Error('Plugin dependencies not resolved. ' +
|
|
73
|
+
'This usually means the plugin was used before the controller registered with the container. ' +
|
|
74
|
+
'Ensure the controller is properly registered before routes are defined.');
|
|
75
|
+
}
|
|
76
|
+
return options.build(resolvedDeps)(builder);
|
|
77
|
+
});
|
|
78
|
+
plugin[PLUGIN_SYMBOL] = true;
|
|
79
|
+
// Attach requirements for type tracking
|
|
80
|
+
if (options.inject) {
|
|
81
|
+
;
|
|
82
|
+
plugin.requirements = options.inject;
|
|
83
|
+
}
|
|
84
|
+
// Resolution method - called by controller at registration time
|
|
85
|
+
;
|
|
86
|
+
plugin.resolve = (container) => {
|
|
87
|
+
if (options.inject) {
|
|
88
|
+
const deps = {};
|
|
89
|
+
for (const [key, token] of Object.entries(options.inject)) {
|
|
90
|
+
deps[key] = container.resolve(token);
|
|
91
|
+
}
|
|
92
|
+
resolvedDeps = deps;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// No dependencies - provide empty object
|
|
96
|
+
resolvedDeps = {};
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
return plugin;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/builder/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAExD;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,UAAU,IAAK,KAAa,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;AAC/E,CAAC;AA2CD,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,YAAY,CAM1B,OAOD;IAEC,gDAAgD;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACzE,IAAI,YAAY,GAA+B,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,EAA0B,CAAC;IAE5F,MAAM,MAAM,GAAG,CAAC,CAAC,OAAyC,EAAE,EAAE;QAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,oCAAoC;gBACpC,8FAA8F;gBAC9F,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC,CAAoE,CAGpE;IAAC,MAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IAEvC,wCAAwC;IACxC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;QAAC,MAAc,CAAC,YAAY,GAAG,OAAO,CAAC,MAAe,CAAC;IAC1D,CAAC;IAED,gEAAgE;IAChE,CAAC;IAAC,MAAc,CAAC,OAAO,GAAG,CAAC,SAAoB,EAAE,EAAE;QAClD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,GAAwB,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;YACD,YAAY,GAAG,IAA2B,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,yCAAyC;YACzC,YAAY,GAAG,EAAyB,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Validation Plugin
|
|
3
|
+
*
|
|
4
|
+
* Validates query parameters using Zod schema and exposes validated data to context.
|
|
5
|
+
* Protocol-agnostic — works with any protocol that has `rawQuery` and `res` in context.
|
|
6
|
+
*/
|
|
7
|
+
import { type BuilderPlugin } from '../plugin.js';
|
|
8
|
+
import type { z } from 'zod';
|
|
9
|
+
/**
|
|
10
|
+
* Query validation plugin.
|
|
11
|
+
* Validates rawQuery against schema and exposes as { query: T }.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* Get('/users')
|
|
16
|
+
* .apply(query(z.object({ page: z.coerce.number(), limit: z.coerce.number() })))
|
|
17
|
+
* .handle(({ query }) => {
|
|
18
|
+
* // query is typed as { page: number, limit: number }
|
|
19
|
+
* })
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function query<TSchema extends z.ZodType>(schema: TSchema): BuilderPlugin<{
|
|
23
|
+
rawQuery: Record<string, string>;
|
|
24
|
+
res: any;
|
|
25
|
+
}, {
|
|
26
|
+
rawQuery: Record<string, string>;
|
|
27
|
+
res: any;
|
|
28
|
+
} & {
|
|
29
|
+
query: z.infer<TSchema>;
|
|
30
|
+
}, never, never, {}, {}, any>;
|
|
31
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/builder/plugins/query.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,EAC7C,MAAM,EAAE,OAAO,GACd,aAAa,CACd;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,EAC9C;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;CAAE,EAC5E,KAAK,EACL,KAAK,EACL,EAAE,EACF,EAAE,EACF,GAAG,CACJ,CAsBA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Validation Plugin
|
|
3
|
+
*
|
|
4
|
+
* Validates query parameters using Zod schema and exposes validated data to context.
|
|
5
|
+
* Protocol-agnostic — works with any protocol that has `rawQuery` and `res` in context.
|
|
6
|
+
*/
|
|
7
|
+
import { createPlugin } from '../plugin.js';
|
|
8
|
+
import { ValidationErrorSchema } from './validation.js';
|
|
9
|
+
/**
|
|
10
|
+
* Query validation plugin.
|
|
11
|
+
* Validates rawQuery against schema and exposes as { query: T }.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* Get('/users')
|
|
16
|
+
* .apply(query(z.object({ page: z.coerce.number(), limit: z.coerce.number() })))
|
|
17
|
+
* .handle(({ query }) => {
|
|
18
|
+
* // query is typed as { page: number, limit: number }
|
|
19
|
+
* })
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function query(schema) {
|
|
23
|
+
return createPlugin({
|
|
24
|
+
build: () => (builder) => builder
|
|
25
|
+
.returns(400, ValidationErrorSchema)
|
|
26
|
+
.guard((ctx) => {
|
|
27
|
+
const result = schema.safeParse(ctx.rawQuery);
|
|
28
|
+
if (!result.success) {
|
|
29
|
+
ctx.res.status(400).json({
|
|
30
|
+
errors: result.error.flatten().fieldErrors,
|
|
31
|
+
});
|
|
32
|
+
return ctx.stop();
|
|
33
|
+
}
|
|
34
|
+
;
|
|
35
|
+
ctx.__validatedQuery = result.data;
|
|
36
|
+
})
|
|
37
|
+
.use((ctx) => ({
|
|
38
|
+
query: ctx.__validatedQuery,
|
|
39
|
+
})),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/builder/plugins/query.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAsB,YAAY,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,KAAK,CACnB,MAAe;IAaf,OAAO,YAAY,CAAoC;QACrD,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CACvB,OAAO;aACJ,OAAO,CAAC,GAAG,EAAE,qBAAqB,CAAC;aACnC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACvB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW;iBAC3C,CAAC,CAAC;gBACH,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;YACpB,CAAC;YACD,CAAC;YAAC,GAAW,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/C,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE,GAAG,CAAC,gBAAoC;SAChD,CAAC,CAAC;KACR,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared validation schemas for builder plugins.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/**
|
|
6
|
+
* Schema for validation error responses (400).
|
|
7
|
+
* Used by body and query validation plugins.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ValidationErrorSchema: z.ZodObject<{
|
|
10
|
+
errors: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
|
|
11
|
+
}, z.core.$strip>;
|
|
12
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/builder/plugins/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;iBAEhC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared validation schemas for builder plugins.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/**
|
|
6
|
+
* Schema for validation error responses (400).
|
|
7
|
+
* Used by body and query validation plugins.
|
|
8
|
+
*/
|
|
9
|
+
export const ValidationErrorSchema = z.object({
|
|
10
|
+
errors: z.record(z.string(), z.array(z.string())),
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/builder/plugins/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;CAClD,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Topological Sort for Components
|
|
3
|
+
*
|
|
4
|
+
* Implements Kahn's algorithm to sort components based on dependencies.
|
|
5
|
+
* Ensures features and services are registered in the correct order.
|
|
6
|
+
*/
|
|
7
|
+
import type { Component } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Error thrown when a dependency cycle is detected.
|
|
10
|
+
*/
|
|
11
|
+
export declare class CycleError extends Error {
|
|
12
|
+
readonly cycle: string[];
|
|
13
|
+
constructor(cycle: string[]);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Sort components topologically based on their dependencies.
|
|
17
|
+
*
|
|
18
|
+
* Uses Kahn's algorithm:
|
|
19
|
+
* 1. Build a dependency graph
|
|
20
|
+
* 2. Start with components that have no dependencies
|
|
21
|
+
* 3. Process each component, removing it from dependencies of others
|
|
22
|
+
* 4. Repeat until all components are processed or a cycle is detected
|
|
23
|
+
*
|
|
24
|
+
* @throws CycleError if a cycle is detected
|
|
25
|
+
*/
|
|
26
|
+
export declare function topologicalSort(components: Component[]): Component[];
|
|
27
|
+
//# sourceMappingURL=sort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../src/builder/sort.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,YAAY,CAAC;AAUtD;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;aACP,KAAK,EAAE,MAAM,EAAE;gBAAf,KAAK,EAAE,MAAM,EAAE;CAI5C;AAmED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAqFpE"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Topological Sort for Components
|
|
3
|
+
*
|
|
4
|
+
* Implements Kahn's algorithm to sort components based on dependencies.
|
|
5
|
+
* Ensures features and services are registered in the correct order.
|
|
6
|
+
*/
|
|
7
|
+
import { isServiceDef, isRepositoryBinding, isFeatureToken } from './types.js';
|
|
8
|
+
import { getTokenDescription } from './validation.js';
|
|
9
|
+
import { getFeatureMetadata } from './feature-builder.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Types
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Error thrown when a dependency cycle is detected.
|
|
15
|
+
*/
|
|
16
|
+
export class CycleError extends Error {
|
|
17
|
+
cycle;
|
|
18
|
+
constructor(cycle) {
|
|
19
|
+
super(formatCycleError(cycle));
|
|
20
|
+
this.cycle = cycle;
|
|
21
|
+
this.name = 'CycleError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Format a cycle error message.
|
|
26
|
+
*/
|
|
27
|
+
function formatCycleError(cycle) {
|
|
28
|
+
return `Dependency cycle detected:\n ${cycle.join(' → ')}\n\nHint: Check if any features or services depend on each other in a circular way.`;
|
|
29
|
+
}
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Dependency Extraction
|
|
32
|
+
// ============================================================================
|
|
33
|
+
/**
|
|
34
|
+
* Get a unique ID for a component.
|
|
35
|
+
*/
|
|
36
|
+
function getComponentId(component) {
|
|
37
|
+
if (isFeatureToken(component)) {
|
|
38
|
+
const meta = getFeatureMetadata(component);
|
|
39
|
+
return `feature:${meta?.name ?? 'anonymous'}`;
|
|
40
|
+
}
|
|
41
|
+
if (isServiceDef(component)) {
|
|
42
|
+
return `service:${getTokenDescription(component)}`;
|
|
43
|
+
}
|
|
44
|
+
if (isRepositoryBinding(component)) {
|
|
45
|
+
return `binding:${getTokenDescription(component.token)}`;
|
|
46
|
+
}
|
|
47
|
+
return `unknown:${String(component)}`;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Extract what tokens a component provides.
|
|
51
|
+
*/
|
|
52
|
+
function extractProvides(component) {
|
|
53
|
+
if (isRepositoryBinding(component)) {
|
|
54
|
+
return [component.token];
|
|
55
|
+
}
|
|
56
|
+
if (isServiceDef(component)) {
|
|
57
|
+
// ServiceDef provides itself
|
|
58
|
+
return [component];
|
|
59
|
+
}
|
|
60
|
+
// Features provide what their builder adds, but we can't know that statically
|
|
61
|
+
// For sorting purposes, we track features by their identity
|
|
62
|
+
if (isFeatureToken(component)) {
|
|
63
|
+
return [component];
|
|
64
|
+
}
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Extract what tokens a component requires.
|
|
69
|
+
*/
|
|
70
|
+
function extractRequires(component) {
|
|
71
|
+
if (isFeatureToken(component)) {
|
|
72
|
+
const meta = getFeatureMetadata(component);
|
|
73
|
+
return meta?.requires ?? [];
|
|
74
|
+
}
|
|
75
|
+
if (isServiceDef(component)) {
|
|
76
|
+
return Object.values(component.deps ?? {});
|
|
77
|
+
}
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
// ============================================================================
|
|
81
|
+
// Topological Sort
|
|
82
|
+
// ============================================================================
|
|
83
|
+
/**
|
|
84
|
+
* Sort components topologically based on their dependencies.
|
|
85
|
+
*
|
|
86
|
+
* Uses Kahn's algorithm:
|
|
87
|
+
* 1. Build a dependency graph
|
|
88
|
+
* 2. Start with components that have no dependencies
|
|
89
|
+
* 3. Process each component, removing it from dependencies of others
|
|
90
|
+
* 4. Repeat until all components are processed or a cycle is detected
|
|
91
|
+
*
|
|
92
|
+
* @throws CycleError if a cycle is detected
|
|
93
|
+
*/
|
|
94
|
+
export function topologicalSort(components) {
|
|
95
|
+
if (components.length <= 1) {
|
|
96
|
+
return [...components];
|
|
97
|
+
}
|
|
98
|
+
// Build the graph
|
|
99
|
+
const nodes = new Map();
|
|
100
|
+
// Build the provider map (token -> component)
|
|
101
|
+
const providers = new Map();
|
|
102
|
+
// Initialize nodes
|
|
103
|
+
for (const component of components) {
|
|
104
|
+
const provides = extractProvides(component);
|
|
105
|
+
const requires = extractRequires(component);
|
|
106
|
+
nodes.set(component, {
|
|
107
|
+
id: getComponentId(component),
|
|
108
|
+
provides,
|
|
109
|
+
requires,
|
|
110
|
+
inDegree: 0,
|
|
111
|
+
edges: new Set(),
|
|
112
|
+
});
|
|
113
|
+
// Register what this component provides
|
|
114
|
+
for (const token of provides) {
|
|
115
|
+
providers.set(token, component);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Build edges based on dependencies
|
|
119
|
+
for (const [component, node] of nodes) {
|
|
120
|
+
for (const required of node.requires) {
|
|
121
|
+
const provider = providers.get(required);
|
|
122
|
+
if (provider && provider !== component) {
|
|
123
|
+
// provider must come before component
|
|
124
|
+
const providerNode = nodes.get(provider);
|
|
125
|
+
if (!providerNode.edges.has(component)) {
|
|
126
|
+
providerNode.edges.add(component);
|
|
127
|
+
node.inDegree++;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Kahn's algorithm
|
|
133
|
+
const result = [];
|
|
134
|
+
const queue = [];
|
|
135
|
+
// Start with nodes that have no incoming edges
|
|
136
|
+
for (const [component, node] of nodes) {
|
|
137
|
+
if (node.inDegree === 0) {
|
|
138
|
+
queue.push(component);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
while (queue.length > 0) {
|
|
142
|
+
const current = queue.shift();
|
|
143
|
+
result.push(current);
|
|
144
|
+
const currentNode = nodes.get(current);
|
|
145
|
+
for (const dependent of currentNode.edges) {
|
|
146
|
+
const dependentNode = nodes.get(dependent);
|
|
147
|
+
dependentNode.inDegree--;
|
|
148
|
+
if (dependentNode.inDegree === 0) {
|
|
149
|
+
queue.push(dependent);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Check for cycle
|
|
154
|
+
if (result.length !== components.length) {
|
|
155
|
+
// Find the cycle for error reporting
|
|
156
|
+
const remaining = components.filter(c => !result.includes(c));
|
|
157
|
+
const cycle = findCycle(remaining, nodes);
|
|
158
|
+
throw new CycleError(cycle);
|
|
159
|
+
}
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Find a cycle in the remaining nodes (for error reporting).
|
|
164
|
+
*/
|
|
165
|
+
function findCycle(remaining, nodes) {
|
|
166
|
+
// DFS to find a cycle - use a Set for O(1) membership checks
|
|
167
|
+
const visited = new Set();
|
|
168
|
+
const remainingSet = new Set(remaining);
|
|
169
|
+
const path = [];
|
|
170
|
+
const onPath = new Set();
|
|
171
|
+
function dfs(component) {
|
|
172
|
+
if (onPath.has(component)) {
|
|
173
|
+
// Found cycle, extract it
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
if (visited.has(component)) {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
visited.add(component);
|
|
180
|
+
path.push(component);
|
|
181
|
+
onPath.add(component);
|
|
182
|
+
const node = nodes.get(component);
|
|
183
|
+
if (node) {
|
|
184
|
+
for (const neighbor of node.edges) {
|
|
185
|
+
if (remainingSet.has(neighbor) && dfs(neighbor)) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
path.pop();
|
|
191
|
+
onPath.delete(component);
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
for (const component of remaining) {
|
|
195
|
+
if (dfs(component)) {
|
|
196
|
+
// Return the cycle as IDs
|
|
197
|
+
const cycleStart = path.findIndex(c => path.lastIndexOf(c) !== path.indexOf(c));
|
|
198
|
+
if (cycleStart === -1 && path.length > 0) {
|
|
199
|
+
// The cycle is the whole path
|
|
200
|
+
return [...path, path[0]].map(c => nodes.get(c).id);
|
|
201
|
+
}
|
|
202
|
+
const cycle = path.slice(cycleStart);
|
|
203
|
+
cycle.push(cycle[0]); // Close the cycle
|
|
204
|
+
return cycle.map(c => nodes.get(c).id);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// Fallback: just list remaining nodes
|
|
208
|
+
return remaining.map(c => nodes.get(c).id);
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=sort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort.js","sourceRoot":"","sources":["../../src/builder/sort.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACP;IAA5B,YAA4B,KAAe;QACzC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QADL,UAAK,GAAL,KAAK,CAAU;QAEzC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAe;IACvC,OAAO,iCAAiC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,qFAAqF,CAAC;AACjJ,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,cAAc,CAAC,SAAoB;IAC1C,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,WAAW,IAAI,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC;IAChD,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,WAAW,mBAAmB,CAAC,SAAgB,CAAC,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,WAAW,mBAAmB,CAAC,SAAS,CAAC,KAAiB,CAAC,EAAE,CAAC;IACvE,CAAC;IACD,OAAO,WAAW,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,SAAoB;IAC3C,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,SAAS,CAAC,KAAiB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,6BAA6B;QAC7B,OAAO,CAAC,SAA4B,CAAC,CAAC;IACxC,CAAC;IACD,8EAA8E;IAC9E,4DAA4D;IAC5D,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,SAA4B,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,SAAoB;IAC3C,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,MAAM,CAAE,SAAkC,CAAC,IAAI,IAAI,EAAE,CAAe,CAAC;IACrF,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,UAAuB;IACrD,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,kBAAkB;IAClB,MAAM,KAAK,GAAG,IAAI,GAAG,EAMjB,CAAC;IAEL,8CAA8C;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEjD,mBAAmB;IACnB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAE5C,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE;YACnB,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC;YAC7B,QAAQ;YACR,QAAQ;YACR,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,IAAI,GAAG,EAAE;SACjB,CAAC,CAAC;QAEH,wCAAwC;QACxC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACtC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACvC,sCAAsC;gBACtC,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;gBAC1C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACvC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,+CAA+C;IAC/C,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAErB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QACxC,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC5C,aAAa,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,aAAa,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QACxC,qCAAqC;QACrC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAChB,SAAsB,EACtB,KAA4D;IAE5D,6DAA6D;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAa,CAAC;IACrC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAY,SAAS,CAAC,CAAC;IACnD,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAa,CAAC;IAEpC,SAAS,GAAG,CAAC,SAAoB;QAC/B,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,0BAA0B;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrB,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEtB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClC,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;QAClC,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnB,0BAA0B;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzC,8BAA8B;gBAC9B,OAAO,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB;YACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stop Mechanism for Middleware Guards
|
|
3
|
+
*
|
|
4
|
+
* Provides a unique stop signal that guards can return to halt middleware execution.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Unique stop symbol - all consumers import this directly from core.
|
|
8
|
+
*/
|
|
9
|
+
export declare const STOP_SYMBOL: unique symbol;
|
|
10
|
+
export type Stop = typeof STOP_SYMBOL;
|
|
11
|
+
/**
|
|
12
|
+
* Type guard to check if a value is the stop signal.
|
|
13
|
+
*
|
|
14
|
+
* @param value - Value to check
|
|
15
|
+
* @returns True if value is the stop signal
|
|
16
|
+
*/
|
|
17
|
+
export declare function isStop(value: unknown): value is Stop;
|
|
18
|
+
/**
|
|
19
|
+
* Create stop function - only injected for guards.
|
|
20
|
+
*
|
|
21
|
+
* @returns Function that returns the stop signal when called
|
|
22
|
+
*/
|
|
23
|
+
export declare function createStopFn(): () => Stop;
|
|
24
|
+
//# sourceMappingURL=stop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/builder/stop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,OAAO,MAAkC,CAAC;AACpE,MAAM,MAAM,IAAI,GAAG,OAAO,WAAW,CAAC;AAEtC;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,IAAI,CAEzC"}
|