@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,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lock Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Generic lock types that can wrap any object.
|
|
5
|
+
* The constraint that locks only apply to Persistent entities
|
|
6
|
+
* is enforced at the usage site (e.g., in Repository).
|
|
7
|
+
*/
|
|
8
|
+
declare const LockBrand: unique symbol;
|
|
9
|
+
/**
|
|
10
|
+
* Make all fields mutable.
|
|
11
|
+
* Used by Lock<T> to allow modification of domain data.
|
|
12
|
+
*/
|
|
13
|
+
type MakeMutable<T> = {
|
|
14
|
+
-readonly [K in keyof T]: T[K];
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Metadata attached to a locked object.
|
|
18
|
+
*/
|
|
19
|
+
export interface LockMetadata {
|
|
20
|
+
readonly lockedAt: Date;
|
|
21
|
+
readonly expiresAt: Date;
|
|
22
|
+
readonly lockedBy: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Marks an object as locked (exclusive access acquired).
|
|
26
|
+
*
|
|
27
|
+
* - Type-branded so functions can require lock proof as a parameter
|
|
28
|
+
* - Implements `Disposable` (sync, fire-and-forget release) AND
|
|
29
|
+
* `AsyncDisposable` (preferred — `await using` awaits release ordering)
|
|
30
|
+
* - `__active` flips to `false` after dispose. Mutators (`update`,
|
|
31
|
+
* `delete`, `save` on Repository) reject inactive locks with
|
|
32
|
+
* `LockReleasedError` to catch the use-after-dispose foot-gun.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* // Preferred: await using — awaits the release before next code runs
|
|
37
|
+
* await using user = await lockService.acquire(userRepo.get(User.ref(id)));
|
|
38
|
+
*
|
|
39
|
+
* // Pass to service that requires lock proof
|
|
40
|
+
* await paymentService.processRefund(user);
|
|
41
|
+
*
|
|
42
|
+
* // Lock awaited-released when scope exits
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* // Service requiring lock proof - prevents deadlocks from nested acquisition
|
|
48
|
+
* class PaymentService {
|
|
49
|
+
* async processRefund(user: Lock<Persistent<User>>) {
|
|
50
|
+
* // Type proves caller owns the lock - no nested locking needed
|
|
51
|
+
* user.balance += refundAmount;
|
|
52
|
+
* await this.userRepo.save(user);
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export type Lock<T> = MakeMutable<T> & {
|
|
58
|
+
readonly [LockBrand]: true;
|
|
59
|
+
readonly __lock: LockMetadata;
|
|
60
|
+
/**
|
|
61
|
+
* True while the lock is held. Flips to false on `Symbol.dispose`
|
|
62
|
+
* or `Symbol.asyncDispose`. Mutator APIs (`Repository.update` etc.)
|
|
63
|
+
* check this and throw `LockReleasedError` if false.
|
|
64
|
+
*/
|
|
65
|
+
readonly __active: boolean;
|
|
66
|
+
} & Disposable & AsyncDisposable;
|
|
67
|
+
/**
|
|
68
|
+
* Helper to check if an object is locked at runtime.
|
|
69
|
+
*/
|
|
70
|
+
export declare function isLocked<T>(obj: unknown): obj is Lock<T>;
|
|
71
|
+
/**
|
|
72
|
+
* Options for acquiring a lock.
|
|
73
|
+
*/
|
|
74
|
+
export interface LockOptions {
|
|
75
|
+
/** Time-to-live in milliseconds. Lock auto-expires after this. Default: 30000 (30s) */
|
|
76
|
+
ttl?: number;
|
|
77
|
+
/** How long to wait for lock acquisition before failing. Default: 5000 (5s) */
|
|
78
|
+
timeout?: number;
|
|
79
|
+
/** Custom lock key. Default: derived from object */
|
|
80
|
+
key?: string;
|
|
81
|
+
/** Enable heartbeat to auto-extend lock. Default: false. Provider support varies. */
|
|
82
|
+
heartbeat?: boolean;
|
|
83
|
+
/** Heartbeat interval in ms. Default: ttl/3. Only used if heartbeat is enabled. */
|
|
84
|
+
heartbeatInterval?: number;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Lock storage backend interface.
|
|
88
|
+
*
|
|
89
|
+
* Implementations: InMemoryLockProvider, PostgresLockProvider, RedisLockProvider
|
|
90
|
+
*
|
|
91
|
+
* JustScale locks are ALWAYS blocking - acquire() waits forever until the lock
|
|
92
|
+
* is obtained. There is no timeout, no failure. Each backend implements its own
|
|
93
|
+
* efficient waiting mechanism (pub/sub, LISTEN/NOTIFY, waiter sets, etc.).
|
|
94
|
+
*/
|
|
95
|
+
export interface LockProvider {
|
|
96
|
+
/**
|
|
97
|
+
* Acquire a lock, blocking until acquired.
|
|
98
|
+
*
|
|
99
|
+
* IMPORTANT: This method blocks forever until the lock is obtained.
|
|
100
|
+
* There is no timeout. Implementations must notify waiters on release.
|
|
101
|
+
*
|
|
102
|
+
* @returns Lock metadata once acquired
|
|
103
|
+
*/
|
|
104
|
+
acquire(key: string, options: Required<LockOptions>, instanceId: string): Promise<LockMetadata>;
|
|
105
|
+
/**
|
|
106
|
+
* Release a lock and notify any waiters.
|
|
107
|
+
*
|
|
108
|
+
* Safe to call even if the lock is not held or owned by another instance.
|
|
109
|
+
* Must notify any waiting acquire() calls that the lock is available.
|
|
110
|
+
*/
|
|
111
|
+
release(key: string, instanceId: string): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Extend a lock's TTL. Used for long-running operations.
|
|
114
|
+
*
|
|
115
|
+
* @returns true if extended, false if lock not held or owned by another
|
|
116
|
+
*/
|
|
117
|
+
extend(key: string, instanceId: string, ttl: number): Promise<boolean>;
|
|
118
|
+
/**
|
|
119
|
+
* Close the lock provider, releasing all held locks.
|
|
120
|
+
* Should be called on graceful shutdown.
|
|
121
|
+
*/
|
|
122
|
+
close(): Promise<void>;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Service for acquiring distributed locks.
|
|
126
|
+
*
|
|
127
|
+
* Generic interface - concrete implementations may add constraints
|
|
128
|
+
* (e.g., only allowing Persistent entities).
|
|
129
|
+
*/
|
|
130
|
+
export interface LockService<T = unknown> {
|
|
131
|
+
/**
|
|
132
|
+
* Acquire an exclusive lock on an object.
|
|
133
|
+
*
|
|
134
|
+
* - If passed a direct object, locks it and returns Lock<T>
|
|
135
|
+
* - If passed a Promise, awaits it then locks
|
|
136
|
+
* - If the object is null, returns null (no lock acquired)
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* // Direct object
|
|
141
|
+
* using user = await lockService.acquire(existingUser);
|
|
142
|
+
*
|
|
143
|
+
* // From Promise (chain with repo call)
|
|
144
|
+
* using user = await lockService.acquire(userRepo.get(User.ref(id)));
|
|
145
|
+
* if (!user) throw new NotFoundError();
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
acquire(obj: T | Promise<T> | null | Promise<T | null>, options?: LockOptions): Promise<Lock<T> | null>;
|
|
149
|
+
}
|
|
150
|
+
export {};
|
|
151
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/lock/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,CAAC,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC;AAEvC;;;GAGG;AACH,KAAK,WAAW,CAAC,CAAC,IAAI;IACpB,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG;IACrC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,GAAG,UAAU,GAAG,eAAe,CAAC;AAEjC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAOxD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uFAAuF;IACvF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;OAOG;IACH,OAAO,CACL,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC9B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;OAKG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CACL,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,EAC9C,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CAC5B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lock Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Generic lock types that can wrap any object.
|
|
5
|
+
* The constraint that locks only apply to Persistent entities
|
|
6
|
+
* is enforced at the usage site (e.g., in Repository).
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Helper to check if an object is locked at runtime.
|
|
10
|
+
*/
|
|
11
|
+
export function isLocked(obj) {
|
|
12
|
+
return (obj !== null &&
|
|
13
|
+
typeof obj === 'object' &&
|
|
14
|
+
'__lock' in obj &&
|
|
15
|
+
Symbol.dispose in obj);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/features/lock/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiEH;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAI,GAAY;IACtC,OAAO,CACL,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,QAAQ,IAAI,GAAG;QACf,MAAM,CAAC,OAAO,IAAI,GAAG,CACtB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-Memory Adapters
|
|
3
|
+
*
|
|
4
|
+
* Simple in-memory implementations for development and testing.
|
|
5
|
+
* These are not suitable for production multi-node deployments.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { InMemoryLockFeature } from '@justscale/core/memory'
|
|
10
|
+
*
|
|
11
|
+
* JustScale()
|
|
12
|
+
* .add(InMemoryLockFeature)
|
|
13
|
+
* .build()
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export { InMemoryLockProvider, createInMemoryLockProvider, type InMemoryLockProviderInstance, } from '../lock/memory.js';
|
|
17
|
+
export { InMemoryLockFeature } from './lock-feature.js';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,4BAA4B,GAClC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-Memory Adapters
|
|
3
|
+
*
|
|
4
|
+
* Simple in-memory implementations for development and testing.
|
|
5
|
+
* These are not suitable for production multi-node deployments.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { InMemoryLockFeature } from '@justscale/core/memory'
|
|
10
|
+
*
|
|
11
|
+
* JustScale()
|
|
12
|
+
* .add(InMemoryLockFeature)
|
|
13
|
+
* .build()
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export { InMemoryLockProvider, createInMemoryLockProvider, } from '../lock/memory.js';
|
|
17
|
+
export { InMemoryLockFeature } from './lock-feature.js';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAE3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-Memory Lock Feature
|
|
3
|
+
*
|
|
4
|
+
* Provides in-memory locking for single-node apps, development, and testing.
|
|
5
|
+
* For distributed locking across multiple instances, use PostgresLockFeature.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import JustScale from '@justscale/core'
|
|
10
|
+
* import { InMemoryLockFeature } from '@justscale/core/memory'
|
|
11
|
+
* import { InMemoryProcessFeature } from '@justscale/core/process'
|
|
12
|
+
*
|
|
13
|
+
* JustScale()
|
|
14
|
+
* .add(InMemoryLockFeature)
|
|
15
|
+
* .add(InMemoryProcessFeature)
|
|
16
|
+
* .build()
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
import { InMemoryLockProvider } from '../lock/memory.js';
|
|
20
|
+
export declare const InMemoryLockFeature: import("../../builder/types.js").FeatureToken<[], [typeof InMemoryLockProvider]>;
|
|
21
|
+
//# sourceMappingURL=lock-feature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock-feature.d.ts","sourceRoot":"","sources":["../../../src/features/memory/lock-feature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,eAAO,MAAM,mBAAmB,kFAI7B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-Memory Lock Feature
|
|
3
|
+
*
|
|
4
|
+
* Provides in-memory locking for single-node apps, development, and testing.
|
|
5
|
+
* For distributed locking across multiple instances, use PostgresLockFeature.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import JustScale from '@justscale/core'
|
|
10
|
+
* import { InMemoryLockFeature } from '@justscale/core/memory'
|
|
11
|
+
* import { InMemoryProcessFeature } from '@justscale/core/process'
|
|
12
|
+
*
|
|
13
|
+
* JustScale()
|
|
14
|
+
* .add(InMemoryLockFeature)
|
|
15
|
+
* .add(InMemoryProcessFeature)
|
|
16
|
+
* .build()
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
import { createFeatureBuilder } from '../../builder/index.js';
|
|
20
|
+
import { InMemoryLockProvider } from '../lock/memory.js';
|
|
21
|
+
export const InMemoryLockFeature = createFeatureBuilder()
|
|
22
|
+
.name('InMemoryLock')
|
|
23
|
+
.provides((b) => b.add(InMemoryLockProvider));
|
|
24
|
+
//# sourceMappingURL=lock-feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock-feature.js","sourceRoot":"","sources":["../../../src/features/memory/lock-feature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,EAAE;KACtD,IAAI,CAAC,cAAc,CAAC;KACpB,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CACd,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAC5B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ServiceToken, InstanceOf } from '../../core/service.js';
|
|
2
|
+
import type { SecretPartial, SecretComponent } from './types.js';
|
|
3
|
+
type InferDeps<T extends Record<string, ServiceToken<any>>> = {
|
|
4
|
+
[K in keyof T]: InstanceOf<T[K]>;
|
|
5
|
+
};
|
|
6
|
+
type SecretFactory<TInject extends Record<string, ServiceToken<any>>> = (deps: InferDeps<TInject>) => Record<symbol, any> | Promise<Record<symbol, any>>;
|
|
7
|
+
interface CreateSecretProviderOptions<TInject extends Record<string, ServiceToken<any>>, P extends readonly SecretPartial<any>[]> {
|
|
8
|
+
provides?: P;
|
|
9
|
+
inject?: TInject;
|
|
10
|
+
factory: SecretFactory<TInject>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a SecretProvider - a component that loads secrets from a source
|
|
14
|
+
* (vault client, hardcoded values, process.env) at boot.
|
|
15
|
+
*
|
|
16
|
+
* The factory returns `{ [partial.key]: value }`. When `provides` is set,
|
|
17
|
+
* each value is validated against its partial's zod schema.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* const ProdSecrets = createSecretProvider({
|
|
21
|
+
* provides: [PostgresSecrets, JwtSecrets],
|
|
22
|
+
* inject: { vault: KubernetesVaultClient },
|
|
23
|
+
* factory: async ({ vault }) => ({
|
|
24
|
+
* [PostgresSecrets.key]: { connectionString: await vault.read('postgres/url') },
|
|
25
|
+
* [JwtSecrets.key]: { signingKey: await vault.read('jwt/key') },
|
|
26
|
+
* }),
|
|
27
|
+
* })
|
|
28
|
+
*/
|
|
29
|
+
export declare function createSecretProvider<const TInject extends Record<string, ServiceToken<any>> = {}, const P extends readonly SecretPartial<any>[] = readonly []>(options: CreateSecretProviderOptions<TInject, P>): SecretComponent<P>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=create-secret-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-secret-provider.d.ts","sourceRoot":"","sources":["../../../src/features/secrets/create-secret-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjE,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI;KAC3D,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACjC,CAAC;AAEF,KAAK,aAAa,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAClE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAEnF,UAAU,2BAA2B,CACnC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EACjD,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE;IAEvC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;CAChC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAC5D,KAAK,CAAC,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE,EAC3D,OAAO,EAAE,2BAA2B,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAOtE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a SecretProvider - a component that loads secrets from a source
|
|
3
|
+
* (vault client, hardcoded values, process.env) at boot.
|
|
4
|
+
*
|
|
5
|
+
* The factory returns `{ [partial.key]: value }`. When `provides` is set,
|
|
6
|
+
* each value is validated against its partial's zod schema.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const ProdSecrets = createSecretProvider({
|
|
10
|
+
* provides: [PostgresSecrets, JwtSecrets],
|
|
11
|
+
* inject: { vault: KubernetesVaultClient },
|
|
12
|
+
* factory: async ({ vault }) => ({
|
|
13
|
+
* [PostgresSecrets.key]: { connectionString: await vault.read('postgres/url') },
|
|
14
|
+
* [JwtSecrets.key]: { signingKey: await vault.read('jwt/key') },
|
|
15
|
+
* }),
|
|
16
|
+
* })
|
|
17
|
+
*/
|
|
18
|
+
export function createSecretProvider(options) {
|
|
19
|
+
return {
|
|
20
|
+
__secretComponent: true,
|
|
21
|
+
provides: (options.provides ?? []),
|
|
22
|
+
inject: (options.inject ?? {}),
|
|
23
|
+
factory: options.factory,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=create-secret-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-secret-provider.js","sourceRoot":"","sources":["../../../src/features/secrets/create-secret-provider.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAGlC,OAAgD;IAChD,OAAO;QACL,iBAAiB,EAAE,IAAI;QACvB,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAM;QACvC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAA+B;QAC5D,OAAO,EAAE,OAAO,CAAC,OAA2D;KAC7E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import { type SecretPartial } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Define a secret partial with a Zod schema.
|
|
5
|
+
*
|
|
6
|
+
* Secret partials describe the shape of a secret slice (e.g. Postgres
|
|
7
|
+
* connection string, JWT signing key). The value is provided at boot by a
|
|
8
|
+
* SecretProvider that reads from a vault.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const PostgresSecrets = defineSecretPartial('postgres', z.object({
|
|
12
|
+
* connectionString: z.string(),
|
|
13
|
+
* }))
|
|
14
|
+
*/
|
|
15
|
+
export declare function defineSecretPartial<T extends z.ZodType>(name: string, schema: T): SecretPartial<z.infer<T>>;
|
|
16
|
+
//# sourceMappingURL=define-secret-partial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-secret-partial.d.ts","sourceRoot":"","sources":["../../../src/features/secrets/define-secret-partial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EACrD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,GACR,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAW3B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SECRET_PARTIAL } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Define a secret partial with a Zod schema.
|
|
4
|
+
*
|
|
5
|
+
* Secret partials describe the shape of a secret slice (e.g. Postgres
|
|
6
|
+
* connection string, JWT signing key). The value is provided at boot by a
|
|
7
|
+
* SecretProvider that reads from a vault.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const PostgresSecrets = defineSecretPartial('postgres', z.object({
|
|
11
|
+
* connectionString: z.string(),
|
|
12
|
+
* }))
|
|
13
|
+
*/
|
|
14
|
+
export function defineSecretPartial(name, schema) {
|
|
15
|
+
return {
|
|
16
|
+
[SECRET_PARTIAL]: true,
|
|
17
|
+
// Plain Symbol(): each defineSecretPartial() call produces a fresh
|
|
18
|
+
// token even when two features reuse the same human-readable name.
|
|
19
|
+
// Consumers import the partial object from its declaring module and
|
|
20
|
+
// inject it directly, so no global string-keyed lookup exists.
|
|
21
|
+
key: Symbol(`secret:${name}`),
|
|
22
|
+
name,
|
|
23
|
+
schema: schema,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=define-secret-partial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-secret-partial.js","sourceRoot":"","sources":["../../../src/features/secrets/define-secret-partial.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAsB,MAAM,YAAY,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,MAAS;IAET,OAAO;QACL,CAAC,cAAc,CAAC,EAAE,IAAI;QACtB,mEAAmE;QACnE,mEAAmE;QACnE,oEAAoE;QACpE,+DAA+D;QAC/D,GAAG,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC7B,IAAI;QACJ,MAAM,EAAE,MAA+B;KACxC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @justscale/core/secrets
|
|
3
|
+
*
|
|
4
|
+
* Read-only, vault-backed secret management.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors the config partial pattern but reserved for secrets - no runtime
|
|
7
|
+
* mutation, no disk persistence, values loaded once at boot from a vault.
|
|
8
|
+
*/
|
|
9
|
+
export { SECRET_PARTIAL, isSecretPartial, isSecretComponent, } from './types.js';
|
|
10
|
+
export type { SecretPartial, SecretComponent, } from './types.js';
|
|
11
|
+
export { defineSecretPartial } from './define-secret-partial.js';
|
|
12
|
+
export { Secret } from './secret-of.js';
|
|
13
|
+
export type { SecretToken } from './secret-of.js';
|
|
14
|
+
export { createSecretProvider } from './create-secret-provider.js';
|
|
15
|
+
export { SecretServiceDef } from './secret-service.js';
|
|
16
|
+
export type { SecretService } from './secret-service.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @justscale/core/secrets
|
|
3
|
+
*
|
|
4
|
+
* Read-only, vault-backed secret management.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors the config partial pattern but reserved for secrets - no runtime
|
|
7
|
+
* mutation, no disk persistence, values loaded once at boot from a vault.
|
|
8
|
+
*/
|
|
9
|
+
export { SECRET_PARTIAL, isSecretPartial, isSecretComponent, } from './types.js';
|
|
10
|
+
export { defineSecretPartial } from './define-secret-partial.js';
|
|
11
|
+
export { Secret } from './secret-of.js';
|
|
12
|
+
export { createSecretProvider } from './create-secret-provider.js';
|
|
13
|
+
export { SecretServiceDef } from './secret-service.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/secrets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,cAAc,EACd,eAAe,EACf,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Token } from '../../builder/index.js';
|
|
2
|
+
import type { SecretPartial } from './types.js';
|
|
3
|
+
declare const SECRET_TOKEN_BRAND: unique symbol;
|
|
4
|
+
/**
|
|
5
|
+
* A secret token for DI. Services inject via Secret.of(partial).
|
|
6
|
+
*/
|
|
7
|
+
export interface SecretToken<T> extends Token<T> {
|
|
8
|
+
readonly [SECRET_TOKEN_BRAND]?: T;
|
|
9
|
+
readonly description: string;
|
|
10
|
+
readonly key: symbol;
|
|
11
|
+
resolve(container: {
|
|
12
|
+
get(key: symbol): T;
|
|
13
|
+
}): T;
|
|
14
|
+
}
|
|
15
|
+
export declare const Secret: {
|
|
16
|
+
of<T>(partial: SecretPartial<T>): SecretToken<T>;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=secret-of.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-of.d.ts","sourceRoot":"","sources":["../../../src/features/secrets/secret-of.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,MAAM,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IAC9C,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,SAAS,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE,GAAG,CAAC,CAAA;CAC/C;AASD,eAAO,MAAM,MAAM;OACd,CAAC,WAAW,aAAa,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;CAWjD,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memoize per-partial to preserve token identity across call-sites -
|
|
3
|
+
* required so DI validation matches the token a service injects against
|
|
4
|
+
* the token a SecretProvider declares in `provides`.
|
|
5
|
+
*/
|
|
6
|
+
const secretTokenCache = new WeakMap();
|
|
7
|
+
export const Secret = {
|
|
8
|
+
of(partial) {
|
|
9
|
+
const cached = secretTokenCache.get(partial);
|
|
10
|
+
if (cached)
|
|
11
|
+
return cached;
|
|
12
|
+
const token = {
|
|
13
|
+
description: `Secret.of(${partial.name})`,
|
|
14
|
+
key: partial.key,
|
|
15
|
+
resolve: (container) => container.get(partial.key),
|
|
16
|
+
};
|
|
17
|
+
secretTokenCache.set(partial, token);
|
|
18
|
+
return token;
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=secret-of.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-of.js","sourceRoot":"","sources":["../../../src/features/secrets/secret-of.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAwC,CAAC;AAE7E,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,CAAI,OAAyB;QAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,MAAM;YAAE,OAAO,MAAwB,CAAC;QAC5C,MAAM,KAAK,GAAmB;YAC5B,WAAW,EAAE,aAAa,OAAO,CAAC,IAAI,GAAG;YACzC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,CAAC,SAAsC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;SAC9D,CAAC;QACpB,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SecretPartial } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Read-only secret access service.
|
|
4
|
+
*
|
|
5
|
+
* Intentionally has NO .set(), no persistence to disk, no watch. Secrets are
|
|
6
|
+
* loaded at boot by SecretProviders and are immutable for the process
|
|
7
|
+
* lifetime. Rotation = restart the process (k8s rolling deploy).
|
|
8
|
+
*/
|
|
9
|
+
export interface SecretService {
|
|
10
|
+
/**
|
|
11
|
+
* Read the current value for a secret partial.
|
|
12
|
+
*
|
|
13
|
+
* @throws if no provider has registered a value for this partial
|
|
14
|
+
*/
|
|
15
|
+
read<T>(partial: SecretPartial<T>): Promise<T>;
|
|
16
|
+
}
|
|
17
|
+
declare const SecretServiceDef_base: import("../../core/service.js").Service<SecretService, {}>;
|
|
18
|
+
export declare class SecretServiceDef extends SecretServiceDef_base {
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=secret-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-service.d.ts","sourceRoot":"","sources":["../../../src/features/secrets/secret-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAC/C;;AAuBD,qBAAa,gBAAiB,SAAQ,qBAGpC;CAAG"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { defineService } from '../../core/index.js';
|
|
2
|
+
import { Secret } from './secret-of.js';
|
|
3
|
+
class SecretServiceImpl {
|
|
4
|
+
resolver;
|
|
5
|
+
constructor(resolver) {
|
|
6
|
+
this.resolver = resolver;
|
|
7
|
+
}
|
|
8
|
+
async read(partial) {
|
|
9
|
+
// Route through the partial's ResolvableToken (Secret.of) instead of the
|
|
10
|
+
// raw symbol. The container's resolvable-token branch looks the value
|
|
11
|
+
// up via container.instances.get(partial.key) and returns undefined
|
|
12
|
+
// when nothing is registered; we surface the friendly error below.
|
|
13
|
+
// Passing the raw symbol used to reach resolveInternal's
|
|
14
|
+
// `'deps' in token` check and threw an opaque TypeError.
|
|
15
|
+
const value = await this.resolver(Secret.of(partial));
|
|
16
|
+
if (value === undefined) {
|
|
17
|
+
throw new Error(`SecretService.read: no provider registered a value for secret partial '${partial.name}'. ` +
|
|
18
|
+
`Did you add a createSecretProvider() that returns { [${partial.name}.key]: ... }?`);
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class SecretServiceDef extends defineService({
|
|
24
|
+
inject: {},
|
|
25
|
+
factory: (_deps, resolver) => new SecretServiceImpl(resolver),
|
|
26
|
+
}) {
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=secret-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-service.js","sourceRoot":"","sources":["../../../src/features/secrets/secret-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAmBxC,MAAM,iBAAiB;IACQ;IAA7B,YAA6B,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAG,CAAC;IAEnD,KAAK,CAAC,IAAI,CAAI,OAAyB;QACrC,yEAAyE;QACzE,sEAAsE;QACtE,oEAAoE;QACpE,mEAAmE;QACnE,yDAAyD;QACzD,yDAAyD;QACzD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAI,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,0EAA0E,OAAO,CAAC,IAAI,KAAK;gBAC3F,wDAAwD,OAAO,CAAC,IAAI,eAAe,CACpF,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,aAAa,CAAC;IAClD,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAiB,EAAE,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC;CAC7E,CAAC;CAAG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { Token } from '../../builder/index.js';
|
|
3
|
+
export declare const SECRET_PARTIAL: unique symbol;
|
|
4
|
+
/**
|
|
5
|
+
* A secret partial - defines shape and validation for a secret slice.
|
|
6
|
+
*
|
|
7
|
+
* Parallel to ConfigPartial but reserved for secrets. Secrets are NEVER
|
|
8
|
+
* mutated at runtime (no .set, no persistence to .justscale/). Values come
|
|
9
|
+
* from a vault-backed SecretProvider at boot and are read-only thereafter.
|
|
10
|
+
*/
|
|
11
|
+
export interface SecretPartial<T> {
|
|
12
|
+
readonly [SECRET_PARTIAL]: true;
|
|
13
|
+
readonly key: symbol;
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly schema: z.ZodType<T>;
|
|
16
|
+
}
|
|
17
|
+
export declare function isSecretPartial(value: unknown): value is SecretPartial<unknown>;
|
|
18
|
+
/**
|
|
19
|
+
* Component returned by createSecretProvider().
|
|
20
|
+
* Builder runs its factory at boot, validates each returned value against
|
|
21
|
+
* its partial's schema, and registers the results under partial keys.
|
|
22
|
+
*/
|
|
23
|
+
export interface SecretComponent<P extends readonly SecretPartial<any>[] = readonly SecretPartial<any>[]> {
|
|
24
|
+
readonly __secretComponent: true;
|
|
25
|
+
readonly provides: P;
|
|
26
|
+
readonly inject: Record<string, Token<any>>;
|
|
27
|
+
readonly factory: (deps: Record<string, any>) => Record<symbol, any> | Promise<Record<symbol, any>>;
|
|
28
|
+
}
|
|
29
|
+
export declare function isSecretComponent(value: unknown): value is SecretComponent;
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/secrets/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEpD,eAAO,MAAM,cAAc,eAA2B,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAA;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;CAC9B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,CAE/E;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE;IACtG,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3C,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;CACpG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const SECRET_PARTIAL = Symbol('secret:partial');
|
|
2
|
+
export function isSecretPartial(value) {
|
|
3
|
+
return typeof value === 'object' && value !== null && SECRET_PARTIAL in value;
|
|
4
|
+
}
|
|
5
|
+
export function isSecretComponent(value) {
|
|
6
|
+
return typeof value === 'object' && value !== null && '__secretComponent' in value;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/features/secrets/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAgBvD,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,cAAc,IAAI,KAAK,CAAC;AAChF,CAAC;AAcD,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,mBAAmB,IAAI,KAAK,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type VaultClient } from './types.js';
|
|
2
|
+
declare const EnvVarVault_base: import("../../core/service.js").Service<VaultClient, {}>;
|
|
3
|
+
/**
|
|
4
|
+
* EnvVarVault - reads raw values from `process.env`.
|
|
5
|
+
*
|
|
6
|
+
* The path is transformed to an uppercase env-var name: `/` and `-` become
|
|
7
|
+
* `_`. E.g. `read('postgres/url')` reads `POSTGRES_URL`.
|
|
8
|
+
*
|
|
9
|
+
* Apps use it uniformly for both secrets (via `postgresSecret(...)`) and
|
|
10
|
+
* non-secret config overrides (via `fromVault(partial, {...})`), so the
|
|
11
|
+
* production composition never reads `process.env` directly.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* export default createEnvironment({
|
|
15
|
+
* name: 'production',
|
|
16
|
+
* type: 'production',
|
|
17
|
+
* services: [EnvVarVault],
|
|
18
|
+
* providers: [...],
|
|
19
|
+
* })
|
|
20
|
+
*/
|
|
21
|
+
export declare class EnvVarVault extends EnvVarVault_base {
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=env-var-vault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-var-vault.d.ts","sourceRoot":"","sources":["../../../src/features/vault/env-var-vault.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;;AAE/E;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,WAAY,SAAQ,gBAkB/B;CAAG"}
|