@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,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builder Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for creating bindings in the DI system.
|
|
5
|
+
*/
|
|
6
|
+
import { REPO_BINDING, SERVICE_BINDING, INSTANCE_BINDING } from './types.js';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Token Creation Helpers
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Bind a repository token to an implementation.
|
|
12
|
+
*
|
|
13
|
+
* This creates a binding for the DI system to wire up repositories.
|
|
14
|
+
*/
|
|
15
|
+
export function bindRepository(token, implementation) {
|
|
16
|
+
return {
|
|
17
|
+
[REPO_BINDING]: true,
|
|
18
|
+
token,
|
|
19
|
+
implementation,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Bind an abstract service token to a concrete implementation.
|
|
24
|
+
*
|
|
25
|
+
* This creates a binding for the DI system to wire up abstract services.
|
|
26
|
+
* Use this when you have an abstract class and want to specify which
|
|
27
|
+
* concrete implementation should be used.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import JustScale, { bindService } from '@justscale/core'
|
|
32
|
+
*
|
|
33
|
+
* JustScale()
|
|
34
|
+
* .add(MemoryChannelBackend)
|
|
35
|
+
* .add(bindService(AbstractChannelBackend, MemoryChannelBackend))
|
|
36
|
+
* .build()
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export function bindService(abstractToken, implementation) {
|
|
40
|
+
return {
|
|
41
|
+
[SERVICE_BINDING]: true,
|
|
42
|
+
token: abstractToken,
|
|
43
|
+
implementation,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Bind an abstract service token to a pre-created instance.
|
|
48
|
+
*
|
|
49
|
+
* This creates a binding for the DI system to wire up abstract services
|
|
50
|
+
* to specific instances. Use this when you have an instance you want to
|
|
51
|
+
* share across the app.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* import JustScale, { bindInstance } from '@justscale/core'
|
|
56
|
+
*
|
|
57
|
+
* const taskRepo = new InMemoryScheduledTaskRepository()
|
|
58
|
+
*
|
|
59
|
+
* JustScale()
|
|
60
|
+
* .add(bindInstance(ScheduledTaskRepository, taskRepo))
|
|
61
|
+
* .add(TaskController)
|
|
62
|
+
* .build()
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export function bindInstance(abstractToken, instance) {
|
|
66
|
+
return {
|
|
67
|
+
[INSTANCE_BINDING]: true,
|
|
68
|
+
token: abstractToken,
|
|
69
|
+
instance,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/builder/builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAU7E,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAyB,EACzB,cAAuB;IAEvB,OAAO;QACL,CAAC,YAAY,CAAC,EAAE,IAAI;QACpB,KAAK;QACL,cAAc;KACS,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CACzB,aAAsC,EACtC,cAAmC;IAEnC,OAAO;QACL,CAAC,eAAe,CAAC,EAAE,IAAI;QACvB,KAAK,EAAE,aAAa;QACpB,cAAc;KACc,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,YAAY,CAC1B,aAA8B,EAC9B,QAAW;IAEX,OAAO;QACL,CAAC,gBAAgB,CAAC,EAAE,IAAI;QACxB,KAAK,EAAE,aAAa;QACpB,QAAQ;KACa,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Builder Factory
|
|
3
|
+
*
|
|
4
|
+
* Provides the createBaseBuilder and createBuilderState functions
|
|
5
|
+
* for constructing route builders with middleware/guard execution steps.
|
|
6
|
+
*/
|
|
7
|
+
import type { z } from 'zod';
|
|
8
|
+
import type { PermissionDefLike, RouteBuilder, UnresolvedStep } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Internal state for building a route.
|
|
11
|
+
*/
|
|
12
|
+
export interface BuilderState {
|
|
13
|
+
/** Sequential steps - use and guard interleaved (may contain unresolved GuardDefs) */
|
|
14
|
+
steps: UnresolvedStep[];
|
|
15
|
+
/** Response schemas mapped by status code */
|
|
16
|
+
responseSchemas: Map<number, z.ZodType | null>;
|
|
17
|
+
/** Model types for path param → Reference transformation */
|
|
18
|
+
types?: Record<string, abstract new (...args: any[]) => any>;
|
|
19
|
+
/** Permission-scoped returns - populated via `.returns(status, schema, permission)` */
|
|
20
|
+
permissionReturns?: Array<{
|
|
21
|
+
status: number;
|
|
22
|
+
schema: z.ZodType | null;
|
|
23
|
+
permission: PermissionDefLike;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create initial builder state.
|
|
28
|
+
*/
|
|
29
|
+
export declare function createBuilderState(): BuilderState;
|
|
30
|
+
/**
|
|
31
|
+
* Create a base route builder.
|
|
32
|
+
* This provides the core use/guard/apply/returns/handle methods.
|
|
33
|
+
* Protocol-specific builders extend this.
|
|
34
|
+
*/
|
|
35
|
+
export declare function createBaseBuilder<TPath extends string, THandlerReturn = void | Promise<void>>(state: BuilderState, path: TPath): RouteBuilder<{}, unknown, never, TPath, unknown, THandlerReturn>;
|
|
36
|
+
//# sourceMappingURL=create-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-builder.d.ts","sourceRoot":"","sources":["../../src/builder/create-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sFAAsF;IACtF,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,6CAA6C;IAC7C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IAC9C,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAA;IAC5D,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,KAAK,CAAC;QACxB,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAA;QACxB,UAAU,EAAE,iBAAiB,CAAA;KAC9B,CAAC,CAAA;CACH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAKjD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,SAAS,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC3F,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,KAAK,GACV,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAmDlE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Builder Factory
|
|
3
|
+
*
|
|
4
|
+
* Provides the createBaseBuilder and createBuilderState functions
|
|
5
|
+
* for constructing route builders with middleware/guard execution steps.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Create initial builder state.
|
|
9
|
+
*/
|
|
10
|
+
export function createBuilderState() {
|
|
11
|
+
return {
|
|
12
|
+
steps: [],
|
|
13
|
+
responseSchemas: new Map()
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a base route builder.
|
|
18
|
+
* This provides the core use/guard/apply/returns/handle methods.
|
|
19
|
+
* Protocol-specific builders extend this.
|
|
20
|
+
*/
|
|
21
|
+
export function createBaseBuilder(state, path) {
|
|
22
|
+
const builder = {
|
|
23
|
+
use(middleware) {
|
|
24
|
+
state.steps.push({ type: 'use', fn: middleware });
|
|
25
|
+
return builder;
|
|
26
|
+
},
|
|
27
|
+
guard(check) {
|
|
28
|
+
state.steps.push({ type: 'guard', fn: check });
|
|
29
|
+
return builder;
|
|
30
|
+
},
|
|
31
|
+
apply(plugin) {
|
|
32
|
+
// Plugin transforms builder, adding its own steps
|
|
33
|
+
return plugin(builder);
|
|
34
|
+
},
|
|
35
|
+
returns(status, schema, permission) {
|
|
36
|
+
state.responseSchemas.set(status, schema ?? null);
|
|
37
|
+
if (permission) {
|
|
38
|
+
state.permissionReturns ??= [];
|
|
39
|
+
state.permissionReturns.push({
|
|
40
|
+
status,
|
|
41
|
+
schema: schema ?? null,
|
|
42
|
+
permission,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return builder;
|
|
46
|
+
},
|
|
47
|
+
types(types) {
|
|
48
|
+
state.types = types;
|
|
49
|
+
return builder;
|
|
50
|
+
},
|
|
51
|
+
handle(handler) {
|
|
52
|
+
return {
|
|
53
|
+
path,
|
|
54
|
+
steps: [...state.steps],
|
|
55
|
+
responseSchemas: new Map(state.responseSchemas),
|
|
56
|
+
handler,
|
|
57
|
+
...(state.types ? { types: state.types } : {}),
|
|
58
|
+
...(state.permissionReturns && state.permissionReturns.length > 0
|
|
59
|
+
? { permissionReturns: [...state.permissionReturns] }
|
|
60
|
+
: {}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
return builder;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=create-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-builder.js","sourceRoot":"","sources":["../../src/builder/create-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuBH;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,KAAK,EAAE,EAAE;QACT,eAAe,EAAE,IAAI,GAAG,EAAE;KAC3B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAmB,EACnB,IAAW;IAGX,MAAM,OAAO,GAA+C;QAC1D,GAAG,CAAC,UAAU;YACZ,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;YAClD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,KAAK;YACT,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/C,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,MAAM;YACV,kDAAkD;YAClD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,CAAC,MAAc,EAAE,MAAkB,EAAE,UAA8B;YACxE,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;YAClD,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,iBAAiB,KAAK,EAAE,CAAC;gBAC/B,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC;oBAC3B,MAAM;oBACN,MAAM,EAAE,MAAM,IAAI,IAAI;oBACtB,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,KAAK;YACT,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,CAAC,OAAO;YACZ,OAAO;gBACL,IAAI;gBACJ,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;gBACvB,eAAe,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;gBAC/C,OAAO;gBACP,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9C,GAAG,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;oBAC/D,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,EAAE;oBACrD,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Execution Runtime
|
|
3
|
+
*
|
|
4
|
+
* Executes a route with sequential middleware and guard execution.
|
|
5
|
+
* Steps run in declaration order, with guards receiving stop() and
|
|
6
|
+
* middleware extending context via Object.assign.
|
|
7
|
+
*/
|
|
8
|
+
/** Minimal interface for routes that executeRoute can process. */
|
|
9
|
+
interface ExecutableRoute {
|
|
10
|
+
steps: Array<{
|
|
11
|
+
type: 'use' | 'guard';
|
|
12
|
+
fn: unknown;
|
|
13
|
+
}>;
|
|
14
|
+
handler: (ctx: any) => any;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Run only the middleware/guard steps for a route, without calling the handler.
|
|
18
|
+
*
|
|
19
|
+
* Used by protocols (SSE, etc.) that need to enforce guards but then drive the
|
|
20
|
+
* handler themselves (e.g., an async generator that must stream back to a response).
|
|
21
|
+
*
|
|
22
|
+
* @param route - The finalized route definition (steps must be resolved)
|
|
23
|
+
* @param ctx - Mutable context shared between steps (extended in-place by use steps)
|
|
24
|
+
* @returns `true` if all steps passed, `false` if a guard denied the request.
|
|
25
|
+
*/
|
|
26
|
+
export declare function executeSteps(route: Pick<ExecutableRoute, 'steps'>, ctx: Record<string, unknown>): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Execute a route with the given context.
|
|
29
|
+
* Steps run sequentially in declaration order.
|
|
30
|
+
*
|
|
31
|
+
* @param route - The finalized route definition (steps must be resolved, not GuardDefs)
|
|
32
|
+
* @param ctx - Initial context (protocol provides res, req, params, etc.)
|
|
33
|
+
* @returns `true` if all steps passed and the handler ran, `false` if a guard stopped execution.
|
|
34
|
+
*/
|
|
35
|
+
export declare function executeRoute(route: ExecutableRoute, ctx: Record<string, unknown>): Promise<boolean>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=execute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/builder/execute.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,kEAAkE;AAClE,UAAU,eAAe;IACvB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;QAAC,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,EACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,OAAO,CAAC,CA6BlB;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,OAAO,CAAC,CAOlB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Execution Runtime
|
|
3
|
+
*
|
|
4
|
+
* Executes a route with sequential middleware and guard execution.
|
|
5
|
+
* Steps run in declaration order, with guards receiving stop() and
|
|
6
|
+
* middleware extending context via Object.assign.
|
|
7
|
+
*/
|
|
8
|
+
import { isStop, createStopFn } from './stop.js';
|
|
9
|
+
/**
|
|
10
|
+
* Run only the middleware/guard steps for a route, without calling the handler.
|
|
11
|
+
*
|
|
12
|
+
* Used by protocols (SSE, etc.) that need to enforce guards but then drive the
|
|
13
|
+
* handler themselves (e.g., an async generator that must stream back to a response).
|
|
14
|
+
*
|
|
15
|
+
* @param route - The finalized route definition (steps must be resolved)
|
|
16
|
+
* @param ctx - Mutable context shared between steps (extended in-place by use steps)
|
|
17
|
+
* @returns `true` if all steps passed, `false` if a guard denied the request.
|
|
18
|
+
*/
|
|
19
|
+
export async function executeSteps(route, ctx) {
|
|
20
|
+
// Expose the route on the context so middleware/guards can introspect it.
|
|
21
|
+
ctx.__route = route;
|
|
22
|
+
const steps = route.steps ?? [];
|
|
23
|
+
for (const step of steps) {
|
|
24
|
+
const fn = step.fn;
|
|
25
|
+
if (typeof fn !== 'function') {
|
|
26
|
+
throw new Error('Route step has an unresolved dependency (GuardDef) — ' +
|
|
27
|
+
'route steps must be resolved before execution. ' +
|
|
28
|
+
'Ensure the route is registered via createController.');
|
|
29
|
+
}
|
|
30
|
+
if (step.type === 'use') {
|
|
31
|
+
const additions = await fn(ctx);
|
|
32
|
+
Object.assign(ctx, additions);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const stop = createStopFn();
|
|
36
|
+
ctx.stop = stop;
|
|
37
|
+
const result = await fn(ctx);
|
|
38
|
+
delete ctx.stop;
|
|
39
|
+
if (isStop(result) || result === false) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Execute a route with the given context.
|
|
48
|
+
* Steps run sequentially in declaration order.
|
|
49
|
+
*
|
|
50
|
+
* @param route - The finalized route definition (steps must be resolved, not GuardDefs)
|
|
51
|
+
* @param ctx - Initial context (protocol provides res, req, params, etc.)
|
|
52
|
+
* @returns `true` if all steps passed and the handler ran, `false` if a guard stopped execution.
|
|
53
|
+
*/
|
|
54
|
+
export async function executeRoute(route, ctx) {
|
|
55
|
+
const passed = await executeSteps(route, ctx);
|
|
56
|
+
if (!passed)
|
|
57
|
+
return false;
|
|
58
|
+
// All steps passed - run handler
|
|
59
|
+
await route.handler(ctx);
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=execute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/builder/execute.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAQjD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAqC,EACrC,GAA4B;IAE5B,0EAA0E;IACzE,GAAW,CAAC,OAAO,GAAG,KAAK,CAAC;IAE7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,uDAAuD;gBACvD,iDAAiD;gBACjD,sDAAsD,CACvD,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,MAAO,EAAwB,CAAC,GAAG,CAAC,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;YAC3B,GAAW,CAAC,IAAI,GAAG,IAAI,CAAC;YACzB,MAAM,MAAM,GAAG,MAAO,EAAwB,CAAC,GAAU,CAAC,CAAC;YAC3D,OAAQ,GAAW,CAAC,IAAI,CAAC;YACzB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACvC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAsB,EACtB,GAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,iCAAiC;IACjC,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Builder V2
|
|
3
|
+
*
|
|
4
|
+
* Fluent builder for creating features with type-safe requirement tracking.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const AuthFeature = createFeatureBuilder()
|
|
9
|
+
* .name('auth')
|
|
10
|
+
* .requires(ModelRepository.of(User))
|
|
11
|
+
* .requires(ModelRepository.of(Session))
|
|
12
|
+
* .onStart(async ({ resolve }) => {
|
|
13
|
+
* const auth = resolve(AuthService)
|
|
14
|
+
* await auth.initialize()
|
|
15
|
+
* })
|
|
16
|
+
* .provides((b) => b
|
|
17
|
+
* .add(AuthService)
|
|
18
|
+
* .add(AuthController)
|
|
19
|
+
* )
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import type { Builder, AnyToken, FeatureToken, FeatureMetadata, StartHook, StopHook } from './types.js';
|
|
23
|
+
/**
|
|
24
|
+
* Fluent builder for creating features.
|
|
25
|
+
*
|
|
26
|
+
* Each `.requires()` call accumulates the requirement in the phantom type,
|
|
27
|
+
* enabling TypeScript to track what the feature needs.
|
|
28
|
+
*
|
|
29
|
+
* When requiring another Feature, that feature's provides become available
|
|
30
|
+
* to use in your `.provides()` callback.
|
|
31
|
+
*
|
|
32
|
+
* @typeParam TRequires - Tuple of required tokens (accumulated)
|
|
33
|
+
* @typeParam TAvailable - Tuple of tokens available from required features
|
|
34
|
+
*/
|
|
35
|
+
export interface FeatureBuilder<TRequires extends AnyToken[] = [], TAvailable extends AnyToken[] = []> {
|
|
36
|
+
/**
|
|
37
|
+
* Declare a dependency on a token or feature.
|
|
38
|
+
*
|
|
39
|
+
* The token must be provided before this feature is added to a builder.
|
|
40
|
+
* When requiring a Feature, that feature's provides become available.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* createFeatureBuilder()
|
|
45
|
+
* .requires(ModelRepository.of(User))
|
|
46
|
+
* .requires(PgClient)
|
|
47
|
+
* .requires(DatabaseFeature) // DatabaseFeature's provides are now available
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
requires<T extends AnyToken>(token: T): T extends FeatureToken<any, infer TFeatureProv extends AnyToken[]> ? FeatureBuilder<[...TRequires, T], [...TAvailable, ...TFeatureProv]> : FeatureBuilder<[...TRequires, T], TAvailable>;
|
|
51
|
+
/**
|
|
52
|
+
* Set a human-readable name for this feature.
|
|
53
|
+
*
|
|
54
|
+
* Used in error messages and debugging.
|
|
55
|
+
*/
|
|
56
|
+
name(name: string): FeatureBuilder<TRequires, TAvailable>;
|
|
57
|
+
/**
|
|
58
|
+
* Add a lifecycle hook called when the cluster starts.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* .onStart(async ({ resolve }) => {
|
|
63
|
+
* const db = resolve(PgClient)
|
|
64
|
+
* await db.connect()
|
|
65
|
+
* })
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
onStart(hook: StartHook): FeatureBuilder<TRequires, TAvailable>;
|
|
69
|
+
/**
|
|
70
|
+
* Add a lifecycle hook called when the cluster stops.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* .onStop(async () => {
|
|
75
|
+
* await cleanup()
|
|
76
|
+
* })
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
onStop(hook: StopHook): FeatureBuilder<TRequires, TAvailable>;
|
|
80
|
+
/**
|
|
81
|
+
* Define what this feature provides.
|
|
82
|
+
*
|
|
83
|
+
* The callback receives a builder that has all required tokens available
|
|
84
|
+
* (including provides from required features), and returns a builder with
|
|
85
|
+
* the provided components added.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* .provides((b) => b
|
|
90
|
+
* .add(AuthService)
|
|
91
|
+
* .add(AuthController)
|
|
92
|
+
* )
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
provides<TProvides extends AnyToken[]>(fn: (builder: Builder<[...TRequires, ...TAvailable]>) => Builder<[...TRequires, ...TAvailable, ...TProvides]>): FeatureToken<TRequires, TProvides>;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Create a new feature builder.
|
|
99
|
+
*
|
|
100
|
+
* Features are reusable bundles of services and controllers that can be
|
|
101
|
+
* added to a cluster. They declare their requirements via `.requires()`
|
|
102
|
+
* and what they provide via `.provides()`.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* // Simple feature with no requirements
|
|
107
|
+
* const LoggingFeature = createFeatureBuilder()
|
|
108
|
+
* .provides((b) => b.add(LoggerService))
|
|
109
|
+
*
|
|
110
|
+
* // Feature with requirements
|
|
111
|
+
* const AuthFeature = createFeatureBuilder()
|
|
112
|
+
* .name('auth')
|
|
113
|
+
* .requires(ModelRepository.of(User))
|
|
114
|
+
* .requires(ModelRepository.of(Session))
|
|
115
|
+
* .provides((b) => b
|
|
116
|
+
* .add(AuthService)
|
|
117
|
+
* .add(SessionService)
|
|
118
|
+
* .add(AuthController)
|
|
119
|
+
* )
|
|
120
|
+
*
|
|
121
|
+
* // Feature with lifecycle hooks
|
|
122
|
+
* const DatabaseFeature = createFeatureBuilder()
|
|
123
|
+
* .name('database')
|
|
124
|
+
* .onStart(async ({ resolve }) => {
|
|
125
|
+
* const client = resolve(PgClient)
|
|
126
|
+
* await client.connect()
|
|
127
|
+
* })
|
|
128
|
+
* .onStop(async () => {
|
|
129
|
+
* // cleanup
|
|
130
|
+
* })
|
|
131
|
+
* .provides((b) => b.add(PgClient))
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export declare function createFeatureBuilder(): FeatureBuilder<[], []>;
|
|
135
|
+
/**
|
|
136
|
+
* Get the metadata from a feature token.
|
|
137
|
+
*/
|
|
138
|
+
export declare function getFeatureMetadata(feature: FeatureToken<any, any>): FeatureMetadata;
|
|
139
|
+
/**
|
|
140
|
+
* Get the requirements from a feature token.
|
|
141
|
+
*/
|
|
142
|
+
export declare function getFeatureRequirements(feature: FeatureToken<any, any>): AnyToken[];
|
|
143
|
+
/**
|
|
144
|
+
* Get the name from a feature token.
|
|
145
|
+
*/
|
|
146
|
+
export declare function getFeatureName(feature: FeatureToken<any, any>): string | undefined;
|
|
147
|
+
//# sourceMappingURL=feature-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-builder.d.ts","sourceRoot":"","sources":["../../src/builder/feature-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,SAAS,EACT,QAAQ,EACT,MAAM,YAAY,CAAC;AAOpB;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc,CAC7B,SAAS,SAAS,QAAQ,EAAE,GAAG,EAAE,EACjC,UAAU,SAAS,QAAQ,EAAE,GAAG,EAAE;IAElC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,CAAC,SAAS,QAAQ,EACzB,KAAK,EAAE,CAAC,GACP,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE,MAAM,YAAY,SAAS,QAAQ,EAAE,CAAC,GACjE,cAAc,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC,GACnE,cAAc,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;IAEjD;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAEzD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAE/D;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAE7D;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,SAAS,SAAS,QAAQ,EAAE,EACnC,EAAE,EAAE,CACF,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,KAC5C,OAAO,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC,CAAC,GACxD,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;CACtC;AAyFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAE7D;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAC9B,eAAe,CAEjB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAC9B,QAAQ,EAAE,CAEZ;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,GAC9B,MAAM,GAAG,SAAS,CAEpB"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature Builder V2
|
|
3
|
+
*
|
|
4
|
+
* Fluent builder for creating features with type-safe requirement tracking.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const AuthFeature = createFeatureBuilder()
|
|
9
|
+
* .name('auth')
|
|
10
|
+
* .requires(ModelRepository.of(User))
|
|
11
|
+
* .requires(ModelRepository.of(Session))
|
|
12
|
+
* .onStart(async ({ resolve }) => {
|
|
13
|
+
* const auth = resolve(AuthService)
|
|
14
|
+
* await auth.initialize()
|
|
15
|
+
* })
|
|
16
|
+
* .provides((b) => b
|
|
17
|
+
* .add(AuthService)
|
|
18
|
+
* .add(AuthController)
|
|
19
|
+
* )
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import { FEATURE_TOKEN, FEATURE_META } from './types.js';
|
|
23
|
+
/**
|
|
24
|
+
* Feature builder implementation.
|
|
25
|
+
*/
|
|
26
|
+
class FeatureBuilderImpl {
|
|
27
|
+
state;
|
|
28
|
+
constructor(state = { requires: [] }) {
|
|
29
|
+
this.state = state;
|
|
30
|
+
}
|
|
31
|
+
requires(token) {
|
|
32
|
+
return new FeatureBuilderImpl({
|
|
33
|
+
...this.state,
|
|
34
|
+
requires: [...this.state.requires, token],
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
name(name) {
|
|
38
|
+
return new FeatureBuilderImpl({
|
|
39
|
+
...this.state,
|
|
40
|
+
name,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
onStart(hook) {
|
|
44
|
+
return new FeatureBuilderImpl({
|
|
45
|
+
...this.state,
|
|
46
|
+
onStart: hook,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
onStop(hook) {
|
|
50
|
+
return new FeatureBuilderImpl({
|
|
51
|
+
...this.state,
|
|
52
|
+
onStop: hook,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
provides(fn) {
|
|
56
|
+
const metadata = {
|
|
57
|
+
name: this.state.name,
|
|
58
|
+
requires: this.state.requires,
|
|
59
|
+
onStart: this.state.onStart,
|
|
60
|
+
onStop: this.state.onStop,
|
|
61
|
+
};
|
|
62
|
+
// Create the feature function
|
|
63
|
+
const feature = ((builder) => {
|
|
64
|
+
return fn(builder);
|
|
65
|
+
});
|
|
66
|
+
// Attach metadata
|
|
67
|
+
Object.defineProperties(feature, {
|
|
68
|
+
[FEATURE_TOKEN]: { value: true, enumerable: false },
|
|
69
|
+
[FEATURE_META]: { value: metadata, enumerable: false },
|
|
70
|
+
});
|
|
71
|
+
return feature;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// Factory Function
|
|
76
|
+
// ============================================================================
|
|
77
|
+
/**
|
|
78
|
+
* Create a new feature builder.
|
|
79
|
+
*
|
|
80
|
+
* Features are reusable bundles of services and controllers that can be
|
|
81
|
+
* added to a cluster. They declare their requirements via `.requires()`
|
|
82
|
+
* and what they provide via `.provides()`.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* // Simple feature with no requirements
|
|
87
|
+
* const LoggingFeature = createFeatureBuilder()
|
|
88
|
+
* .provides((b) => b.add(LoggerService))
|
|
89
|
+
*
|
|
90
|
+
* // Feature with requirements
|
|
91
|
+
* const AuthFeature = createFeatureBuilder()
|
|
92
|
+
* .name('auth')
|
|
93
|
+
* .requires(ModelRepository.of(User))
|
|
94
|
+
* .requires(ModelRepository.of(Session))
|
|
95
|
+
* .provides((b) => b
|
|
96
|
+
* .add(AuthService)
|
|
97
|
+
* .add(SessionService)
|
|
98
|
+
* .add(AuthController)
|
|
99
|
+
* )
|
|
100
|
+
*
|
|
101
|
+
* // Feature with lifecycle hooks
|
|
102
|
+
* const DatabaseFeature = createFeatureBuilder()
|
|
103
|
+
* .name('database')
|
|
104
|
+
* .onStart(async ({ resolve }) => {
|
|
105
|
+
* const client = resolve(PgClient)
|
|
106
|
+
* await client.connect()
|
|
107
|
+
* })
|
|
108
|
+
* .onStop(async () => {
|
|
109
|
+
* // cleanup
|
|
110
|
+
* })
|
|
111
|
+
* .provides((b) => b.add(PgClient))
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export function createFeatureBuilder() {
|
|
115
|
+
return new FeatureBuilderImpl();
|
|
116
|
+
}
|
|
117
|
+
// ============================================================================
|
|
118
|
+
// Feature Utilities
|
|
119
|
+
// ============================================================================
|
|
120
|
+
/**
|
|
121
|
+
* Get the metadata from a feature token.
|
|
122
|
+
*/
|
|
123
|
+
export function getFeatureMetadata(feature) {
|
|
124
|
+
return feature[FEATURE_META];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get the requirements from a feature token.
|
|
128
|
+
*/
|
|
129
|
+
export function getFeatureRequirements(feature) {
|
|
130
|
+
return feature[FEATURE_META].requires;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get the name from a feature token.
|
|
134
|
+
*/
|
|
135
|
+
export function getFeatureName(feature) {
|
|
136
|
+
return feature[FEATURE_META].name;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=feature-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-builder.js","sourceRoot":"","sources":["../../src/builder/feature-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAUH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA8GzD;;GAEG;AACH,MAAM,kBAAkB;IAKF;IAApB,YAAoB,QAA6B,EAAE,QAAQ,EAAE,EAAE,EAAE;QAA7C,UAAK,GAAL,KAAK,CAAwC;IAAG,CAAC;IAErE,QAAQ,CACN,KAAQ;QAIR,OAAO,IAAI,kBAAkB,CAAC;YAC5B,GAAG,IAAI,CAAC,KAAK;YACb,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;SAC1C,CAAQ,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,kBAAkB,CAAC;YAC5B,GAAG,IAAI,CAAC,KAAK;YACb,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAe;QACrB,OAAO,IAAI,kBAAkB,CAAC;YAC5B,GAAG,IAAI,CAAC,KAAK;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAc;QACnB,OAAO,IAAI,kBAAkB,CAAC;YAC5B,GAAG,IAAI,CAAC,KAAK;YACb,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CACN,EAEyD;QAEzD,MAAM,QAAQ,GAAoB;YAChC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAC7B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC3B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;SAC1B,CAAC;QAEF,8BAA8B;QAC9B,MAAM,OAAO,GAAG,CAAC,CAAC,OAA2B,EAAE,EAAE;YAC/C,OAAO,EAAE,CAAC,OAAc,CAAC,CAAC;QAC5B,CAAC,CAAkD,CAAC;QAEpD,kBAAkB;QAClB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC/B,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE;YACnD,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;SACvD,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,kBAAkB,EAAE,CAAC;AAClC,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAA+B;IAE/B,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAA+B;IAE/B,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,OAA+B;IAE/B,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
export type { Token, AnyToken, Component, Builder, BuiltCluster, ServeOptions, RepositoryBinding, ServiceBinding, InstanceBinding, FeatureToken, FeatureMetadata, BuilderCallback, StartHook, StopHook, ProvidesOf, RequiresOf, RemoveFromTuple, } from './types.js';
|
|
19
|
+
export { isServiceDef, isControllerDef, isRepositoryBinding, isServiceBinding, isInstanceBinding, isFeatureToken, isBuilderCallback, isComponentArray, FEATURE_TOKEN, FEATURE_META, REPO_BINDING, SERVICE_BINDING, INSTANCE_BINDING, } from './types.js';
|
|
20
|
+
export { bindRepository, bindService, bindInstance } from './builder.js';
|
|
21
|
+
export { createFeatureBuilder, getFeatureMetadata, getFeatureRequirements, getFeatureName, } from './feature-builder.js';
|
|
22
|
+
export type { FeatureBuilder } from './feature-builder.js';
|
|
23
|
+
export { DependencyError, validateDependencies, buildDependencyGraph, findMissingDependencies, getTokenDescription, registerPluginProvides, getPluginProvides, registerImplicitService, getImplicitServices, } from './validation.js';
|
|
24
|
+
export type { MissingDependency, DependencyGraph, } from './validation.js';
|
|
25
|
+
export { topologicalSort, CycleError, } from './sort.js';
|
|
26
|
+
export type { Stop } from './stop.js';
|
|
27
|
+
export { isStop, createStopFn } from './stop.js';
|
|
28
|
+
export type { ExtractMiddlewareAdded, ExtractAddedFromMiddleware, ExtractStepDeps, ResponseEntry, ExtractStatuses, ExtractBodyForStatus, Step, UnresolvedStep, RouteDef, RouteBuilder, BuilderPlugin, PermissionDefLike, PermOf, BodyOf, NameOf, PermEntries, ToPermissionVariant, PermissionVariants, } from './types.js';
|
|
29
|
+
export { PLUGIN_SYMBOL, isPlugin, createPlugin } from './plugin.js';
|
|
30
|
+
export type { BuilderState } from './create-builder.js';
|
|
31
|
+
export { createBuilderState, createBaseBuilder } from './create-builder.js';
|
|
32
|
+
export { executeRoute, executeSteps } from './execute.js';
|
|
33
|
+
export { query } from './plugins/query.js';
|
|
34
|
+
export { ValidationErrorSchema } from './plugins/validation.js';
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,YAAY,EACV,KAAK,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,SAAS,EACT,QAAQ,EACR,UAAU,EACV,UAAU,EACV,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,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;AAGpB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGzE,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,eAAe,EACf,UAAU,GACX,MAAM,WAAW,CAAC;AAGnB,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGjD,YAAY,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,eAAe,EACf,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,IAAI,EACJ,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,aAAa,EAEb,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,EACX,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGpE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG5E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|