everything-dev 1.53.2 → 2.0.0-rc.1
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/README.md +2 -11
- package/dist/_virtual/_rolldown/runtime.cjs +17 -2
- package/dist/_virtual/_rolldown/runtime.mjs +36 -0
- package/dist/api/auth-middleware.cjs +161 -0
- package/dist/api/auth-middleware.cjs.map +1 -0
- package/dist/api/auth-middleware.d.cts +69 -0
- package/dist/api/auth-middleware.d.mts +69 -0
- package/dist/api/auth-middleware.mjs +160 -0
- package/dist/api/auth-middleware.mjs.map +1 -0
- package/dist/api-contract.cjs +250 -62
- package/dist/api-contract.cjs.map +1 -1
- package/dist/api-contract.mjs +246 -65
- package/dist/api-contract.mjs.map +1 -1
- package/dist/app.cjs +99 -26
- package/dist/app.cjs.map +1 -1
- package/dist/app.d.cts +3 -0
- package/dist/app.d.mts +3 -0
- package/dist/app.mjs +100 -27
- package/dist/app.mjs.map +1 -1
- package/dist/auth-login.cjs +163 -0
- package/dist/auth-login.cjs.map +1 -0
- package/dist/auth-login.mjs +162 -0
- package/dist/auth-login.mjs.map +1 -0
- package/dist/auth-session.cjs +64 -0
- package/dist/auth-session.cjs.map +1 -0
- package/dist/auth-session.mjs +58 -0
- package/dist/auth-session.mjs.map +1 -0
- package/dist/auth-types-gen.cjs +0 -1
- package/dist/auth-types-gen.cjs.map +1 -1
- package/dist/build.cjs +37 -173
- package/dist/build.cjs.map +1 -1
- package/dist/build.mjs +37 -171
- package/dist/build.mjs.map +1 -1
- package/dist/bundle-cache.cjs +74 -0
- package/dist/bundle-cache.cjs.map +1 -0
- package/dist/bundle-cache.d.cts +27 -0
- package/dist/bundle-cache.d.mts +27 -0
- package/dist/bundle-cache.mjs +68 -0
- package/dist/bundle-cache.mjs.map +1 -0
- package/dist/bundle-fs-resolve.cjs +209 -0
- package/dist/bundle-fs-resolve.cjs.map +1 -0
- package/dist/bundle-fs-resolve.d.cts +76 -0
- package/dist/bundle-fs-resolve.d.mts +76 -0
- package/dist/bundle-fs-resolve.mjs +202 -0
- package/dist/bundle-fs-resolve.mjs.map +1 -0
- package/dist/cdn-deploy.cjs +126 -0
- package/dist/cdn-deploy.cjs.map +1 -0
- package/dist/cdn-deploy.mjs +124 -0
- package/dist/cdn-deploy.mjs.map +1 -0
- package/dist/cli/db-doctor.cjs +19 -19
- package/dist/cli/db-doctor.cjs.map +1 -1
- package/dist/cli/db-doctor.mjs +18 -18
- package/dist/cli/db-doctor.mjs.map +1 -1
- package/dist/cli/db-repair.cjs +9 -32
- package/dist/cli/db-repair.cjs.map +1 -1
- package/dist/cli/db-repair.mjs +9 -32
- package/dist/cli/db-repair.mjs.map +1 -1
- package/dist/cli/framework-version.cjs +7 -3
- package/dist/cli/framework-version.cjs.map +1 -1
- package/dist/cli/framework-version.mjs +7 -3
- package/dist/cli/framework-version.mjs.map +1 -1
- package/dist/cli/infra.cjs +159 -251
- package/dist/cli/infra.cjs.map +1 -1
- package/dist/cli/infra.mjs +154 -242
- package/dist/cli/infra.mjs.map +1 -1
- package/dist/cli/init.cjs +627 -199
- package/dist/cli/init.cjs.map +1 -1
- package/dist/cli/init.d.cts +61 -8
- package/dist/cli/init.d.mts +61 -8
- package/dist/cli/init.mjs +616 -197
- package/dist/cli/init.mjs.map +1 -1
- package/dist/cli/parse.cjs +8 -7
- package/dist/cli/parse.cjs.map +1 -1
- package/dist/cli/parse.mjs +9 -7
- package/dist/cli/parse.mjs.map +1 -1
- package/dist/cli/prompts.cjs +14 -1
- package/dist/cli/prompts.cjs.map +1 -1
- package/dist/cli/prompts.mjs +14 -1
- package/dist/cli/prompts.mjs.map +1 -1
- package/dist/cli/prune.cjs +220 -0
- package/dist/cli/prune.cjs.map +1 -0
- package/dist/cli/prune.mjs +220 -0
- package/dist/cli/prune.mjs.map +1 -0
- package/dist/cli/snapshot.cjs +2 -1
- package/dist/cli/snapshot.cjs.map +1 -1
- package/dist/cli/snapshot.mjs +2 -1
- package/dist/cli/snapshot.mjs.map +1 -1
- package/dist/cli/status.cjs +5 -4
- package/dist/cli/status.cjs.map +1 -1
- package/dist/cli/status.mjs +6 -5
- package/dist/cli/status.mjs.map +1 -1
- package/dist/cli/sync.cjs +156 -58
- package/dist/cli/sync.cjs.map +1 -1
- package/dist/cli/sync.mjs +158 -63
- package/dist/cli/sync.mjs.map +1 -1
- package/dist/cli/timing.cjs +0 -1
- package/dist/cli/timing.cjs.map +1 -1
- package/dist/cli/upgrade.cjs +95 -69
- package/dist/cli/upgrade.cjs.map +1 -1
- package/dist/cli/upgrade.mjs +97 -72
- package/dist/cli/upgrade.mjs.map +1 -1
- package/dist/cli/utils/helpers.cjs.map +1 -1
- package/dist/cli.cjs +320 -72
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.mjs +316 -68
- package/dist/cli.mjs.map +1 -1
- package/dist/code-artifacts.cjs +76 -8
- package/dist/code-artifacts.cjs.map +1 -1
- package/dist/code-artifacts.mjs +76 -10
- package/dist/code-artifacts.mjs.map +1 -1
- package/dist/commands/build.cjs +65 -0
- package/dist/commands/build.cjs.map +1 -0
- package/dist/commands/build.mjs +65 -0
- package/dist/commands/build.mjs.map +1 -0
- package/dist/commands/config.cjs +77 -0
- package/dist/commands/config.cjs.map +1 -0
- package/dist/commands/config.d.cts +8 -0
- package/dist/commands/config.d.mts +8 -0
- package/dist/commands/config.mjs +74 -0
- package/dist/commands/config.mjs.map +1 -0
- package/dist/commands/db.cjs +107 -0
- package/dist/commands/db.cjs.map +1 -0
- package/dist/commands/db.mjs +107 -0
- package/dist/commands/db.mjs.map +1 -0
- package/dist/commands/deploy.cjs +336 -0
- package/dist/commands/deploy.cjs.map +1 -0
- package/dist/commands/deploy.mjs +334 -0
- package/dist/commands/deploy.mjs.map +1 -0
- package/dist/commands/dev.cjs +75 -0
- package/dist/commands/dev.cjs.map +1 -0
- package/dist/commands/dev.mjs +73 -0
- package/dist/commands/dev.mjs.map +1 -0
- package/dist/commands/init.cjs +234 -0
- package/dist/commands/init.cjs.map +1 -0
- package/dist/commands/init.mjs +231 -0
- package/dist/commands/init.mjs.map +1 -0
- package/dist/commands/keys.cjs +255 -0
- package/dist/commands/keys.cjs.map +1 -0
- package/dist/commands/keys.mjs +253 -0
- package/dist/commands/keys.mjs.map +1 -0
- package/dist/commands/ops.cjs +199 -0
- package/dist/commands/ops.cjs.map +1 -0
- package/dist/commands/ops.mjs +197 -0
- package/dist/commands/ops.mjs.map +1 -0
- package/dist/commands/plugins.cjs +211 -0
- package/dist/commands/plugins.cjs.map +1 -0
- package/dist/commands/plugins.mjs +211 -0
- package/dist/commands/plugins.mjs.map +1 -0
- package/dist/commands/shared.cjs +8 -0
- package/dist/commands/shared.cjs.map +1 -0
- package/dist/commands/shared.d.cts +6 -0
- package/dist/commands/shared.d.mts +6 -0
- package/dist/commands/shared.mjs +8 -0
- package/dist/commands/shared.mjs.map +1 -0
- package/dist/commands/upgrade.cjs +325 -0
- package/dist/commands/upgrade.cjs.map +1 -0
- package/dist/commands/upgrade.mjs +323 -0
- package/dist/commands/upgrade.mjs.map +1 -0
- package/dist/components/dev-render.cjs +340 -0
- package/dist/components/dev-render.cjs.map +1 -0
- package/dist/components/dev-render.mjs +332 -0
- package/dist/components/dev-render.mjs.map +1 -0
- package/dist/config.cjs +460 -221
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.cts +491 -48
- package/dist/config.d.mts +491 -48
- package/dist/config.mjs +439 -212
- package/dist/config.mjs.map +1 -1
- package/dist/contract.cjs +327 -50
- package/dist/contract.cjs.map +1 -1
- package/dist/contract.d.cts +1951 -1062
- package/dist/contract.d.mts +1951 -1062
- package/dist/contract.meta.cjs +107 -12
- package/dist/contract.meta.cjs.map +1 -1
- package/dist/contract.meta.d.cts +166 -8
- package/dist/contract.meta.d.mts +166 -8
- package/dist/contract.meta.mjs +107 -11
- package/dist/contract.meta.mjs.map +1 -1
- package/dist/contract.mjs +580 -327
- package/dist/contract.mjs.map +1 -1
- package/dist/dag.cjs +5 -3
- package/dist/dag.cjs.map +1 -1
- package/dist/dag.mjs +6 -3
- package/dist/dag.mjs.map +1 -1
- package/dist/db/binding.cjs +80 -0
- package/dist/db/binding.cjs.map +1 -0
- package/dist/db/binding.d.cts +39 -0
- package/dist/db/binding.d.mts +39 -0
- package/dist/db/binding.mjs +78 -0
- package/dist/db/binding.mjs.map +1 -0
- package/dist/db/bindings.cjs +78 -0
- package/dist/db/bindings.cjs.map +1 -0
- package/dist/db/bindings.d.cts +34 -0
- package/dist/db/bindings.d.mts +34 -0
- package/dist/db/bindings.mjs +76 -0
- package/dist/db/bindings.mjs.map +1 -0
- package/dist/db/core.cjs +204 -0
- package/dist/db/core.cjs.map +1 -0
- package/dist/db/core.d.cts +69 -0
- package/dist/db/core.d.mts +69 -0
- package/dist/db/core.mjs +192 -0
- package/dist/db/core.mjs.map +1 -0
- package/dist/db/driver.cjs +167 -0
- package/dist/db/driver.cjs.map +1 -0
- package/dist/db/driver.d.cts +50 -0
- package/dist/db/driver.d.mts +50 -0
- package/dist/db/driver.mjs +165 -0
- package/dist/db/driver.mjs.map +1 -0
- package/dist/db/drizzle-kit.cjs +177 -0
- package/dist/db/drizzle-kit.cjs.map +1 -0
- package/dist/db/drizzle-kit.d.cts +25 -0
- package/dist/db/drizzle-kit.d.mts +25 -0
- package/dist/db/drizzle-kit.mjs +175 -0
- package/dist/db/drizzle-kit.mjs.map +1 -0
- package/dist/db/errors.cjs +27 -0
- package/dist/db/errors.cjs.map +1 -0
- package/dist/db/errors.d.cts +16 -0
- package/dist/db/errors.d.mts +16 -0
- package/dist/db/errors.mjs +26 -0
- package/dist/db/errors.mjs.map +1 -0
- package/dist/db/identity.cjs +55 -0
- package/dist/db/identity.cjs.map +1 -0
- package/dist/db/identity.d.cts +40 -0
- package/dist/db/identity.d.mts +40 -0
- package/dist/db/identity.mjs +53 -0
- package/dist/db/identity.mjs.map +1 -0
- package/dist/db/index.cjs +43 -0
- package/dist/db/index.d.cts +9 -0
- package/dist/db/index.d.mts +9 -0
- package/dist/db/index.mjs +10 -0
- package/dist/db/run-migrations.cjs +343 -0
- package/dist/db/run-migrations.cjs.map +1 -0
- package/dist/db/run-migrations.d.cts +87 -0
- package/dist/db/run-migrations.d.mts +87 -0
- package/dist/db/run-migrations.mjs +341 -0
- package/dist/db/run-migrations.mjs.map +1 -0
- package/dist/delegate-signer.cjs +85 -0
- package/dist/delegate-signer.cjs.map +1 -0
- package/dist/delegate-signer.mjs +84 -0
- package/dist/delegate-signer.mjs.map +1 -0
- package/dist/deploy-diff.cjs +119 -0
- package/dist/deploy-diff.cjs.map +1 -0
- package/dist/deploy-diff.mjs +109 -0
- package/dist/deploy-diff.mjs.map +1 -0
- package/dist/descriptor/constructors.cjs +49 -0
- package/dist/descriptor/constructors.cjs.map +1 -0
- package/dist/descriptor/constructors.d.cts +27 -0
- package/dist/descriptor/constructors.d.mts +27 -0
- package/dist/descriptor/constructors.mjs +45 -0
- package/dist/descriptor/constructors.mjs.map +1 -0
- package/dist/descriptor/index.cjs +24 -0
- package/dist/descriptor/index.d.cts +5 -0
- package/dist/descriptor/index.d.mts +5 -0
- package/dist/descriptor/index.mjs +6 -0
- package/dist/descriptor/resolve.cjs +258 -0
- package/dist/descriptor/resolve.cjs.map +1 -0
- package/dist/descriptor/resolve.d.cts +50 -0
- package/dist/descriptor/resolve.d.mts +50 -0
- package/dist/descriptor/resolve.mjs +252 -0
- package/dist/descriptor/resolve.mjs.map +1 -0
- package/dist/descriptor/schema.cjs +109 -0
- package/dist/descriptor/schema.cjs.map +1 -0
- package/dist/descriptor/schema.d.cts +217 -0
- package/dist/descriptor/schema.d.mts +217 -0
- package/dist/descriptor/schema.mjs +102 -0
- package/dist/descriptor/schema.mjs.map +1 -0
- package/dist/descriptor/serialize.cjs +45 -0
- package/dist/descriptor/serialize.cjs.map +1 -0
- package/dist/descriptor/serialize.d.cts +7 -0
- package/dist/descriptor/serialize.d.mts +7 -0
- package/dist/descriptor/serialize.mjs +45 -0
- package/dist/descriptor/serialize.mjs.map +1 -0
- package/dist/dev-log-pipeline.cjs +273 -0
- package/dist/dev-log-pipeline.cjs.map +1 -0
- package/dist/dev-log-pipeline.mjs +267 -0
- package/dist/dev-log-pipeline.mjs.map +1 -0
- package/dist/dev-logs.cjs +39 -8
- package/dist/dev-logs.cjs.map +1 -1
- package/dist/dev-logs.mjs +37 -9
- package/dist/dev-logs.mjs.map +1 -1
- package/dist/dev-program.cjs +405 -0
- package/dist/dev-program.cjs.map +1 -0
- package/dist/dev-program.d.cts +10 -0
- package/dist/dev-program.d.mts +10 -0
- package/dist/dev-program.mjs +395 -0
- package/dist/dev-program.mjs.map +1 -0
- package/dist/dev-session-data.d.cts +27 -0
- package/dist/dev-session-data.d.mts +27 -0
- package/dist/dev-session.cjs +178 -105
- package/dist/dev-session.cjs.map +1 -1
- package/dist/dev-session.mjs +180 -105
- package/dist/dev-session.mjs.map +1 -1
- package/dist/env/process-env.cjs +16 -0
- package/dist/env/process-env.cjs.map +1 -0
- package/dist/env/process-env.mjs +13 -0
- package/dist/env/process-env.mjs.map +1 -0
- package/dist/env/project-env.cjs +144 -0
- package/dist/env/project-env.cjs.map +1 -0
- package/dist/env/project-env.d.cts +1 -0
- package/dist/env/project-env.d.mts +1 -0
- package/dist/env/project-env.mjs +132 -0
- package/dist/env/project-env.mjs.map +1 -0
- package/dist/fastkv.cjs +59 -12
- package/dist/fastkv.cjs.map +1 -1
- package/dist/fastkv.d.cts +42 -6
- package/dist/fastkv.d.mts +42 -6
- package/dist/fastkv.mjs +58 -13
- package/dist/fastkv.mjs.map +1 -1
- package/dist/fingerprint.cjs +57 -0
- package/dist/fingerprint.cjs.map +1 -0
- package/dist/fingerprint.d.cts +14 -0
- package/dist/fingerprint.d.mts +14 -0
- package/dist/fingerprint.mjs +55 -0
- package/dist/fingerprint.mjs.map +1 -0
- package/dist/http-client.cjs +17 -17
- package/dist/http-client.cjs.map +1 -1
- package/dist/http-client.mjs +17 -17
- package/dist/http-client.mjs.map +1 -1
- package/dist/image-deploy.cjs +186 -0
- package/dist/image-deploy.cjs.map +1 -0
- package/dist/image-deploy.mjs +182 -0
- package/dist/image-deploy.mjs.map +1 -0
- package/dist/index.cjs +66 -18
- package/dist/index.d.cts +8 -7
- package/dist/index.d.mts +8 -7
- package/dist/index.mjs +6 -5
- package/dist/infra/docker.cjs +77 -0
- package/dist/infra/docker.cjs.map +1 -0
- package/dist/infra/docker.d.cts +10 -0
- package/dist/infra/docker.d.mts +10 -0
- package/dist/infra/docker.mjs +69 -0
- package/dist/infra/docker.mjs.map +1 -0
- package/dist/infra/materializer.cjs +74 -0
- package/dist/infra/materializer.cjs.map +1 -0
- package/dist/infra/materializer.mjs +70 -0
- package/dist/infra/materializer.mjs.map +1 -0
- package/dist/infra/planner.cjs +135 -103
- package/dist/infra/planner.cjs.map +1 -1
- package/dist/infra/planner.mjs +137 -104
- package/dist/infra/planner.mjs.map +1 -1
- package/dist/infra/port-ownership.cjs +57 -0
- package/dist/infra/port-ownership.cjs.map +1 -0
- package/dist/infra/port-ownership.mjs +57 -0
- package/dist/infra/port-ownership.mjs.map +1 -0
- package/dist/infra/preflight.cjs +45 -33
- package/dist/infra/preflight.cjs.map +1 -1
- package/dist/infra/preflight.d.cts +1 -0
- package/dist/infra/preflight.d.mts +1 -0
- package/dist/infra/preflight.mjs +46 -34
- package/dist/infra/preflight.mjs.map +1 -1
- package/dist/infra/types.cjs.map +1 -1
- package/dist/infra/types.d.cts +2 -0
- package/dist/infra/types.d.mts +2 -0
- package/dist/infra/types.mjs.map +1 -1
- package/dist/integrity.cjs +50 -61
- package/dist/integrity.cjs.map +1 -1
- package/dist/integrity.d.cts +16 -10
- package/dist/integrity.d.mts +16 -10
- package/dist/integrity.mjs +50 -59
- package/dist/integrity.mjs.map +1 -1
- package/dist/internal/manifest-normalizer.cjs +8 -2
- package/dist/internal/manifest-normalizer.cjs.map +1 -1
- package/dist/internal/manifest-normalizer.mjs +9 -3
- package/dist/internal/manifest-normalizer.mjs.map +1 -1
- package/dist/merge.cjs +19 -1
- package/dist/merge.cjs.map +1 -1
- package/dist/merge.d.cts +1 -1
- package/dist/merge.d.mts +1 -1
- package/dist/merge.mjs +19 -2
- package/dist/merge.mjs.map +1 -1
- package/dist/mf.cjs +190 -3
- package/dist/mf.cjs.map +1 -1
- package/dist/mf.d.cts +24 -2
- package/dist/mf.d.mts +24 -2
- package/dist/mf.mjs +189 -4
- package/dist/mf.mjs.map +1 -1
- package/dist/near-cli.cjs +59 -91
- package/dist/near-cli.cjs.map +1 -1
- package/dist/near-cli.mjs +58 -90
- package/dist/near-cli.mjs.map +1 -1
- package/dist/near-signer.cjs +73 -0
- package/dist/near-signer.cjs.map +1 -0
- package/dist/near-signer.mjs +70 -0
- package/dist/near-signer.mjs.map +1 -0
- package/dist/network.cjs +0 -1
- package/dist/network.cjs.map +1 -1
- package/dist/orchestrator.cjs +256 -87
- package/dist/orchestrator.cjs.map +1 -1
- package/dist/orchestrator.mjs +248 -87
- package/dist/orchestrator.mjs.map +1 -1
- package/dist/platform-deploy.cjs +81 -0
- package/dist/platform-deploy.cjs.map +1 -0
- package/dist/platform-deploy.mjs +80 -0
- package/dist/platform-deploy.mjs.map +1 -0
- package/dist/plugin.cjs +54 -1389
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.cts +6 -896
- package/dist/plugin.d.mts +6 -896
- package/dist/plugin.mjs +53 -1387
- package/dist/plugin.mjs.map +1 -1
- package/dist/process-kill.cjs +44 -0
- package/dist/process-kill.cjs.map +1 -0
- package/dist/process-kill.mjs +43 -0
- package/dist/process-kill.mjs.map +1 -0
- package/dist/process-registry.cjs +64 -9
- package/dist/process-registry.cjs.map +1 -1
- package/dist/process-registry.mjs +61 -10
- package/dist/process-registry.mjs.map +1 -1
- package/dist/progress.cjs +45 -0
- package/dist/progress.cjs.map +1 -0
- package/dist/progress.d.cts +13 -0
- package/dist/progress.d.mts +13 -0
- package/dist/progress.mjs +42 -0
- package/dist/progress.mjs.map +1 -0
- package/dist/publish.cjs +513 -79
- package/dist/publish.cjs.map +1 -1
- package/dist/publish.mjs +515 -82
- package/dist/publish.mjs.map +1 -1
- package/dist/registry-use.cjs +41 -0
- package/dist/registry-use.cjs.map +1 -0
- package/dist/registry-use.mjs +40 -0
- package/dist/registry-use.mjs.map +1 -0
- package/dist/resolution/session.cjs +335 -0
- package/dist/resolution/session.cjs.map +1 -0
- package/dist/resolution/session.d.cts +105 -0
- package/dist/resolution/session.d.mts +105 -0
- package/dist/resolution/session.mjs +331 -0
- package/dist/resolution/session.mjs.map +1 -0
- package/dist/rollback.cjs +131 -0
- package/dist/rollback.cjs.map +1 -0
- package/dist/rollback.mjs +128 -0
- package/dist/rollback.mjs.map +1 -0
- package/dist/sdk.cjs +7 -7
- package/dist/sdk.d.cts +3 -3
- package/dist/sdk.d.mts +3 -3
- package/dist/sdk.mjs +2 -2
- package/dist/service-descriptor.cjs +67 -34
- package/dist/service-descriptor.cjs.map +1 -1
- package/dist/service-descriptor.d.cts +4 -1
- package/dist/service-descriptor.d.mts +3 -0
- package/dist/service-descriptor.mjs +63 -35
- package/dist/service-descriptor.mjs.map +1 -1
- package/dist/shared-deps.cjs +17 -16
- package/dist/shared-deps.cjs.map +1 -1
- package/dist/shared-deps.mjs +17 -16
- package/dist/shared-deps.mjs.map +1 -1
- package/dist/start-config-source.cjs +24 -0
- package/dist/start-config-source.cjs.map +1 -0
- package/dist/start-config-source.d.cts +29 -0
- package/dist/start-config-source.d.mts +29 -0
- package/dist/start-config-source.mjs +22 -0
- package/dist/start-config-source.mjs.map +1 -0
- package/dist/storage-upload.cjs +145 -0
- package/dist/storage-upload.cjs.map +1 -0
- package/dist/storage-upload.mjs +143 -0
- package/dist/storage-upload.mjs.map +1 -0
- package/dist/types.cjs +126 -20
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +867 -585
- package/dist/types.d.mts +867 -585
- package/dist/types.mjs +307 -208
- package/dist/types.mjs.map +1 -1
- package/dist/ui/api.cjs +105 -0
- package/dist/ui/api.cjs.map +1 -0
- package/dist/ui/api.d.cts +31 -0
- package/dist/ui/api.d.mts +31 -0
- package/dist/ui/api.mjs +99 -0
- package/dist/ui/api.mjs.map +1 -0
- package/dist/ui/auth-guards.cjs +50 -0
- package/dist/ui/auth-guards.cjs.map +1 -0
- package/dist/ui/auth-guards.d.cts +39 -0
- package/dist/ui/auth-guards.d.mts +39 -0
- package/dist/ui/auth-guards.mjs +48 -0
- package/dist/ui/auth-guards.mjs.map +1 -0
- package/dist/ui/auth.cjs +197 -0
- package/dist/ui/auth.cjs.map +1 -0
- package/dist/ui/auth.d.cts +56 -0
- package/dist/ui/auth.d.mts +56 -0
- package/dist/ui/auth.mjs +179 -0
- package/dist/ui/auth.mjs.map +1 -0
- package/dist/ui/entry.cjs +16 -0
- package/dist/ui/entry.cjs.map +1 -0
- package/dist/ui/entry.d.cts +12 -0
- package/dist/ui/entry.d.mts +12 -0
- package/dist/ui/entry.mjs +15 -0
- package/dist/ui/entry.mjs.map +1 -0
- package/dist/ui/head.cjs +14 -7
- package/dist/ui/head.cjs.map +1 -1
- package/dist/ui/head.mjs +15 -7
- package/dist/ui/head.mjs.map +1 -1
- package/dist/ui/hydrate.cjs +265 -0
- package/dist/ui/hydrate.cjs.map +1 -0
- package/dist/ui/hydrate.d.cts +48 -0
- package/dist/ui/hydrate.d.mts +48 -0
- package/dist/ui/hydrate.mjs +263 -0
- package/dist/ui/hydrate.mjs.map +1 -0
- package/dist/ui/i18n.cjs +153 -0
- package/dist/ui/i18n.cjs.map +1 -0
- package/dist/ui/i18n.d.cts +29 -0
- package/dist/ui/i18n.d.mts +29 -0
- package/dist/ui/i18n.mjs +140 -0
- package/dist/ui/i18n.mjs.map +1 -0
- package/dist/ui/index.cjs +19 -1
- package/dist/ui/index.d.cts +6 -3
- package/dist/ui/index.d.mts +6 -3
- package/dist/ui/index.mjs +5 -2
- package/dist/ui/locale.cjs +53 -0
- package/dist/ui/locale.cjs.map +1 -0
- package/dist/ui/locale.d.cts +18 -0
- package/dist/ui/locale.d.mts +18 -0
- package/dist/ui/locale.mjs +49 -0
- package/dist/ui/locale.mjs.map +1 -0
- package/dist/ui/manifest/index.cjs +25 -0
- package/dist/ui/manifest/index.cjs.map +1 -0
- package/dist/ui/manifest/index.d.cts +9 -0
- package/dist/ui/manifest/index.d.mts +9 -0
- package/dist/ui/manifest/index.mjs +13 -0
- package/dist/ui/manifest/index.mjs.map +1 -0
- package/dist/ui/manifest-generator.cjs +8 -0
- package/dist/ui/manifest-generator.d.cts +1 -0
- package/dist/ui/manifest-generator.d.mts +1 -0
- package/dist/ui/manifest-generator.mjs +3 -0
- package/dist/ui/message-catalogs.cjs +8 -0
- package/dist/ui/message-catalogs.cjs.map +1 -0
- package/dist/ui/message-catalogs.d.cts +5 -0
- package/dist/ui/message-catalogs.d.mts +5 -0
- package/dist/ui/message-catalogs.mjs +8 -0
- package/dist/ui/message-catalogs.mjs.map +1 -0
- package/dist/ui/metadata.cjs +0 -1
- package/dist/ui/metadata.cjs.map +1 -1
- package/dist/ui/metadata.d.cts +1 -1
- package/dist/ui/metadata.d.mts +1 -1
- package/dist/ui/plugin-path.cjs +37 -0
- package/dist/ui/plugin-path.cjs.map +1 -0
- package/dist/ui/plugin-path.d.cts +25 -0
- package/dist/ui/plugin-path.d.mts +25 -0
- package/dist/ui/plugin-path.mjs +35 -0
- package/dist/ui/plugin-path.mjs.map +1 -0
- package/dist/ui/router-client.cjs +61 -0
- package/dist/ui/router-client.cjs.map +1 -0
- package/dist/ui/router-client.d.cts +20 -0
- package/dist/ui/router-client.d.mts +20 -0
- package/dist/ui/router-client.mjs +60 -0
- package/dist/ui/router-client.mjs.map +1 -0
- package/dist/ui/router-defaults.cjs +48 -0
- package/dist/ui/router-defaults.cjs.map +1 -0
- package/dist/ui/router-defaults.d.cts +8 -0
- package/dist/ui/router-defaults.d.mts +8 -0
- package/dist/ui/router-defaults.mjs +45 -0
- package/dist/ui/router-defaults.mjs.map +1 -0
- package/dist/ui/router-error.cjs +70 -0
- package/dist/ui/router-error.cjs.map +1 -0
- package/dist/ui/router-error.d.cts +19 -0
- package/dist/ui/router-error.d.mts +19 -0
- package/dist/ui/router-error.mjs +69 -0
- package/dist/ui/router-error.mjs.map +1 -0
- package/dist/ui/router-server.cjs +153 -0
- package/dist/ui/router-server.cjs.map +1 -0
- package/dist/ui/router-server.d.cts +38 -0
- package/dist/ui/router-server.d.mts +38 -0
- package/dist/ui/router-server.mjs +152 -0
- package/dist/ui/router-server.mjs.map +1 -0
- package/dist/ui/router.cjs +4 -16
- package/dist/ui/router.cjs.map +1 -1
- package/dist/ui/router.mjs +4 -15
- package/dist/ui/router.mjs.map +1 -1
- package/dist/ui/runtime.cjs +5 -1
- package/dist/ui/runtime.cjs.map +1 -1
- package/dist/ui/runtime.d.cts +2 -1
- package/dist/ui/runtime.d.mts +2 -1
- package/dist/ui/runtime.mjs +5 -1
- package/dist/ui/runtime.mjs.map +1 -1
- package/dist/ui/slot.cjs +34 -0
- package/dist/ui/slot.cjs.map +1 -0
- package/dist/ui/slot.d.cts +43 -0
- package/dist/ui/slot.d.mts +43 -0
- package/dist/ui/slot.mjs +34 -0
- package/dist/ui/slot.mjs.map +1 -0
- package/dist/ui/tenant.cjs +300 -0
- package/dist/ui/tenant.cjs.map +1 -0
- package/dist/ui/tenant.d.cts +122 -0
- package/dist/ui/tenant.d.mts +122 -0
- package/dist/ui/tenant.mjs +279 -0
- package/dist/ui/tenant.mjs.map +1 -0
- package/dist/ui/types.d.cts +32 -2
- package/dist/ui/types.d.mts +32 -2
- package/dist/ui/version-check.cjs +47 -0
- package/dist/ui/version-check.cjs.map +1 -0
- package/dist/ui/version-check.d.cts +23 -0
- package/dist/ui/version-check.d.mts +23 -0
- package/dist/ui/version-check.mjs +46 -0
- package/dist/ui/version-check.mjs.map +1 -0
- package/dist/utils/banner.cjs +2 -2
- package/dist/utils/banner.cjs.map +1 -1
- package/dist/utils/banner.mjs +2 -2
- package/dist/utils/banner.mjs.map +1 -1
- package/dist/utils/linkify.cjs +1 -1
- package/dist/utils/linkify.cjs.map +1 -1
- package/dist/utils/linkify.mjs +1 -0
- package/dist/utils/linkify.mjs.map +1 -1
- package/dist/utils/run.cjs +6 -6
- package/dist/utils/run.cjs.map +1 -1
- package/dist/utils/run.mjs +6 -6
- package/dist/utils/run.mjs.map +1 -1
- package/dist/utils/save-config.cjs +12 -0
- package/dist/utils/save-config.cjs.map +1 -1
- package/dist/utils/save-config.mjs +12 -0
- package/dist/utils/save-config.mjs.map +1 -1
- package/dist/utils/snapshot-hash.cjs +10 -0
- package/dist/utils/snapshot-hash.cjs.map +1 -0
- package/dist/utils/snapshot-hash.mjs +10 -0
- package/dist/utils/snapshot-hash.mjs.map +1 -0
- package/dist/utils/string.cjs +0 -1
- package/dist/utils/string.cjs.map +1 -1
- package/dist/utils/theme.cjs +30 -12
- package/dist/utils/theme.cjs.map +1 -1
- package/dist/utils/theme.mjs +30 -11
- package/dist/utils/theme.mjs.map +1 -1
- package/dist/version-manifest-deploy.cjs +50 -0
- package/dist/version-manifest-deploy.cjs.map +1 -0
- package/dist/version-manifest-deploy.mjs +49 -0
- package/dist/version-manifest-deploy.mjs.map +1 -0
- package/dist/version-manifest-resolve.cjs +42 -0
- package/dist/version-manifest-resolve.cjs.map +1 -0
- package/dist/version-manifest-resolve.d.cts +38 -0
- package/dist/version-manifest-resolve.d.mts +38 -0
- package/dist/version-manifest-resolve.mjs +40 -0
- package/dist/version-manifest-resolve.mjs.map +1 -0
- package/dist/version-status.cjs +18 -0
- package/dist/version-status.cjs.map +1 -0
- package/dist/version-status.d.cts +22 -0
- package/dist/version-status.d.mts +22 -0
- package/dist/version-status.mjs +17 -0
- package/dist/version-status.mjs.map +1 -0
- package/dist/workspace-catalog.cjs +53 -0
- package/dist/workspace-catalog.cjs.map +1 -0
- package/dist/workspace-catalog.mjs +51 -0
- package/dist/workspace-catalog.mjs.map +1 -0
- package/dist/workspace.cjs +237 -0
- package/dist/workspace.cjs.map +1 -0
- package/dist/workspace.mjs +233 -0
- package/dist/workspace.mjs.map +1 -0
- package/package.json +179 -27
- package/skills/add-a-route/SKILL.md +132 -0
- package/skills/api-and-auth/SKILL.md +87 -21
- package/skills/api-and-auth/references/middleware.md +1 -1
- package/skills/cli-reference/SKILL.md +48 -21
- package/skills/code-style/SKILL.md +8 -0
- package/skills/dev-workflow/SKILL.md +50 -26
- package/skills/extends-config/SKILL.md +31 -19
- package/skills/init-upgrade/SKILL.md +29 -16
- package/skills/plugin-development/SKILL.md +46 -112
- package/skills/plugin-development/references/database.md +82 -0
- package/skills/plugin-development/references/request-context.md +67 -0
- package/skills/publish-sync/SKILL.md +99 -22
- package/skills/registry/SKILL.md +82 -0
- package/skills/super-app/SKILL.md +25 -15
- package/skills/talk-to-the-app/SKILL.md +138 -0
- package/skills/ui-integration/SKILL.md +93 -11
- package/dist/cli/db-studio.cjs +0 -131
- package/dist/cli/db-studio.cjs.map +0 -1
- package/dist/cli/db-studio.mjs +0 -127
- package/dist/cli/db-studio.mjs.map +0 -1
- package/dist/cli/init.d.cts.map +0 -1
- package/dist/cli/init.d.mts.map +0 -1
- package/dist/components/dev-view.cjs +0 -309
- package/dist/components/dev-view.cjs.map +0 -1
- package/dist/components/dev-view.mjs +0 -309
- package/dist/components/dev-view.mjs.map +0 -1
- package/dist/components/streaming-view.cjs +0 -134
- package/dist/components/streaming-view.cjs.map +0 -1
- package/dist/components/streaming-view.mjs +0 -132
- package/dist/components/streaming-view.mjs.map +0 -1
- package/dist/config.d.cts.map +0 -1
- package/dist/config.d.mts.map +0 -1
- package/dist/contract.d.cts.map +0 -1
- package/dist/contract.d.mts.map +0 -1
- package/dist/contract.meta.d.cts.map +0 -1
- package/dist/contract.meta.d.mts.map +0 -1
- package/dist/dag.d.cts.map +0 -1
- package/dist/dag.d.mts.map +0 -1
- package/dist/db.cjs +0 -81
- package/dist/db.cjs.map +0 -1
- package/dist/db.d.cts +0 -30
- package/dist/db.d.cts.map +0 -1
- package/dist/db.d.mts +0 -30
- package/dist/db.d.mts.map +0 -1
- package/dist/db.mjs +0 -75
- package/dist/db.mjs.map +0 -1
- package/dist/fastkv.d.cts.map +0 -1
- package/dist/fastkv.d.mts.map +0 -1
- package/dist/integrity.d.cts.map +0 -1
- package/dist/integrity.d.mts.map +0 -1
- package/dist/merge.d.cts.map +0 -1
- package/dist/merge.d.mts.map +0 -1
- package/dist/mf.d.cts.map +0 -1
- package/dist/mf.d.mts.map +0 -1
- package/dist/plugin.d.cts.map +0 -1
- package/dist/plugin.d.mts.map +0 -1
- package/dist/service-descriptor.d.cts.map +0 -1
- package/dist/service-descriptor.d.mts.map +0 -1
- package/dist/types.d.cts.map +0 -1
- package/dist/types.d.mts.map +0 -1
- package/dist/ui/head.d.cts.map +0 -1
- package/dist/ui/head.d.mts.map +0 -1
- package/dist/ui/metadata.d.cts.map +0 -1
- package/dist/ui/metadata.d.mts.map +0 -1
- package/dist/ui/router.d.cts.map +0 -1
- package/dist/ui/router.d.mts.map +0 -1
- package/dist/ui/runtime.d.cts.map +0 -1
- package/dist/ui/runtime.d.mts.map +0 -1
- package/dist/ui/types.d.cts.map +0 -1
- package/dist/ui/types.d.mts.map +0 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { BosConfig, BosConfigInput, RuntimeConfig } from "../types.cjs";
|
|
2
|
+
import { BosEnv } from "../merge.cjs";
|
|
3
|
+
import "../config.cjs";
|
|
4
|
+
//#region src/resolution/session.d.ts
|
|
5
|
+
interface ResolutionRequest {
|
|
6
|
+
cwd?: string;
|
|
7
|
+
path?: string;
|
|
8
|
+
bosUrl?: string;
|
|
9
|
+
account?: string;
|
|
10
|
+
gateway?: string;
|
|
11
|
+
registry?: string;
|
|
12
|
+
sourceDir?: string;
|
|
13
|
+
env?: BosEnv;
|
|
14
|
+
remotePlugins?: string[];
|
|
15
|
+
collectCatalogs?: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface ResolutionIo {
|
|
18
|
+
fetchBosConfig?(bosUrl: string, registry?: string): Promise<unknown>;
|
|
19
|
+
readFileOrNull?(path: string): Promise<string | null>;
|
|
20
|
+
importModule?(path: string): Promise<Record<string, unknown>>;
|
|
21
|
+
}
|
|
22
|
+
interface RuntimeSources {
|
|
23
|
+
uiSource?: "local" | "remote";
|
|
24
|
+
apiSource?: "local" | "remote";
|
|
25
|
+
authSource?: "local" | "remote";
|
|
26
|
+
hostSource?: "local" | "remote";
|
|
27
|
+
env?: "development" | "production";
|
|
28
|
+
plugins?: Record<string, unknown>;
|
|
29
|
+
}
|
|
30
|
+
interface WalkLink {
|
|
31
|
+
ref: string;
|
|
32
|
+
config: BosConfigInput;
|
|
33
|
+
baseDir: string;
|
|
34
|
+
sourceDir?: string;
|
|
35
|
+
isLeaf: boolean;
|
|
36
|
+
}
|
|
37
|
+
interface SessionParts {
|
|
38
|
+
config: BosConfig;
|
|
39
|
+
runtime: RuntimeConfig;
|
|
40
|
+
root: string;
|
|
41
|
+
path: string | null;
|
|
42
|
+
chain: string[];
|
|
43
|
+
rawConfig: BosConfigInput | null;
|
|
44
|
+
catalog: Record<string, string> | null;
|
|
45
|
+
repository: string | undefined;
|
|
46
|
+
env: BosEnv;
|
|
47
|
+
warnings: string[];
|
|
48
|
+
}
|
|
49
|
+
declare class ResolutionSession {
|
|
50
|
+
#private;
|
|
51
|
+
readonly config: BosConfig | null;
|
|
52
|
+
readonly runtime: RuntimeConfig | null;
|
|
53
|
+
readonly root: string;
|
|
54
|
+
readonly path: string | null;
|
|
55
|
+
readonly chain: readonly string[];
|
|
56
|
+
readonly rawConfig: BosConfigInput | null;
|
|
57
|
+
readonly catalog: Record<string, string> | null;
|
|
58
|
+
readonly repository: string | undefined;
|
|
59
|
+
constructor(parts: SessionParts);
|
|
60
|
+
static fromParts(parts: {
|
|
61
|
+
config: BosConfig;
|
|
62
|
+
runtime: RuntimeConfig;
|
|
63
|
+
root: string;
|
|
64
|
+
source?: {
|
|
65
|
+
path?: string;
|
|
66
|
+
extended?: string[];
|
|
67
|
+
remote?: boolean;
|
|
68
|
+
};
|
|
69
|
+
warnings?: string[];
|
|
70
|
+
}): ResolutionSession;
|
|
71
|
+
get warnings(): readonly string[];
|
|
72
|
+
buildRuntime(sources?: RuntimeSources): Promise<RuntimeConfig>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Opens a resolution session for the requested config source. In development,
|
|
76
|
+
* a local leaf's `bos.dev.ts` overlay (beside the discovered entry config) is
|
|
77
|
+
* merged child-wins over the extended input before parsing; overlays are never
|
|
78
|
+
* read for `bos://` entries or in production/staging.
|
|
79
|
+
*/
|
|
80
|
+
declare function openResolution(request?: ResolutionRequest, io?: ResolutionIo): Promise<ResolutionSession | null>;
|
|
81
|
+
declare function walkExtendsChain(entry: string, options: {
|
|
82
|
+
env?: BosEnv;
|
|
83
|
+
io?: ResolutionIo;
|
|
84
|
+
registry?: string;
|
|
85
|
+
collectCatalogs?: boolean;
|
|
86
|
+
visit(link: WalkLink): Promise<void>;
|
|
87
|
+
registerCleanup?(fn: () => Promise<void>): void;
|
|
88
|
+
}): Promise<{
|
|
89
|
+
chain: string[];
|
|
90
|
+
config: BosConfigInput;
|
|
91
|
+
}>;
|
|
92
|
+
/**
|
|
93
|
+
* @internal — resolves the fully merged (parent-merged, un-parsed)
|
|
94
|
+
* `BosConfigInput` for a config entry. Used by config.ts's
|
|
95
|
+
* `resolveComposableReference` for plugin-entry extends resolution.
|
|
96
|
+
*/
|
|
97
|
+
declare function resolveMergedConfigInput(entry: string, options?: {
|
|
98
|
+
baseDir?: string;
|
|
99
|
+
env?: BosEnv;
|
|
100
|
+
io?: ResolutionIo;
|
|
101
|
+
registry?: string;
|
|
102
|
+
}): Promise<BosConfigInput>;
|
|
103
|
+
//#endregion
|
|
104
|
+
export { ResolutionIo, ResolutionRequest, ResolutionSession, RuntimeSources, WalkLink, openResolution, resolveMergedConfigInput, walkExtendsChain };
|
|
105
|
+
//# sourceMappingURL=session.d.cts.map
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { BosConfig, BosConfigInput, RuntimeConfig } from "../types.mjs";
|
|
2
|
+
import { BosEnv } from "../merge.mjs";
|
|
3
|
+
import "../config.mjs";
|
|
4
|
+
//#region src/resolution/session.d.ts
|
|
5
|
+
interface ResolutionRequest {
|
|
6
|
+
cwd?: string;
|
|
7
|
+
path?: string;
|
|
8
|
+
bosUrl?: string;
|
|
9
|
+
account?: string;
|
|
10
|
+
gateway?: string;
|
|
11
|
+
registry?: string;
|
|
12
|
+
sourceDir?: string;
|
|
13
|
+
env?: BosEnv;
|
|
14
|
+
remotePlugins?: string[];
|
|
15
|
+
collectCatalogs?: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface ResolutionIo {
|
|
18
|
+
fetchBosConfig?(bosUrl: string, registry?: string): Promise<unknown>;
|
|
19
|
+
readFileOrNull?(path: string): Promise<string | null>;
|
|
20
|
+
importModule?(path: string): Promise<Record<string, unknown>>;
|
|
21
|
+
}
|
|
22
|
+
interface RuntimeSources {
|
|
23
|
+
uiSource?: "local" | "remote";
|
|
24
|
+
apiSource?: "local" | "remote";
|
|
25
|
+
authSource?: "local" | "remote";
|
|
26
|
+
hostSource?: "local" | "remote";
|
|
27
|
+
env?: "development" | "production";
|
|
28
|
+
plugins?: Record<string, unknown>;
|
|
29
|
+
}
|
|
30
|
+
interface WalkLink {
|
|
31
|
+
ref: string;
|
|
32
|
+
config: BosConfigInput;
|
|
33
|
+
baseDir: string;
|
|
34
|
+
sourceDir?: string;
|
|
35
|
+
isLeaf: boolean;
|
|
36
|
+
}
|
|
37
|
+
interface SessionParts {
|
|
38
|
+
config: BosConfig;
|
|
39
|
+
runtime: RuntimeConfig;
|
|
40
|
+
root: string;
|
|
41
|
+
path: string | null;
|
|
42
|
+
chain: string[];
|
|
43
|
+
rawConfig: BosConfigInput | null;
|
|
44
|
+
catalog: Record<string, string> | null;
|
|
45
|
+
repository: string | undefined;
|
|
46
|
+
env: BosEnv;
|
|
47
|
+
warnings: string[];
|
|
48
|
+
}
|
|
49
|
+
declare class ResolutionSession {
|
|
50
|
+
#private;
|
|
51
|
+
readonly config: BosConfig | null;
|
|
52
|
+
readonly runtime: RuntimeConfig | null;
|
|
53
|
+
readonly root: string;
|
|
54
|
+
readonly path: string | null;
|
|
55
|
+
readonly chain: readonly string[];
|
|
56
|
+
readonly rawConfig: BosConfigInput | null;
|
|
57
|
+
readonly catalog: Record<string, string> | null;
|
|
58
|
+
readonly repository: string | undefined;
|
|
59
|
+
constructor(parts: SessionParts);
|
|
60
|
+
static fromParts(parts: {
|
|
61
|
+
config: BosConfig;
|
|
62
|
+
runtime: RuntimeConfig;
|
|
63
|
+
root: string;
|
|
64
|
+
source?: {
|
|
65
|
+
path?: string;
|
|
66
|
+
extended?: string[];
|
|
67
|
+
remote?: boolean;
|
|
68
|
+
};
|
|
69
|
+
warnings?: string[];
|
|
70
|
+
}): ResolutionSession;
|
|
71
|
+
get warnings(): readonly string[];
|
|
72
|
+
buildRuntime(sources?: RuntimeSources): Promise<RuntimeConfig>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Opens a resolution session for the requested config source. In development,
|
|
76
|
+
* a local leaf's `bos.dev.ts` overlay (beside the discovered entry config) is
|
|
77
|
+
* merged child-wins over the extended input before parsing; overlays are never
|
|
78
|
+
* read for `bos://` entries or in production/staging.
|
|
79
|
+
*/
|
|
80
|
+
declare function openResolution(request?: ResolutionRequest, io?: ResolutionIo): Promise<ResolutionSession | null>;
|
|
81
|
+
declare function walkExtendsChain(entry: string, options: {
|
|
82
|
+
env?: BosEnv;
|
|
83
|
+
io?: ResolutionIo;
|
|
84
|
+
registry?: string;
|
|
85
|
+
collectCatalogs?: boolean;
|
|
86
|
+
visit(link: WalkLink): Promise<void>;
|
|
87
|
+
registerCleanup?(fn: () => Promise<void>): void;
|
|
88
|
+
}): Promise<{
|
|
89
|
+
chain: string[];
|
|
90
|
+
config: BosConfigInput;
|
|
91
|
+
}>;
|
|
92
|
+
/**
|
|
93
|
+
* @internal — resolves the fully merged (parent-merged, un-parsed)
|
|
94
|
+
* `BosConfigInput` for a config entry. Used by config.ts's
|
|
95
|
+
* `resolveComposableReference` for plugin-entry extends resolution.
|
|
96
|
+
*/
|
|
97
|
+
declare function resolveMergedConfigInput(entry: string, options?: {
|
|
98
|
+
baseDir?: string;
|
|
99
|
+
env?: BosEnv;
|
|
100
|
+
io?: ResolutionIo;
|
|
101
|
+
registry?: string;
|
|
102
|
+
}): Promise<BosConfigInput>;
|
|
103
|
+
//#endregion
|
|
104
|
+
export { ResolutionIo, ResolutionRequest, ResolutionSession, RuntimeSources, WalkLink, openResolution, resolveMergedConfigInput, walkExtendsChain };
|
|
105
|
+
//# sourceMappingURL=session.d.mts.map
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { mergeBosConfigWithExtends, resolveExtendsRef } from "../merge.mjs";
|
|
2
|
+
import { BosConfigSchema } from "../types.mjs";
|
|
3
|
+
import { applyDevOverlay } from "../descriptor/resolve.mjs";
|
|
4
|
+
import { fetchBosConfigFromFastKv } from "../fastkv.mjs";
|
|
5
|
+
import { CircularExtendsError, ConfigExtendsError, ConfigLoadError, ConfigNotfoundError, DEV_OVERLAY_FILENAME, buildRuntimeConfig, buildRuntimePluginsForConfig, defaultConfigEnv, findConfigPath, getConfigBaseDir, isAppDescriptorPath, loadAppDescriptorConfig, parseAppDescriptorModule, parseDevOverlayModule, parseExtendsTarget, resolveConfigComposableEntries, runWithConfigWarningSink } from "../config.mjs";
|
|
6
|
+
import { parseBosRef } from "../cli/utils/helpers.mjs";
|
|
7
|
+
import { readWorkspaceCatalog, resolveSourceDir } from "../cli/init.mjs";
|
|
8
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
9
|
+
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
10
|
+
import { pathToFileURL } from "node:url";
|
|
11
|
+
|
|
12
|
+
//#region src/resolution/session.ts
|
|
13
|
+
async function defaultImportModule(path) {
|
|
14
|
+
return import(
|
|
15
|
+
/* webpackIgnore: true */
|
|
16
|
+
pathToFileURL(path).href
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
function resolveIo(io) {
|
|
20
|
+
return {
|
|
21
|
+
fetchBosConfig: io?.fetchBosConfig ?? (async (bosUrl, registry) => fetchBosConfigFromFastKv(bosUrl, registry)),
|
|
22
|
+
readFileOrNull: io?.readFileOrNull ?? (async (path) => existsSync(path) ? readFileSync(path, "utf-8") : null),
|
|
23
|
+
importModule: io?.importModule ?? defaultImportModule
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async function loadNodeConfig(ref, baseDir, io, registry) {
|
|
27
|
+
if (ref.startsWith("bos://")) return await io.fetchBosConfig(ref, registry);
|
|
28
|
+
const resolvedPath = isAbsolute(ref) ? ref : resolve(baseDir, ref);
|
|
29
|
+
if (isAppDescriptorPath(resolvedPath)) return io.importModule === defaultImportModule ? loadAppDescriptorConfig(resolvedPath) : parseAppDescriptorModule(await io.importModule(resolvedPath), resolvedPath);
|
|
30
|
+
const content = await io.readFileOrNull(resolvedPath);
|
|
31
|
+
if (content === null) throw new ConfigLoadError({
|
|
32
|
+
path: resolvedPath,
|
|
33
|
+
message: `Config file not found: ${resolvedPath}`
|
|
34
|
+
});
|
|
35
|
+
return JSON.parse(content);
|
|
36
|
+
}
|
|
37
|
+
async function walkExtends(ref, baseDir, visited, chain, options) {
|
|
38
|
+
if (visited.has(ref)) throw new CircularExtendsError({
|
|
39
|
+
chain: [...visited, ref],
|
|
40
|
+
message: `Circular extends detected: ${[...visited, ref].join(" -> ")}`
|
|
41
|
+
});
|
|
42
|
+
let config;
|
|
43
|
+
let nodeBaseDir = baseDir;
|
|
44
|
+
let sourceDir;
|
|
45
|
+
if (ref.startsWith("bos://") && options.collectCatalogs) {
|
|
46
|
+
const parsed = parseBosRef(ref);
|
|
47
|
+
if (!parsed) throw new ConfigLoadError({
|
|
48
|
+
path: ref,
|
|
49
|
+
message: `Invalid bos ref: ${ref}`
|
|
50
|
+
});
|
|
51
|
+
const sourceResult = await resolveSourceDir({
|
|
52
|
+
extendsAccount: parsed.account,
|
|
53
|
+
extendsGateway: parsed.gateway
|
|
54
|
+
});
|
|
55
|
+
config = sourceResult.parentConfig;
|
|
56
|
+
sourceDir = sourceResult.sourceDir || void 0;
|
|
57
|
+
options.registerCleanup?.(sourceResult.cleanup);
|
|
58
|
+
nodeBaseDir = sourceDir ?? baseDir;
|
|
59
|
+
} else if (ref.startsWith("bos://")) config = await loadNodeConfig(ref, baseDir, options.io, options.registry);
|
|
60
|
+
else {
|
|
61
|
+
const resolvedPath = isAbsolute(ref) ? ref : resolve(baseDir, ref);
|
|
62
|
+
nodeBaseDir = dirname(resolvedPath);
|
|
63
|
+
config = await loadNodeConfig(ref, nodeBaseDir, options.io, options.registry);
|
|
64
|
+
}
|
|
65
|
+
chain.push(ref);
|
|
66
|
+
const extendsRef = config.extends ? resolveExtendsRef(config.extends, options.env) : void 0;
|
|
67
|
+
if (!extendsRef) {
|
|
68
|
+
await options.visit?.({
|
|
69
|
+
ref,
|
|
70
|
+
config,
|
|
71
|
+
baseDir: nodeBaseDir,
|
|
72
|
+
sourceDir,
|
|
73
|
+
isLeaf: true
|
|
74
|
+
});
|
|
75
|
+
return config;
|
|
76
|
+
}
|
|
77
|
+
const parsedParentRef = parseExtendsTarget(extendsRef);
|
|
78
|
+
const parentBaseDir = getConfigBaseDir(parsedParentRef.configPath, nodeBaseDir);
|
|
79
|
+
if (options.collectCatalogs && !canResolveExtendsRef(parsedParentRef.configPath, sourceDir ?? nodeBaseDir)) {
|
|
80
|
+
await options.visit?.({
|
|
81
|
+
ref,
|
|
82
|
+
config,
|
|
83
|
+
baseDir: nodeBaseDir,
|
|
84
|
+
sourceDir,
|
|
85
|
+
isLeaf: true
|
|
86
|
+
});
|
|
87
|
+
return config;
|
|
88
|
+
}
|
|
89
|
+
const nextVisited = new Set(visited);
|
|
90
|
+
nextVisited.add(ref);
|
|
91
|
+
const parent = await walkExtends(parsedParentRef.configPath, parentBaseDir, nextVisited, chain, options);
|
|
92
|
+
await options.visit?.({
|
|
93
|
+
ref,
|
|
94
|
+
config,
|
|
95
|
+
baseDir: nodeBaseDir,
|
|
96
|
+
sourceDir,
|
|
97
|
+
isLeaf: false
|
|
98
|
+
});
|
|
99
|
+
return mergeBosConfigWithExtends(parent, config);
|
|
100
|
+
}
|
|
101
|
+
function canResolveExtendsRef(parentRef, baseDir) {
|
|
102
|
+
if (parentRef.startsWith("bos://")) return parseBosRef(parentRef) !== null;
|
|
103
|
+
if (!baseDir) return false;
|
|
104
|
+
return existsSync(resolve(baseDir, parentRef));
|
|
105
|
+
}
|
|
106
|
+
function dispatchEntry(request, cwd) {
|
|
107
|
+
if (request?.path) {
|
|
108
|
+
const configPath = request.path;
|
|
109
|
+
if (configPath.startsWith("bos://")) return {
|
|
110
|
+
entry: configPath,
|
|
111
|
+
baseDir: cwd,
|
|
112
|
+
root: cwd,
|
|
113
|
+
path: configPath,
|
|
114
|
+
remote: true
|
|
115
|
+
};
|
|
116
|
+
const baseDir = dirname(configPath);
|
|
117
|
+
return {
|
|
118
|
+
entry: configPath,
|
|
119
|
+
baseDir,
|
|
120
|
+
root: baseDir,
|
|
121
|
+
path: configPath,
|
|
122
|
+
remote: false
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
if (request?.bosUrl) return {
|
|
126
|
+
entry: request.bosUrl,
|
|
127
|
+
baseDir: cwd,
|
|
128
|
+
root: cwd,
|
|
129
|
+
path: null,
|
|
130
|
+
remote: true
|
|
131
|
+
};
|
|
132
|
+
if (request?.account) {
|
|
133
|
+
if (!request.gateway) throw new ConfigExtendsError({ message: `Remote account "${request.account}" requires a gateway` });
|
|
134
|
+
return {
|
|
135
|
+
entry: `bos://${request.account}/${request.gateway}`,
|
|
136
|
+
baseDir: cwd,
|
|
137
|
+
root: cwd,
|
|
138
|
+
path: null,
|
|
139
|
+
remote: true
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
if (request?.sourceDir) {
|
|
143
|
+
const sourceRoot = resolve(request.sourceDir);
|
|
144
|
+
const configPath = findConfigPath(sourceRoot);
|
|
145
|
+
if (!configPath) return null;
|
|
146
|
+
return {
|
|
147
|
+
entry: configPath,
|
|
148
|
+
baseDir: dirname(configPath),
|
|
149
|
+
root: sourceRoot,
|
|
150
|
+
path: configPath,
|
|
151
|
+
remote: false
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
const configPath = findConfigPath(cwd);
|
|
155
|
+
if (!configPath) return null;
|
|
156
|
+
const baseDir = dirname(configPath);
|
|
157
|
+
return {
|
|
158
|
+
entry: configPath,
|
|
159
|
+
baseDir,
|
|
160
|
+
root: baseDir,
|
|
161
|
+
path: configPath,
|
|
162
|
+
remote: false
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
function isConfigNotFound(error) {
|
|
166
|
+
return error instanceof Error && error.message.startsWith("No config found for ");
|
|
167
|
+
}
|
|
168
|
+
var ResolutionSession = class ResolutionSession {
|
|
169
|
+
config;
|
|
170
|
+
runtime;
|
|
171
|
+
root;
|
|
172
|
+
path;
|
|
173
|
+
chain;
|
|
174
|
+
rawConfig;
|
|
175
|
+
catalog;
|
|
176
|
+
repository;
|
|
177
|
+
#env;
|
|
178
|
+
#warnings;
|
|
179
|
+
constructor(parts) {
|
|
180
|
+
this.config = parts.config;
|
|
181
|
+
this.runtime = parts.runtime;
|
|
182
|
+
this.root = parts.root;
|
|
183
|
+
this.path = parts.path;
|
|
184
|
+
this.chain = parts.chain;
|
|
185
|
+
this.rawConfig = parts.rawConfig;
|
|
186
|
+
this.catalog = parts.catalog;
|
|
187
|
+
this.repository = parts.repository;
|
|
188
|
+
this.#env = parts.env;
|
|
189
|
+
this.#warnings = parts.warnings;
|
|
190
|
+
}
|
|
191
|
+
static fromParts(parts) {
|
|
192
|
+
return new ResolutionSession({
|
|
193
|
+
config: parts.config,
|
|
194
|
+
runtime: parts.runtime,
|
|
195
|
+
root: parts.root,
|
|
196
|
+
path: parts.source?.path ?? null,
|
|
197
|
+
chain: parts.source?.extended ?? [],
|
|
198
|
+
rawConfig: null,
|
|
199
|
+
catalog: null,
|
|
200
|
+
repository: void 0,
|
|
201
|
+
env: defaultConfigEnv(),
|
|
202
|
+
warnings: [...parts.warnings ?? []]
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
get warnings() {
|
|
206
|
+
const drained = [...this.#warnings];
|
|
207
|
+
this.#warnings.length = 0;
|
|
208
|
+
return drained;
|
|
209
|
+
}
|
|
210
|
+
async buildRuntime(sources) {
|
|
211
|
+
if (!this.config) throw new ConfigNotfoundError({ message: "No config loaded in this resolution session" });
|
|
212
|
+
const config = this.config;
|
|
213
|
+
const env = sources?.env ?? this.#env;
|
|
214
|
+
return runWithConfigWarningSink(this.#warnings, () => buildRuntimeConfig(config, this.root, env, {
|
|
215
|
+
plugins: sources?.plugins ?? {},
|
|
216
|
+
uiSource: sources?.uiSource,
|
|
217
|
+
apiSource: sources?.apiSource,
|
|
218
|
+
authSource: sources?.authSource,
|
|
219
|
+
hostSource: sources?.hostSource
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
/**
|
|
224
|
+
* Opens a resolution session for the requested config source. In development,
|
|
225
|
+
* a local leaf's `bos.dev.ts` overlay (beside the discovered entry config) is
|
|
226
|
+
* merged child-wins over the extended input before parsing; overlays are never
|
|
227
|
+
* read for `bos://` entries or in production/staging.
|
|
228
|
+
*/
|
|
229
|
+
async function openResolution(request, io) {
|
|
230
|
+
const resolvedIo = resolveIo(io);
|
|
231
|
+
const env = request?.env ?? defaultConfigEnv();
|
|
232
|
+
const runtimeEnv = env === "staging" ? "production" : env;
|
|
233
|
+
const cwd = request?.cwd ?? process.cwd();
|
|
234
|
+
const collectCatalogs = request?.collectCatalogs === true;
|
|
235
|
+
const warnings = [];
|
|
236
|
+
const cleanups = [];
|
|
237
|
+
try {
|
|
238
|
+
const parts = await runWithConfigWarningSink(warnings, async () => {
|
|
239
|
+
const dispatch = dispatchEntry(request, cwd);
|
|
240
|
+
if (!dispatch) return null;
|
|
241
|
+
const chain = [];
|
|
242
|
+
const catalogs = [];
|
|
243
|
+
let repository;
|
|
244
|
+
let rawConfig;
|
|
245
|
+
try {
|
|
246
|
+
const mergedRaw = await walkExtends(dispatch.entry, dispatch.baseDir, /* @__PURE__ */ new Set(), chain, {
|
|
247
|
+
env,
|
|
248
|
+
registry: request?.registry,
|
|
249
|
+
io: resolvedIo,
|
|
250
|
+
collectCatalogs,
|
|
251
|
+
registerCleanup: (fn) => cleanups.push(fn),
|
|
252
|
+
visit: async (link) => {
|
|
253
|
+
if (link.ref === dispatch.entry) rawConfig = link.config;
|
|
254
|
+
if (!collectCatalogs) return;
|
|
255
|
+
catalogs.push(link.sourceDir ? readWorkspaceCatalog(link.sourceDir) : {});
|
|
256
|
+
const repositoryValue = link.config.repository;
|
|
257
|
+
if (typeof repositoryValue === "string") repository = repositoryValue;
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
let overlayMerged = mergedRaw;
|
|
261
|
+
if (env === "development" && !dispatch.remote) {
|
|
262
|
+
const overlayPath = join(dirname(dispatch.entry), DEV_OVERLAY_FILENAME);
|
|
263
|
+
if (await resolvedIo.readFileOrNull(overlayPath) !== null) {
|
|
264
|
+
const overlay = parseDevOverlayModule(await resolvedIo.importModule(overlayPath), overlayPath);
|
|
265
|
+
overlayMerged = applyDevOverlay(mergedRaw, overlay);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const config = await resolveConfigComposableEntries(BosConfigSchema.parse(overlayMerged), dispatch.baseDir, runtimeEnv);
|
|
269
|
+
const pluginRuntime = await buildRuntimePluginsForConfig(config, dispatch.baseDir, runtimeEnv, request?.remotePlugins) ?? {};
|
|
270
|
+
return {
|
|
271
|
+
config,
|
|
272
|
+
runtime: await buildRuntimeConfig(config, dispatch.baseDir, runtimeEnv, { plugins: pluginRuntime }),
|
|
273
|
+
root: dispatch.root,
|
|
274
|
+
path: dispatch.path,
|
|
275
|
+
chain,
|
|
276
|
+
rawConfig: rawConfig ?? null,
|
|
277
|
+
catalog: collectCatalogs ? Object.assign({}, ...[...catalogs].reverse()) : null,
|
|
278
|
+
repository
|
|
279
|
+
};
|
|
280
|
+
} catch (error) {
|
|
281
|
+
if (dispatch.remote && isConfigNotFound(error)) return null;
|
|
282
|
+
throw error;
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
if (!parts) return null;
|
|
286
|
+
return new ResolutionSession({
|
|
287
|
+
...parts,
|
|
288
|
+
env: runtimeEnv,
|
|
289
|
+
warnings
|
|
290
|
+
});
|
|
291
|
+
} finally {
|
|
292
|
+
for (const cleanup of [...cleanups].reverse()) await cleanup();
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
async function walkExtendsChain(entry, options) {
|
|
296
|
+
const baseDir = entry.startsWith("bos://") ? process.cwd() : dirname(entry);
|
|
297
|
+
const chain = [];
|
|
298
|
+
const ownedCleanups = [];
|
|
299
|
+
try {
|
|
300
|
+
return {
|
|
301
|
+
chain,
|
|
302
|
+
config: await walkExtends(entry, baseDir, /* @__PURE__ */ new Set(), chain, {
|
|
303
|
+
env: options.env ?? "development",
|
|
304
|
+
registry: options.registry,
|
|
305
|
+
io: resolveIo(options.io),
|
|
306
|
+
collectCatalogs: options.collectCatalogs === true,
|
|
307
|
+
visit: options.visit,
|
|
308
|
+
registerCleanup: options.registerCleanup ?? ((fn) => ownedCleanups.push(fn))
|
|
309
|
+
})
|
|
310
|
+
};
|
|
311
|
+
} finally {
|
|
312
|
+
for (const cleanup of [...ownedCleanups].reverse()) await cleanup();
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* @internal — resolves the fully merged (parent-merged, un-parsed)
|
|
317
|
+
* `BosConfigInput` for a config entry. Used by config.ts's
|
|
318
|
+
* `resolveComposableReference` for plugin-entry extends resolution.
|
|
319
|
+
*/
|
|
320
|
+
async function resolveMergedConfigInput(entry, options) {
|
|
321
|
+
return walkExtends(entry, options?.baseDir ?? process.cwd(), /* @__PURE__ */ new Set(), [], {
|
|
322
|
+
env: options?.env ?? "development",
|
|
323
|
+
registry: options?.registry,
|
|
324
|
+
io: resolveIo(options?.io),
|
|
325
|
+
collectCatalogs: false
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
//#endregion
|
|
330
|
+
export { ResolutionSession, openResolution, resolveMergedConfigInput, walkExtendsChain };
|
|
331
|
+
//# sourceMappingURL=session.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.mjs","names":[],"sources":["../../src/resolution/session.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { readWorkspaceCatalog, resolveSourceDir } from \"../cli/init\";\nimport { parseBosRef } from \"../cli/utils/helpers\";\nimport {\n BosConfigSchema,\n type BosEnv,\n buildRuntimeConfig,\n buildRuntimePluginsForConfig,\n CircularExtendsError,\n ConfigExtendsError,\n ConfigLoadError,\n ConfigNotfoundError,\n DEV_OVERLAY_FILENAME,\n defaultConfigEnv,\n findConfigPath,\n getConfigBaseDir,\n isAppDescriptorPath,\n loadAppDescriptorConfig,\n parseAppDescriptorModule,\n parseDevOverlayModule,\n parseExtendsTarget,\n resolveConfigComposableEntries,\n runWithConfigWarningSink,\n} from \"../config\";\nimport { applyDevOverlay } from \"../descriptor/resolve\";\nimport { fetchBosConfigFromFastKv } from \"../fastkv\";\nimport { mergeBosConfigWithExtends, resolveExtendsRef } from \"../merge\";\nimport type {\n BosConfig,\n BosConfigInput,\n ExtendsConfig,\n RuntimeConfig,\n RuntimePluginConfig,\n} from \"../types\";\n\nexport interface ResolutionRequest {\n cwd?: string;\n path?: string;\n bosUrl?: string;\n account?: string;\n gateway?: string;\n registry?: string;\n sourceDir?: string;\n env?: BosEnv;\n remotePlugins?: string[];\n collectCatalogs?: boolean;\n}\n\nexport interface ResolutionIo {\n fetchBosConfig?(bosUrl: string, registry?: string): Promise<unknown>;\n readFileOrNull?(path: string): Promise<string | null>;\n importModule?(path: string): Promise<Record<string, unknown>>;\n}\n\nexport interface RuntimeSources {\n uiSource?: \"local\" | \"remote\";\n apiSource?: \"local\" | \"remote\";\n authSource?: \"local\" | \"remote\";\n hostSource?: \"local\" | \"remote\";\n env?: \"development\" | \"production\";\n plugins?: Record<string, unknown>;\n}\n\nexport interface WalkLink {\n ref: string;\n config: BosConfigInput;\n baseDir: string;\n sourceDir?: string;\n isLeaf: boolean;\n}\n\ninterface ResolvedIo {\n fetchBosConfig: (bosUrl: string, registry?: string) => Promise<unknown>;\n readFileOrNull: (path: string) => Promise<string | null>;\n importModule: (path: string) => Promise<Record<string, unknown>>;\n}\n\ninterface EntryDispatch {\n entry: string;\n baseDir: string;\n root: string;\n path: string | null;\n remote: boolean;\n}\n\ninterface WalkOptions {\n env: BosEnv;\n registry?: string;\n io: ResolvedIo;\n collectCatalogs: boolean;\n visit?: (link: WalkLink) => Promise<void>;\n registerCleanup?: (fn: () => Promise<void>) => void;\n}\n\ninterface SessionParts {\n config: BosConfig;\n runtime: RuntimeConfig;\n root: string;\n path: string | null;\n chain: string[];\n rawConfig: BosConfigInput | null;\n catalog: Record<string, string> | null;\n repository: string | undefined;\n env: BosEnv;\n warnings: string[];\n}\n\nasync function defaultImportModule(path: string): Promise<Record<string, unknown>> {\n return import(/* webpackIgnore: true */ pathToFileURL(path).href);\n}\n\nfunction resolveIo(io?: ResolutionIo): ResolvedIo {\n return {\n fetchBosConfig:\n io?.fetchBosConfig ??\n (async (bosUrl, registry) => fetchBosConfigFromFastKv(bosUrl, registry)),\n readFileOrNull:\n io?.readFileOrNull ??\n (async (path) => (existsSync(path) ? readFileSync(path, \"utf-8\") : null)),\n importModule: io?.importModule ?? defaultImportModule,\n };\n}\n\nasync function loadNodeConfig(\n ref: string,\n baseDir: string,\n io: ResolvedIo,\n registry?: string,\n): Promise<BosConfigInput> {\n if (ref.startsWith(\"bos://\")) {\n return (await io.fetchBosConfig(ref, registry)) as BosConfigInput;\n }\n\n const resolvedPath = isAbsolute(ref) ? ref : resolve(baseDir, ref);\n if (isAppDescriptorPath(resolvedPath)) {\n return io.importModule === defaultImportModule\n ? loadAppDescriptorConfig(resolvedPath)\n : parseAppDescriptorModule(await io.importModule(resolvedPath), resolvedPath);\n }\n\n const content = await io.readFileOrNull(resolvedPath);\n if (content === null) {\n throw new ConfigLoadError({\n path: resolvedPath,\n message: `Config file not found: ${resolvedPath}`,\n });\n }\n return JSON.parse(content) as BosConfigInput;\n}\n\nasync function walkExtends(\n ref: string,\n baseDir: string,\n visited: Set<string>,\n chain: string[],\n options: WalkOptions,\n): Promise<BosConfigInput> {\n if (visited.has(ref)) {\n throw new CircularExtendsError({\n chain: [...visited, ref],\n message: `Circular extends detected: ${[...visited, ref].join(\" -> \")}`,\n });\n }\n\n let config: BosConfigInput;\n let nodeBaseDir = baseDir;\n let sourceDir: string | undefined;\n\n if (ref.startsWith(\"bos://\") && options.collectCatalogs) {\n const parsed = parseBosRef(ref);\n if (!parsed) {\n throw new ConfigLoadError({ path: ref, message: `Invalid bos ref: ${ref}` });\n }\n const sourceResult = await resolveSourceDir({\n extendsAccount: parsed.account,\n extendsGateway: parsed.gateway,\n });\n config = sourceResult.parentConfig as BosConfigInput;\n sourceDir = sourceResult.sourceDir || undefined;\n options.registerCleanup?.(sourceResult.cleanup);\n nodeBaseDir = sourceDir ?? baseDir;\n } else if (ref.startsWith(\"bos://\")) {\n config = await loadNodeConfig(ref, baseDir, options.io, options.registry);\n } else {\n const resolvedPath = isAbsolute(ref) ? ref : resolve(baseDir, ref);\n nodeBaseDir = dirname(resolvedPath);\n config = await loadNodeConfig(ref, nodeBaseDir, options.io, options.registry);\n }\n\n chain.push(ref);\n\n const extendsRef = config.extends\n ? resolveExtendsRef(config.extends as string | ExtendsConfig, options.env)\n : undefined;\n\n if (!extendsRef) {\n await options.visit?.({ ref, config, baseDir: nodeBaseDir, sourceDir, isLeaf: true });\n return config;\n }\n\n const parsedParentRef = parseExtendsTarget(extendsRef);\n const parentBaseDir = getConfigBaseDir(parsedParentRef.configPath, nodeBaseDir);\n\n if (\n options.collectCatalogs &&\n !canResolveExtendsRef(parsedParentRef.configPath, sourceDir ?? nodeBaseDir)\n ) {\n await options.visit?.({ ref, config, baseDir: nodeBaseDir, sourceDir, isLeaf: true });\n return config;\n }\n\n const nextVisited = new Set(visited);\n nextVisited.add(ref);\n const parent = await walkExtends(\n parsedParentRef.configPath,\n parentBaseDir,\n nextVisited,\n chain,\n options,\n );\n\n await options.visit?.({ ref, config, baseDir: nodeBaseDir, sourceDir, isLeaf: false });\n return mergeBosConfigWithExtends(parent, config);\n}\n\nfunction canResolveExtendsRef(parentRef: string, baseDir: string | undefined): boolean {\n if (parentRef.startsWith(\"bos://\")) {\n return parseBosRef(parentRef) !== null;\n }\n if (!baseDir) {\n return false;\n }\n return existsSync(resolve(baseDir, parentRef));\n}\n\nfunction dispatchEntry(request: ResolutionRequest | undefined, cwd: string): EntryDispatch | null {\n if (request?.path) {\n const configPath = request.path;\n if (configPath.startsWith(\"bos://\")) {\n return { entry: configPath, baseDir: cwd, root: cwd, path: configPath, remote: true };\n }\n const baseDir = dirname(configPath);\n return { entry: configPath, baseDir, root: baseDir, path: configPath, remote: false };\n }\n\n if (request?.bosUrl) {\n return { entry: request.bosUrl, baseDir: cwd, root: cwd, path: null, remote: true };\n }\n\n if (request?.account) {\n if (!request.gateway) {\n throw new ConfigExtendsError({\n message: `Remote account \"${request.account}\" requires a gateway`,\n });\n }\n return {\n entry: `bos://${request.account}/${request.gateway}`,\n baseDir: cwd,\n root: cwd,\n path: null,\n remote: true,\n };\n }\n\n if (request?.sourceDir) {\n const sourceRoot = resolve(request.sourceDir);\n const configPath = findConfigPath(sourceRoot);\n if (!configPath) return null;\n const baseDir = dirname(configPath);\n return { entry: configPath, baseDir, root: sourceRoot, path: configPath, remote: false };\n }\n\n const configPath = findConfigPath(cwd);\n if (!configPath) {\n return null;\n }\n const baseDir = dirname(configPath);\n return { entry: configPath, baseDir, root: baseDir, path: configPath, remote: false };\n}\n\nfunction isConfigNotFound(error: unknown): boolean {\n return error instanceof Error && error.message.startsWith(\"No config found for \");\n}\n\nexport class ResolutionSession {\n readonly config: BosConfig | null;\n readonly runtime: RuntimeConfig | null;\n readonly root: string;\n readonly path: string | null;\n readonly chain: readonly string[];\n readonly rawConfig: BosConfigInput | null;\n readonly catalog: Record<string, string> | null;\n readonly repository: string | undefined;\n\n #env: BosEnv;\n #warnings: string[];\n\n constructor(parts: SessionParts) {\n this.config = parts.config;\n this.runtime = parts.runtime;\n this.root = parts.root;\n this.path = parts.path;\n this.chain = parts.chain;\n this.rawConfig = parts.rawConfig;\n this.catalog = parts.catalog;\n this.repository = parts.repository;\n this.#env = parts.env;\n this.#warnings = parts.warnings;\n }\n\n static fromParts(parts: {\n config: BosConfig;\n runtime: RuntimeConfig;\n root: string;\n source?: { path?: string; extended?: string[]; remote?: boolean };\n warnings?: string[];\n }): ResolutionSession {\n return new ResolutionSession({\n config: parts.config,\n runtime: parts.runtime,\n root: parts.root,\n path: parts.source?.path ?? null,\n chain: parts.source?.extended ?? [],\n rawConfig: null,\n catalog: null,\n repository: undefined,\n env: defaultConfigEnv(),\n warnings: [...(parts.warnings ?? [])],\n });\n }\n\n get warnings(): readonly string[] {\n const drained = [...this.#warnings];\n this.#warnings.length = 0;\n return drained;\n }\n\n async buildRuntime(sources?: RuntimeSources): Promise<RuntimeConfig> {\n if (!this.config) {\n throw new ConfigNotfoundError({\n message: \"No config loaded in this resolution session\",\n });\n }\n const config = this.config;\n const env = sources?.env ?? this.#env;\n return runWithConfigWarningSink(this.#warnings, () =>\n buildRuntimeConfig(config, this.root, env, {\n plugins: (sources?.plugins ?? {}) as Record<string, RuntimePluginConfig>,\n uiSource: sources?.uiSource,\n apiSource: sources?.apiSource,\n authSource: sources?.authSource,\n hostSource: sources?.hostSource,\n }),\n );\n }\n}\n\n/**\n * Opens a resolution session for the requested config source. In development,\n * a local leaf's `bos.dev.ts` overlay (beside the discovered entry config) is\n * merged child-wins over the extended input before parsing; overlays are never\n * read for `bos://` entries or in production/staging.\n */\nexport async function openResolution(\n request?: ResolutionRequest,\n io?: ResolutionIo,\n): Promise<ResolutionSession | null> {\n const resolvedIo = resolveIo(io);\n const env = request?.env ?? defaultConfigEnv();\n const runtimeEnv: BosEnv = env === \"staging\" ? \"production\" : env;\n const cwd = request?.cwd ?? process.cwd();\n const collectCatalogs = request?.collectCatalogs === true;\n\n const warnings: string[] = [];\n const cleanups: Array<() => Promise<void>> = [];\n\n try {\n const parts = await runWithConfigWarningSink(warnings, async () => {\n const dispatch = dispatchEntry(request, cwd);\n if (!dispatch) return null;\n\n const chain: string[] = [];\n const catalogs: Record<string, string>[] = [];\n let repository: string | undefined;\n let rawConfig: BosConfigInput | undefined;\n\n try {\n const mergedRaw = await walkExtends(dispatch.entry, dispatch.baseDir, new Set(), chain, {\n env,\n registry: request?.registry,\n io: resolvedIo,\n collectCatalogs,\n registerCleanup: (fn) => cleanups.push(fn),\n visit: async (link) => {\n if (link.ref === dispatch.entry) {\n rawConfig = link.config;\n }\n if (!collectCatalogs) return;\n catalogs.push(link.sourceDir ? readWorkspaceCatalog(link.sourceDir) : {});\n const repositoryValue = (link.config as Record<string, unknown>).repository;\n if (typeof repositoryValue === \"string\") {\n repository = repositoryValue;\n }\n },\n });\n\n let overlayMerged = mergedRaw;\n if (env === \"development\" && !dispatch.remote) {\n const overlayPath = join(dirname(dispatch.entry), DEV_OVERLAY_FILENAME);\n if ((await resolvedIo.readFileOrNull(overlayPath)) !== null) {\n const overlay = parseDevOverlayModule(\n await resolvedIo.importModule(overlayPath),\n overlayPath,\n );\n overlayMerged = applyDevOverlay(mergedRaw, overlay);\n }\n }\n\n const config = await resolveConfigComposableEntries(\n BosConfigSchema.parse(overlayMerged),\n dispatch.baseDir,\n runtimeEnv,\n );\n const pluginRuntime =\n (await buildRuntimePluginsForConfig(\n config,\n dispatch.baseDir,\n runtimeEnv,\n request?.remotePlugins,\n )) ?? {};\n const runtime = await buildRuntimeConfig(config, dispatch.baseDir, runtimeEnv, {\n plugins: pluginRuntime,\n });\n\n return {\n config,\n runtime,\n root: dispatch.root,\n path: dispatch.path,\n chain,\n rawConfig: rawConfig ?? null,\n catalog: collectCatalogs ? Object.assign({}, ...[...catalogs].reverse()) : null,\n repository,\n } satisfies Omit<SessionParts, \"env\" | \"warnings\">;\n } catch (error) {\n if (dispatch.remote && isConfigNotFound(error)) {\n return null;\n }\n throw error;\n }\n });\n\n if (!parts) return null;\n\n return new ResolutionSession({\n ...parts,\n env: runtimeEnv,\n warnings,\n });\n } finally {\n for (const cleanup of [...cleanups].reverse()) {\n await cleanup();\n }\n }\n}\n\nexport async function walkExtendsChain(\n entry: string,\n options: {\n env?: BosEnv;\n io?: ResolutionIo;\n registry?: string;\n collectCatalogs?: boolean;\n visit(link: WalkLink): Promise<void>;\n registerCleanup?(fn: () => Promise<void>): void;\n },\n): Promise<{ chain: string[]; config: BosConfigInput }> {\n const baseDir = entry.startsWith(\"bos://\") ? process.cwd() : dirname(entry);\n const chain: string[] = [];\n const ownedCleanups: Array<() => Promise<void>> = [];\n try {\n const config = await walkExtends(entry, baseDir, new Set(), chain, {\n env: options.env ?? \"development\",\n registry: options.registry,\n io: resolveIo(options.io),\n collectCatalogs: options.collectCatalogs === true,\n visit: options.visit,\n registerCleanup: options.registerCleanup ?? ((fn) => ownedCleanups.push(fn)),\n });\n return { chain, config };\n } finally {\n for (const cleanup of [...ownedCleanups].reverse()) {\n await cleanup();\n }\n }\n}\n\n/**\n * @internal — resolves the fully merged (parent-merged, un-parsed)\n * `BosConfigInput` for a config entry. Used by config.ts's\n * `resolveComposableReference` for plugin-entry extends resolution.\n */\nexport async function resolveMergedConfigInput(\n entry: string,\n options?: { baseDir?: string; env?: BosEnv; io?: ResolutionIo; registry?: string },\n): Promise<BosConfigInput> {\n const baseDir = options?.baseDir ?? process.cwd();\n return walkExtends(entry, baseDir, new Set(), [], {\n env: options?.env ?? \"development\",\n registry: options?.registry,\n io: resolveIo(options?.io),\n collectCatalogs: false,\n });\n}\n"],"mappings":"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"}
|