everything-dev 1.53.1 → 2.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +624 -196
- 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 +613 -194
- 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/ui/router.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.mjs","names":[],"sources":["../../src/ui/router.ts"],"sourcesContent":["import type { AnyRouter } from \"@tanstack/react-router\";\nimport type { HeadData, HeadLink, HeadMeta, HeadScript } from \"./types\";\n\nexport function getMetaKey(meta: HeadMeta): string {\n if (!meta) return \"null\";\n if (\"title\" in meta) return \"title\";\n if (\"charSet\" in meta) return \"charSet\";\n if (\"name\" in meta) return `name:${(meta as { name: string }).name}`;\n if (\"property\" in meta) {\n return `property:${(meta as { property: string }).property}`;\n }\n if (\"httpEquiv\" in meta) {\n return `httpEquiv:${(meta as { httpEquiv: string }).httpEquiv}`;\n }\n return JSON.stringify(meta);\n}\n\nexport function getLinkKey(link: HeadLink): string {\n const rel = (link as { rel?: string }).rel ?? \"\";\n const href = (link as { href?: string }).href ?? \"\";\n return `${rel}:${href}`;\n}\n\nexport function getScriptKey(script: HeadScript): string {\n if (!script) return \"null\";\n if (\"src\" in script && script.src) return `src:${script.src}`;\n if (\"children\" in script && script.children) {\n return `children:${typeof script.children === \"string\" ? script.children : JSON.stringify(script.children)}`;\n }\n return JSON.stringify(script);\n}\n\nexport async function collectHeadData(router: AnyRouter): Promise<HeadData> {\n await router.load();\n\n const metaMap = new Map<string, HeadMeta>();\n const linkMap = new Map<string, HeadLink>();\n const scriptMap = new Map<string, HeadScript>();\n\n for (const match of router.state.matches) {\n const
|
|
1
|
+
{"version":3,"file":"router.mjs","names":[],"sources":["../../src/ui/router.ts"],"sourcesContent":["import type { AnyRouter } from \"@tanstack/react-router\";\nimport type { HeadData, HeadLink, HeadMeta, HeadScript } from \"./types\";\n\nexport function getMetaKey(meta: HeadMeta): string {\n if (!meta) return \"null\";\n if (\"title\" in meta) return \"title\";\n if (\"charSet\" in meta) return \"charSet\";\n if (\"name\" in meta) return `name:${(meta as { name: string }).name}`;\n if (\"property\" in meta) {\n return `property:${(meta as { property: string }).property}`;\n }\n if (\"httpEquiv\" in meta) {\n return `httpEquiv:${(meta as { httpEquiv: string }).httpEquiv}`;\n }\n return JSON.stringify(meta);\n}\n\nexport function getLinkKey(link: HeadLink): string {\n const rel = (link as { rel?: string }).rel ?? \"\";\n const href = (link as { href?: string }).href ?? \"\";\n return `${rel}:${href}`;\n}\n\nexport function getScriptKey(script: HeadScript): string {\n if (!script) return \"null\";\n if (\"src\" in script && script.src) return `src:${script.src}`;\n if (\"children\" in script && script.children) {\n return `children:${typeof script.children === \"string\" ? script.children : JSON.stringify(script.children)}`;\n }\n return JSON.stringify(script);\n}\n\nexport async function collectHeadData(router: AnyRouter): Promise<HeadData> {\n await router.load();\n\n const metaMap = new Map<string, HeadMeta>();\n const linkMap = new Map<string, HeadLink>();\n const scriptMap = new Map<string, HeadScript>();\n\n for (const match of router.state.matches) {\n const matchData = match as {\n meta?: HeadMeta[];\n links?: HeadLink[];\n headScripts?: HeadScript[];\n };\n\n if (matchData.meta) {\n for (const meta of matchData.meta) {\n metaMap.set(getMetaKey(meta), meta);\n }\n }\n if (matchData.links) {\n for (const link of matchData.links) {\n linkMap.set(getLinkKey(link), link);\n }\n }\n if (matchData.headScripts) {\n for (const script of matchData.headScripts) {\n scriptMap.set(getScriptKey(script), script);\n }\n }\n }\n\n return {\n meta: [...metaMap.values()],\n links: [...linkMap.values()],\n scripts: [...scriptMap.values()],\n };\n}\n\nfunction escapeHtml(s: string): string {\n return s\n .replace(/&/g, \"&\")\n .replace(/\"/g, \""\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\");\n}\n\nfunction serializeMeta(meta: HeadMeta): string {\n if (!meta) return \"\";\n if (\"charSet\" in meta) return `<meta charset=\"${escapeHtml(String(meta.charSet))}\">`;\n if (\"title\" in meta) return `<title>${escapeHtml(String(meta.title))}</title>`;\n const attrs = Object.entries(meta as Record<string, unknown>)\n .filter(([, v]) => v != null)\n .map(([k, v]) => `${k}=\"${escapeHtml(String(v))}\"`)\n .join(\" \");\n return `<meta ${attrs}>`;\n}\n\nfunction serializeLink(link: HeadLink): string {\n if (!link) return \"\";\n const attrs = Object.entries(link as Record<string, unknown>)\n .filter(([, v]) => v != null)\n .map(([k, v]) => `${k}=\"${escapeHtml(String(v))}\"`)\n .join(\" \");\n return `<link ${attrs}>`;\n}\n\nfunction serializeScript(script: HeadScript, cspNonce?: string): string {\n if (!script) return \"\";\n if (\"src\" in script && script.src) {\n const attrs: string[] = [`src=\"${escapeHtml(script.src)}\"`];\n if (script.integrity) attrs.push(`integrity=\"${escapeHtml(script.integrity)}\"`);\n if (script.crossOrigin) attrs.push(`crossorigin=\"${escapeHtml(script.crossOrigin)}\"`);\n if (script.type) attrs.push(`type=\"${escapeHtml(script.type)}\"`);\n if (cspNonce) attrs.push(`nonce=\"${cspNonce}\"`);\n return `<script ${attrs.join(\" \")}></script>`;\n }\n if (\"children\" in script) {\n const attrs: string[] = [];\n if (script.type) attrs.push(`type=\"${escapeHtml(script.type)}\"`);\n if (cspNonce) attrs.push(`nonce=\"${cspNonce}\"`);\n const content =\n typeof script.children === \"string\" ? script.children : JSON.stringify(script.children);\n return `<script${attrs.length ? ` ${attrs.join(\" \")}` : \"\"}>${content}</script>`;\n }\n return \"\";\n}\n\nexport function serializeHeadData(\n headData: HeadData,\n cspNonce?: string,\n): { metaHtml: string; linkHtml: string; scriptHtml: string } {\n return {\n metaHtml: headData.meta\n .filter(Boolean)\n .map((m) => serializeMeta(m))\n .join(\"\\n\"),\n linkHtml: headData.links\n .filter(Boolean)\n .map((l) => serializeLink(l))\n .join(\"\\n\"),\n scriptHtml: headData.scripts\n .filter(Boolean)\n .map((s) => serializeScript(s, cspNonce))\n .join(\"\\n\"),\n };\n}\n"],"mappings":";AAGA,SAAgB,WAAW,MAAwB;CACjD,IAAI,CAAC,MAAM,OAAO;CAClB,IAAI,WAAW,MAAM,OAAO;CAC5B,IAAI,aAAa,MAAM,OAAO;CAC9B,IAAI,UAAU,MAAM,OAAO,QAAS,KAA0B;CAC9D,IAAI,cAAc,MAChB,OAAO,YAAa,KAA8B;CAEpD,IAAI,eAAe,MACjB,OAAO,aAAc,KAA+B;CAEtD,OAAO,KAAK,UAAU,IAAI;AAC5B;AAEA,SAAgB,WAAW,MAAwB;CAGjD,OAAO,GAFM,KAA0B,OAAO,GAEhC,GADA,KAA2B,QAAQ;AAEnD;AAEA,SAAgB,aAAa,QAA4B;CACvD,IAAI,CAAC,QAAQ,OAAO;CACpB,IAAI,SAAS,UAAU,OAAO,KAAK,OAAO,OAAO,OAAO;CACxD,IAAI,cAAc,UAAU,OAAO,UACjC,OAAO,YAAY,OAAO,OAAO,aAAa,WAAW,OAAO,WAAW,KAAK,UAAU,OAAO,QAAQ;CAE3G,OAAO,KAAK,UAAU,MAAM;AAC9B;AAEA,eAAsB,gBAAgB,QAAsC;CAC1E,MAAM,OAAO,KAAK;CAElB,MAAM,0BAAU,IAAI,IAAsB;CAC1C,MAAM,0BAAU,IAAI,IAAsB;CAC1C,MAAM,4BAAY,IAAI,IAAwB;CAE9C,KAAK,MAAM,SAAS,OAAO,MAAM,SAAS;EACxC,MAAM,YAAY;EAMlB,IAAI,UAAU,MACZ,KAAK,MAAM,QAAQ,UAAU,MAC3B,QAAQ,IAAI,WAAW,IAAI,GAAG,IAAI;EAGtC,IAAI,UAAU,OACZ,KAAK,MAAM,QAAQ,UAAU,OAC3B,QAAQ,IAAI,WAAW,IAAI,GAAG,IAAI;EAGtC,IAAI,UAAU,aACZ,KAAK,MAAM,UAAU,UAAU,aAC7B,UAAU,IAAI,aAAa,MAAM,GAAG,MAAM;CAGhD;CAEA,OAAO;EACL,MAAM,CAAC,GAAG,QAAQ,OAAO,CAAC;EAC1B,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC;EAC3B,SAAS,CAAC,GAAG,UAAU,OAAO,CAAC;CACjC;AACF;AAEA,SAAS,WAAW,GAAmB;CACrC,OAAO,EACJ,QAAQ,MAAM,OAAO,CAAC,CACtB,QAAQ,MAAM,QAAQ,CAAC,CACvB,QAAQ,MAAM,MAAM,CAAC,CACrB,QAAQ,MAAM,MAAM;AACzB;AAEA,SAAS,cAAc,MAAwB;CAC7C,IAAI,CAAC,MAAM,OAAO;CAClB,IAAI,aAAa,MAAM,OAAO,kBAAkB,WAAW,OAAO,KAAK,OAAO,CAAC,EAAE;CACjF,IAAI,WAAW,MAAM,OAAO,UAAU,WAAW,OAAO,KAAK,KAAK,CAAC,EAAE;CAKrE,OAAO,SAJO,OAAO,QAAQ,IAA+B,CAAC,CAC1D,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC,CAC5B,KAAK,CAAC,GAAG,OAAO,GAAG,EAAE,IAAI,WAAW,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAClD,KAAK,GACY,EAAE;AACxB;AAEA,SAAS,cAAc,MAAwB;CAC7C,IAAI,CAAC,MAAM,OAAO;CAKlB,OAAO,SAJO,OAAO,QAAQ,IAA+B,CAAC,CAC1D,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC,CAC5B,KAAK,CAAC,GAAG,OAAO,GAAG,EAAE,IAAI,WAAW,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAClD,KAAK,GACY,EAAE;AACxB;AAEA,SAAS,gBAAgB,QAAoB,UAA2B;CACtE,IAAI,CAAC,QAAQ,OAAO;CACpB,IAAI,SAAS,UAAU,OAAO,KAAK;EACjC,MAAM,QAAkB,CAAC,QAAQ,WAAW,OAAO,GAAG,EAAE,EAAE;EAC1D,IAAI,OAAO,WAAW,MAAM,KAAK,cAAc,WAAW,OAAO,SAAS,EAAE,EAAE;EAC9E,IAAI,OAAO,aAAa,MAAM,KAAK,gBAAgB,WAAW,OAAO,WAAW,EAAE,EAAE;EACpF,IAAI,OAAO,MAAM,MAAM,KAAK,SAAS,WAAW,OAAO,IAAI,EAAE,EAAE;EAC/D,IAAI,UAAU,MAAM,KAAK,UAAU,SAAS,EAAE;EAC9C,OAAO,WAAW,MAAM,KAAK,GAAG,EAAE;CACpC;CACA,IAAI,cAAc,QAAQ;EACxB,MAAM,QAAkB,CAAC;EACzB,IAAI,OAAO,MAAM,MAAM,KAAK,SAAS,WAAW,OAAO,IAAI,EAAE,EAAE;EAC/D,IAAI,UAAU,MAAM,KAAK,UAAU,SAAS,EAAE;EAC9C,MAAM,UACJ,OAAO,OAAO,aAAa,WAAW,OAAO,WAAW,KAAK,UAAU,OAAO,QAAQ;EACxF,OAAO,UAAU,MAAM,SAAS,IAAI,MAAM,KAAK,GAAG,MAAM,GAAG,GAAG,QAAQ;CACxE;CACA,OAAO;AACT;AAEA,SAAgB,kBACd,UACA,UAC4D;CAC5D,OAAO;EACL,UAAU,SAAS,KAChB,OAAO,OAAO,CAAC,CACf,KAAK,MAAM,cAAc,CAAC,CAAC,CAAC,CAC5B,KAAK,IAAI;EACZ,UAAU,SAAS,MAChB,OAAO,OAAO,CAAC,CACf,KAAK,MAAM,cAAc,CAAC,CAAC,CAAC,CAC5B,KAAK,IAAI;EACZ,YAAY,SAAS,QAClB,OAAO,OAAO,CAAC,CACf,KAAK,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CACxC,KAAK,IAAI;CACd;AACF"}
|
package/dist/ui/runtime.cjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
|
|
3
2
|
//#region src/ui/runtime.ts
|
|
4
3
|
function getRuntimeConfig() {
|
|
5
4
|
if (typeof window === "undefined") throw new Error("Runtime config is only available in the browser");
|
|
@@ -10,6 +9,10 @@ function getCspNonce() {
|
|
|
10
9
|
if (typeof window === "undefined") return;
|
|
11
10
|
return window.__CSP_NONCE__;
|
|
12
11
|
}
|
|
12
|
+
function getAppName(config) {
|
|
13
|
+
const runtimeConfig = config ?? (typeof window === "undefined" ? void 0 : window.__RUNTIME_CONFIG__);
|
|
14
|
+
return runtimeConfig?.runtime?.title ?? runtimeConfig?.account ?? "";
|
|
15
|
+
}
|
|
13
16
|
function buildRuntimeHref(pathname, runtimeConfig) {
|
|
14
17
|
const basePath = runtimeConfig?.runtime?.runtimeBasePath ?? "/";
|
|
15
18
|
if (basePath === "/") return pathname;
|
|
@@ -27,6 +30,7 @@ function buildPublishedGatewayHref(accountId, gatewayId) {
|
|
|
27
30
|
exports.buildPublishedAccountHref = buildPublishedAccountHref;
|
|
28
31
|
exports.buildPublishedGatewayHref = buildPublishedGatewayHref;
|
|
29
32
|
exports.buildRuntimeHref = buildRuntimeHref;
|
|
33
|
+
exports.getAppName = getAppName;
|
|
30
34
|
exports.getCspNonce = getCspNonce;
|
|
31
35
|
exports.getRuntimeConfig = getRuntimeConfig;
|
|
32
36
|
//# sourceMappingURL=runtime.cjs.map
|
package/dist/ui/runtime.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.cjs","names":[],"sources":["../../src/ui/runtime.ts"],"sourcesContent":["import type { ClientRuntimeConfig } from \"../types\";\n\nexport type { ClientRuntimeInfo } from \"../types\";\n\ndeclare global {\n interface Window {\n __RUNTIME_CONFIG__?: ClientRuntimeConfig;\n __CSP_NONCE__?: string;\n }\n}\n\nexport function getRuntimeConfig(): ClientRuntimeConfig {\n if (typeof window === \"undefined\") {\n throw new Error(\"Runtime config is only available in the browser\");\n }\n\n if (!window.__RUNTIME_CONFIG__) {\n throw new Error(\"Missing runtime config\");\n }\n\n return window.__RUNTIME_CONFIG__;\n}\n\nexport function getCspNonce() {\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n return window.__CSP_NONCE__;\n}\n\nexport function buildRuntimeHref(pathname: string, runtimeConfig?: Partial<ClientRuntimeConfig>) {\n const basePath = runtimeConfig?.runtime?.runtimeBasePath ?? \"/\";\n if (basePath === \"/\") {\n return pathname;\n }\n\n if (!pathname.startsWith(\"/\")) {\n return `${basePath}/${pathname}`;\n }\n\n return pathname === \"/\" ? basePath : `${basePath}${pathname}`;\n}\n\nexport function buildPublishedAccountHref(accountId: string) {\n return `/apps/${encodeURIComponent(accountId)}`;\n}\n\nexport function buildPublishedGatewayHref(accountId: string, gatewayId: string) {\n return `${buildPublishedAccountHref(accountId)}/${encodeURIComponent(gatewayId)}`;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime.cjs","names":[],"sources":["../../src/ui/runtime.ts"],"sourcesContent":["import type { ClientRuntimeConfig } from \"../types\";\n\nexport type { ClientRuntimeInfo } from \"../types\";\n\ndeclare global {\n interface Window {\n __RUNTIME_CONFIG__?: ClientRuntimeConfig;\n __CSP_NONCE__?: string;\n }\n}\n\nexport function getRuntimeConfig(): ClientRuntimeConfig {\n if (typeof window === \"undefined\") {\n throw new Error(\"Runtime config is only available in the browser\");\n }\n\n if (!window.__RUNTIME_CONFIG__) {\n throw new Error(\"Missing runtime config\");\n }\n\n return window.__RUNTIME_CONFIG__;\n}\n\nexport function getCspNonce() {\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n return window.__CSP_NONCE__;\n}\n\nexport function getAppName(config?: Partial<ClientRuntimeConfig>): string {\n const runtimeConfig =\n config ?? (typeof window === \"undefined\" ? undefined : window.__RUNTIME_CONFIG__);\n return runtimeConfig?.runtime?.title ?? runtimeConfig?.account ?? \"\";\n}\n\nexport function buildRuntimeHref(pathname: string, runtimeConfig?: Partial<ClientRuntimeConfig>) {\n const basePath = runtimeConfig?.runtime?.runtimeBasePath ?? \"/\";\n if (basePath === \"/\") {\n return pathname;\n }\n\n if (!pathname.startsWith(\"/\")) {\n return `${basePath}/${pathname}`;\n }\n\n return pathname === \"/\" ? basePath : `${basePath}${pathname}`;\n}\n\nexport function buildPublishedAccountHref(accountId: string) {\n return `/apps/${encodeURIComponent(accountId)}`;\n}\n\nexport function buildPublishedGatewayHref(accountId: string, gatewayId: string) {\n return `${buildPublishedAccountHref(accountId)}/${encodeURIComponent(gatewayId)}`;\n}\n"],"mappings":";;AAWA,SAAgB,mBAAwC;CACtD,IAAI,OAAO,WAAW,aACpB,MAAM,IAAI,MAAM,iDAAiD;CAGnE,IAAI,CAAC,OAAO,oBACV,MAAM,IAAI,MAAM,wBAAwB;CAG1C,OAAO,OAAO;AAChB;AAEA,SAAgB,cAAc;CAC5B,IAAI,OAAO,WAAW,aACpB;CAGF,OAAO,OAAO;AAChB;AAEA,SAAgB,WAAW,QAA+C;CACxE,MAAM,gBACJ,WAAW,OAAO,WAAW,cAAc,SAAY,OAAO;CAChE,OAAO,eAAe,SAAS,SAAS,eAAe,WAAW;AACpE;AAEA,SAAgB,iBAAiB,UAAkB,eAA8C;CAC/F,MAAM,WAAW,eAAe,SAAS,mBAAmB;CAC5D,IAAI,aAAa,KACf,OAAO;CAGT,IAAI,CAAC,SAAS,WAAW,GAAG,GAC1B,OAAO,GAAG,SAAS,GAAG;CAGxB,OAAO,aAAa,MAAM,WAAW,GAAG,WAAW;AACrD;AAEA,SAAgB,0BAA0B,WAAmB;CAC3D,OAAO,SAAS,mBAAmB,SAAS;AAC9C;AAEA,SAAgB,0BAA0B,WAAmB,WAAmB;CAC9E,OAAO,GAAG,0BAA0B,SAAS,EAAE,GAAG,mBAAmB,SAAS;AAChF"}
|
package/dist/ui/runtime.d.cts
CHANGED
|
@@ -8,9 +8,10 @@ declare global {
|
|
|
8
8
|
}
|
|
9
9
|
declare function getRuntimeConfig(): ClientRuntimeConfig;
|
|
10
10
|
declare function getCspNonce(): string | undefined;
|
|
11
|
+
declare function getAppName(config?: Partial<ClientRuntimeConfig>): string;
|
|
11
12
|
declare function buildRuntimeHref(pathname: string, runtimeConfig?: Partial<ClientRuntimeConfig>): string;
|
|
12
13
|
declare function buildPublishedAccountHref(accountId: string): string;
|
|
13
14
|
declare function buildPublishedGatewayHref(accountId: string, gatewayId: string): string;
|
|
14
15
|
//#endregion
|
|
15
|
-
export { type ClientRuntimeInfo, buildPublishedAccountHref, buildPublishedGatewayHref, buildRuntimeHref, getCspNonce, getRuntimeConfig };
|
|
16
|
+
export { type ClientRuntimeInfo, buildPublishedAccountHref, buildPublishedGatewayHref, buildRuntimeHref, getAppName, getCspNonce, getRuntimeConfig };
|
|
16
17
|
//# sourceMappingURL=runtime.d.cts.map
|
package/dist/ui/runtime.d.mts
CHANGED
|
@@ -8,9 +8,10 @@ declare global {
|
|
|
8
8
|
}
|
|
9
9
|
declare function getRuntimeConfig(): ClientRuntimeConfig;
|
|
10
10
|
declare function getCspNonce(): string | undefined;
|
|
11
|
+
declare function getAppName(config?: Partial<ClientRuntimeConfig>): string;
|
|
11
12
|
declare function buildRuntimeHref(pathname: string, runtimeConfig?: Partial<ClientRuntimeConfig>): string;
|
|
12
13
|
declare function buildPublishedAccountHref(accountId: string): string;
|
|
13
14
|
declare function buildPublishedGatewayHref(accountId: string, gatewayId: string): string;
|
|
14
15
|
//#endregion
|
|
15
|
-
export { type ClientRuntimeInfo, buildPublishedAccountHref, buildPublishedGatewayHref, buildRuntimeHref, getCspNonce, getRuntimeConfig };
|
|
16
|
+
export { type ClientRuntimeInfo, buildPublishedAccountHref, buildPublishedGatewayHref, buildRuntimeHref, getAppName, getCspNonce, getRuntimeConfig };
|
|
16
17
|
//# sourceMappingURL=runtime.d.mts.map
|
package/dist/ui/runtime.mjs
CHANGED
|
@@ -8,6 +8,10 @@ function getCspNonce() {
|
|
|
8
8
|
if (typeof window === "undefined") return;
|
|
9
9
|
return window.__CSP_NONCE__;
|
|
10
10
|
}
|
|
11
|
+
function getAppName(config) {
|
|
12
|
+
const runtimeConfig = config ?? (typeof window === "undefined" ? void 0 : window.__RUNTIME_CONFIG__);
|
|
13
|
+
return runtimeConfig?.runtime?.title ?? runtimeConfig?.account ?? "";
|
|
14
|
+
}
|
|
11
15
|
function buildRuntimeHref(pathname, runtimeConfig) {
|
|
12
16
|
const basePath = runtimeConfig?.runtime?.runtimeBasePath ?? "/";
|
|
13
17
|
if (basePath === "/") return pathname;
|
|
@@ -22,5 +26,5 @@ function buildPublishedGatewayHref(accountId, gatewayId) {
|
|
|
22
26
|
}
|
|
23
27
|
|
|
24
28
|
//#endregion
|
|
25
|
-
export { buildPublishedAccountHref, buildPublishedGatewayHref, buildRuntimeHref, getCspNonce, getRuntimeConfig };
|
|
29
|
+
export { buildPublishedAccountHref, buildPublishedGatewayHref, buildRuntimeHref, getAppName, getCspNonce, getRuntimeConfig };
|
|
26
30
|
//# sourceMappingURL=runtime.mjs.map
|
package/dist/ui/runtime.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.mjs","names":[],"sources":["../../src/ui/runtime.ts"],"sourcesContent":["import type { ClientRuntimeConfig } from \"../types\";\n\nexport type { ClientRuntimeInfo } from \"../types\";\n\ndeclare global {\n interface Window {\n __RUNTIME_CONFIG__?: ClientRuntimeConfig;\n __CSP_NONCE__?: string;\n }\n}\n\nexport function getRuntimeConfig(): ClientRuntimeConfig {\n if (typeof window === \"undefined\") {\n throw new Error(\"Runtime config is only available in the browser\");\n }\n\n if (!window.__RUNTIME_CONFIG__) {\n throw new Error(\"Missing runtime config\");\n }\n\n return window.__RUNTIME_CONFIG__;\n}\n\nexport function getCspNonce() {\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n return window.__CSP_NONCE__;\n}\n\nexport function buildRuntimeHref(pathname: string, runtimeConfig?: Partial<ClientRuntimeConfig>) {\n const basePath = runtimeConfig?.runtime?.runtimeBasePath ?? \"/\";\n if (basePath === \"/\") {\n return pathname;\n }\n\n if (!pathname.startsWith(\"/\")) {\n return `${basePath}/${pathname}`;\n }\n\n return pathname === \"/\" ? basePath : `${basePath}${pathname}`;\n}\n\nexport function buildPublishedAccountHref(accountId: string) {\n return `/apps/${encodeURIComponent(accountId)}`;\n}\n\nexport function buildPublishedGatewayHref(accountId: string, gatewayId: string) {\n return `${buildPublishedAccountHref(accountId)}/${encodeURIComponent(gatewayId)}`;\n}\n"],"mappings":";AAWA,SAAgB,mBAAwC;CACtD,IAAI,OAAO,WAAW,aACpB,MAAM,IAAI,MAAM,iDAAiD;CAGnE,IAAI,CAAC,OAAO,oBACV,MAAM,IAAI,MAAM,wBAAwB;CAG1C,OAAO,OAAO;AAChB;AAEA,SAAgB,cAAc;CAC5B,IAAI,OAAO,WAAW,aACpB;CAGF,OAAO,OAAO;AAChB;AAEA,SAAgB,iBAAiB,UAAkB,eAA8C;CAC/F,MAAM,WAAW,eAAe,SAAS,mBAAmB;CAC5D,IAAI,aAAa,KACf,OAAO;CAGT,IAAI,CAAC,SAAS,WAAW,GAAG,GAC1B,OAAO,GAAG,SAAS,GAAG;CAGxB,OAAO,aAAa,MAAM,WAAW,GAAG,WAAW;AACrD;AAEA,SAAgB,0BAA0B,WAAmB;CAC3D,OAAO,SAAS,mBAAmB,SAAS;AAC9C;AAEA,SAAgB,0BAA0B,WAAmB,WAAmB;CAC9E,OAAO,GAAG,0BAA0B,SAAS,EAAE,GAAG,mBAAmB,SAAS;AAChF"}
|
|
1
|
+
{"version":3,"file":"runtime.mjs","names":[],"sources":["../../src/ui/runtime.ts"],"sourcesContent":["import type { ClientRuntimeConfig } from \"../types\";\n\nexport type { ClientRuntimeInfo } from \"../types\";\n\ndeclare global {\n interface Window {\n __RUNTIME_CONFIG__?: ClientRuntimeConfig;\n __CSP_NONCE__?: string;\n }\n}\n\nexport function getRuntimeConfig(): ClientRuntimeConfig {\n if (typeof window === \"undefined\") {\n throw new Error(\"Runtime config is only available in the browser\");\n }\n\n if (!window.__RUNTIME_CONFIG__) {\n throw new Error(\"Missing runtime config\");\n }\n\n return window.__RUNTIME_CONFIG__;\n}\n\nexport function getCspNonce() {\n if (typeof window === \"undefined\") {\n return undefined;\n }\n\n return window.__CSP_NONCE__;\n}\n\nexport function getAppName(config?: Partial<ClientRuntimeConfig>): string {\n const runtimeConfig =\n config ?? (typeof window === \"undefined\" ? undefined : window.__RUNTIME_CONFIG__);\n return runtimeConfig?.runtime?.title ?? runtimeConfig?.account ?? \"\";\n}\n\nexport function buildRuntimeHref(pathname: string, runtimeConfig?: Partial<ClientRuntimeConfig>) {\n const basePath = runtimeConfig?.runtime?.runtimeBasePath ?? \"/\";\n if (basePath === \"/\") {\n return pathname;\n }\n\n if (!pathname.startsWith(\"/\")) {\n return `${basePath}/${pathname}`;\n }\n\n return pathname === \"/\" ? basePath : `${basePath}${pathname}`;\n}\n\nexport function buildPublishedAccountHref(accountId: string) {\n return `/apps/${encodeURIComponent(accountId)}`;\n}\n\nexport function buildPublishedGatewayHref(accountId: string, gatewayId: string) {\n return `${buildPublishedAccountHref(accountId)}/${encodeURIComponent(gatewayId)}`;\n}\n"],"mappings":";AAWA,SAAgB,mBAAwC;CACtD,IAAI,OAAO,WAAW,aACpB,MAAM,IAAI,MAAM,iDAAiD;CAGnE,IAAI,CAAC,OAAO,oBACV,MAAM,IAAI,MAAM,wBAAwB;CAG1C,OAAO,OAAO;AAChB;AAEA,SAAgB,cAAc;CAC5B,IAAI,OAAO,WAAW,aACpB;CAGF,OAAO,OAAO;AAChB;AAEA,SAAgB,WAAW,QAA+C;CACxE,MAAM,gBACJ,WAAW,OAAO,WAAW,cAAc,SAAY,OAAO;CAChE,OAAO,eAAe,SAAS,SAAS,eAAe,WAAW;AACpE;AAEA,SAAgB,iBAAiB,UAAkB,eAA8C;CAC/F,MAAM,WAAW,eAAe,SAAS,mBAAmB;CAC5D,IAAI,aAAa,KACf,OAAO;CAGT,IAAI,CAAC,SAAS,WAAW,GAAG,GAC1B,OAAO,GAAG,SAAS,GAAG;CAGxB,OAAO,aAAa,MAAM,WAAW,GAAG,WAAW;AACrD;AAEA,SAAgB,0BAA0B,WAAmB;CAC3D,OAAO,SAAS,mBAAmB,SAAS;AAC9C;AAEA,SAAgB,0BAA0B,WAAmB,WAAmB;CAC9E,OAAO,GAAG,0BAA0B,SAAS,EAAE,GAAG,mBAAmB,SAAS;AAChF"}
|
package/dist/ui/slot.cjs
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
let every_plugin_ui_manifest = require("every-plugin/ui/manifest");
|
|
2
|
+
|
|
3
|
+
//#region src/ui/slot.ts
|
|
4
|
+
const trimBase = (value) => (value ?? "").replace(/\/$/, "");
|
|
5
|
+
const withBuster = (url, buster) => buster ? `${url}?v=${encodeURIComponent(buster)}` : url;
|
|
6
|
+
function requireEntry(entryUrl, env, slot, surface, devFixed) {
|
|
7
|
+
if (entryUrl) return entryUrl;
|
|
8
|
+
if (env === "development") return devFixed;
|
|
9
|
+
throw new Error(`slot "${slot}" has no derived ${surface} entry — pins resolve it from the version manifest (the fixed dev name is development-only)`);
|
|
10
|
+
}
|
|
11
|
+
function ssrEntryUrl(slot, env) {
|
|
12
|
+
if (slot.ssrEntryUrl) return slot.ssrEntryUrl;
|
|
13
|
+
if (env === "development") return slot.ssrUrl ? withBuster(`${trimBase(slot.ssrUrl)}/${every_plugin_ui_manifest.UI_REMOTE_SERVER_ENTRY_FILENAME}`, slot.ssrIntegrity ?? slot.containerVersion) : void 0;
|
|
14
|
+
if (!slot.ssrUrl) return void 0;
|
|
15
|
+
throw new Error(`slot "${slot.name}" has no derived ssr entry — pins resolve it from the version manifest (the fixed dev name is development-only)`);
|
|
16
|
+
}
|
|
17
|
+
function entryUrls(slot, env) {
|
|
18
|
+
const base = trimBase(slot.publicUrl ?? slot.url);
|
|
19
|
+
return {
|
|
20
|
+
get web() {
|
|
21
|
+
return requireEntry(slot.entryUrl, env, slot.name, "web", withBuster(`${base}/${every_plugin_ui_manifest.UI_REMOTE_ENTRY_FILENAME}`, slot.integrity));
|
|
22
|
+
},
|
|
23
|
+
get ssr() {
|
|
24
|
+
return ssrEntryUrl(slot, env);
|
|
25
|
+
},
|
|
26
|
+
get browserManifest() {
|
|
27
|
+
return slot.localPath ? void 0 : slot.browserManifestUrl;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.entryUrls = entryUrls;
|
|
34
|
+
//# sourceMappingURL=slot.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot.cjs","names":["UI_REMOTE_SERVER_ENTRY_FILENAME","UI_REMOTE_ENTRY_FILENAME"],"sources":["../../src/ui/slot.ts"],"sourcesContent":["import {\n UI_REMOTE_ENTRY_FILENAME,\n UI_REMOTE_SERVER_ENTRY_FILENAME,\n} from \"every-plugin/ui/manifest\";\nimport type { BosEnv } from \"../merge\";\n\n/**\n * The host's entry-URL SlotResolver: one pure derivation from a stamped\n * config slot to the URLs each surface loads. `EntrySlot` is structural —\n * the version-manifest derivation (atomic-deploys 04) stamps exactly these\n * fields onto `RuntimeConfig` slots, so they satisfy it as-is. Each surface\n * of `entryUrls` resolves (and throws) lazily — a caller reading only `web`\n * never trips the ssr surface's resolution, and vice versa.\n */\nexport interface EntrySlot {\n /** slot identity, verbatim in resolution errors */\n name: string;\n url?: string;\n /** browser-facing base (ADR 0011) — the base rule is publicUrl ?? url, inside this module */\n publicUrl?: string;\n /** pin-derived hashed browser entry (absent in development) */\n entryUrl?: string;\n ssrUrl?: string;\n /** pin-derived hashed SSR entry */\n ssrEntryUrl?: string;\n integrity?: string;\n ssrIntegrity?: string;\n /** dev-only freshness token (localUiRemoteEntry's container mtime) */\n containerVersion?: string;\n /** pin-derived hashed browser manifest — absent for local slots, which no\n * pin derivation ever stamps (atomic-deploys 08) and the resolver drops\n * even if one were stamped */\n browserManifestUrl?: string;\n localPath?: string;\n}\n\nexport interface EntryUrls {\n /** browser script src / registration entry — bustered fixed name in dev, hashed in prod */\n readonly web: string;\n /** server container entry; undefined when the slot has no SSR coordinates */\n readonly ssr?: string;\n /** pin-derived hashed mf-manifest; undefined ⟺ local slot (atomic-deploys 08, STRUCTURAL) */\n readonly browserManifest?: string;\n}\n\nconst trimBase = (value: string | undefined): string => (value ?? \"\").replace(/\\/$/, \"\");\n\nconst withBuster = (url: string, buster: string | undefined): string =>\n buster ? `${url}?v=${encodeURIComponent(buster)}` : url;\n\nfunction requireEntry(\n entryUrl: string | undefined,\n env: BosEnv,\n slot: string,\n surface: string,\n devFixed: string,\n): string {\n if (entryUrl) return entryUrl;\n if (env === \"development\") return devFixed;\n throw new Error(\n `slot \"${slot}\" has no derived ${surface} entry — pins resolve it from the version manifest ` +\n `(the fixed dev name is development-only)`,\n );\n}\n\nfunction ssrEntryUrl(slot: EntrySlot, env: BosEnv): string | undefined {\n if (slot.ssrEntryUrl) return slot.ssrEntryUrl;\n if (env === \"development\") {\n return slot.ssrUrl\n ? withBuster(\n `${trimBase(slot.ssrUrl)}/${UI_REMOTE_SERVER_ENTRY_FILENAME}`,\n slot.ssrIntegrity ?? slot.containerVersion,\n )\n : undefined;\n }\n if (!slot.ssrUrl) return undefined;\n throw new Error(\n `slot \"${slot.name}\" has no derived ssr entry — pins resolve it from the version manifest ` +\n `(the fixed dev name is development-only)`,\n );\n}\n\nexport function entryUrls(slot: EntrySlot, env: BosEnv): EntryUrls {\n const base = trimBase(slot.publicUrl ?? slot.url);\n return {\n get web() {\n return requireEntry(\n slot.entryUrl,\n env,\n slot.name,\n \"web\",\n withBuster(`${base}/${UI_REMOTE_ENTRY_FILENAME}`, slot.integrity),\n );\n },\n get ssr() {\n return ssrEntryUrl(slot, env);\n },\n get browserManifest() {\n return slot.localPath ? undefined : slot.browserManifestUrl;\n },\n };\n}\n"],"mappings":";;;AA6CA,MAAM,YAAY,WAAuC,SAAS,GAAE,CAAE,QAAQ,OAAO,EAAE;AAEvF,MAAM,cAAc,KAAa,WAC/B,SAAS,GAAG,IAAI,KAAK,mBAAmB,MAAM,MAAM;AAEtD,SAAS,aACP,UACA,KACA,MACA,SACA,UACQ;CACR,IAAI,UAAU,OAAO;CACrB,IAAI,QAAQ,eAAe,OAAO;CAClC,MAAM,IAAI,MACR,SAAS,KAAK,mBAAmB,QAAQ,4FAE3C;AACF;AAEA,SAAS,YAAY,MAAiB,KAAiC;CACrE,IAAI,KAAK,aAAa,OAAO,KAAK;CAClC,IAAI,QAAQ,eACV,OAAO,KAAK,SACR,WACE,GAAG,SAAS,KAAK,MAAM,EAAE,GAAGA,4DAC5B,KAAK,gBAAgB,KAAK,gBAC5B,IACA;CAEN,IAAI,CAAC,KAAK,QAAQ,OAAO;CACzB,MAAM,IAAI,MACR,SAAS,KAAK,KAAK,gHAErB;AACF;AAEA,SAAgB,UAAU,MAAiB,KAAwB;CACjE,MAAM,OAAO,SAAS,KAAK,aAAa,KAAK,GAAG;CAChD,OAAO;EACL,IAAI,MAAM;GACR,OAAO,aACL,KAAK,UACL,KACA,KAAK,MACL,OACA,WAAW,GAAG,KAAK,GAAGC,qDAA4B,KAAK,SAAS,CAClE;EACF;EACA,IAAI,MAAM;GACR,OAAO,YAAY,MAAM,GAAG;EAC9B;EACA,IAAI,kBAAkB;GACpB,OAAO,KAAK,YAAY,SAAY,KAAK;EAC3C;CACF;AACF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BosEnv } from "../merge.cjs";
|
|
2
|
+
//#region src/ui/slot.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The host's entry-URL SlotResolver: one pure derivation from a stamped
|
|
5
|
+
* config slot to the URLs each surface loads. `EntrySlot` is structural —
|
|
6
|
+
* the version-manifest derivation (atomic-deploys 04) stamps exactly these
|
|
7
|
+
* fields onto `RuntimeConfig` slots, so they satisfy it as-is. Each surface
|
|
8
|
+
* of `entryUrls` resolves (and throws) lazily — a caller reading only `web`
|
|
9
|
+
* never trips the ssr surface's resolution, and vice versa.
|
|
10
|
+
*/
|
|
11
|
+
interface EntrySlot {
|
|
12
|
+
/** slot identity, verbatim in resolution errors */
|
|
13
|
+
name: string;
|
|
14
|
+
url?: string;
|
|
15
|
+
/** browser-facing base (ADR 0011) — the base rule is publicUrl ?? url, inside this module */
|
|
16
|
+
publicUrl?: string;
|
|
17
|
+
/** pin-derived hashed browser entry (absent in development) */
|
|
18
|
+
entryUrl?: string;
|
|
19
|
+
ssrUrl?: string;
|
|
20
|
+
/** pin-derived hashed SSR entry */
|
|
21
|
+
ssrEntryUrl?: string;
|
|
22
|
+
integrity?: string;
|
|
23
|
+
ssrIntegrity?: string;
|
|
24
|
+
/** dev-only freshness token (localUiRemoteEntry's container mtime) */
|
|
25
|
+
containerVersion?: string;
|
|
26
|
+
/** pin-derived hashed browser manifest — absent for local slots, which no
|
|
27
|
+
* pin derivation ever stamps (atomic-deploys 08) and the resolver drops
|
|
28
|
+
* even if one were stamped */
|
|
29
|
+
browserManifestUrl?: string;
|
|
30
|
+
localPath?: string;
|
|
31
|
+
}
|
|
32
|
+
interface EntryUrls {
|
|
33
|
+
/** browser script src / registration entry — bustered fixed name in dev, hashed in prod */
|
|
34
|
+
readonly web: string;
|
|
35
|
+
/** server container entry; undefined when the slot has no SSR coordinates */
|
|
36
|
+
readonly ssr?: string;
|
|
37
|
+
/** pin-derived hashed mf-manifest; undefined ⟺ local slot (atomic-deploys 08, STRUCTURAL) */
|
|
38
|
+
readonly browserManifest?: string;
|
|
39
|
+
}
|
|
40
|
+
declare function entryUrls(slot: EntrySlot, env: BosEnv): EntryUrls;
|
|
41
|
+
//#endregion
|
|
42
|
+
export { EntrySlot, EntryUrls, entryUrls };
|
|
43
|
+
//# sourceMappingURL=slot.d.cts.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BosEnv } from "../merge.mjs";
|
|
2
|
+
//#region src/ui/slot.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The host's entry-URL SlotResolver: one pure derivation from a stamped
|
|
5
|
+
* config slot to the URLs each surface loads. `EntrySlot` is structural —
|
|
6
|
+
* the version-manifest derivation (atomic-deploys 04) stamps exactly these
|
|
7
|
+
* fields onto `RuntimeConfig` slots, so they satisfy it as-is. Each surface
|
|
8
|
+
* of `entryUrls` resolves (and throws) lazily — a caller reading only `web`
|
|
9
|
+
* never trips the ssr surface's resolution, and vice versa.
|
|
10
|
+
*/
|
|
11
|
+
interface EntrySlot {
|
|
12
|
+
/** slot identity, verbatim in resolution errors */
|
|
13
|
+
name: string;
|
|
14
|
+
url?: string;
|
|
15
|
+
/** browser-facing base (ADR 0011) — the base rule is publicUrl ?? url, inside this module */
|
|
16
|
+
publicUrl?: string;
|
|
17
|
+
/** pin-derived hashed browser entry (absent in development) */
|
|
18
|
+
entryUrl?: string;
|
|
19
|
+
ssrUrl?: string;
|
|
20
|
+
/** pin-derived hashed SSR entry */
|
|
21
|
+
ssrEntryUrl?: string;
|
|
22
|
+
integrity?: string;
|
|
23
|
+
ssrIntegrity?: string;
|
|
24
|
+
/** dev-only freshness token (localUiRemoteEntry's container mtime) */
|
|
25
|
+
containerVersion?: string;
|
|
26
|
+
/** pin-derived hashed browser manifest — absent for local slots, which no
|
|
27
|
+
* pin derivation ever stamps (atomic-deploys 08) and the resolver drops
|
|
28
|
+
* even if one were stamped */
|
|
29
|
+
browserManifestUrl?: string;
|
|
30
|
+
localPath?: string;
|
|
31
|
+
}
|
|
32
|
+
interface EntryUrls {
|
|
33
|
+
/** browser script src / registration entry — bustered fixed name in dev, hashed in prod */
|
|
34
|
+
readonly web: string;
|
|
35
|
+
/** server container entry; undefined when the slot has no SSR coordinates */
|
|
36
|
+
readonly ssr?: string;
|
|
37
|
+
/** pin-derived hashed mf-manifest; undefined ⟺ local slot (atomic-deploys 08, STRUCTURAL) */
|
|
38
|
+
readonly browserManifest?: string;
|
|
39
|
+
}
|
|
40
|
+
declare function entryUrls(slot: EntrySlot, env: BosEnv): EntryUrls;
|
|
41
|
+
//#endregion
|
|
42
|
+
export { EntrySlot, EntryUrls, entryUrls };
|
|
43
|
+
//# sourceMappingURL=slot.d.mts.map
|
package/dist/ui/slot.mjs
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { UI_REMOTE_ENTRY_FILENAME, UI_REMOTE_SERVER_ENTRY_FILENAME } from "every-plugin/ui/manifest";
|
|
2
|
+
|
|
3
|
+
//#region src/ui/slot.ts
|
|
4
|
+
const trimBase = (value) => (value ?? "").replace(/\/$/, "");
|
|
5
|
+
const withBuster = (url, buster) => buster ? `${url}?v=${encodeURIComponent(buster)}` : url;
|
|
6
|
+
function requireEntry(entryUrl, env, slot, surface, devFixed) {
|
|
7
|
+
if (entryUrl) return entryUrl;
|
|
8
|
+
if (env === "development") return devFixed;
|
|
9
|
+
throw new Error(`slot "${slot}" has no derived ${surface} entry — pins resolve it from the version manifest (the fixed dev name is development-only)`);
|
|
10
|
+
}
|
|
11
|
+
function ssrEntryUrl(slot, env) {
|
|
12
|
+
if (slot.ssrEntryUrl) return slot.ssrEntryUrl;
|
|
13
|
+
if (env === "development") return slot.ssrUrl ? withBuster(`${trimBase(slot.ssrUrl)}/${UI_REMOTE_SERVER_ENTRY_FILENAME}`, slot.ssrIntegrity ?? slot.containerVersion) : void 0;
|
|
14
|
+
if (!slot.ssrUrl) return void 0;
|
|
15
|
+
throw new Error(`slot "${slot.name}" has no derived ssr entry — pins resolve it from the version manifest (the fixed dev name is development-only)`);
|
|
16
|
+
}
|
|
17
|
+
function entryUrls(slot, env) {
|
|
18
|
+
const base = trimBase(slot.publicUrl ?? slot.url);
|
|
19
|
+
return {
|
|
20
|
+
get web() {
|
|
21
|
+
return requireEntry(slot.entryUrl, env, slot.name, "web", withBuster(`${base}/${UI_REMOTE_ENTRY_FILENAME}`, slot.integrity));
|
|
22
|
+
},
|
|
23
|
+
get ssr() {
|
|
24
|
+
return ssrEntryUrl(slot, env);
|
|
25
|
+
},
|
|
26
|
+
get browserManifest() {
|
|
27
|
+
return slot.localPath ? void 0 : slot.browserManifestUrl;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
//#endregion
|
|
33
|
+
export { entryUrls };
|
|
34
|
+
//# sourceMappingURL=slot.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot.mjs","names":[],"sources":["../../src/ui/slot.ts"],"sourcesContent":["import {\n UI_REMOTE_ENTRY_FILENAME,\n UI_REMOTE_SERVER_ENTRY_FILENAME,\n} from \"every-plugin/ui/manifest\";\nimport type { BosEnv } from \"../merge\";\n\n/**\n * The host's entry-URL SlotResolver: one pure derivation from a stamped\n * config slot to the URLs each surface loads. `EntrySlot` is structural —\n * the version-manifest derivation (atomic-deploys 04) stamps exactly these\n * fields onto `RuntimeConfig` slots, so they satisfy it as-is. Each surface\n * of `entryUrls` resolves (and throws) lazily — a caller reading only `web`\n * never trips the ssr surface's resolution, and vice versa.\n */\nexport interface EntrySlot {\n /** slot identity, verbatim in resolution errors */\n name: string;\n url?: string;\n /** browser-facing base (ADR 0011) — the base rule is publicUrl ?? url, inside this module */\n publicUrl?: string;\n /** pin-derived hashed browser entry (absent in development) */\n entryUrl?: string;\n ssrUrl?: string;\n /** pin-derived hashed SSR entry */\n ssrEntryUrl?: string;\n integrity?: string;\n ssrIntegrity?: string;\n /** dev-only freshness token (localUiRemoteEntry's container mtime) */\n containerVersion?: string;\n /** pin-derived hashed browser manifest — absent for local slots, which no\n * pin derivation ever stamps (atomic-deploys 08) and the resolver drops\n * even if one were stamped */\n browserManifestUrl?: string;\n localPath?: string;\n}\n\nexport interface EntryUrls {\n /** browser script src / registration entry — bustered fixed name in dev, hashed in prod */\n readonly web: string;\n /** server container entry; undefined when the slot has no SSR coordinates */\n readonly ssr?: string;\n /** pin-derived hashed mf-manifest; undefined ⟺ local slot (atomic-deploys 08, STRUCTURAL) */\n readonly browserManifest?: string;\n}\n\nconst trimBase = (value: string | undefined): string => (value ?? \"\").replace(/\\/$/, \"\");\n\nconst withBuster = (url: string, buster: string | undefined): string =>\n buster ? `${url}?v=${encodeURIComponent(buster)}` : url;\n\nfunction requireEntry(\n entryUrl: string | undefined,\n env: BosEnv,\n slot: string,\n surface: string,\n devFixed: string,\n): string {\n if (entryUrl) return entryUrl;\n if (env === \"development\") return devFixed;\n throw new Error(\n `slot \"${slot}\" has no derived ${surface} entry — pins resolve it from the version manifest ` +\n `(the fixed dev name is development-only)`,\n );\n}\n\nfunction ssrEntryUrl(slot: EntrySlot, env: BosEnv): string | undefined {\n if (slot.ssrEntryUrl) return slot.ssrEntryUrl;\n if (env === \"development\") {\n return slot.ssrUrl\n ? withBuster(\n `${trimBase(slot.ssrUrl)}/${UI_REMOTE_SERVER_ENTRY_FILENAME}`,\n slot.ssrIntegrity ?? slot.containerVersion,\n )\n : undefined;\n }\n if (!slot.ssrUrl) return undefined;\n throw new Error(\n `slot \"${slot.name}\" has no derived ssr entry — pins resolve it from the version manifest ` +\n `(the fixed dev name is development-only)`,\n );\n}\n\nexport function entryUrls(slot: EntrySlot, env: BosEnv): EntryUrls {\n const base = trimBase(slot.publicUrl ?? slot.url);\n return {\n get web() {\n return requireEntry(\n slot.entryUrl,\n env,\n slot.name,\n \"web\",\n withBuster(`${base}/${UI_REMOTE_ENTRY_FILENAME}`, slot.integrity),\n );\n },\n get ssr() {\n return ssrEntryUrl(slot, env);\n },\n get browserManifest() {\n return slot.localPath ? undefined : slot.browserManifestUrl;\n },\n };\n}\n"],"mappings":";;;AA6CA,MAAM,YAAY,WAAuC,SAAS,GAAE,CAAE,QAAQ,OAAO,EAAE;AAEvF,MAAM,cAAc,KAAa,WAC/B,SAAS,GAAG,IAAI,KAAK,mBAAmB,MAAM,MAAM;AAEtD,SAAS,aACP,UACA,KACA,MACA,SACA,UACQ;CACR,IAAI,UAAU,OAAO;CACrB,IAAI,QAAQ,eAAe,OAAO;CAClC,MAAM,IAAI,MACR,SAAS,KAAK,mBAAmB,QAAQ,4FAE3C;AACF;AAEA,SAAS,YAAY,MAAiB,KAAiC;CACrE,IAAI,KAAK,aAAa,OAAO,KAAK;CAClC,IAAI,QAAQ,eACV,OAAO,KAAK,SACR,WACE,GAAG,SAAS,KAAK,MAAM,EAAE,GAAG,mCAC5B,KAAK,gBAAgB,KAAK,gBAC5B,IACA;CAEN,IAAI,CAAC,KAAK,QAAQ,OAAO;CACzB,MAAM,IAAI,MACR,SAAS,KAAK,KAAK,gHAErB;AACF;AAEA,SAAgB,UAAU,MAAiB,KAAwB;CACjE,MAAM,OAAO,SAAS,KAAK,aAAa,KAAK,GAAG;CAChD,OAAO;EACL,IAAI,MAAM;GACR,OAAO,aACL,KAAK,UACL,KACA,KAAK,MACL,OACA,WAAW,GAAG,KAAK,GAAG,4BAA4B,KAAK,SAAS,CAClE;EACF;EACA,IAAI,MAAM;GACR,OAAO,YAAY,MAAM,GAAG;EAC9B;EACA,IAAI,kBAAkB;GACpB,OAAO,KAAK,YAAY,SAAY,KAAK;EAC3C;CACF;AACF"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_ui_runtime = require('./runtime.cjs');
|
|
3
|
+
const require_ui_manifest_index = require('./manifest/index.cjs');
|
|
4
|
+
let zod = require("zod");
|
|
5
|
+
|
|
6
|
+
//#region src/ui/tenant.ts
|
|
7
|
+
/**
|
|
8
|
+
* Tenant helpers shared by every ui workspace.
|
|
9
|
+
*
|
|
10
|
+
* Two halves of the tenant surface live here:
|
|
11
|
+
* - origin construction (`buildTenantUrl`, `tenantLabel`, `gatewayForAccount`)
|
|
12
|
+
* - the pure helpers for the org node-config editor: a validated draft of the
|
|
13
|
+
* fields a tenant may customize in its published bos.config.json, prefilled
|
|
14
|
+
* from the currently published config, diffed against it, and an in-browser
|
|
15
|
+
* sha384 preflight so a wrong UI bundle cannot brick the tenant site.
|
|
16
|
+
*/
|
|
17
|
+
const LOCALHOST_SUFFIX = ".localhost";
|
|
18
|
+
function isLocalHostname(hostname) {
|
|
19
|
+
const normalized = hostname.toLowerCase();
|
|
20
|
+
return normalized === "localhost" || normalized === "127.0.0.1" || normalized === "[::1]" || normalized.endsWith(LOCALHOST_SUFFIX);
|
|
21
|
+
}
|
|
22
|
+
/** Strips a `<label>.<gatewayId>` hostname (or a bare label) down to its label. */
|
|
23
|
+
function tenantLabel(hostnameOrLabel, gatewayId) {
|
|
24
|
+
const normalized = hostnameOrLabel.trim().toLowerCase().replace(/\/+$/, "");
|
|
25
|
+
if (!normalized) return "";
|
|
26
|
+
const gateway = gatewayId?.trim().toLowerCase();
|
|
27
|
+
if (gateway && normalized.endsWith(`.${gateway}`)) return normalized.slice(0, -(gateway.length + 1));
|
|
28
|
+
if (normalized.endsWith(LOCALHOST_SUFFIX)) return normalized.slice(0, -10);
|
|
29
|
+
return normalized.split(".")[0] ?? "";
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Builds the absolute origin for a tenant, dev-aware.
|
|
33
|
+
*
|
|
34
|
+
* `buildTenantUrl("chicago", "citynode.app")`
|
|
35
|
+
* -> `https://chicago.citynode.app` in production
|
|
36
|
+
* -> `http://chicago.localhost:3000` when served from localhost
|
|
37
|
+
*/
|
|
38
|
+
function buildTenantUrl(hostnameOrLabel, gatewayId, options = {}) {
|
|
39
|
+
const label = tenantLabel(hostnameOrLabel, gatewayId);
|
|
40
|
+
if (!label) return null;
|
|
41
|
+
const path = options.path ?? "";
|
|
42
|
+
const currentHostname = options.currentHostname ?? (typeof window === "undefined" ? void 0 : window.location.hostname);
|
|
43
|
+
if (currentHostname && isLocalHostname(currentHostname)) {
|
|
44
|
+
const currentPort = options.currentPort ?? (typeof window === "undefined" ? "" : window.location.port);
|
|
45
|
+
const port = currentPort ? `:${currentPort}` : "";
|
|
46
|
+
return `http://${label}${LOCALHOST_SUFFIX}${port}${path}`;
|
|
47
|
+
}
|
|
48
|
+
const gateway = gatewayId.trim().toLowerCase();
|
|
49
|
+
if (!gateway) return null;
|
|
50
|
+
return `https://${label}.${gateway}${path}`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The gateway a slug should publish under for the given owner account,
|
|
54
|
+
* derived from the runtime config instead of hardcoded per-network domains.
|
|
55
|
+
*
|
|
56
|
+
* When the account lives on the same network as the runtime, the current
|
|
57
|
+
* runtime's gateway id is the answer. When the networks differ, the runtime
|
|
58
|
+
* config carries no gateway for that other network, so null is returned and
|
|
59
|
+
* the caller surfaces it rather than guessing a domain.
|
|
60
|
+
*/
|
|
61
|
+
function gatewayForAccount(accountId, config = require_ui_runtime.getRuntimeConfig()) {
|
|
62
|
+
const gatewayId = config.runtime?.gatewayId;
|
|
63
|
+
if (!gatewayId) return null;
|
|
64
|
+
return accountId.trim().toLowerCase().endsWith(".testnet") === (config.networkId === "testnet") ? gatewayId : null;
|
|
65
|
+
}
|
|
66
|
+
const INTEGRITY_PATTERN = /^sha384-[A-Za-z0-9+/=]+$/;
|
|
67
|
+
const defaultTenantConfigDraftMessages = {
|
|
68
|
+
url: "must be a valid URL",
|
|
69
|
+
integrity: "must look like sha384-… (base64)",
|
|
70
|
+
manifest: "must look like versions/<version-id>.json",
|
|
71
|
+
title: "title is required",
|
|
72
|
+
description: "description is required",
|
|
73
|
+
uiPair: "a UI bundle needs both its URL and its integrity (direct hash or manifest pin)",
|
|
74
|
+
integrityMode: "choose one integrity mode — a direct entry hash or a version-manifest pin, not both",
|
|
75
|
+
pinPair: "a version-manifest pin needs both the manifest filename and its integrity",
|
|
76
|
+
ssrPair: "an SSR bundle needs both its URL and its integrity hash"
|
|
77
|
+
};
|
|
78
|
+
function createTenantConfigDraftSchema(messages = {}) {
|
|
79
|
+
const copy = {
|
|
80
|
+
...defaultTenantConfigDraftMessages,
|
|
81
|
+
...messages
|
|
82
|
+
};
|
|
83
|
+
const optionalUrl = zod.z.string().trim().url(copy.url).or(zod.z.literal("")).transform((value) => value.trim());
|
|
84
|
+
const optionalIntegrity = zod.z.string().trim().regex(INTEGRITY_PATTERN, copy.integrity).or(zod.z.literal(""));
|
|
85
|
+
const optionalManifestName = zod.z.string().trim().regex(/^versions\/[0-9a-f]{16}\.json$/, copy.manifest).or(zod.z.literal(""));
|
|
86
|
+
return zod.z.object({
|
|
87
|
+
title: zod.z.string().trim().min(1, copy.title),
|
|
88
|
+
description: zod.z.string().trim().min(1, copy.description),
|
|
89
|
+
repository: optionalUrl,
|
|
90
|
+
uiProduction: optionalUrl,
|
|
91
|
+
uiIntegrity: optionalIntegrity,
|
|
92
|
+
uiManifest: optionalManifestName,
|
|
93
|
+
uiPinIntegrity: optionalIntegrity,
|
|
94
|
+
ssrUrl: optionalUrl,
|
|
95
|
+
ssrIntegrity: optionalIntegrity
|
|
96
|
+
}).refine((draft) => !!draft.uiProduction === !!(draft.uiIntegrity || draft.uiManifest), {
|
|
97
|
+
message: copy.uiPair,
|
|
98
|
+
path: ["uiIntegrity"]
|
|
99
|
+
}).refine((draft) => !draft.uiIntegrity || !draft.uiManifest, {
|
|
100
|
+
message: copy.integrityMode,
|
|
101
|
+
path: ["uiManifest"]
|
|
102
|
+
}).refine((draft) => !!draft.uiManifest === !!draft.uiPinIntegrity, {
|
|
103
|
+
message: copy.pinPair,
|
|
104
|
+
path: ["uiPinIntegrity"]
|
|
105
|
+
}).refine((draft) => !!draft.ssrUrl === !!draft.ssrIntegrity, {
|
|
106
|
+
message: copy.ssrPair,
|
|
107
|
+
path: ["ssrIntegrity"]
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
const tenantConfigDraftSchema = createTenantConfigDraftSchema();
|
|
111
|
+
const emptyTenantConfigDraft = {
|
|
112
|
+
title: "",
|
|
113
|
+
description: "",
|
|
114
|
+
repository: "",
|
|
115
|
+
uiProduction: "",
|
|
116
|
+
uiIntegrity: "",
|
|
117
|
+
uiManifest: "",
|
|
118
|
+
uiPinIntegrity: "",
|
|
119
|
+
ssrUrl: "",
|
|
120
|
+
ssrIntegrity: ""
|
|
121
|
+
};
|
|
122
|
+
function readUi(resolvedConfig) {
|
|
123
|
+
return (resolvedConfig?.app)?.ui ?? {};
|
|
124
|
+
}
|
|
125
|
+
const asString = (value) => typeof value === "string" ? value : "";
|
|
126
|
+
function buildDraftFromResolvedConfig(resolvedConfig, fallback) {
|
|
127
|
+
const ui = readUi(resolvedConfig);
|
|
128
|
+
const title = asString(resolvedConfig?.title) || fallback.title;
|
|
129
|
+
return {
|
|
130
|
+
title,
|
|
131
|
+
description: asString(resolvedConfig?.description) || title,
|
|
132
|
+
repository: asString(resolvedConfig?.repository),
|
|
133
|
+
uiProduction: asString(ui.production),
|
|
134
|
+
uiIntegrity: asString(ui.integrity),
|
|
135
|
+
uiManifest: asString(ui.pin?.manifest),
|
|
136
|
+
uiPinIntegrity: asString(ui.pin?.integrity),
|
|
137
|
+
ssrUrl: asString(ui.ssr),
|
|
138
|
+
ssrIntegrity: asString(ui.ssrIntegrity)
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function diffDraft(draft, resolvedConfig) {
|
|
142
|
+
const ui = readUi(resolvedConfig);
|
|
143
|
+
return [
|
|
144
|
+
[
|
|
145
|
+
"title",
|
|
146
|
+
asString(resolvedConfig?.title),
|
|
147
|
+
draft.title
|
|
148
|
+
],
|
|
149
|
+
[
|
|
150
|
+
"description",
|
|
151
|
+
asString(resolvedConfig?.description),
|
|
152
|
+
draft.description
|
|
153
|
+
],
|
|
154
|
+
[
|
|
155
|
+
"repository",
|
|
156
|
+
asString(resolvedConfig?.repository),
|
|
157
|
+
draft.repository
|
|
158
|
+
],
|
|
159
|
+
[
|
|
160
|
+
"ui bundle",
|
|
161
|
+
asString(ui.production),
|
|
162
|
+
draft.uiProduction
|
|
163
|
+
],
|
|
164
|
+
[
|
|
165
|
+
"ui integrity",
|
|
166
|
+
asString(ui.integrity),
|
|
167
|
+
draft.uiIntegrity
|
|
168
|
+
],
|
|
169
|
+
[
|
|
170
|
+
"ui manifest pin",
|
|
171
|
+
asString(ui.pin?.manifest),
|
|
172
|
+
draft.uiManifest
|
|
173
|
+
],
|
|
174
|
+
[
|
|
175
|
+
"ui pin integrity",
|
|
176
|
+
asString(ui.pin?.integrity),
|
|
177
|
+
draft.uiPinIntegrity
|
|
178
|
+
],
|
|
179
|
+
[
|
|
180
|
+
"ssr bundle",
|
|
181
|
+
asString(ui.ssr),
|
|
182
|
+
draft.ssrUrl
|
|
183
|
+
],
|
|
184
|
+
[
|
|
185
|
+
"ssr integrity",
|
|
186
|
+
asString(ui.ssrIntegrity),
|
|
187
|
+
draft.ssrIntegrity
|
|
188
|
+
]
|
|
189
|
+
].filter(([, from, to]) => from !== to).map(([field, from, to]) => ({
|
|
190
|
+
field,
|
|
191
|
+
from: from || "—",
|
|
192
|
+
to: to || "—"
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
/** The `app` block for the published config, or undefined when no UI override is set. */
|
|
196
|
+
function draftUiOverride(draft) {
|
|
197
|
+
if (!draft.uiProduction) return void 0;
|
|
198
|
+
if (draft.uiManifest && draft.uiPinIntegrity) return { ui: {
|
|
199
|
+
production: normalizeBundleBaseUrl(draft.uiProduction),
|
|
200
|
+
pin: {
|
|
201
|
+
manifest: draft.uiManifest,
|
|
202
|
+
integrity: draft.uiPinIntegrity
|
|
203
|
+
},
|
|
204
|
+
...draft.ssrUrl && draft.ssrIntegrity ? {
|
|
205
|
+
ssr: normalizeBundleBaseUrl(draft.ssrUrl),
|
|
206
|
+
ssrIntegrity: draft.ssrIntegrity
|
|
207
|
+
} : {}
|
|
208
|
+
} };
|
|
209
|
+
if (!draft.uiIntegrity) return void 0;
|
|
210
|
+
return { ui: {
|
|
211
|
+
production: normalizeBundleBaseUrl(draft.uiProduction),
|
|
212
|
+
integrity: draft.uiIntegrity,
|
|
213
|
+
...draft.ssrUrl && draft.ssrIntegrity ? {
|
|
214
|
+
ssr: normalizeBundleBaseUrl(draft.ssrUrl),
|
|
215
|
+
ssrIntegrity: draft.ssrIntegrity
|
|
216
|
+
} : {}
|
|
217
|
+
} };
|
|
218
|
+
}
|
|
219
|
+
function toBase64(bytes) {
|
|
220
|
+
let binary = "";
|
|
221
|
+
const chunkSize = 32768;
|
|
222
|
+
for (let offset = 0; offset < bytes.length; offset += chunkSize) binary += String.fromCharCode(...bytes.subarray(offset, offset + chunkSize));
|
|
223
|
+
return btoa(binary);
|
|
224
|
+
}
|
|
225
|
+
async function computeSubresourceIntegrity(url) {
|
|
226
|
+
const response = await fetch(url, { cache: "no-store" });
|
|
227
|
+
if (!response.ok) throw new Error(`fetching the bundle returned ${response.status}`);
|
|
228
|
+
const buffer = await response.arrayBuffer();
|
|
229
|
+
const digest = await crypto.subtle.digest("SHA-384", buffer);
|
|
230
|
+
return `sha384-${toBase64(new Uint8Array(digest))}`;
|
|
231
|
+
}
|
|
232
|
+
function resolveClientEntryUrl(url) {
|
|
233
|
+
if (/\/remoteEntry(\.[a-f0-9]{8,})?\.js$/.test(url)) return url;
|
|
234
|
+
if (url.endsWith("/mf-manifest.json")) return `${url.replace(/\/mf-manifest\.json$/, "")}/${require_ui_manifest_index.manifest_exports.UI_REMOTE_ENTRY_FILENAME}`;
|
|
235
|
+
return `${url.replace(/\/$/, "")}/${require_ui_manifest_index.manifest_exports.UI_REMOTE_ENTRY_FILENAME}`;
|
|
236
|
+
}
|
|
237
|
+
function resolveServerEntryUrl(url) {
|
|
238
|
+
return `${url.replace(/\/$/, "")}/${require_ui_manifest_index.manifest_exports.UI_REMOTE_SERVER_ENTRY_FILENAME}`;
|
|
239
|
+
}
|
|
240
|
+
function normalizeBundleBaseUrl(url) {
|
|
241
|
+
return url.trim().replace(/\/remoteEntry(\.server)?(\.[a-f0-9]{8,})?\.js$/, "").replace(/\/mf-manifest\.json$/, "");
|
|
242
|
+
}
|
|
243
|
+
async function computeUiEntryIntegrity(baseUrl) {
|
|
244
|
+
return computeSubresourceIntegrity(resolveClientEntryUrl(baseUrl.trim()));
|
|
245
|
+
}
|
|
246
|
+
async function computeSsrEntryIntegrity(baseUrl) {
|
|
247
|
+
return computeSubresourceIntegrity(resolveServerEntryUrl(baseUrl.trim()));
|
|
248
|
+
}
|
|
249
|
+
async function verifyEntryIntegrity(entryUrl, expected) {
|
|
250
|
+
try {
|
|
251
|
+
const computed = await computeSubresourceIntegrity(entryUrl);
|
|
252
|
+
return computed === expected ? { status: "match" } : {
|
|
253
|
+
status: "mismatch",
|
|
254
|
+
computed
|
|
255
|
+
};
|
|
256
|
+
} catch (error) {
|
|
257
|
+
return {
|
|
258
|
+
status: "unverified",
|
|
259
|
+
reason: error instanceof Error ? error.message : String(error)
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
async function verifyUiIntegrity(baseUrl, expected) {
|
|
264
|
+
return verifyEntryIntegrity(resolveClientEntryUrl(baseUrl.trim()), expected);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Pin preflight: fetch the pinned version-manifest document and SRI-compare it
|
|
268
|
+
* against the pin — the manifest's own `entryIntegrity` covers the entry bytes
|
|
269
|
+
* at serve time.
|
|
270
|
+
*/
|
|
271
|
+
async function verifyUiPin(baseUrl, pin) {
|
|
272
|
+
return verifyEntryIntegrity(`${baseUrl.trim().replace(/\/$/, "")}/${pin.manifest.replace(/^\//, "")}`, pin.integrity);
|
|
273
|
+
}
|
|
274
|
+
async function verifySsrIntegrity(baseUrl, expected) {
|
|
275
|
+
return verifyEntryIntegrity(resolveServerEntryUrl(baseUrl.trim()), expected);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
//#endregion
|
|
279
|
+
exports.INTEGRITY_PATTERN = INTEGRITY_PATTERN;
|
|
280
|
+
exports.buildDraftFromResolvedConfig = buildDraftFromResolvedConfig;
|
|
281
|
+
exports.buildTenantUrl = buildTenantUrl;
|
|
282
|
+
exports.computeSsrEntryIntegrity = computeSsrEntryIntegrity;
|
|
283
|
+
exports.computeSubresourceIntegrity = computeSubresourceIntegrity;
|
|
284
|
+
exports.computeUiEntryIntegrity = computeUiEntryIntegrity;
|
|
285
|
+
exports.createTenantConfigDraftSchema = createTenantConfigDraftSchema;
|
|
286
|
+
exports.defaultTenantConfigDraftMessages = defaultTenantConfigDraftMessages;
|
|
287
|
+
exports.diffDraft = diffDraft;
|
|
288
|
+
exports.draftUiOverride = draftUiOverride;
|
|
289
|
+
exports.emptyTenantConfigDraft = emptyTenantConfigDraft;
|
|
290
|
+
exports.gatewayForAccount = gatewayForAccount;
|
|
291
|
+
exports.isLocalHostname = isLocalHostname;
|
|
292
|
+
exports.normalizeBundleBaseUrl = normalizeBundleBaseUrl;
|
|
293
|
+
exports.resolveClientEntryUrl = resolveClientEntryUrl;
|
|
294
|
+
exports.resolveServerEntryUrl = resolveServerEntryUrl;
|
|
295
|
+
exports.tenantConfigDraftSchema = tenantConfigDraftSchema;
|
|
296
|
+
exports.tenantLabel = tenantLabel;
|
|
297
|
+
exports.verifySsrIntegrity = verifySsrIntegrity;
|
|
298
|
+
exports.verifyUiIntegrity = verifyUiIntegrity;
|
|
299
|
+
exports.verifyUiPin = verifyUiPin;
|
|
300
|
+
//# sourceMappingURL=tenant.cjs.map
|