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
package/dist/config.mjs
CHANGED
|
@@ -1,137 +1,200 @@
|
|
|
1
|
+
import { getProcessEnv } from "./env/process-env.mjs";
|
|
1
2
|
import { fetchJsonOrNull } from "./http-client.mjs";
|
|
2
3
|
import { fetchApiPluginManifest } from "./api-contract.mjs";
|
|
3
4
|
import { manifestPluginsToNodes } from "./dag.mjs";
|
|
4
|
-
import { fetchBosConfigFromFastKv } from "./fastkv.mjs";
|
|
5
5
|
import { BOS_CONFIG_ORDER, bosConfigMerger, isPlainObject, mergeBosConfigWithExtends, rebuildOrderedConfig, resolveExtendsRef } from "./merge.mjs";
|
|
6
|
-
import { getNetworkIdForAccount } from "./network.mjs";
|
|
7
6
|
import { BosConfigSchema } from "./types.mjs";
|
|
7
|
+
import { AppDescriptorSchema } from "./descriptor/schema.mjs";
|
|
8
|
+
import { resolveApp, toConfigInput } from "./descriptor/resolve.mjs";
|
|
9
|
+
import { fetchBosConfigFromFastKv } from "./fastkv.mjs";
|
|
10
|
+
import { getNetworkIdForAccount } from "./network.mjs";
|
|
11
|
+
import { resolveSlotVersion } from "./version-manifest-resolve.mjs";
|
|
12
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
8
13
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
9
14
|
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
15
|
+
import { pathToFileURL } from "node:url";
|
|
16
|
+
import { Effect, Schema } from "effect";
|
|
17
|
+
import { sanitizeContainerName } from "every-plugin/ui/manifest/contract";
|
|
10
18
|
|
|
11
19
|
//#region src/config.ts
|
|
20
|
+
const warnOutsideEffect = (...args) => {
|
|
21
|
+
console.warn(...args);
|
|
22
|
+
};
|
|
12
23
|
const LOCAL_PREFIX = "local:";
|
|
13
24
|
const DEFAULT_HOST_PORT = 3e3;
|
|
14
25
|
const RESOLVED_CONFIG_FILENAME = "bos.resolved-config.json";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
suppressConfigWarnings = false;
|
|
29
|
-
}
|
|
30
|
-
function drainConfigWarnings() {
|
|
31
|
-
const warnings = [...configWarnings];
|
|
32
|
-
configWarnings = [];
|
|
33
|
-
return warnings;
|
|
26
|
+
const MISSING_CONFIG_MESSAGE = "No config found (bos.app.ts or bos.config.json)";
|
|
27
|
+
const DEV_OVERLAY_FILENAME = "bos.dev.ts";
|
|
28
|
+
const warningCapture = new AsyncLocalStorage();
|
|
29
|
+
/**
|
|
30
|
+
* @internal — runs `fn` with config warnings captured into `sink` instead of
|
|
31
|
+
* the console. Plumbing for the resolution session; not part of the public
|
|
32
|
+
* config surface.
|
|
33
|
+
*/
|
|
34
|
+
function runWithConfigWarningSink(sink, fn) {
|
|
35
|
+
return warningCapture.run({
|
|
36
|
+
sink,
|
|
37
|
+
previous: warningCapture.getStore()
|
|
38
|
+
}, fn);
|
|
34
39
|
}
|
|
35
40
|
function emitConfigWarning(message) {
|
|
36
|
-
|
|
41
|
+
const capture = warningCapture.getStore();
|
|
42
|
+
if (capture) capture.sink.push(message);
|
|
37
43
|
else console.warn(message);
|
|
38
44
|
}
|
|
39
45
|
const configPathCache = /* @__PURE__ */ new Map();
|
|
46
|
+
/**
|
|
47
|
+
* @internal — clears the findConfigPath memo. Plumbing for tests and the
|
|
48
|
+
* resolution session; not part of the public config surface.
|
|
49
|
+
*/
|
|
50
|
+
function resetConfigPathCache() {
|
|
51
|
+
configPathCache.clear();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Reads the local authored config without resolving the extends chain or
|
|
55
|
+
* touching the network — the build-surface factories (generated rsbuild
|
|
56
|
+
* configs) consume it for their APP_NAME/APP_ACCOUNT defines.
|
|
57
|
+
*/
|
|
58
|
+
async function readAuthoredConfigInput(cwd) {
|
|
59
|
+
const configPath = findConfigPath(cwd);
|
|
60
|
+
if (!configPath || configPath.startsWith("bos://")) return null;
|
|
61
|
+
return readConfigInput(configPath, dirname(configPath));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The authored config entry inside exactly `dir` — no upward walk. Unlike
|
|
65
|
+
* `findConfigPath` this never escapes the given directory, for write targets
|
|
66
|
+
* and nested-local-path resolution where a parent's config must not be
|
|
67
|
+
* picked up. Prefers the authored `bos.app.ts` descriptor (the canonical
|
|
68
|
+
* form) over a legacy `bos.config.json`.
|
|
69
|
+
*/
|
|
70
|
+
function localConfigEntryPath(dir) {
|
|
71
|
+
const appPath = join(dir, "bos.app.ts");
|
|
72
|
+
if (existsSync(appPath)) return appPath;
|
|
73
|
+
const jsonPath = join(dir, "bos.config.json");
|
|
74
|
+
return existsSync(jsonPath) ? jsonPath : null;
|
|
75
|
+
}
|
|
76
|
+
/** `localConfigEntryPath` + the form-aware read (`BosConfigInput`). */
|
|
77
|
+
async function readLocalAuthoredConfigInput(dir) {
|
|
78
|
+
const entry = localConfigEntryPath(dir);
|
|
79
|
+
if (!entry) return null;
|
|
80
|
+
return readConfigInput(entry, dirname(entry));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The authored `bos.app.ts` descriptor is the canonical form — when both
|
|
84
|
+
* forms coexist (e.g. a generated `bos.config.json` write-back beside the
|
|
85
|
+
* authored descriptor), the authored file wins. JSON-form-only children are
|
|
86
|
+
* unaffected: with no `bos.app.ts`, the JSON file is the entry.
|
|
87
|
+
*/
|
|
40
88
|
function findConfigPath(cwd) {
|
|
41
|
-
const cacheKey = cwd ?? process.cwd();
|
|
89
|
+
const cacheKey = resolve(cwd ?? process.cwd());
|
|
42
90
|
const cached = configPathCache.get(cacheKey);
|
|
43
91
|
if (cached !== void 0) return cached;
|
|
44
92
|
let dir = cacheKey;
|
|
45
|
-
while (
|
|
46
|
-
const
|
|
47
|
-
if (existsSync(
|
|
48
|
-
configPathCache.set(cacheKey,
|
|
49
|
-
return
|
|
93
|
+
while (true) {
|
|
94
|
+
const appPath = join(dir, "bos.app.ts");
|
|
95
|
+
if (existsSync(appPath)) {
|
|
96
|
+
configPathCache.set(cacheKey, appPath);
|
|
97
|
+
return appPath;
|
|
98
|
+
}
|
|
99
|
+
const jsonPath = join(dir, "bos.config.json");
|
|
100
|
+
if (existsSync(jsonPath)) {
|
|
101
|
+
configPathCache.set(cacheKey, jsonPath);
|
|
102
|
+
return jsonPath;
|
|
50
103
|
}
|
|
51
|
-
|
|
104
|
+
const parent = dirname(dir);
|
|
105
|
+
if (parent === dir) break;
|
|
106
|
+
dir = parent;
|
|
52
107
|
}
|
|
53
108
|
configPathCache.set(cacheKey, null);
|
|
54
109
|
return null;
|
|
55
110
|
}
|
|
56
|
-
function
|
|
57
|
-
return
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (!
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const runtimeEnv = env === "staging" ? "production" : env;
|
|
86
|
-
try {
|
|
87
|
-
suppressWarnings();
|
|
88
|
-
const extendedChain = [];
|
|
89
|
-
const parsed = await resolveConfigWithExtends(configPath, baseDir, /* @__PURE__ */ new Set(), extendedChain, env);
|
|
90
|
-
const config = await resolveConfigComposableEntries(BosConfigSchema.parse(parsed), baseDir, runtimeEnv);
|
|
91
|
-
cachedConfig = config;
|
|
92
|
-
projectRoot = baseDir;
|
|
93
|
-
const runtime = await buildRuntimeConfig(config, baseDir, runtimeEnv, { plugins: await resolveRuntimePlugins(config.plugins ?? {}, baseDir, runtimeEnv, options?.remotePlugins) });
|
|
94
|
-
const warnings = drainConfigWarnings();
|
|
95
|
-
resumeWarnings();
|
|
96
|
-
return {
|
|
97
|
-
config,
|
|
98
|
-
runtime,
|
|
99
|
-
source: {
|
|
100
|
-
path: configPath,
|
|
101
|
-
extended: extendedChain.length > 0 ? extendedChain : void 0,
|
|
102
|
-
remote: extendedChain.some((entry) => entry.startsWith("bos://"))
|
|
103
|
-
},
|
|
104
|
-
warnings: warnings.length > 0 ? warnings : void 0
|
|
105
|
-
};
|
|
106
|
-
} catch (error) {
|
|
107
|
-
resumeWarnings();
|
|
108
|
-
if (error instanceof Error) throw new Error(`Failed to load config from ${configPath}: ${error.message}`, { cause: error });
|
|
109
|
-
throw new Error(`Failed to load config from ${configPath}: ${String(error)}`);
|
|
111
|
+
function isAppDescriptorPath(configPath) {
|
|
112
|
+
return configPath.endsWith(".app.ts") || configPath.endsWith(".app.js");
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Materialize an authored bos.app.ts descriptor into the authoring-shape
|
|
116
|
+
* `BosConfigInput` the config pipeline consumes. Import-extends is honored
|
|
117
|
+
* two ways: the parent descriptor value can be imported directly (an
|
|
118
|
+
* inlined parent, resolved through `resolveApp`), or `extends` can name a
|
|
119
|
+
* published config (`bos://…`) / a local file, which flows into the JSON
|
|
120
|
+
* extends chain unchanged.
|
|
121
|
+
*/
|
|
122
|
+
async function loadAppDescriptorConfig(resolvedPath) {
|
|
123
|
+
return parseAppDescriptorModule(await import(
|
|
124
|
+
/* webpackIgnore: true */
|
|
125
|
+
pathToFileURL(resolvedPath).href
|
|
126
|
+
), resolvedPath);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* @internal — parses an already-imported app descriptor module into the
|
|
130
|
+
* authoring-shape `BosConfigInput`. Plumbing for the resolution session's
|
|
131
|
+
* injectable module loader; not part of the public config surface.
|
|
132
|
+
*/
|
|
133
|
+
function parseAppDescriptorModule(mod, sourcePath) {
|
|
134
|
+
if (!mod.default) throw new Error(`${sourcePath ?? "App descriptor module"} must default-export an App() descriptor`);
|
|
135
|
+
const descriptor = AppDescriptorSchema.parse(mod.default);
|
|
136
|
+
const registry = {};
|
|
137
|
+
for (const value of Object.values(mod)) {
|
|
138
|
+
const parsed = AppDescriptorSchema.safeParse(value);
|
|
139
|
+
if (parsed.success) registry[parsed.data.name] = parsed.data;
|
|
110
140
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
const
|
|
114
|
-
if (
|
|
115
|
-
return
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
};
|
|
141
|
+
const extendsRef = descriptor.extends;
|
|
142
|
+
if (typeof extendsRef === "string" && registry[extendsRef] !== void 0 || extendsRef !== void 0 && typeof extendsRef !== "string") return resolveApp(descriptor.name, registry);
|
|
143
|
+
const input = toConfigInput(descriptor);
|
|
144
|
+
if (extendsRef !== void 0) input.extends = extendsRef;
|
|
145
|
+
return input;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* @internal — validates an already-imported `bos.dev.ts` module as a
|
|
149
|
+
* `Partial<AppDescriptor>` dev overlay. Plumbing for the resolution session's
|
|
150
|
+
* injectable module loader; not part of the public config surface.
|
|
151
|
+
*/
|
|
152
|
+
function parseDevOverlayModule(mod, sourcePath) {
|
|
153
|
+
const source = sourcePath ?? "bos.dev.ts";
|
|
154
|
+
if (!mod?.default) throw new DevOverlayError({
|
|
155
|
+
path: source,
|
|
156
|
+
message: `${source} must default-export a dev overlay (Partial<AppDescriptor>)`
|
|
157
|
+
});
|
|
158
|
+
const parsed = AppDescriptorSchema.partial().safeParse(mod.default);
|
|
159
|
+
if (!parsed.success) throw new DevOverlayError({
|
|
160
|
+
path: source,
|
|
161
|
+
message: `${source} is not a valid dev overlay: ${parsed.error.message}`,
|
|
162
|
+
cause: parsed.error
|
|
163
|
+
});
|
|
164
|
+
return parsed.data;
|
|
165
|
+
}
|
|
166
|
+
var ConfigLoadError = class extends Schema.TaggedError()("ConfigLoadError", {
|
|
167
|
+
path: Schema.String,
|
|
168
|
+
message: Schema.String,
|
|
169
|
+
cause: Schema.optional(Schema.Unknown)
|
|
170
|
+
}) {};
|
|
171
|
+
var CircularExtendsError = class extends Schema.TaggedError()("CircularExtendsError", {
|
|
172
|
+
chain: Schema.Array(Schema.String),
|
|
173
|
+
message: Schema.String
|
|
174
|
+
}) {};
|
|
175
|
+
var ConfigNotfoundError = class extends Schema.TaggedError()("ConfigNotfoundError", { message: Schema.String }) {};
|
|
176
|
+
var ConfigExtendsError = class extends Schema.TaggedError()("ConfigExtendsError", {
|
|
177
|
+
message: Schema.String,
|
|
178
|
+
cause: Schema.optional(Schema.Unknown)
|
|
179
|
+
}) {};
|
|
180
|
+
var ConfigVersionManifestError = class extends Schema.TaggedError()("ConfigVersionManifestError", {
|
|
181
|
+
message: Schema.String,
|
|
182
|
+
cause: Schema.optional(Schema.Unknown)
|
|
183
|
+
}) {};
|
|
184
|
+
var DevOverlayError = class extends Schema.TaggedError()("DevOverlayError", {
|
|
185
|
+
path: Schema.String,
|
|
186
|
+
message: Schema.String,
|
|
187
|
+
cause: Schema.optional(Schema.Unknown)
|
|
188
|
+
}) {};
|
|
189
|
+
function defaultConfigEnv() {
|
|
190
|
+
return process.env.NODE_ENV === "production" ? "production" : "development";
|
|
128
191
|
}
|
|
129
192
|
function parseRuntimeOverrideTargets(value) {
|
|
130
193
|
if (!value) return [];
|
|
131
194
|
return [...new Set(value.split(",").map((entry) => entry.trim()).filter(Boolean))].map((entry) => {
|
|
132
195
|
if (entry === "ui" || entry === "api" || entry === "plugins") return entry;
|
|
133
196
|
if (entry.startsWith("plugins.") && entry.length > 8) return entry;
|
|
134
|
-
throw new
|
|
197
|
+
throw new ConfigExtendsError({ message: `Invalid runtime override target: ${entry}` });
|
|
135
198
|
});
|
|
136
199
|
}
|
|
137
200
|
function isRuntimeOverrideAllowed(allowedTargets, target) {
|
|
@@ -139,16 +202,20 @@ function isRuntimeOverrideAllowed(allowedTargets, target) {
|
|
|
139
202
|
if (target.startsWith("plugins.")) return allowedTargets.includes("plugins.*");
|
|
140
203
|
return false;
|
|
141
204
|
}
|
|
142
|
-
async function buildRuntimePluginsForConfig(config, baseDir, env) {
|
|
143
|
-
const plugins = await resolveRuntimePlugins(config.plugins ?? {}, baseDir, env);
|
|
205
|
+
async function buildRuntimePluginsForConfig(config, baseDir, env, remotePlugins) {
|
|
206
|
+
const plugins = await resolveRuntimePlugins(config.plugins ?? {}, baseDir, env, remotePlugins);
|
|
144
207
|
return Object.keys(plugins).length > 0 ? plugins : void 0;
|
|
145
208
|
}
|
|
146
209
|
function getEntryAssociatedUi(entry) {
|
|
147
|
-
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
210
|
+
const flat = isPlainObject(entry.ui) ? entry.ui : void 0;
|
|
211
|
+
const nested = (() => {
|
|
212
|
+
if (!isPlainObject(entry.app)) return void 0;
|
|
213
|
+
const app = entry.app;
|
|
214
|
+
return isPlainObject(app.ui) ? app.ui : void 0;
|
|
215
|
+
})();
|
|
216
|
+
const ui = flat ?? nested;
|
|
217
|
+
if (!ui) return void 0;
|
|
218
|
+
if ("shared" in ui) throw new ConfigExtendsError({ message: "app.ui.shared is no longer supported. Move shared deps to app.api.shared, app.auth.shared, or plugins.*.shared." });
|
|
152
219
|
return ui;
|
|
153
220
|
}
|
|
154
221
|
function mergeAssociatedUi(parentUi, childUi) {
|
|
@@ -221,7 +288,7 @@ function resolveBosConfigPath(configDir) {
|
|
|
221
288
|
if (existsSync(resolvedPath)) return resolvedPath;
|
|
222
289
|
return join(configDir, "bos.config.json");
|
|
223
290
|
}
|
|
224
|
-
function readBosConfigForBuild(configDir) {
|
|
291
|
+
async function readBosConfigForBuild(configDir) {
|
|
225
292
|
const resolvedPath = getResolvedConfigPath(configDir);
|
|
226
293
|
if (existsSync(resolvedPath)) try {
|
|
227
294
|
const raw = JSON.parse(readFileSync(resolvedPath, "utf-8"));
|
|
@@ -230,11 +297,18 @@ function readBosConfigForBuild(configDir) {
|
|
|
230
297
|
return configData;
|
|
231
298
|
}
|
|
232
299
|
} catch (e) {
|
|
233
|
-
console.warn(`[Config] Failed to parse _resolved.json, falling back to
|
|
300
|
+
console.warn(`[Config] Failed to parse _resolved.json, falling back to the authored config: ${e}`);
|
|
234
301
|
}
|
|
302
|
+
const authored = await readLocalAuthoredConfigInput(configDir);
|
|
303
|
+
if (authored) return authored;
|
|
235
304
|
const bosConfigPath = join(configDir, "bos.config.json");
|
|
236
305
|
return JSON.parse(readFileSync(bosConfigPath, "utf-8"));
|
|
237
306
|
}
|
|
307
|
+
/**
|
|
308
|
+
* @internal — splits an extends ref into its config path and optional
|
|
309
|
+
* `#target` suffix. Plumbing for the resolution session; not part of the
|
|
310
|
+
* public config surface.
|
|
311
|
+
*/
|
|
238
312
|
function parseExtendsTarget(ref) {
|
|
239
313
|
const hashIndex = ref.indexOf("#");
|
|
240
314
|
if (hashIndex === -1) return { configPath: ref };
|
|
@@ -245,6 +319,10 @@ function parseExtendsTarget(ref) {
|
|
|
245
319
|
targetPath: targetPath.length > 0 ? targetPath : void 0
|
|
246
320
|
};
|
|
247
321
|
}
|
|
322
|
+
/**
|
|
323
|
+
* @internal — resolves the base directory a config path extends from.
|
|
324
|
+
* Plumbing for the resolution session; not part of the public config surface.
|
|
325
|
+
*/
|
|
248
326
|
function getConfigBaseDir(configPath, baseDir) {
|
|
249
327
|
if (configPath.startsWith("bos://")) return baseDir;
|
|
250
328
|
return dirname(isAbsolute(configPath) ? configPath : resolve(baseDir, configPath));
|
|
@@ -252,7 +330,7 @@ function getConfigBaseDir(configPath, baseDir) {
|
|
|
252
330
|
function asComposableEntry(value) {
|
|
253
331
|
if (value === void 0) return {};
|
|
254
332
|
if (typeof value === "string") return { extends: value };
|
|
255
|
-
if (!isPlainObject(value)) throw new
|
|
333
|
+
if (!isPlainObject(value)) throw new ConfigExtendsError({ message: `Expected config entry object, received ${typeof value}` });
|
|
256
334
|
return value;
|
|
257
335
|
}
|
|
258
336
|
function getTargetedEntry(config, targetPath) {
|
|
@@ -262,19 +340,25 @@ function getTargetedEntry(config, targetPath) {
|
|
|
262
340
|
}
|
|
263
341
|
if (targetPath.startsWith("plugins.")) {
|
|
264
342
|
const pluginId = targetPath.slice(8);
|
|
265
|
-
if (pluginId.length === 0) throw new
|
|
343
|
+
if (pluginId.length === 0) throw new ConfigExtendsError({ message: `Invalid plugin target path: ${targetPath}` });
|
|
266
344
|
return asComposableEntry(config.plugins?.[pluginId]);
|
|
267
345
|
}
|
|
268
|
-
throw new
|
|
346
|
+
throw new ConfigExtendsError({ message: `Unsupported extends target path: ${targetPath}` });
|
|
269
347
|
}
|
|
270
348
|
function getAssociatedUi(config, _targetPath) {
|
|
271
349
|
if (!isPlainObject(config.app?.ui)) return;
|
|
272
350
|
const ui = config.app.ui;
|
|
273
|
-
if ("shared" in ui) throw new
|
|
351
|
+
if ("shared" in ui) throw new ConfigExtendsError({ message: "app.ui.shared is no longer supported. Move shared deps to app.api.shared, app.auth.shared, or plugins.*.shared." });
|
|
274
352
|
return ui;
|
|
275
353
|
}
|
|
354
|
+
function applyNullOverrides(target, source) {
|
|
355
|
+
for (const [key, value] of Object.entries(source)) if (value === null) target[key] = null;
|
|
356
|
+
else if (isPlainObject(value) && isPlainObject(target[key])) applyNullOverrides(target[key], value);
|
|
357
|
+
}
|
|
276
358
|
function mergeComposableEntries(parent, child) {
|
|
277
|
-
|
|
359
|
+
const merged = bosConfigMerger({ ...child }, parent);
|
|
360
|
+
applyNullOverrides(merged, child);
|
|
361
|
+
return merged;
|
|
278
362
|
}
|
|
279
363
|
function stripUnsafeLocalDevelopment(entry, allowLocalPaths) {
|
|
280
364
|
if (!entry || allowLocalPaths) return entry;
|
|
@@ -293,11 +377,15 @@ async function resolveComposableReference(source, baseDir, env, defaultTargetPat
|
|
|
293
377
|
let extendsError;
|
|
294
378
|
const extendsRef = source.extends ? resolveExtendsRef(source.extends, env) : void 0;
|
|
295
379
|
if (extendsRef) {
|
|
380
|
+
const { resolveMergedConfigInput } = await import("./resolution/session.mjs");
|
|
296
381
|
const parsed = parseExtendsTarget(extendsRef);
|
|
297
382
|
targetPath = parsed.targetPath ?? defaultTargetPath;
|
|
298
383
|
const extendsBaseDir = getConfigBaseDir(parsed.configPath, baseDir);
|
|
299
384
|
try {
|
|
300
|
-
const extendedConfig = await
|
|
385
|
+
const extendedConfig = await resolveMergedConfigInput(parsed.configPath, {
|
|
386
|
+
baseDir: extendsBaseDir,
|
|
387
|
+
env
|
|
388
|
+
});
|
|
301
389
|
resolvedEntry = mergeComposableEntries(resolvedEntry, getTargetedEntry(extendedConfig, targetPath));
|
|
302
390
|
providerBaseDir = extendsBaseDir;
|
|
303
391
|
associatedUi = mergeAssociatedUi(associatedUi, getAssociatedUi(extendedConfig, targetPath));
|
|
@@ -309,10 +397,14 @@ async function resolveComposableReference(source, baseDir, env, defaultTargetPat
|
|
|
309
397
|
const localDevelopmentPath = localDevelopment ? resolve(baseDir, localDevelopment.slice(6).trim()) : void 0;
|
|
310
398
|
const hasUsableLocalDevelopment = Boolean(localDevelopmentPath && existsSync(localDevelopmentPath));
|
|
311
399
|
if (localDevelopmentPath) {
|
|
400
|
+
const { resolveMergedConfigInput } = await import("./resolution/session.mjs");
|
|
312
401
|
const localPath = localDevelopmentPath;
|
|
313
|
-
const localConfigPath =
|
|
314
|
-
if (
|
|
315
|
-
const localConfig = await
|
|
402
|
+
const localConfigPath = localConfigEntryPath(localPath);
|
|
403
|
+
if (localConfigPath) {
|
|
404
|
+
const localConfig = await resolveMergedConfigInput(localConfigPath, {
|
|
405
|
+
baseDir: localPath,
|
|
406
|
+
env
|
|
407
|
+
});
|
|
316
408
|
resolvedEntry = mergeComposableEntries(resolvedEntry, getTargetedEntry(localConfig, targetPath));
|
|
317
409
|
providerBaseDir = localPath;
|
|
318
410
|
associatedUi = mergeAssociatedUi(associatedUi, getAssociatedUi(localConfig, targetPath));
|
|
@@ -328,14 +420,16 @@ async function resolveComposableReference(source, baseDir, env, defaultTargetPat
|
|
|
328
420
|
entry: stripUnsafeLocalDevelopment(resolvedEntry, allowLocalPaths || Boolean(localDevelopment)),
|
|
329
421
|
providerBaseDir,
|
|
330
422
|
targetPath,
|
|
331
|
-
associatedUi: stripUnsafeLocalDevelopment(associatedUi, allowLocalPaths)
|
|
423
|
+
associatedUi: stripUnsafeLocalDevelopment(associatedUi, allowLocalPaths || Boolean(localDevelopment))
|
|
332
424
|
};
|
|
333
425
|
}
|
|
334
426
|
function resolveDevelopmentTarget(development, production, baseDir, forceSource, target, extendsRef) {
|
|
335
427
|
if (forceSource === "remote") return resolveRuntimeTarget(production, baseDir, "remote");
|
|
336
428
|
if (!development) {
|
|
337
|
-
if (production && target)
|
|
338
|
-
|
|
429
|
+
if (production && target) {
|
|
430
|
+
if (extendsRef) emitConfigWarning(`[Config] Resolving "${target}" from ${extendsRef}`);
|
|
431
|
+
else emitConfigWarning(`[Config] No development target for "${target}", using production`);
|
|
432
|
+
}
|
|
339
433
|
return resolveRuntimeTarget(production, baseDir, "remote");
|
|
340
434
|
}
|
|
341
435
|
const devTarget = resolveRuntimeTarget(development, baseDir);
|
|
@@ -345,7 +439,7 @@ function resolveDevelopmentTarget(development, production, baseDir, forceSource,
|
|
|
345
439
|
}
|
|
346
440
|
return devTarget;
|
|
347
441
|
}
|
|
348
|
-
|
|
442
|
+
const buildRuntimeConfigEffect = Effect.fn("buildRuntimeConfig")(function* (config, baseDir, env, options) {
|
|
349
443
|
const uiConfig = config.app.ui;
|
|
350
444
|
const apiConfig = config.app.api;
|
|
351
445
|
const authConfig = config.app.auth;
|
|
@@ -355,11 +449,40 @@ async function buildRuntimeConfig(config, baseDir, env, options) {
|
|
|
355
449
|
const authRuntime = authConfig ? env === "development" ? resolveDevelopmentTarget(authConfig.development, authConfig.production, baseDir, options?.authSource, "app.auth", authExtendsRef) : resolveRuntimeTarget(authConfig.production, baseDir, "remote") : void 0;
|
|
356
450
|
const hostConfig = config.app.host;
|
|
357
451
|
const hostRuntime = env === "development" ? resolveDevelopmentTarget(hostConfig.development, hostConfig.production, baseDir, options?.hostSource, "app.host") : resolveRuntimeTarget(hostConfig.production, baseDir, "remote");
|
|
358
|
-
const hostListeningUrl = env === "development" ? resolveDevelopmentHostUrl(hostConfig.development) : `http://localhost:${DEFAULT_HOST_PORT}`;
|
|
452
|
+
const hostListeningUrl = env === "development" ? resolveDevelopmentHostUrl(hostConfig.development) : `http://localhost:${getProcessEnv("PORT") ?? DEFAULT_HOST_PORT}`;
|
|
359
453
|
const hostIsRemote = hostRuntime.source === "remote";
|
|
360
454
|
const uiIsRemote = uiRuntime.source === "remote";
|
|
361
455
|
const apiIsRemote = apiRuntime.source === "remote";
|
|
362
456
|
const resolvedApiName = resolvePluginRuntimeName(apiConfig.name, apiRuntime.localPath, "api");
|
|
457
|
+
const authEntry = yield* Effect.tryPromise({
|
|
458
|
+
try: async () => {
|
|
459
|
+
if (!authConfig || !authRuntime) return void 0;
|
|
460
|
+
if (!authRuntime.localPath && !authRuntime.url) return void 0;
|
|
461
|
+
let authName = resolvePluginRuntimeName(authConfig.name, authRuntime.localPath, "auth");
|
|
462
|
+
if (authRuntime.source === "remote" && authRuntime.url && !authRuntime.localPath && typeof authConfig.name !== "string") authName = await resolveRemotePluginRuntimeName(authRuntime.url, authName);
|
|
463
|
+
return {
|
|
464
|
+
name: authName,
|
|
465
|
+
extendsRef: authExtendsRef,
|
|
466
|
+
url: authRuntime.url,
|
|
467
|
+
entry: authRuntime.url ? `${authRuntime.url}/mf-manifest.json` : "/mf-manifest.json",
|
|
468
|
+
localPath: authRuntime.localPath,
|
|
469
|
+
port: authRuntime.port,
|
|
470
|
+
source: authRuntime.source,
|
|
471
|
+
proxy: authConfig.proxy,
|
|
472
|
+
variables: authConfig.variables,
|
|
473
|
+
secrets: authConfig.secrets,
|
|
474
|
+
integrity: authRuntime.source === "remote" ? authConfig.integrity : void 0,
|
|
475
|
+
shared: authConfig.shared,
|
|
476
|
+
ui: buildRuntimeUiConfig("auth", env, getEntryAssociatedUi(authConfig), baseDir, authName, options?.authSource)
|
|
477
|
+
};
|
|
478
|
+
},
|
|
479
|
+
catch: (cause) => new ConfigExtendsError({
|
|
480
|
+
message: String(cause),
|
|
481
|
+
cause
|
|
482
|
+
})
|
|
483
|
+
});
|
|
484
|
+
const runtimePlugins = { ...options?.plugins && Object.keys(options.plugins).length > 0 ? options.plugins : void 0 };
|
|
485
|
+
if (authEntry && !runtimePlugins.auth) runtimePlugins.auth = authEntry;
|
|
363
486
|
const result = {
|
|
364
487
|
env,
|
|
365
488
|
account: config.account,
|
|
@@ -373,7 +496,7 @@ async function buildRuntimeConfig(config, baseDir, env, options) {
|
|
|
373
496
|
url: hostListeningUrl,
|
|
374
497
|
entry: `${hostListeningUrl}/mf-manifest.json`,
|
|
375
498
|
localPath: hostRuntime.localPath,
|
|
376
|
-
port: env === "development" ? parsePort(hostListeningUrl) : DEFAULT_HOST_PORT,
|
|
499
|
+
port: env === "development" ? parsePort(hostListeningUrl) : Number(getProcessEnv("PORT")) || DEFAULT_HOST_PORT,
|
|
377
500
|
secrets: hostConfig.secrets,
|
|
378
501
|
integrity: hostIsRemote ? hostConfig.integrity : void 0,
|
|
379
502
|
source: hostRuntime.source,
|
|
@@ -383,6 +506,7 @@ async function buildRuntimeConfig(config, baseDir, env, options) {
|
|
|
383
506
|
name: resolvePluginRuntimeName(uiConfig.name, uiRuntime.localPath, "ui"),
|
|
384
507
|
url: uiRuntime.url,
|
|
385
508
|
entry: uiRuntime.url ? `${uiRuntime.url}/mf-manifest.json` : "/mf-manifest.json",
|
|
509
|
+
publicUrl: typeof uiConfig.publicUrl === "string" ? uiConfig.publicUrl : void 0,
|
|
386
510
|
localPath: uiRuntime.localPath,
|
|
387
511
|
port: uiRuntime.port,
|
|
388
512
|
ssrUrl: uiIsRemote ? uiConfig.ssr : void 0,
|
|
@@ -404,123 +528,190 @@ async function buildRuntimeConfig(config, baseDir, env, options) {
|
|
|
404
528
|
shared: apiConfig.shared,
|
|
405
529
|
dependsOn: apiConfig.dependsOn ? normalizeStringArray(apiConfig.dependsOn) : void 0
|
|
406
530
|
},
|
|
407
|
-
auth:
|
|
408
|
-
|
|
409
|
-
if (!authRuntime.localPath && !authRuntime.url) return void 0;
|
|
410
|
-
return {
|
|
411
|
-
name: resolvePluginRuntimeName(authConfig.name, authRuntime.localPath, "auth"),
|
|
412
|
-
extendsRef: authExtendsRef,
|
|
413
|
-
url: authRuntime.url,
|
|
414
|
-
entry: authRuntime.url ? `${authRuntime.url}/mf-manifest.json` : "/mf-manifest.json",
|
|
415
|
-
localPath: authRuntime.localPath,
|
|
416
|
-
port: authRuntime.port,
|
|
417
|
-
source: authRuntime.source,
|
|
418
|
-
proxy: authConfig.proxy,
|
|
419
|
-
variables: authConfig.variables,
|
|
420
|
-
secrets: authConfig.secrets,
|
|
421
|
-
integrity: authRuntime.source === "remote" ? authConfig.integrity : void 0,
|
|
422
|
-
shared: authConfig.shared
|
|
423
|
-
};
|
|
424
|
-
})(),
|
|
425
|
-
plugins: options?.plugins && Object.keys(options.plugins).length > 0 ? options.plugins : void 0
|
|
531
|
+
auth: authEntry,
|
|
532
|
+
plugins: Object.keys(runtimePlugins).length > 0 ? runtimePlugins : void 0
|
|
426
533
|
};
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
534
|
+
yield* Effect.tryPromise({
|
|
535
|
+
try: async () => {
|
|
536
|
+
try {
|
|
537
|
+
if (result.api.source !== "remote" || !result.api.url) return;
|
|
538
|
+
const manifest = await fetchApiPluginManifest(result.api.url);
|
|
539
|
+
const manifestPluginEntries = [];
|
|
540
|
+
if (manifest.plugins?.length) {
|
|
541
|
+
for (const node of manifestPluginsToNodes(manifest.plugins)) if (!result.plugins?.[node.key]) {
|
|
542
|
+
manifestPluginEntries.push({
|
|
543
|
+
key: node.key,
|
|
544
|
+
config: {
|
|
545
|
+
name: node.name,
|
|
546
|
+
url: node.url,
|
|
547
|
+
entry: node.entry,
|
|
548
|
+
source: "remote",
|
|
549
|
+
dependsOn: node.dependsOn,
|
|
550
|
+
secrets: node.secrets,
|
|
551
|
+
variables: node.variables
|
|
552
|
+
}
|
|
553
|
+
});
|
|
554
|
+
if (node.secrets) {
|
|
555
|
+
for (const secretName of node.secrets) if (!getProcessEnv(secretName)) warnOutsideEffect(`[Config] Plugin "${node.key}" (discovered from manifest) expects secret "${secretName}" but it is not set in the environment.`);
|
|
556
|
+
}
|
|
444
557
|
}
|
|
445
|
-
});
|
|
446
|
-
if (node.secrets) {
|
|
447
|
-
for (const secretName of node.secrets) if (!process.env[secretName]) console.warn(`[Config] Plugin "${node.key}" (discovered from manifest) expects secret "${secretName}" but it is not set in the environment.`);
|
|
448
558
|
}
|
|
559
|
+
if (manifest.dependsOn?.length) {
|
|
560
|
+
const existing = new Set(result.api.dependsOn ?? []);
|
|
561
|
+
for (const dep of manifest.dependsOn) if (!existing.has(dep)) result.api.dependsOn = [...result.api.dependsOn ?? [], dep];
|
|
562
|
+
}
|
|
563
|
+
if (manifestPluginEntries.length > 0) {
|
|
564
|
+
if (!result.plugins) result.plugins = {};
|
|
565
|
+
for (const { key, config: pluginConfig } of manifestPluginEntries) if (!result.plugins[key]) result.plugins[key] = pluginConfig;
|
|
566
|
+
}
|
|
567
|
+
} catch (error) {
|
|
568
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
569
|
+
warnOutsideEffect(`[Config] Failed to fetch API plugin manifest for discovery: ${message}`);
|
|
449
570
|
}
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
|
|
571
|
+
},
|
|
572
|
+
catch: (cause) => new ConfigExtendsError({
|
|
573
|
+
message: String(cause),
|
|
574
|
+
cause
|
|
575
|
+
})
|
|
576
|
+
});
|
|
577
|
+
yield* Effect.tryPromise({
|
|
578
|
+
try: () => deriveVersionManifestFields(result, config, env),
|
|
579
|
+
catch: (cause) => new ConfigVersionManifestError({
|
|
580
|
+
message: String(cause),
|
|
581
|
+
cause
|
|
582
|
+
})
|
|
583
|
+
});
|
|
584
|
+
return result;
|
|
585
|
+
});
|
|
586
|
+
/**
|
|
587
|
+
* Version-manifest derivation (atomic-deploys 04): for every remote slot,
|
|
588
|
+
* resolve its `pin` (fetch + SRI-verify the pinned manifest, process-cached
|
|
589
|
+
* per pin) and stamp the derived entry-level fields — `entryUrl` (hashed
|
|
590
|
+
* container entry), the browser-manifest `entry`, and entry-level
|
|
591
|
+
* `integrity`/`ssrIntegrity`/`ssrEntryUrl` — so consumers load immutable
|
|
592
|
+
* hashed bytes without knowing the pointer indirection.
|
|
593
|
+
*
|
|
594
|
+
* Hard break: outside development every remote slot MUST pin a version
|
|
595
|
+
* manifest — an unpinned remote slot fails resolution loudly (the deploy
|
|
596
|
+
* train pins every workspace it uploads; a manifest-less slot means a
|
|
597
|
+
* pre-atomic-deploy config).
|
|
598
|
+
*/
|
|
599
|
+
async function deriveVersionManifestFields(result, config, env) {
|
|
600
|
+
if (env === "development") return;
|
|
601
|
+
const derive = async (label, slotConfig, slot, apply) => {
|
|
602
|
+
if (!slot || slot.source !== "remote" || !slot.url) return;
|
|
603
|
+
const slotWithProduction = slotConfig;
|
|
604
|
+
if (!slotWithProduction || slotWithProduction.production === void 0) return;
|
|
605
|
+
const rawPin = slotConfig?.pin;
|
|
606
|
+
const pin = rawPin && typeof rawPin.manifest === "string" && rawPin.manifest && typeof rawPin.integrity === "string" && rawPin.integrity ? {
|
|
607
|
+
manifest: rawPin.manifest,
|
|
608
|
+
integrity: rawPin.integrity
|
|
609
|
+
} : void 0;
|
|
610
|
+
if (!pin) throw new Error(`slot "${label}" (${slot.url}) pins no version manifest — remote slots must pin a version manifest outside development (pre-atomic-deploy config; redeploy required)`);
|
|
611
|
+
apply(await resolveSlotVersion({
|
|
612
|
+
base: slot.remoteUrl ?? slot.url,
|
|
613
|
+
pin
|
|
614
|
+
}));
|
|
615
|
+
};
|
|
616
|
+
const applyUi = (ui, r) => {
|
|
617
|
+
if (!ui) return;
|
|
618
|
+
ui.entryUrl = r.entryUrl;
|
|
619
|
+
ui.entry = r.browserManifestUrl ?? ui.entry;
|
|
620
|
+
ui.browserManifestUrl = r.browserManifestUrl;
|
|
621
|
+
ui.integrity = r.entryIntegrity;
|
|
622
|
+
ui.ssrEntryUrl = r.ssrEntryUrl;
|
|
623
|
+
ui.ssrIntegrity = r.ssrIntegrity ?? ui.ssrIntegrity;
|
|
624
|
+
};
|
|
625
|
+
await derive("app.host", config.app.host, result.host, (r) => {
|
|
626
|
+
result.host.entryUrl = r.entryUrl;
|
|
627
|
+
result.host.integrity = r.entryIntegrity;
|
|
628
|
+
});
|
|
629
|
+
await derive("app.ui", config.app.ui, result.ui, (r) => applyUi(result.ui, r));
|
|
630
|
+
await derive("app.api", config.app.api, result.api, (r) => {
|
|
631
|
+
result.api.entryUrl = r.entryUrl;
|
|
632
|
+
result.api.integrity = r.entryIntegrity;
|
|
633
|
+
});
|
|
634
|
+
if (result.auth) {
|
|
635
|
+
await derive("app.auth", config.app.auth, result.auth, (r) => {
|
|
636
|
+
result.auth.entryUrl = r.entryUrl;
|
|
637
|
+
result.auth.integrity = r.entryIntegrity;
|
|
638
|
+
});
|
|
639
|
+
await derive("app.auth.ui", getEntryAssociatedUi(config.app.auth), result.auth.ui, (r) => applyUi(result.auth.ui, r));
|
|
458
640
|
}
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
641
|
+
for (const [key, plugin] of Object.entries(result.plugins ?? {})) {
|
|
642
|
+
let pluginConfig = config.plugins?.[key];
|
|
643
|
+
const isAuthMirror = key === "auth" && result.auth && (plugin === result.auth || plugin.url === result.auth.url);
|
|
644
|
+
if ((!pluginConfig || typeof pluginConfig === "string") && isAuthMirror) pluginConfig = config.app.auth;
|
|
645
|
+
if (!pluginConfig || typeof pluginConfig === "string") continue;
|
|
646
|
+
await derive(`plugins.${key}`, pluginConfig, plugin, (r) => {
|
|
647
|
+
plugin.entryUrl = r.entryUrl;
|
|
648
|
+
plugin.integrity = r.entryIntegrity;
|
|
649
|
+
});
|
|
650
|
+
await derive(`plugins.${key}.ui`, getEntryAssociatedUi(pluginConfig), plugin.ui, (r) => applyUi(plugin.ui, r));
|
|
462
651
|
}
|
|
463
|
-
return result;
|
|
464
652
|
}
|
|
465
|
-
async function
|
|
653
|
+
async function buildRuntimeConfig(config, baseDir, env, options) {
|
|
654
|
+
return Effect.runPromise(buildRuntimeConfigEffect(config, baseDir, env, options));
|
|
655
|
+
}
|
|
656
|
+
async function readConfigInput(configPath, baseDir) {
|
|
466
657
|
if (configPath.startsWith("bos://")) return fetchBosConfigFromFastKv(configPath);
|
|
467
658
|
const resolvedPath = isAbsolute(configPath) ? configPath : resolve(baseDir, configPath);
|
|
659
|
+
if (isAppDescriptorPath(resolvedPath)) return loadAppDescriptorConfig(resolvedPath);
|
|
468
660
|
return JSON.parse(readFileSync(resolvedPath, "utf-8"));
|
|
469
661
|
}
|
|
470
|
-
async function resolveConfigWithExtends(configPath, baseDir, visited, chain, env = "development") {
|
|
471
|
-
if (visited.has(configPath)) throw new Error(`Circular extends detected: ${[...visited, configPath].join(" -> ")}`);
|
|
472
|
-
const config = await loadConfigFile(configPath, baseDir);
|
|
473
|
-
chain.push(configPath);
|
|
474
|
-
if (!config.extends) return config;
|
|
475
|
-
const extendsRef = resolveExtendsRef(config.extends, env);
|
|
476
|
-
if (!extendsRef) return config;
|
|
477
|
-
const parsedParentRef = parseExtendsTarget(extendsRef);
|
|
478
|
-
const nextVisited = new Set(visited);
|
|
479
|
-
nextVisited.add(configPath);
|
|
480
|
-
const parentBaseDir = getConfigBaseDir(parsedParentRef.configPath, baseDir);
|
|
481
|
-
return mergeBosConfigWithExtends(await resolveConfigWithExtends(parsedParentRef.configPath, parentBaseDir, nextVisited, chain, env), config);
|
|
482
|
-
}
|
|
483
662
|
function normalizePluginEntry(raw) {
|
|
484
663
|
if (raw === null || raw === false) return raw;
|
|
485
664
|
if (typeof raw === "string") return { extends: raw };
|
|
486
665
|
return raw;
|
|
487
666
|
}
|
|
488
|
-
|
|
667
|
+
const resolveRuntimePluginsEffect = Effect.fn("resolveRuntimePlugins")(function* (plugins, baseDir, env, remotePlugins) {
|
|
489
668
|
const entries = Object.entries(plugins).map(([pluginId, rawInput]) => ({
|
|
490
669
|
pluginId,
|
|
491
670
|
normalized: normalizePluginEntry(rawInput)
|
|
492
671
|
})).filter((entry) => entry.normalized !== null && entry.normalized !== false);
|
|
493
|
-
const resolved =
|
|
494
|
-
const resolvedReference =
|
|
672
|
+
const resolved = yield* Effect.forEach(entries, ({ pluginId, normalized }) => Effect.gen(function* () {
|
|
673
|
+
const resolvedReference = yield* Effect.tryPromise({
|
|
674
|
+
try: () => resolveComposableReference(normalized, baseDir, env, `plugins.${pluginId}`),
|
|
675
|
+
catch: (cause) => new ConfigExtendsError({
|
|
676
|
+
message: String(cause),
|
|
677
|
+
cause
|
|
678
|
+
})
|
|
679
|
+
});
|
|
495
680
|
const forceSource = remotePlugins === void 0 ? void 0 : remotePlugins.length === 0 || remotePlugins.includes(pluginId) ? "remote" : void 0;
|
|
496
681
|
const pluginRuntime = buildRuntimePluginConfig(pluginId, env, resolvedReference, forceSource);
|
|
497
682
|
if (!pluginRuntime.localPath && !pluginRuntime.url) {
|
|
498
683
|
if (forceSource === "remote") emitConfigWarning(`[Config] Plugin "${pluginId}" has no production URL in bos.config.json and cannot be resolved as remote. Add a "production" field or remove it from --remote-plugins.`);
|
|
499
684
|
return null;
|
|
500
685
|
}
|
|
501
|
-
if (pluginRuntime.source === "remote" && pluginRuntime.url && !pluginRuntime.localPath && typeof resolvedReference.entry.name !== "string") pluginRuntime.name =
|
|
686
|
+
if (pluginRuntime.source === "remote" && pluginRuntime.url && !pluginRuntime.localPath && typeof resolvedReference.entry.name !== "string") pluginRuntime.name = yield* Effect.tryPromise({
|
|
687
|
+
try: () => resolveRemotePluginRuntimeName(pluginRuntime.url, pluginRuntime.name),
|
|
688
|
+
catch: (cause) => new ConfigExtendsError({
|
|
689
|
+
message: String(cause),
|
|
690
|
+
cause
|
|
691
|
+
})
|
|
692
|
+
});
|
|
502
693
|
return [pluginId, pluginRuntime];
|
|
503
|
-
}));
|
|
694
|
+
}), { concurrency: "unbounded" });
|
|
504
695
|
const out = {};
|
|
505
696
|
for (const entry of resolved) if (entry) out[entry[0]] = entry[1];
|
|
506
697
|
return out;
|
|
698
|
+
});
|
|
699
|
+
function resolveRuntimePlugins(plugins, baseDir, env, remotePlugins) {
|
|
700
|
+
return Effect.runPromise(resolveRuntimePluginsEffect(plugins, baseDir, env, remotePlugins));
|
|
507
701
|
}
|
|
508
702
|
async function resolveRemotePluginRuntimeName(baseUrl, fallback) {
|
|
509
|
-
const manifest = await fetchJsonOrNull(`${baseUrl.replace(/\/$/, "")}/plugin.manifest.json`, { retries:
|
|
703
|
+
const manifest = await fetchJsonOrNull(`${baseUrl.replace(/\/$/, "")}/plugin.manifest.json`, { retries: 2 });
|
|
510
704
|
return typeof manifest?.plugin?.name === "string" && manifest.plugin.name.length > 0 ? manifest.plugin.name : fallback;
|
|
511
705
|
}
|
|
512
706
|
function buildRuntimePluginConfig(pluginId, env, resolved, forceSource) {
|
|
513
707
|
const source = resolved.entry;
|
|
514
708
|
const development = typeof source.development === "string" ? source.development : void 0;
|
|
515
709
|
const production = typeof source.production === "string" ? source.production : void 0;
|
|
516
|
-
if (production?.startsWith("bos://")) throw new
|
|
710
|
+
if (production?.startsWith("bos://")) throw new ConfigExtendsError({ message: `Plugin "${pluginId}" has unsupported production target "${production}". Use extends: "bos://account/domain" for plugin configs or a CDN URL for production.` });
|
|
517
711
|
const pluginExtendsRef = source.extends ? resolveExtendsRef(source.extends, env) : void 0;
|
|
518
712
|
const runtimeTarget = env === "development" ? resolveDevelopmentTarget(development, production, resolved.providerBaseDir, forceSource, `plugins.${pluginId}`, pluginExtendsRef) : resolveRuntimeTarget(production, resolved.providerBaseDir, "remote");
|
|
519
713
|
const apiName = resolvePluginRuntimeName(source.name, runtimeTarget.localPath, pluginId);
|
|
520
|
-
const
|
|
521
|
-
const uiDevelopment = typeof uiConfig?.development === "string" ? uiConfig.development : void 0;
|
|
522
|
-
const uiProduction = typeof uiConfig?.production === "string" ? uiConfig.production : void 0;
|
|
523
|
-
const uiRuntime = uiConfig && (uiDevelopment || uiProduction) ? env === "development" ? resolveDevelopmentTarget(uiDevelopment, uiProduction, resolved.providerBaseDir, forceSource, `plugins.${pluginId}.ui`) : resolveRuntimeTarget(uiProduction, resolved.providerBaseDir, "remote") : void 0;
|
|
714
|
+
const ui = buildRuntimeUiConfig(pluginId, env, resolved.associatedUi, resolved.providerBaseDir, apiName, forceSource);
|
|
524
715
|
const routes = source.routes;
|
|
525
716
|
return {
|
|
526
717
|
name: apiName,
|
|
@@ -536,19 +727,55 @@ function buildRuntimePluginConfig(pluginId, env, resolved, forceSource) {
|
|
|
536
727
|
shared: source.shared,
|
|
537
728
|
connectSrc: normalizeStringArray(source.connectSrc),
|
|
538
729
|
integrity: runtimeTarget.source === "remote" ? source.integrity : void 0,
|
|
539
|
-
ui
|
|
540
|
-
name: typeof uiConfig?.name === "string" ? uiConfig.name : `${apiName}-ui`,
|
|
541
|
-
url: uiRuntime.url,
|
|
542
|
-
entry: uiRuntime.url ? `${uiRuntime.url.replace(/\/$/, "")}/mf-manifest.json` : "/mf-manifest.json",
|
|
543
|
-
source: uiRuntime.source,
|
|
544
|
-
localPath: uiRuntime.localPath,
|
|
545
|
-
port: uiRuntime.port,
|
|
546
|
-
integrity: uiRuntime.source === "remote" && typeof uiConfig?.integrity === "string" ? uiConfig.integrity : void 0
|
|
547
|
-
} : void 0,
|
|
730
|
+
ui,
|
|
548
731
|
routes,
|
|
549
732
|
dependsOn: source.dependsOn ? normalizeStringArray(source.dependsOn) : void 0
|
|
550
733
|
};
|
|
551
734
|
}
|
|
735
|
+
/**
|
|
736
|
+
* Resolve a plugin entry's associated ui surface (`plugins.<id>.ui` / legacy
|
|
737
|
+
* `plugins.<id>.app.ui`) into the runtime ui config. Extracted so app-slot
|
|
738
|
+
* entries (app.auth) resolve their ui the same way.
|
|
739
|
+
*/
|
|
740
|
+
function buildRuntimeUiConfig(pluginId, env, uiConfig, providerBaseDir, apiName, forceSource) {
|
|
741
|
+
const uiDevelopment = typeof uiConfig?.development === "string" ? uiConfig.development : void 0;
|
|
742
|
+
const uiProduction = typeof uiConfig?.production === "string" ? uiConfig.production : void 0;
|
|
743
|
+
const uiRuntime = uiConfig && (uiDevelopment || uiProduction) ? env === "development" ? resolveDevelopmentTarget(uiDevelopment, uiProduction, providerBaseDir, forceSource, `plugins.${pluginId}.ui`) : resolveRuntimeTarget(uiProduction, providerBaseDir, "remote") : void 0;
|
|
744
|
+
if (!uiRuntime) return void 0;
|
|
745
|
+
if (uiRuntime.source === "remote" && !uiRuntime.url) return void 0;
|
|
746
|
+
return {
|
|
747
|
+
name: resolveUiRuntimeName(uiConfig, uiRuntime.localPath, apiName),
|
|
748
|
+
url: uiRuntime.url,
|
|
749
|
+
entry: uiRuntime.url ? `${uiRuntime.url.replace(/\/$/, "")}/mf-manifest.json` : "/mf-manifest.json",
|
|
750
|
+
source: uiRuntime.source,
|
|
751
|
+
publicUrl: typeof uiConfig?.publicUrl === "string" ? uiConfig.publicUrl : void 0,
|
|
752
|
+
localPath: uiRuntime.localPath,
|
|
753
|
+
port: uiRuntime.port,
|
|
754
|
+
integrity: uiRuntime.source === "remote" && typeof uiConfig?.integrity === "string" ? uiConfig.integrity : void 0,
|
|
755
|
+
ssrUrl: uiRuntime.source === "remote" && typeof uiConfig?.ssr === "string" ? uiConfig.ssr : uiRuntime.source === "local" ? uiRuntime.url : void 0,
|
|
756
|
+
ssrIntegrity: uiRuntime.source === "remote" && typeof uiConfig?.ssrIntegrity === "string" ? uiConfig.ssrIntegrity : void 0
|
|
757
|
+
};
|
|
758
|
+
}
|
|
759
|
+
/**
|
|
760
|
+
* MF container identity must match the build: folder-form plugin ui sources
|
|
761
|
+
* build under the sanitized plugin workspace package name (the generated
|
|
762
|
+
* rsbuild config imports the plugin's package.json), so derive the same
|
|
763
|
+
* value here — an authored `ui.name` is only a fallback, and can never
|
|
764
|
+
* override what the container actually registers under.
|
|
765
|
+
*/
|
|
766
|
+
function resolveUiRuntimeName(uiConfig, localPath, apiName) {
|
|
767
|
+
if (localPath) {
|
|
768
|
+
const uiPkgPath = join(localPath, "package.json");
|
|
769
|
+
const pkgPath = existsSync(uiPkgPath) ? uiPkgPath : join(dirname(localPath), "package.json");
|
|
770
|
+
try {
|
|
771
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
772
|
+
if (typeof pkg.name === "string" && pkg.name.length > 0) return sanitizeContainerName(pkg.name);
|
|
773
|
+
} catch (e) {
|
|
774
|
+
console.warn(`[Config] Could not read package.json at ${pkgPath}: ${e}`);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
return typeof uiConfig?.name === "string" ? uiConfig.name : `${apiName}-ui`;
|
|
778
|
+
}
|
|
552
779
|
function resolvePluginRuntimeName(explicitName, localPath, fallback) {
|
|
553
780
|
if (explicitName) return explicitName;
|
|
554
781
|
if (!localPath) return fallback;
|
|
@@ -594,7 +821,7 @@ function resolveRuntimeTarget(value, baseDir, defaultSource = "remote") {
|
|
|
594
821
|
};
|
|
595
822
|
if (value.startsWith(LOCAL_PREFIX)) {
|
|
596
823
|
const localTarget = value?.slice(6).trim();
|
|
597
|
-
if (!localTarget) throw new
|
|
824
|
+
if (!localTarget) throw new ConfigExtendsError({ message: `Invalid local development target: ${value}` });
|
|
598
825
|
const localPath = resolve(baseDir, localTarget);
|
|
599
826
|
if (!existsSync(localPath)) return {
|
|
600
827
|
source: "local",
|
|
@@ -637,5 +864,5 @@ function parsePort(url) {
|
|
|
637
864
|
}
|
|
638
865
|
|
|
639
866
|
//#endregion
|
|
640
|
-
export { BOS_CONFIG_ORDER, BosConfigSchema, buildRuntimeConfig,
|
|
867
|
+
export { BOS_CONFIG_ORDER, BosConfigSchema, CircularExtendsError, ConfigExtendsError, ConfigLoadError, ConfigNotfoundError, ConfigVersionManifestError, DEV_OVERLAY_FILENAME, DevOverlayError, MISSING_CONFIG_MESSAGE, buildRuntimeConfig, buildRuntimeConfigEffect, buildRuntimePluginsForConfig, defaultConfigEnv, findConfigPath, getConfigBaseDir, getHostDevelopmentPort, getResolvedConfigPath, isAppDescriptorPath, isLocalDevelopmentTarget, isRuntimeOverrideAllowed, loadAppDescriptorConfig, loadGeneratedResolvedConfig, localConfigEntryPath, mergeBosConfigWithExtends, parseAppDescriptorModule, parseDevOverlayModule, parseExtendsTarget, parsePort, parseRuntimeOverrideTargets, readAuthoredConfigInput, readBosConfigForBuild, readLocalAuthoredConfigInput, rebuildOrderedConfig, resetConfigPathCache, resolveBosConfigPath, resolveComposableReference, resolveConfigComposableEntries, resolveDevelopmentHostUrl, resolveExtendsRef, resolveLocalDevelopmentPath, resolvePluginRuntimeName, resolveUiRuntimeName, runWithConfigWarningSink, writeResolvedConfig };
|
|
641
868
|
//# sourceMappingURL=config.mjs.map
|