@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,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TransientRef - A reference to an unsaved (transient) entity.
|
|
3
|
+
*
|
|
4
|
+
* Unlike Reference<T> which holds an ID, TransientRef holds the actual
|
|
5
|
+
* entity instance. When the entity is saved, TransientRef can be
|
|
6
|
+
* converted to a regular Reference.
|
|
7
|
+
*
|
|
8
|
+
* Used for building entity graphs before persistence.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const User = defineModel('User', {
|
|
13
|
+
* name: field.string(),
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* const Post = defineModel('Post', {
|
|
17
|
+
* title: field.string(),
|
|
18
|
+
* author: field.ref(User),
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Create an unsaved user
|
|
22
|
+
* const user = new User({ name: 'Alice' });
|
|
23
|
+
*
|
|
24
|
+
* // Reference it before saving
|
|
25
|
+
* const post = new Post({
|
|
26
|
+
* title: 'My Post',
|
|
27
|
+
* author: new TransientRef(user),
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* // Later, after saving the user, convert to regular Reference
|
|
31
|
+
* await userRepo.save(user);
|
|
32
|
+
* const authorRef = post.author.toReference(); // Now has ID
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
import type { Persistent } from '../types.js';
|
|
36
|
+
import { TRANSIENT_REF, TRANSIENT_TARGET } from '../symbols.js';
|
|
37
|
+
import { Reference } from './reference.js';
|
|
38
|
+
/**
|
|
39
|
+
* A reference to an unsaved (transient) entity that implements PromiseLike.
|
|
40
|
+
*
|
|
41
|
+
* The transient reference holds:
|
|
42
|
+
* - The entity instance (always available synchronously)
|
|
43
|
+
* - No ID (until the entity is saved)
|
|
44
|
+
*
|
|
45
|
+
* TransientRef implements PromiseLike, so you can await it to get the entity:
|
|
46
|
+
* const author = await post.author; // Works for both Reference and TransientRef
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const User = defineModel('User', {
|
|
51
|
+
* name: field.string(),
|
|
52
|
+
* });
|
|
53
|
+
*
|
|
54
|
+
* const user = new User({ name: 'Alice' });
|
|
55
|
+
* const ref = new TransientRef(user);
|
|
56
|
+
*
|
|
57
|
+
* // Await to get the entity
|
|
58
|
+
* const entity = await ref;
|
|
59
|
+
*
|
|
60
|
+
* // Or access synchronously
|
|
61
|
+
* ref.target; // User instance
|
|
62
|
+
* ref.isLoaded; // Always true for TransientRef
|
|
63
|
+
*
|
|
64
|
+
* // After saving, convert to Reference
|
|
65
|
+
* await userRepo.save(user);
|
|
66
|
+
* const persistentRef = ref.toReference(); // Reference<User>
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare class TransientRef<T> implements PromiseLike<T | Persistent<T>> {
|
|
70
|
+
/** Symbol marker for type identification */
|
|
71
|
+
readonly [TRANSIENT_REF]: true;
|
|
72
|
+
/** Internal target entity storage */
|
|
73
|
+
private readonly [TRANSIENT_TARGET];
|
|
74
|
+
constructor(target: T | Persistent<T>);
|
|
75
|
+
/** The referenced entity - always available synchronously */
|
|
76
|
+
get target(): T | Persistent<T>;
|
|
77
|
+
/** Whether the reference is loaded - always true for TransientRef */
|
|
78
|
+
get isLoaded(): boolean;
|
|
79
|
+
/** The resolved entity - same as target for TransientRef */
|
|
80
|
+
get value(): T | Persistent<T>;
|
|
81
|
+
/** The resolved entity or null - never null for TransientRef */
|
|
82
|
+
get valueOrNull(): T | Persistent<T>;
|
|
83
|
+
/**
|
|
84
|
+
* Implement PromiseLike - makes the transient reference directly awaitable.
|
|
85
|
+
*
|
|
86
|
+
* `await post.author` works whether author is a Reference or TransientRef.
|
|
87
|
+
*
|
|
88
|
+
* For TransientRef, this resolves immediately (synchronously) to the target entity.
|
|
89
|
+
*/
|
|
90
|
+
then<TResult1 = T | Persistent<T>, TResult2 = never>(onfulfilled?: ((value: T | Persistent<T>) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null | undefined): PromiseLike<TResult1 | TResult2>;
|
|
91
|
+
/**
|
|
92
|
+
* Convert this transient reference to a regular Reference.
|
|
93
|
+
*
|
|
94
|
+
* This requires the entity to have been persisted (must have an id).
|
|
95
|
+
* Throws if the entity doesn't have an ID yet.
|
|
96
|
+
*
|
|
97
|
+
* @throws Error if the entity doesn't have an id
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const user = new User({ name: 'Alice' });
|
|
102
|
+
* const ref = new TransientRef(user);
|
|
103
|
+
*
|
|
104
|
+
* await userRepo.save(user); // Now user has an id
|
|
105
|
+
* const persistentRef = ref.toReference(); // Reference<User>
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
toReference(): Reference<T>;
|
|
109
|
+
/**
|
|
110
|
+
* Check if this transient reference can be converted to a Reference.
|
|
111
|
+
* Returns true if the entity has been persisted (has an adapter key).
|
|
112
|
+
*/
|
|
113
|
+
canConvert(): boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Create a transient reference to an entity.
|
|
116
|
+
*/
|
|
117
|
+
static create<T>(target: T | Persistent<T>): TransientRef<T>;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Type guard to check if a value is a TransientRef.
|
|
121
|
+
*/
|
|
122
|
+
export declare function isTransientRef<T>(value: unknown): value is TransientRef<T>;
|
|
123
|
+
//# sourceMappingURL=transient-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transient-ref.d.ts","sourceRoot":"","sources":["../../../src/models/reference/transient-ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAA2B,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACpE,4CAA4C;IAC5C,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAG,IAAI,CAAU;IAEzC,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAoB;gBAE3C,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAIrC,6DAA6D;IAC7D,IAAI,MAAM,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAE9B;IAED,qEAAqE;IACrE,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,4DAA4D;IAC5D,IAAI,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAE7B;IAED,gEAAgE;IAChE,IAAI,WAAW,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAEnC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,EACjD,WAAW,CAAC,EACR,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAChE,IAAI,GACJ,SAAS,EACb,UAAU,CAAC,EACP,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GACvD,IAAI,GACJ,SAAS,GACZ,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAKnC;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC;IAa3B;;;OAGG;IACH,UAAU,IAAI,OAAO;IAKrB;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;CAG7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAO1E"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TransientRef - A reference to an unsaved (transient) entity.
|
|
3
|
+
*
|
|
4
|
+
* Unlike Reference<T> which holds an ID, TransientRef holds the actual
|
|
5
|
+
* entity instance. When the entity is saved, TransientRef can be
|
|
6
|
+
* converted to a regular Reference.
|
|
7
|
+
*
|
|
8
|
+
* Used for building entity graphs before persistence.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const User = defineModel('User', {
|
|
13
|
+
* name: field.string(),
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* const Post = defineModel('Post', {
|
|
17
|
+
* title: field.string(),
|
|
18
|
+
* author: field.ref(User),
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Create an unsaved user
|
|
22
|
+
* const user = new User({ name: 'Alice' });
|
|
23
|
+
*
|
|
24
|
+
* // Reference it before saving
|
|
25
|
+
* const post = new Post({
|
|
26
|
+
* title: 'My Post',
|
|
27
|
+
* author: new TransientRef(user),
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* // Later, after saving the user, convert to regular Reference
|
|
31
|
+
* await userRepo.save(user);
|
|
32
|
+
* const authorRef = post.author.toReference(); // Now has ID
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
import { TRANSIENT_REF, TRANSIENT_TARGET, ADAPTER_KEY, PERSISTENT } from '../symbols.js';
|
|
36
|
+
import { Reference } from './reference.js';
|
|
37
|
+
/**
|
|
38
|
+
* A reference to an unsaved (transient) entity that implements PromiseLike.
|
|
39
|
+
*
|
|
40
|
+
* The transient reference holds:
|
|
41
|
+
* - The entity instance (always available synchronously)
|
|
42
|
+
* - No ID (until the entity is saved)
|
|
43
|
+
*
|
|
44
|
+
* TransientRef implements PromiseLike, so you can await it to get the entity:
|
|
45
|
+
* const author = await post.author; // Works for both Reference and TransientRef
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const User = defineModel('User', {
|
|
50
|
+
* name: field.string(),
|
|
51
|
+
* });
|
|
52
|
+
*
|
|
53
|
+
* const user = new User({ name: 'Alice' });
|
|
54
|
+
* const ref = new TransientRef(user);
|
|
55
|
+
*
|
|
56
|
+
* // Await to get the entity
|
|
57
|
+
* const entity = await ref;
|
|
58
|
+
*
|
|
59
|
+
* // Or access synchronously
|
|
60
|
+
* ref.target; // User instance
|
|
61
|
+
* ref.isLoaded; // Always true for TransientRef
|
|
62
|
+
*
|
|
63
|
+
* // After saving, convert to Reference
|
|
64
|
+
* await userRepo.save(user);
|
|
65
|
+
* const persistentRef = ref.toReference(); // Reference<User>
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export class TransientRef {
|
|
69
|
+
/** Symbol marker for type identification */
|
|
70
|
+
[TRANSIENT_REF] = true;
|
|
71
|
+
/** Internal target entity storage */
|
|
72
|
+
[TRANSIENT_TARGET];
|
|
73
|
+
constructor(target) {
|
|
74
|
+
this[TRANSIENT_TARGET] = target;
|
|
75
|
+
}
|
|
76
|
+
/** The referenced entity - always available synchronously */
|
|
77
|
+
get target() {
|
|
78
|
+
return this[TRANSIENT_TARGET];
|
|
79
|
+
}
|
|
80
|
+
/** Whether the reference is loaded - always true for TransientRef */
|
|
81
|
+
get isLoaded() {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
/** The resolved entity - same as target for TransientRef */
|
|
85
|
+
get value() {
|
|
86
|
+
return this[TRANSIENT_TARGET];
|
|
87
|
+
}
|
|
88
|
+
/** The resolved entity or null - never null for TransientRef */
|
|
89
|
+
get valueOrNull() {
|
|
90
|
+
return this[TRANSIENT_TARGET];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Implement PromiseLike - makes the transient reference directly awaitable.
|
|
94
|
+
*
|
|
95
|
+
* `await post.author` works whether author is a Reference or TransientRef.
|
|
96
|
+
*
|
|
97
|
+
* For TransientRef, this resolves immediately (synchronously) to the target entity.
|
|
98
|
+
*/
|
|
99
|
+
then(onfulfilled, onrejected) {
|
|
100
|
+
// Always resolve immediately with the target entity
|
|
101
|
+
return Promise.resolve(this[TRANSIENT_TARGET]).then(onfulfilled, onrejected);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Convert this transient reference to a regular Reference.
|
|
105
|
+
*
|
|
106
|
+
* This requires the entity to have been persisted (must have an id).
|
|
107
|
+
* Throws if the entity doesn't have an ID yet.
|
|
108
|
+
*
|
|
109
|
+
* @throws Error if the entity doesn't have an id
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* const user = new User({ name: 'Alice' });
|
|
114
|
+
* const ref = new TransientRef(user);
|
|
115
|
+
*
|
|
116
|
+
* await userRepo.save(user); // Now user has an id
|
|
117
|
+
* const persistentRef = ref.toReference(); // Reference<User>
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
toReference() {
|
|
121
|
+
const entity = this[TRANSIENT_TARGET];
|
|
122
|
+
const key = entity[ADAPTER_KEY];
|
|
123
|
+
if (!key) {
|
|
124
|
+
throw new Error('Cannot convert TransientRef to Reference: entity has no adapter key. Save the entity first.');
|
|
125
|
+
}
|
|
126
|
+
return Reference.resolved(key, entity);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Check if this transient reference can be converted to a Reference.
|
|
130
|
+
* Returns true if the entity has been persisted (has an adapter key).
|
|
131
|
+
*/
|
|
132
|
+
canConvert() {
|
|
133
|
+
const entity = this[TRANSIENT_TARGET];
|
|
134
|
+
return !!(entity[ADAPTER_KEY] ?? entity[PERSISTENT]);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Create a transient reference to an entity.
|
|
138
|
+
*/
|
|
139
|
+
static create(target) {
|
|
140
|
+
return new TransientRef(target);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Type guard to check if a value is a TransientRef.
|
|
145
|
+
*/
|
|
146
|
+
export function isTransientRef(value) {
|
|
147
|
+
return (value !== null &&
|
|
148
|
+
typeof value === 'object' &&
|
|
149
|
+
TRANSIENT_REF in value &&
|
|
150
|
+
value[TRANSIENT_REF] === true);
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=transient-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transient-ref.js","sourceRoot":"","sources":["../../../src/models/reference/transient-ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAO,YAAY;IACvB,4CAA4C;IACnC,CAAC,aAAa,CAAC,GAAG,IAAa,CAAC;IAEzC,qCAAqC;IACpB,CAAC,gBAAgB,CAAC,CAAoB;IAEvD,YAAY,MAAyB;QACnC,IAAI,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;IAClC,CAAC;IAED,6DAA6D;IAC7D,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAED,qEAAqE;IACrE,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4DAA4D;IAC5D,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAED,gEAAgE;IAChE,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CACF,WAGa,EACb,UAGa;QAEb,oDAAoD;QACpD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAqC,CAAC;QAC1E,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAuB,CAAC;QAEtD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAuB,CAAiB,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAqC,CAAC;QAC1E,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAI,MAAyB;QACxC,OAAO,IAAI,YAAY,CAAI,MAAM,CAAC,CAAC;IACrC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAI,KAAc;IAC9C,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,aAAa,IAAI,KAAK;QACrB,KAAiC,CAAC,aAAa,CAAC,KAAK,IAAI,CAC3D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository Base
|
|
3
|
+
*
|
|
4
|
+
* Generic empty base class for repositories, used by core's DI system.
|
|
5
|
+
* Repository<T> is intentionally empty - the contract depends on context:
|
|
6
|
+
* ModelRepository adds CRUD operations; custom repositories define their own.
|
|
7
|
+
*/
|
|
8
|
+
/** Symbol to identify repository tokens */
|
|
9
|
+
export declare const REPO_TOKEN: unique symbol;
|
|
10
|
+
/** Symbol to brand Repository instances for type checking */
|
|
11
|
+
export declare const REPO_BRAND: unique symbol;
|
|
12
|
+
/**
|
|
13
|
+
* Abstract base class for all repositories.
|
|
14
|
+
*
|
|
15
|
+
* Intentionally empty - subclasses define their own contracts.
|
|
16
|
+
* Exists so core's DI system can work with any kind of repository.
|
|
17
|
+
*
|
|
18
|
+
* @typeParam T - The type this repository provides access to
|
|
19
|
+
*/
|
|
20
|
+
export declare abstract class Repository<T = unknown> {
|
|
21
|
+
/** Brand to distinguish Repository from plain objects in type checking */
|
|
22
|
+
readonly [REPO_BRAND]: true;
|
|
23
|
+
}
|
|
24
|
+
/** Brand for type-level token identification */
|
|
25
|
+
declare const TOKEN_BRAND: unique symbol;
|
|
26
|
+
/**
|
|
27
|
+
* A generic repository token for dependency injection.
|
|
28
|
+
*
|
|
29
|
+
* This is the base token interface that all repository tokens extend.
|
|
30
|
+
* Core's DI system uses this to wire up repositories without knowing
|
|
31
|
+
* about the specific contract.
|
|
32
|
+
*
|
|
33
|
+
* @typeParam T - The entity type this repository provides access to
|
|
34
|
+
* @typeParam TInstance - The repository instance type (defaults to Repository<T>)
|
|
35
|
+
*/
|
|
36
|
+
export interface RepositoryToken<T = unknown, TInstance = Repository<T>> {
|
|
37
|
+
/** Type brand - makes Token<A> incompatible with Token<B> */
|
|
38
|
+
readonly [TOKEN_BRAND]?: T;
|
|
39
|
+
/** Instance type brand - carries the actual instance type for DI */
|
|
40
|
+
readonly __instanceType?: TInstance;
|
|
41
|
+
/** Symbol brand - runtime identification */
|
|
42
|
+
readonly [REPO_TOKEN]: true;
|
|
43
|
+
/** Human-readable description */
|
|
44
|
+
readonly description: string;
|
|
45
|
+
/** String representation */
|
|
46
|
+
toString(): string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if a value is a RepositoryToken.
|
|
50
|
+
*/
|
|
51
|
+
export declare function isRepositoryToken(value: unknown): value is RepositoryToken;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/models/repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,2CAA2C;AAC3C,eAAO,MAAM,UAAU,eAAiC,CAAC;AAEzD,6DAA6D;AAC7D,eAAO,MAAM,UAAU,eAAiC,CAAC;AAMzD;;;;;;;GAOG;AACH,8BAAsB,UAAU,CAAC,CAAC,GAAG,OAAO;IAC1C,0EAA0E;IAC1E,SAAiB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;CACrC;AAMD,gDAAgD;AAChD,OAAO,CAAC,MAAM,WAAW,EAAE,OAAO,MAAM,CAAC;AAEzC;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC;IACrE,6DAA6D;IAC7D,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAA;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAA;IACnC,4CAA4C;IAC5C,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAA;IAC3B,iCAAiC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,4BAA4B;IAC5B,QAAQ,IAAI,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAO1E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository Base
|
|
3
|
+
*
|
|
4
|
+
* Generic empty base class for repositories, used by core's DI system.
|
|
5
|
+
* Repository<T> is intentionally empty - the contract depends on context:
|
|
6
|
+
* ModelRepository adds CRUD operations; custom repositories define their own.
|
|
7
|
+
*/
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Symbols
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/** Symbol to identify repository tokens */
|
|
12
|
+
export const REPO_TOKEN = Symbol('core:repositoryToken');
|
|
13
|
+
/** Symbol to brand Repository instances for type checking */
|
|
14
|
+
export const REPO_BRAND = Symbol('core:repositoryBrand');
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Repository Base Class
|
|
17
|
+
// ============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Abstract base class for all repositories.
|
|
20
|
+
*
|
|
21
|
+
* Intentionally empty - subclasses define their own contracts.
|
|
22
|
+
* Exists so core's DI system can work with any kind of repository.
|
|
23
|
+
*
|
|
24
|
+
* @typeParam T - The type this repository provides access to
|
|
25
|
+
*/
|
|
26
|
+
export class Repository {
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check if a value is a RepositoryToken.
|
|
30
|
+
*/
|
|
31
|
+
export function isRepositoryToken(value) {
|
|
32
|
+
return (typeof value === 'object' &&
|
|
33
|
+
value !== null &&
|
|
34
|
+
REPO_TOKEN in value &&
|
|
35
|
+
value[REPO_TOKEN] === true);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/models/repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,2CAA2C;AAC3C,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEzD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEzD,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,OAAgB,UAAU;CAG/B;AAgCD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,UAAU,IAAI,KAAK;QAClB,KAAiC,CAAC,UAAU,CAAC,KAAK,IAAI,CACxD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduled Task System
|
|
3
|
+
*
|
|
4
|
+
* Provides durable task scheduling with exactly-once delivery.
|
|
5
|
+
* Used for process delays, scheduled jobs, reminders, etc.
|
|
6
|
+
*
|
|
7
|
+
* For the route factory, see @justscale/scheduled-task
|
|
8
|
+
*/
|
|
9
|
+
export { ScheduledTask, ScheduledTaskStatus } from './scheduled-task.js';
|
|
10
|
+
export type { ScheduledTaskStatus as ScheduledTaskStatusType } from './scheduled-task.js';
|
|
11
|
+
export { ScheduledTaskRepository } from './scheduled-task.repository.js';
|
|
12
|
+
export type { ScheduleOptions, SubscribeOptions } from './scheduled-task.repository.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/scheduled-task/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzE,YAAY,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduled Task System
|
|
3
|
+
*
|
|
4
|
+
* Provides durable task scheduling with exactly-once delivery.
|
|
5
|
+
* Used for process delays, scheduled jobs, reminders, etc.
|
|
6
|
+
*
|
|
7
|
+
* For the route factory, see @justscale/scheduled-task
|
|
8
|
+
*/
|
|
9
|
+
// Model and Repository
|
|
10
|
+
export { ScheduledTask, ScheduledTaskStatus } from './scheduled-task.js';
|
|
11
|
+
export { ScheduledTaskRepository } from './scheduled-task.repository.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/scheduled-task/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,uBAAuB;AACvB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScheduledTask Model
|
|
3
|
+
*
|
|
4
|
+
* A scheduled task represents work to be executed at a specific time.
|
|
5
|
+
* Used for durable timers in processes, scheduled jobs, reminders, etc.
|
|
6
|
+
*
|
|
7
|
+
* Tasks are identified by namespace.type (e.g., 'process.delay', 'email.reminder').
|
|
8
|
+
* Workers subscribe to specific qualified names and receive tasks as an async iterable.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // Schedule a process delay
|
|
13
|
+
* await scheduler.schedule({
|
|
14
|
+
* dueAt: new Date(Date.now() + 60_000),
|
|
15
|
+
* namespace: 'process',
|
|
16
|
+
* type: 'delay',
|
|
17
|
+
* payload: { processId: 'abc', instanceId: '123' },
|
|
18
|
+
* })
|
|
19
|
+
*
|
|
20
|
+
* // Subscribe to process delays
|
|
21
|
+
* for await (const task of scheduler.subscribe('process.delay')) {
|
|
22
|
+
* await resumeProcess(task.payload)
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Task status values.
|
|
28
|
+
*/
|
|
29
|
+
export declare const ScheduledTaskStatus: {
|
|
30
|
+
/** Task is waiting to be executed */
|
|
31
|
+
readonly Pending: "pending";
|
|
32
|
+
/** Task is currently being processed */
|
|
33
|
+
readonly Processing: "processing";
|
|
34
|
+
/** Task completed successfully */
|
|
35
|
+
readonly Completed: "completed";
|
|
36
|
+
/** Task was cancelled before execution */
|
|
37
|
+
readonly Cancelled: "cancelled";
|
|
38
|
+
/** Task failed during execution */
|
|
39
|
+
readonly Failed: "failed";
|
|
40
|
+
};
|
|
41
|
+
export type ScheduledTaskStatus = (typeof ScheduledTaskStatus)[keyof typeof ScheduledTaskStatus];
|
|
42
|
+
declare const ScheduledTask_base: import("../define-model.js").Model<{
|
|
43
|
+
readonly dueAt: Date;
|
|
44
|
+
readonly namespace: string;
|
|
45
|
+
readonly type: string;
|
|
46
|
+
readonly payload: unknown;
|
|
47
|
+
readonly status: "pending" | "completed" | "failed" | "cancelled" | "processing";
|
|
48
|
+
readonly startedAt: Date | undefined;
|
|
49
|
+
readonly completedAt: Date | undefined;
|
|
50
|
+
readonly error: string | undefined;
|
|
51
|
+
}, string, {}, "status", {}>;
|
|
52
|
+
/**
|
|
53
|
+
* ScheduledTask model.
|
|
54
|
+
*
|
|
55
|
+
* Represents a task scheduled to run at a specific time.
|
|
56
|
+
*/
|
|
57
|
+
export declare class ScheduledTask extends ScheduledTask_base {
|
|
58
|
+
/**
|
|
59
|
+
* Get the fully qualified task name.
|
|
60
|
+
* Format: namespace.type (e.g., 'process.delay')
|
|
61
|
+
*/
|
|
62
|
+
get qualifiedName(): string;
|
|
63
|
+
/**
|
|
64
|
+
* Check if the task is due for execution.
|
|
65
|
+
*/
|
|
66
|
+
isDue(now?: Date): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Check if the task can still be cancelled.
|
|
69
|
+
*/
|
|
70
|
+
get isCancellable(): boolean;
|
|
71
|
+
}
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=scheduled-task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduled-task.d.ts","sourceRoot":"","sources":["../../../src/models/scheduled-task/scheduled-task.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH;;GAEG;AACH,eAAO,MAAM,mBAAmB;IAC9B,qCAAqC;;IAErC,wCAAwC;;IAExC,kCAAkC;;IAElC,0CAA0C;;IAE1C,mCAAmC;;CAE3B,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;;;;;;;;;;;AAEjG;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,kBA0BjC;IACA;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,OAAa,GAAG,OAAO;IAIhC;;OAEG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;CACF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScheduledTask Model
|
|
3
|
+
*
|
|
4
|
+
* A scheduled task represents work to be executed at a specific time.
|
|
5
|
+
* Used for durable timers in processes, scheduled jobs, reminders, etc.
|
|
6
|
+
*
|
|
7
|
+
* Tasks are identified by namespace.type (e.g., 'process.delay', 'email.reminder').
|
|
8
|
+
* Workers subscribe to specific qualified names and receive tasks as an async iterable.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // Schedule a process delay
|
|
13
|
+
* await scheduler.schedule({
|
|
14
|
+
* dueAt: new Date(Date.now() + 60_000),
|
|
15
|
+
* namespace: 'process',
|
|
16
|
+
* type: 'delay',
|
|
17
|
+
* payload: { processId: 'abc', instanceId: '123' },
|
|
18
|
+
* })
|
|
19
|
+
*
|
|
20
|
+
* // Subscribe to process delays
|
|
21
|
+
* for await (const task of scheduler.subscribe('process.delay')) {
|
|
22
|
+
* await resumeProcess(task.payload)
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import { defineModel } from '../define-model.js';
|
|
27
|
+
import { field } from '../field.js';
|
|
28
|
+
/**
|
|
29
|
+
* Task status values.
|
|
30
|
+
*/
|
|
31
|
+
export const ScheduledTaskStatus = {
|
|
32
|
+
/** Task is waiting to be executed */
|
|
33
|
+
Pending: 'pending',
|
|
34
|
+
/** Task is currently being processed */
|
|
35
|
+
Processing: 'processing',
|
|
36
|
+
/** Task completed successfully */
|
|
37
|
+
Completed: 'completed',
|
|
38
|
+
/** Task was cancelled before execution */
|
|
39
|
+
Cancelled: 'cancelled',
|
|
40
|
+
/** Task failed during execution */
|
|
41
|
+
Failed: 'failed',
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* ScheduledTask model.
|
|
45
|
+
*
|
|
46
|
+
* Represents a task scheduled to run at a specific time.
|
|
47
|
+
*/
|
|
48
|
+
export class ScheduledTask extends defineModel({
|
|
49
|
+
name: 'JustScale_ScheduledTask',
|
|
50
|
+
fields: {
|
|
51
|
+
/** When the task should be executed */
|
|
52
|
+
dueAt: field.timestamp(),
|
|
53
|
+
/** Task namespace (e.g., 'process', 'email', 'notifications') */
|
|
54
|
+
namespace: field.string().max(64).index(),
|
|
55
|
+
/** Task type within namespace (e.g., 'delay', 'reminder', 'cleanup') */
|
|
56
|
+
type: field.string().max(64).index(),
|
|
57
|
+
/** Task payload - the data needed to execute the task */
|
|
58
|
+
payload: field.json(),
|
|
59
|
+
/** Current task status */
|
|
60
|
+
status: field.enum('scheduled_task_status', [
|
|
61
|
+
'pending',
|
|
62
|
+
'processing',
|
|
63
|
+
'completed',
|
|
64
|
+
'cancelled',
|
|
65
|
+
'failed',
|
|
66
|
+
]).default('pending'),
|
|
67
|
+
/** When the task started processing (set when picked up) */
|
|
68
|
+
startedAt: field.timestamp().optional(),
|
|
69
|
+
/** When the task completed/failed (set on completion) */
|
|
70
|
+
completedAt: field.timestamp().optional(),
|
|
71
|
+
/** Error message if task failed */
|
|
72
|
+
error: field.text().optional(),
|
|
73
|
+
},
|
|
74
|
+
}) {
|
|
75
|
+
/**
|
|
76
|
+
* Get the fully qualified task name.
|
|
77
|
+
* Format: namespace.type (e.g., 'process.delay')
|
|
78
|
+
*/
|
|
79
|
+
get qualifiedName() {
|
|
80
|
+
return `${this.namespace}.${this.type}`;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if the task is due for execution.
|
|
84
|
+
*/
|
|
85
|
+
isDue(now = new Date()) {
|
|
86
|
+
return this.dueAt <= now && this.status === 'pending';
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check if the task can still be cancelled.
|
|
90
|
+
*/
|
|
91
|
+
get isCancellable() {
|
|
92
|
+
return this.status === 'pending';
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=scheduled-task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduled-task.js","sourceRoot":"","sources":["../../../src/models/scheduled-task/scheduled-task.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,qCAAqC;IACrC,OAAO,EAAE,SAAS;IAClB,wCAAwC;IACxC,UAAU,EAAE,YAAY;IACxB,kCAAkC;IAClC,SAAS,EAAE,WAAW;IACtB,0CAA0C;IAC1C,SAAS,EAAE,WAAW;IACtB,mCAAmC;IACnC,MAAM,EAAE,QAAQ;CACR,CAAC;AAIX;;;;GAIG;AACH,MAAM,OAAO,aAAc,SAAQ,WAAW,CAAC;IAC7C,IAAI,EAAE,yBAAyB;IAC/B,MAAM,EAAE;QACN,uCAAuC;QACvC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE;QACxB,iEAAiE;QACjE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;QACzC,wEAAwE;QACxE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;QACpC,yDAAyD;QACzD,OAAO,EAAE,KAAK,CAAC,IAAI,EAAW;QAC9B,0BAA0B;QAC1B,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE;YAC1C,SAAS;YACT,YAAY;YACZ,WAAW;YACX,WAAW;YACX,QAAQ;SACA,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAC9B,4DAA4D;QAC5D,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;QACvC,yDAAyD;QACzD,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;QACzC,mCAAmC;QACnC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;KAC/B;CACF,CAAC;IACA;;;OAGG;IACH,IAAI,aAAa;QACf,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;QACpB,OAAO,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;IACnC,CAAC;CACF"}
|