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
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/ui/router-error.tsx
|
|
4
|
+
/**
|
|
5
|
+
* Generic router error boundary component — shared by the client and SSR
|
|
6
|
+
* router factories. Dependency-free by design: the framework cannot import
|
|
7
|
+
* the app's UI kit, so primitives are plain markup + semantic tokens.
|
|
8
|
+
*/
|
|
9
|
+
function RouterError({ error, reset, messages }) {
|
|
10
|
+
return /* @__PURE__ */ jsx("div", {
|
|
11
|
+
className: "flex min-h-96 flex-1 items-center justify-center bg-background px-4 py-16",
|
|
12
|
+
role: "alert",
|
|
13
|
+
"data-testid": "router-error",
|
|
14
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
15
|
+
className: "flex max-w-md flex-col items-center gap-6 text-center",
|
|
16
|
+
children: [
|
|
17
|
+
/* @__PURE__ */ jsx("div", {
|
|
18
|
+
className: "flex size-14 items-center justify-center rounded-full bg-destructive-muted text-destructive-muted-foreground",
|
|
19
|
+
children: /* @__PURE__ */ jsx("svg", {
|
|
20
|
+
className: "size-7",
|
|
21
|
+
viewBox: "0 0 256 256",
|
|
22
|
+
fill: "currentColor",
|
|
23
|
+
"aria-hidden": "true",
|
|
24
|
+
children: /* @__PURE__ */ jsx("path", { d: "M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24Zm0 192a88 88 0 1 1 88-88 88.1 88.1 0 0 1-88 88Zm-8-80V80a8 8 0 0 1 16 0v56a8 8 0 0 1-16 0Zm20 36a12 12 0 1 1-12-12 12 12 0 0 1 12 12Z" })
|
|
25
|
+
})
|
|
26
|
+
}),
|
|
27
|
+
/* @__PURE__ */ jsxs("div", {
|
|
28
|
+
className: "flex flex-col gap-3",
|
|
29
|
+
children: [/* @__PURE__ */ jsx("h1", {
|
|
30
|
+
className: "text-3xl font-semibold text-foreground",
|
|
31
|
+
children: messages?.title ?? "This page didn’t load"
|
|
32
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
33
|
+
className: "text-base text-muted-foreground",
|
|
34
|
+
children: messages?.body ?? "Something went wrong on our side. Try again, or head back home."
|
|
35
|
+
})]
|
|
36
|
+
}),
|
|
37
|
+
/* @__PURE__ */ jsxs("div", {
|
|
38
|
+
className: "flex flex-wrap justify-center gap-3",
|
|
39
|
+
children: [/* @__PURE__ */ jsx("a", {
|
|
40
|
+
href: "/",
|
|
41
|
+
"data-testid": "router-error-home",
|
|
42
|
+
className: "inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground",
|
|
43
|
+
children: messages?.home ?? "Back home"
|
|
44
|
+
}), /* @__PURE__ */ jsx("button", {
|
|
45
|
+
type: "button",
|
|
46
|
+
onClick: () => reset ? reset() : window.location.reload(),
|
|
47
|
+
"data-testid": "router-error-retry",
|
|
48
|
+
className: "inline-flex h-9 items-center justify-center rounded-md border border-border bg-background px-4 text-sm font-medium text-foreground",
|
|
49
|
+
children: messages?.retry ?? "Try again"
|
|
50
|
+
})]
|
|
51
|
+
}),
|
|
52
|
+
/* @__PURE__ */ jsxs("details", {
|
|
53
|
+
className: "w-full text-left text-sm text-muted-foreground",
|
|
54
|
+
children: [/* @__PURE__ */ jsx("summary", {
|
|
55
|
+
className: "cursor-pointer text-center",
|
|
56
|
+
children: "Error details"
|
|
57
|
+
}), /* @__PURE__ */ jsx("pre", {
|
|
58
|
+
className: "mt-3 overflow-x-auto whitespace-pre-wrap rounded-lg bg-muted p-4 font-mono text-xs",
|
|
59
|
+
children: error.message
|
|
60
|
+
})]
|
|
61
|
+
})
|
|
62
|
+
]
|
|
63
|
+
})
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
export { RouterError };
|
|
69
|
+
//# sourceMappingURL=router-error.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-error.mjs","names":[],"sources":["../../src/ui/router-error.tsx"],"sourcesContent":["/**\n * Generic router error boundary component — shared by the client and SSR\n * router factories. Dependency-free by design: the framework cannot import\n * the app's UI kit, so primitives are plain markup + semantic tokens.\n */\n\nexport function RouterError({\n error,\n reset,\n messages,\n}: {\n error: Error;\n reset?: () => void;\n messages?: { title: string; body: string; home: string; retry: string };\n}) {\n return (\n <div\n className=\"flex min-h-96 flex-1 items-center justify-center bg-background px-4 py-16\"\n role=\"alert\"\n data-testid=\"router-error\"\n >\n <div className=\"flex max-w-md flex-col items-center gap-6 text-center\">\n <div className=\"flex size-14 items-center justify-center rounded-full bg-destructive-muted text-destructive-muted-foreground\">\n <svg className=\"size-7\" viewBox=\"0 0 256 256\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24Zm0 192a88 88 0 1 1 88-88 88.1 88.1 0 0 1-88 88Zm-8-80V80a8 8 0 0 1 16 0v56a8 8 0 0 1-16 0Zm20 36a12 12 0 1 1-12-12 12 12 0 0 1 12 12Z\" />\n </svg>\n </div>\n <div className=\"flex flex-col gap-3\">\n <h1 className=\"text-3xl font-semibold text-foreground\">\n {messages?.title ?? \"This page didn’t load\"}\n </h1>\n <p className=\"text-base text-muted-foreground\">\n {messages?.body ?? \"Something went wrong on our side. Try again, or head back home.\"}\n </p>\n </div>\n <div className=\"flex flex-wrap justify-center gap-3\">\n <a\n href=\"/\"\n data-testid=\"router-error-home\"\n className=\"inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground\"\n >\n {messages?.home ?? \"Back home\"}\n </a>\n <button\n type=\"button\"\n onClick={() => (reset ? reset() : window.location.reload())}\n data-testid=\"router-error-retry\"\n className=\"inline-flex h-9 items-center justify-center rounded-md border border-border bg-background px-4 text-sm font-medium text-foreground\"\n >\n {messages?.retry ?? \"Try again\"}\n </button>\n </div>\n <details className=\"w-full text-left text-sm text-muted-foreground\">\n <summary className=\"cursor-pointer text-center\">Error details</summary>\n <pre className=\"mt-3 overflow-x-auto whitespace-pre-wrap rounded-lg bg-muted p-4 font-mono text-xs\">\n {error.message}\n </pre>\n </details>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAMA,SAAgB,YAAY,EAC1B,OACA,OACA,YAKC;CACD,OACE,oBAAC,OAAD;EACE,WAAU;EACV,MAAK;EACL,eAAY;YAEZ,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,oBAAC,OAAD;KAAK,WAAU;eACb,oBAAC,OAAD;MAAK,WAAU;MAAS,SAAQ;MAAc,MAAK;MAAe,eAAY;gBAC5E,oBAAC,QAAD,EAAM,GAAE,iMAAkM;KACvM;IACF;IACL,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,MAAD;MAAI,WAAU;gBACX,UAAU,SAAS;KAClB,IACJ,oBAAC,KAAD;MAAG,WAAU;gBACV,UAAU,QAAQ;KAClB,EACA;;IACL,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,KAAD;MACE,MAAK;MACL,eAAY;MACZ,WAAU;gBAET,UAAU,QAAQ;KAClB,IACH,oBAAC,UAAD;MACE,MAAK;MACL,eAAgB,QAAQ,MAAM,IAAI,OAAO,SAAS,OAAO;MACzD,eAAY;MACZ,WAAU;gBAET,UAAU,SAAS;KACd,EACL;;IACL,qBAAC,WAAD;KAAS,WAAU;eAAnB,CACE,oBAAC,WAAD;MAAS,WAAU;gBAA6B;KAAsB,IACtE,oBAAC,OAAD;MAAK,WAAU;gBACZ,MAAM;KACJ,EACE;;GACN;;CACF;AAET"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_locale = require('./locale.cjs');
|
|
3
|
+
const require_ui_router = require('./router.cjs');
|
|
4
|
+
const require_ui_api = require('./api.cjs');
|
|
5
|
+
const require_ui_auth = require('./auth.cjs');
|
|
6
|
+
const require_ui_router_defaults = require('./router-defaults.cjs');
|
|
7
|
+
const require_ui_router_error = require('./router-error.cjs');
|
|
8
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
9
|
+
let _tanstack_react_router = require("@tanstack/react-router");
|
|
10
|
+
let _tanstack_react_query = require("@tanstack/react-query");
|
|
11
|
+
let _tanstack_react_router_ssr_server = require("@tanstack/react-router/ssr/server");
|
|
12
|
+
|
|
13
|
+
//#region src/ui/router-server.tsx
|
|
14
|
+
/**
|
|
15
|
+
* SSR router factory — creates request-scoped server routers and server-side
|
|
16
|
+
* API/auth clients per request. Mirrors the client router shape for
|
|
17
|
+
* hydration consistency. The app injects its generated route tree and (for
|
|
18
|
+
* a byte-identical child surface) its error component.
|
|
19
|
+
*/
|
|
20
|
+
function createServerRouterModule(options = {}) {
|
|
21
|
+
const defaultRouteTree = options.defaultRouteTree;
|
|
22
|
+
const createRouter = (opts) => {
|
|
23
|
+
const context = opts?.context;
|
|
24
|
+
const queryClient = context?.queryClient ?? require_ui_router_defaults.defaultQueryClient();
|
|
25
|
+
const history = opts?.history ?? (0, _tanstack_react_router.createMemoryHistory)();
|
|
26
|
+
const cspNonce = context?.cspNonce;
|
|
27
|
+
return {
|
|
28
|
+
router: (0, _tanstack_react_router.createRouter)({
|
|
29
|
+
routeTree: opts?.routeTree ?? defaultRouteTree,
|
|
30
|
+
history,
|
|
31
|
+
basepath: opts?.basepath,
|
|
32
|
+
context: {
|
|
33
|
+
queryClient,
|
|
34
|
+
runtimeConfig: context?.runtimeConfig,
|
|
35
|
+
apiClient: context?.apiClient,
|
|
36
|
+
authClient: context?.authClient ?? require_ui_auth.createAuthClient({
|
|
37
|
+
runtimeConfig: context?.runtimeConfig,
|
|
38
|
+
cspNonce: context?.cspNonce
|
|
39
|
+
}),
|
|
40
|
+
session: context?.session,
|
|
41
|
+
cspNonce,
|
|
42
|
+
locale: context?.locale,
|
|
43
|
+
pluginNav: context?.pluginNav
|
|
44
|
+
},
|
|
45
|
+
...cspNonce ? { ssr: { nonce: cspNonce } } : {},
|
|
46
|
+
defaultPreload: "intent",
|
|
47
|
+
scrollRestoration: true,
|
|
48
|
+
defaultStructuralSharing: true,
|
|
49
|
+
defaultPreloadStaleTime: 0,
|
|
50
|
+
defaultErrorComponent: require_ui_router_error.RouterError,
|
|
51
|
+
defaultOnCatch: (error, errorInfo) => {
|
|
52
|
+
console.error("[SSR] Router error boundary caught:", error, { componentStack: errorInfo.componentStack });
|
|
53
|
+
},
|
|
54
|
+
defaultNotFoundComponent: require_ui_router_defaults.defaultNotFoundComponent,
|
|
55
|
+
defaultPendingComponent: require_ui_router_defaults.defaultPendingComponent,
|
|
56
|
+
defaultPendingMinMs: 0,
|
|
57
|
+
dehydrate: () => {
|
|
58
|
+
if (typeof window === "undefined") return { queryClientState: (0, _tanstack_react_query.dehydrate)(queryClient) };
|
|
59
|
+
return { queryClientState: {} };
|
|
60
|
+
},
|
|
61
|
+
hydrate: (dehydrated) => {
|
|
62
|
+
if (typeof window !== "undefined" && dehydrated?.queryClientState) (0, _tanstack_react_query.hydrate)(queryClient, dehydrated.queryClientState);
|
|
63
|
+
}
|
|
64
|
+
}),
|
|
65
|
+
queryClient
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
const buildRouter = options.createRouter ?? createRouter;
|
|
69
|
+
const getRouteHead = async (pathname, context) => {
|
|
70
|
+
const history = (0, _tanstack_react_router.createMemoryHistory)({ initialEntries: [pathname] });
|
|
71
|
+
const queryClient = new _tanstack_react_query.QueryClient();
|
|
72
|
+
const runtimeConfig = context?.runtimeConfig;
|
|
73
|
+
if (!runtimeConfig?.hostUrl || !runtimeConfig.rpcBase) throw new Error("Missing runtime config for route head generation");
|
|
74
|
+
const router = (0, _tanstack_react_router.createRouter)({
|
|
75
|
+
routeTree: context?.routeTree ?? defaultRouteTree,
|
|
76
|
+
history,
|
|
77
|
+
context: {
|
|
78
|
+
queryClient,
|
|
79
|
+
runtimeConfig,
|
|
80
|
+
apiClient: context?.apiClient ?? require_ui_api.createApiClient({
|
|
81
|
+
hostUrl: runtimeConfig.hostUrl,
|
|
82
|
+
rpcBase: runtimeConfig.rpcBase
|
|
83
|
+
}),
|
|
84
|
+
authClient: context?.authClient ?? require_ui_auth.createAuthClient({
|
|
85
|
+
runtimeConfig,
|
|
86
|
+
cspNonce: context?.cspNonce
|
|
87
|
+
}),
|
|
88
|
+
session: context?.session,
|
|
89
|
+
locale: context?.locale
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return require_ui_router.collectHeadData(router);
|
|
93
|
+
};
|
|
94
|
+
const renderToStream = async (request, renderOptions) => {
|
|
95
|
+
const url = new URL(request.url);
|
|
96
|
+
const history = (0, _tanstack_react_router.createMemoryHistory)({ initialEntries: [url.pathname + url.search] });
|
|
97
|
+
let queryClientRef = null;
|
|
98
|
+
const response = await (0, _tanstack_react_router_ssr_server.createRequestHandler)({
|
|
99
|
+
request,
|
|
100
|
+
createRouter: () => {
|
|
101
|
+
const localQueryClient = queryClientRef ?? options.createQueryClient?.() ?? require_ui_router_defaults.defaultQueryClient();
|
|
102
|
+
const built = buildRouter({
|
|
103
|
+
history,
|
|
104
|
+
routeTree: renderOptions.routeTree,
|
|
105
|
+
basepath: renderOptions.basepath,
|
|
106
|
+
context: {
|
|
107
|
+
queryClient: localQueryClient,
|
|
108
|
+
runtimeConfig: renderOptions.runtimeConfig,
|
|
109
|
+
apiClient: renderOptions.apiClient,
|
|
110
|
+
authClient: require_ui_auth.createAuthClient({
|
|
111
|
+
runtimeConfig: renderOptions.runtimeConfig,
|
|
112
|
+
headers: request.headers,
|
|
113
|
+
cspNonce: renderOptions.cspNonce
|
|
114
|
+
}),
|
|
115
|
+
session: renderOptions.session,
|
|
116
|
+
cspNonce: renderOptions.cspNonce,
|
|
117
|
+
pluginNav: renderOptions.pluginNav,
|
|
118
|
+
locale: options.locale ? require_locale.resolveLocale({
|
|
119
|
+
...options.locale,
|
|
120
|
+
cookie: request.headers.get("cookie") ?? "",
|
|
121
|
+
browserLocales: require_locale.readAcceptLanguage(request.headers.get("accept-language"))
|
|
122
|
+
}) : void 0
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
queryClientRef = built.queryClient ?? localQueryClient;
|
|
126
|
+
return built.router;
|
|
127
|
+
}
|
|
128
|
+
})(({ request, responseHeaders, router }) => (0, _tanstack_react_router_ssr_server.renderRouterToStream)({
|
|
129
|
+
request,
|
|
130
|
+
responseHeaders,
|
|
131
|
+
router,
|
|
132
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_tanstack_react_query.QueryClientProvider, {
|
|
133
|
+
client: queryClientRef,
|
|
134
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_tanstack_react_router_ssr_server.RouterServer, { router })
|
|
135
|
+
})
|
|
136
|
+
}));
|
|
137
|
+
if (options.locale) response.headers.append("Vary", "Cookie, Accept-Language");
|
|
138
|
+
return {
|
|
139
|
+
stream: response.body,
|
|
140
|
+
statusCode: response.status,
|
|
141
|
+
headers: response.headers
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
return {
|
|
145
|
+
createRouter,
|
|
146
|
+
getRouteHead,
|
|
147
|
+
renderToStream
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
//#endregion
|
|
152
|
+
exports.createServerRouterModule = createServerRouterModule;
|
|
153
|
+
//# sourceMappingURL=router-server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-server.cjs","names":["defaultQueryClient","createMemoryHistory","createTanStackRouter","createAuthClient","RouterError","dehydrate","QueryClient","createApiClient","collectHeadData","createRequestHandler","resolveLocale","readAcceptLanguage","renderRouterToStream","QueryClientProvider","RouterServer"],"sources":["../../src/ui/router-server.tsx"],"sourcesContent":["/**\n * SSR router factory — creates request-scoped server routers and server-side\n * API/auth clients per request. Mirrors the client router shape for\n * hydration consistency. The app injects its generated route tree and (for\n * a byte-identical child surface) its error component.\n */\n\nimport { dehydrate, hydrate, QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport {\n type AnyRoute,\n type AnyRouter,\n createMemoryHistory,\n createRouter as createTanStackRouter,\n} from \"@tanstack/react-router\";\nimport {\n createRequestHandler,\n RouterServer,\n renderRouterToStream,\n} from \"@tanstack/react-router/ssr/server\";\nimport { createApiClient } from \"./api\";\nimport { createAuthClient } from \"./auth\";\nimport { type LocaleOptions, readAcceptLanguage, resolveLocale } from \"./locale\";\nimport { collectHeadData } from \"./router\";\nimport {\n defaultNotFoundComponent,\n defaultPendingComponent,\n defaultQueryClient,\n} from \"./router-defaults\";\nimport { RouterError } from \"./router-error\";\nimport type {\n AppRouterFactory,\n CreateRouterOptions,\n HeadData,\n RenderOptionsWithApi,\n RenderResult,\n RouterContextWithApi,\n} from \"./types\";\n\nexport interface ServerRouterModuleOptions<TRouteTree extends AnyRoute = AnyRoute> {\n /** The app's generated route tree — the core-only fallback when no composed tree is passed. */\n defaultRouteTree?: TRouteTree;\n /**\n * The app's authored router factory — SSR parity: each request's router is\n * minted through the same factory the client hydrates with, so notFound/\n * pending/error options match. Absent, the framework's own factory runs.\n */\n createRouter?: AppRouterFactory;\n /** The app's query client factory (staleTime, gcTime, …) — SSR parity with the client hydrator. Absent, the framework default. */\n createQueryClient?: () => QueryClient;\n /** Locale negotiation for SSR — resolves the request-scoped locale into router context. */\n locale?: LocaleOptions;\n}\n\ntype ServerRouterOptions<TRouteTree extends AnyRoute> = CreateRouterOptions & {\n context?: Partial<RouterContextWithApi> & { pluginNav?: unknown };\n routeTree?: TRouteTree;\n};\n\nexport function createServerRouterModule<TRouteTree extends AnyRoute = AnyRoute>(\n options: ServerRouterModuleOptions<TRouteTree> = {},\n) {\n const defaultRouteTree = options.defaultRouteTree;\n\n const createRouter = (\n opts?: ServerRouterOptions<TRouteTree>,\n ): { router: AnyRouter; queryClient: QueryClient } => {\n const context = opts?.context;\n const queryClient = context?.queryClient ?? defaultQueryClient();\n\n const history = opts?.history ?? createMemoryHistory();\n\n const cspNonce = context?.cspNonce;\n // RouterCore's `in out` type parameters reject the framework's loose\n // AnyRouter contract when the tree is typed as the wide AnyRoute — the\n // runtime instance genuinely satisfies it, so the boundary casts once.\n const router = createTanStackRouter({\n routeTree: (opts?.routeTree ?? defaultRouteTree) as TRouteTree,\n history,\n basepath: opts?.basepath,\n context: {\n queryClient,\n runtimeConfig: context?.runtimeConfig,\n apiClient: context?.apiClient,\n authClient:\n context?.authClient ??\n createAuthClient({\n runtimeConfig: context?.runtimeConfig,\n cspNonce: context?.cspNonce,\n }),\n session: context?.session,\n cspNonce,\n locale: context?.locale,\n pluginNav: context?.pluginNav,\n },\n ...(cspNonce ? { ssr: { nonce: cspNonce } } : {}),\n defaultPreload: \"intent\",\n scrollRestoration: true,\n defaultStructuralSharing: true,\n defaultPreloadStaleTime: 0,\n defaultErrorComponent: RouterError,\n defaultOnCatch: (error, errorInfo) => {\n console.error(\"[SSR] Router error boundary caught:\", error, {\n componentStack: errorInfo.componentStack,\n });\n },\n defaultNotFoundComponent,\n defaultPendingComponent,\n defaultPendingMinMs: 0,\n dehydrate: () => {\n if (typeof window === \"undefined\") {\n return { queryClientState: dehydrate(queryClient) };\n }\n\n return { queryClientState: {} };\n },\n hydrate: (dehydrated: { queryClientState?: unknown }) => {\n if (typeof window !== \"undefined\" && dehydrated?.queryClientState) {\n hydrate(queryClient, dehydrated.queryClientState);\n }\n },\n });\n\n return { router, queryClient };\n };\n\n // SSR parity seam: the app's authored factory (client and server mint\n // through the same code) or the framework's own.\n const buildRouter = options.createRouter ?? createRouter;\n\n const getRouteHead = async (\n pathname: string,\n context?: Partial<RouterContextWithApi> & { routeTree?: TRouteTree },\n ): Promise<HeadData> => {\n const history = createMemoryHistory({ initialEntries: [pathname] });\n const queryClient = new QueryClient();\n const runtimeConfig = context?.runtimeConfig;\n if (!runtimeConfig?.hostUrl || !runtimeConfig.rpcBase) {\n throw new Error(\"Missing runtime config for route head generation\");\n }\n\n const router = createTanStackRouter({\n routeTree: context?.routeTree ?? defaultRouteTree,\n history,\n context: {\n queryClient,\n runtimeConfig,\n apiClient:\n context?.apiClient ??\n createApiClient({ hostUrl: runtimeConfig.hostUrl, rpcBase: runtimeConfig.rpcBase }),\n authClient:\n context?.authClient ?? createAuthClient({ runtimeConfig, cspNonce: context?.cspNonce }),\n session: context?.session,\n locale: context?.locale,\n },\n });\n\n return collectHeadData(router);\n };\n\n const renderToStream = async (\n request: Request,\n renderOptions: RenderOptionsWithApi,\n ): Promise<RenderResult> => {\n const url = new URL(request.url);\n const history = createMemoryHistory({ initialEntries: [url.pathname + url.search] });\n let queryClientRef: QueryClient | null = null;\n\n const handler = createRequestHandler({\n request,\n createRouter: () => {\n const localQueryClient =\n queryClientRef ?? options.createQueryClient?.() ?? defaultQueryClient();\n const built = buildRouter({\n history,\n routeTree: renderOptions.routeTree as TRouteTree,\n basepath: renderOptions.basepath,\n context: {\n queryClient: localQueryClient,\n runtimeConfig: renderOptions.runtimeConfig,\n apiClient: renderOptions.apiClient,\n authClient: createAuthClient({\n runtimeConfig: renderOptions.runtimeConfig,\n headers: request.headers,\n cspNonce: renderOptions.cspNonce,\n }),\n session: renderOptions.session,\n cspNonce: renderOptions.cspNonce,\n pluginNav: renderOptions.pluginNav,\n locale: options.locale\n ? resolveLocale({\n ...options.locale,\n cookie: request.headers.get(\"cookie\") ?? \"\",\n browserLocales: readAcceptLanguage(request.headers.get(\"accept-language\")),\n })\n : undefined,\n },\n });\n queryClientRef = built.queryClient ?? localQueryClient;\n return built.router;\n },\n });\n\n const response = await handler(({ request, responseHeaders, router }) =>\n renderRouterToStream({\n request,\n responseHeaders,\n router,\n children: (\n <QueryClientProvider client={queryClientRef!}>\n <RouterServer router={router} />\n </QueryClientProvider>\n ),\n }),\n );\n\n if (options.locale) response.headers.append(\"Vary\", \"Cookie, Accept-Language\");\n\n return {\n stream: response.body!,\n statusCode: response.status,\n headers: response.headers,\n } satisfies RenderResult;\n };\n\n return {\n createRouter,\n getRouteHead,\n renderToStream,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { AppRouterFactory, CreateRouterOptions, HeadData, RenderOptionsWithApi, RenderResult, RouterContextWithApi } from "./types.cjs";
|
|
2
|
+
import { LocaleOptions } from "./locale.cjs";
|
|
3
|
+
import { QueryClient } from "@tanstack/react-query";
|
|
4
|
+
import { AnyRoute, AnyRouter } from "@tanstack/react-router";
|
|
5
|
+
//#region src/ui/router-server.d.ts
|
|
6
|
+
interface ServerRouterModuleOptions<TRouteTree extends AnyRoute = AnyRoute> {
|
|
7
|
+
/** The app's generated route tree — the core-only fallback when no composed tree is passed. */
|
|
8
|
+
defaultRouteTree?: TRouteTree;
|
|
9
|
+
/**
|
|
10
|
+
* The app's authored router factory — SSR parity: each request's router is
|
|
11
|
+
* minted through the same factory the client hydrates with, so notFound/
|
|
12
|
+
* pending/error options match. Absent, the framework's own factory runs.
|
|
13
|
+
*/
|
|
14
|
+
createRouter?: AppRouterFactory;
|
|
15
|
+
/** The app's query client factory (staleTime, gcTime, …) — SSR parity with the client hydrator. Absent, the framework default. */
|
|
16
|
+
createQueryClient?: () => QueryClient;
|
|
17
|
+
/** Locale negotiation for SSR — resolves the request-scoped locale into router context. */
|
|
18
|
+
locale?: LocaleOptions;
|
|
19
|
+
}
|
|
20
|
+
type ServerRouterOptions<TRouteTree extends AnyRoute> = CreateRouterOptions & {
|
|
21
|
+
context?: Partial<RouterContextWithApi> & {
|
|
22
|
+
pluginNav?: unknown;
|
|
23
|
+
};
|
|
24
|
+
routeTree?: TRouteTree;
|
|
25
|
+
};
|
|
26
|
+
declare function createServerRouterModule<TRouteTree extends AnyRoute = AnyRoute>(options?: ServerRouterModuleOptions<TRouteTree>): {
|
|
27
|
+
createRouter: (opts?: ServerRouterOptions<TRouteTree>) => {
|
|
28
|
+
router: AnyRouter;
|
|
29
|
+
queryClient: QueryClient;
|
|
30
|
+
};
|
|
31
|
+
getRouteHead: (pathname: string, context?: Partial<RouterContextWithApi> & {
|
|
32
|
+
routeTree?: TRouteTree;
|
|
33
|
+
}) => Promise<HeadData>;
|
|
34
|
+
renderToStream: (request: Request, renderOptions: RenderOptionsWithApi) => Promise<RenderResult>;
|
|
35
|
+
};
|
|
36
|
+
//#endregion
|
|
37
|
+
export { ServerRouterModuleOptions, createServerRouterModule };
|
|
38
|
+
//# sourceMappingURL=router-server.d.cts.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { AppRouterFactory, CreateRouterOptions, HeadData, RenderOptionsWithApi, RenderResult, RouterContextWithApi } from "./types.mjs";
|
|
2
|
+
import { LocaleOptions } from "./locale.mjs";
|
|
3
|
+
import { AnyRoute, AnyRouter } from "@tanstack/react-router";
|
|
4
|
+
import { QueryClient } from "@tanstack/react-query";
|
|
5
|
+
//#region src/ui/router-server.d.ts
|
|
6
|
+
interface ServerRouterModuleOptions<TRouteTree extends AnyRoute = AnyRoute> {
|
|
7
|
+
/** The app's generated route tree — the core-only fallback when no composed tree is passed. */
|
|
8
|
+
defaultRouteTree?: TRouteTree;
|
|
9
|
+
/**
|
|
10
|
+
* The app's authored router factory — SSR parity: each request's router is
|
|
11
|
+
* minted through the same factory the client hydrates with, so notFound/
|
|
12
|
+
* pending/error options match. Absent, the framework's own factory runs.
|
|
13
|
+
*/
|
|
14
|
+
createRouter?: AppRouterFactory;
|
|
15
|
+
/** The app's query client factory (staleTime, gcTime, …) — SSR parity with the client hydrator. Absent, the framework default. */
|
|
16
|
+
createQueryClient?: () => QueryClient;
|
|
17
|
+
/** Locale negotiation for SSR — resolves the request-scoped locale into router context. */
|
|
18
|
+
locale?: LocaleOptions;
|
|
19
|
+
}
|
|
20
|
+
type ServerRouterOptions<TRouteTree extends AnyRoute> = CreateRouterOptions & {
|
|
21
|
+
context?: Partial<RouterContextWithApi> & {
|
|
22
|
+
pluginNav?: unknown;
|
|
23
|
+
};
|
|
24
|
+
routeTree?: TRouteTree;
|
|
25
|
+
};
|
|
26
|
+
declare function createServerRouterModule<TRouteTree extends AnyRoute = AnyRoute>(options?: ServerRouterModuleOptions<TRouteTree>): {
|
|
27
|
+
createRouter: (opts?: ServerRouterOptions<TRouteTree>) => {
|
|
28
|
+
router: AnyRouter;
|
|
29
|
+
queryClient: QueryClient;
|
|
30
|
+
};
|
|
31
|
+
getRouteHead: (pathname: string, context?: Partial<RouterContextWithApi> & {
|
|
32
|
+
routeTree?: TRouteTree;
|
|
33
|
+
}) => Promise<HeadData>;
|
|
34
|
+
renderToStream: (request: Request, renderOptions: RenderOptionsWithApi) => Promise<RenderResult>;
|
|
35
|
+
};
|
|
36
|
+
//#endregion
|
|
37
|
+
export { ServerRouterModuleOptions, createServerRouterModule };
|
|
38
|
+
//# sourceMappingURL=router-server.d.mts.map
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { readAcceptLanguage, resolveLocale } from "./locale.mjs";
|
|
2
|
+
import { collectHeadData } from "./router.mjs";
|
|
3
|
+
import { createApiClient } from "./api.mjs";
|
|
4
|
+
import { createAuthClient } from "./auth.mjs";
|
|
5
|
+
import { defaultNotFoundComponent, defaultPendingComponent, defaultQueryClient } from "./router-defaults.mjs";
|
|
6
|
+
import { RouterError } from "./router-error.mjs";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
import { createMemoryHistory, createRouter } from "@tanstack/react-router";
|
|
9
|
+
import { QueryClient, QueryClientProvider, dehydrate, hydrate } from "@tanstack/react-query";
|
|
10
|
+
import { RouterServer, createRequestHandler, renderRouterToStream } from "@tanstack/react-router/ssr/server";
|
|
11
|
+
|
|
12
|
+
//#region src/ui/router-server.tsx
|
|
13
|
+
/**
|
|
14
|
+
* SSR router factory — creates request-scoped server routers and server-side
|
|
15
|
+
* API/auth clients per request. Mirrors the client router shape for
|
|
16
|
+
* hydration consistency. The app injects its generated route tree and (for
|
|
17
|
+
* a byte-identical child surface) its error component.
|
|
18
|
+
*/
|
|
19
|
+
function createServerRouterModule(options = {}) {
|
|
20
|
+
const defaultRouteTree = options.defaultRouteTree;
|
|
21
|
+
const createRouter$1 = (opts) => {
|
|
22
|
+
const context = opts?.context;
|
|
23
|
+
const queryClient = context?.queryClient ?? defaultQueryClient();
|
|
24
|
+
const history = opts?.history ?? createMemoryHistory();
|
|
25
|
+
const cspNonce = context?.cspNonce;
|
|
26
|
+
return {
|
|
27
|
+
router: createRouter({
|
|
28
|
+
routeTree: opts?.routeTree ?? defaultRouteTree,
|
|
29
|
+
history,
|
|
30
|
+
basepath: opts?.basepath,
|
|
31
|
+
context: {
|
|
32
|
+
queryClient,
|
|
33
|
+
runtimeConfig: context?.runtimeConfig,
|
|
34
|
+
apiClient: context?.apiClient,
|
|
35
|
+
authClient: context?.authClient ?? createAuthClient({
|
|
36
|
+
runtimeConfig: context?.runtimeConfig,
|
|
37
|
+
cspNonce: context?.cspNonce
|
|
38
|
+
}),
|
|
39
|
+
session: context?.session,
|
|
40
|
+
cspNonce,
|
|
41
|
+
locale: context?.locale,
|
|
42
|
+
pluginNav: context?.pluginNav
|
|
43
|
+
},
|
|
44
|
+
...cspNonce ? { ssr: { nonce: cspNonce } } : {},
|
|
45
|
+
defaultPreload: "intent",
|
|
46
|
+
scrollRestoration: true,
|
|
47
|
+
defaultStructuralSharing: true,
|
|
48
|
+
defaultPreloadStaleTime: 0,
|
|
49
|
+
defaultErrorComponent: RouterError,
|
|
50
|
+
defaultOnCatch: (error, errorInfo) => {
|
|
51
|
+
console.error("[SSR] Router error boundary caught:", error, { componentStack: errorInfo.componentStack });
|
|
52
|
+
},
|
|
53
|
+
defaultNotFoundComponent,
|
|
54
|
+
defaultPendingComponent,
|
|
55
|
+
defaultPendingMinMs: 0,
|
|
56
|
+
dehydrate: () => {
|
|
57
|
+
if (typeof window === "undefined") return { queryClientState: dehydrate(queryClient) };
|
|
58
|
+
return { queryClientState: {} };
|
|
59
|
+
},
|
|
60
|
+
hydrate: (dehydrated) => {
|
|
61
|
+
if (typeof window !== "undefined" && dehydrated?.queryClientState) hydrate(queryClient, dehydrated.queryClientState);
|
|
62
|
+
}
|
|
63
|
+
}),
|
|
64
|
+
queryClient
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
const buildRouter = options.createRouter ?? createRouter$1;
|
|
68
|
+
const getRouteHead = async (pathname, context) => {
|
|
69
|
+
const history = createMemoryHistory({ initialEntries: [pathname] });
|
|
70
|
+
const queryClient = new QueryClient();
|
|
71
|
+
const runtimeConfig = context?.runtimeConfig;
|
|
72
|
+
if (!runtimeConfig?.hostUrl || !runtimeConfig.rpcBase) throw new Error("Missing runtime config for route head generation");
|
|
73
|
+
const router = createRouter({
|
|
74
|
+
routeTree: context?.routeTree ?? defaultRouteTree,
|
|
75
|
+
history,
|
|
76
|
+
context: {
|
|
77
|
+
queryClient,
|
|
78
|
+
runtimeConfig,
|
|
79
|
+
apiClient: context?.apiClient ?? createApiClient({
|
|
80
|
+
hostUrl: runtimeConfig.hostUrl,
|
|
81
|
+
rpcBase: runtimeConfig.rpcBase
|
|
82
|
+
}),
|
|
83
|
+
authClient: context?.authClient ?? createAuthClient({
|
|
84
|
+
runtimeConfig,
|
|
85
|
+
cspNonce: context?.cspNonce
|
|
86
|
+
}),
|
|
87
|
+
session: context?.session,
|
|
88
|
+
locale: context?.locale
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
return collectHeadData(router);
|
|
92
|
+
};
|
|
93
|
+
const renderToStream = async (request, renderOptions) => {
|
|
94
|
+
const url = new URL(request.url);
|
|
95
|
+
const history = createMemoryHistory({ initialEntries: [url.pathname + url.search] });
|
|
96
|
+
let queryClientRef = null;
|
|
97
|
+
const response = await createRequestHandler({
|
|
98
|
+
request,
|
|
99
|
+
createRouter: () => {
|
|
100
|
+
const localQueryClient = queryClientRef ?? options.createQueryClient?.() ?? defaultQueryClient();
|
|
101
|
+
const built = buildRouter({
|
|
102
|
+
history,
|
|
103
|
+
routeTree: renderOptions.routeTree,
|
|
104
|
+
basepath: renderOptions.basepath,
|
|
105
|
+
context: {
|
|
106
|
+
queryClient: localQueryClient,
|
|
107
|
+
runtimeConfig: renderOptions.runtimeConfig,
|
|
108
|
+
apiClient: renderOptions.apiClient,
|
|
109
|
+
authClient: createAuthClient({
|
|
110
|
+
runtimeConfig: renderOptions.runtimeConfig,
|
|
111
|
+
headers: request.headers,
|
|
112
|
+
cspNonce: renderOptions.cspNonce
|
|
113
|
+
}),
|
|
114
|
+
session: renderOptions.session,
|
|
115
|
+
cspNonce: renderOptions.cspNonce,
|
|
116
|
+
pluginNav: renderOptions.pluginNav,
|
|
117
|
+
locale: options.locale ? resolveLocale({
|
|
118
|
+
...options.locale,
|
|
119
|
+
cookie: request.headers.get("cookie") ?? "",
|
|
120
|
+
browserLocales: readAcceptLanguage(request.headers.get("accept-language"))
|
|
121
|
+
}) : void 0
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
queryClientRef = built.queryClient ?? localQueryClient;
|
|
125
|
+
return built.router;
|
|
126
|
+
}
|
|
127
|
+
})(({ request, responseHeaders, router }) => renderRouterToStream({
|
|
128
|
+
request,
|
|
129
|
+
responseHeaders,
|
|
130
|
+
router,
|
|
131
|
+
children: /* @__PURE__ */ jsx(QueryClientProvider, {
|
|
132
|
+
client: queryClientRef,
|
|
133
|
+
children: /* @__PURE__ */ jsx(RouterServer, { router })
|
|
134
|
+
})
|
|
135
|
+
}));
|
|
136
|
+
if (options.locale) response.headers.append("Vary", "Cookie, Accept-Language");
|
|
137
|
+
return {
|
|
138
|
+
stream: response.body,
|
|
139
|
+
statusCode: response.status,
|
|
140
|
+
headers: response.headers
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
return {
|
|
144
|
+
createRouter: createRouter$1,
|
|
145
|
+
getRouteHead,
|
|
146
|
+
renderToStream
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
//#endregion
|
|
151
|
+
export { createServerRouterModule };
|
|
152
|
+
//# sourceMappingURL=router-server.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-server.mjs","names":["createRouter","createTanStackRouter"],"sources":["../../src/ui/router-server.tsx"],"sourcesContent":["/**\n * SSR router factory — creates request-scoped server routers and server-side\n * API/auth clients per request. Mirrors the client router shape for\n * hydration consistency. The app injects its generated route tree and (for\n * a byte-identical child surface) its error component.\n */\n\nimport { dehydrate, hydrate, QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport {\n type AnyRoute,\n type AnyRouter,\n createMemoryHistory,\n createRouter as createTanStackRouter,\n} from \"@tanstack/react-router\";\nimport {\n createRequestHandler,\n RouterServer,\n renderRouterToStream,\n} from \"@tanstack/react-router/ssr/server\";\nimport { createApiClient } from \"./api\";\nimport { createAuthClient } from \"./auth\";\nimport { type LocaleOptions, readAcceptLanguage, resolveLocale } from \"./locale\";\nimport { collectHeadData } from \"./router\";\nimport {\n defaultNotFoundComponent,\n defaultPendingComponent,\n defaultQueryClient,\n} from \"./router-defaults\";\nimport { RouterError } from \"./router-error\";\nimport type {\n AppRouterFactory,\n CreateRouterOptions,\n HeadData,\n RenderOptionsWithApi,\n RenderResult,\n RouterContextWithApi,\n} from \"./types\";\n\nexport interface ServerRouterModuleOptions<TRouteTree extends AnyRoute = AnyRoute> {\n /** The app's generated route tree — the core-only fallback when no composed tree is passed. */\n defaultRouteTree?: TRouteTree;\n /**\n * The app's authored router factory — SSR parity: each request's router is\n * minted through the same factory the client hydrates with, so notFound/\n * pending/error options match. Absent, the framework's own factory runs.\n */\n createRouter?: AppRouterFactory;\n /** The app's query client factory (staleTime, gcTime, …) — SSR parity with the client hydrator. Absent, the framework default. */\n createQueryClient?: () => QueryClient;\n /** Locale negotiation for SSR — resolves the request-scoped locale into router context. */\n locale?: LocaleOptions;\n}\n\ntype ServerRouterOptions<TRouteTree extends AnyRoute> = CreateRouterOptions & {\n context?: Partial<RouterContextWithApi> & { pluginNav?: unknown };\n routeTree?: TRouteTree;\n};\n\nexport function createServerRouterModule<TRouteTree extends AnyRoute = AnyRoute>(\n options: ServerRouterModuleOptions<TRouteTree> = {},\n) {\n const defaultRouteTree = options.defaultRouteTree;\n\n const createRouter = (\n opts?: ServerRouterOptions<TRouteTree>,\n ): { router: AnyRouter; queryClient: QueryClient } => {\n const context = opts?.context;\n const queryClient = context?.queryClient ?? defaultQueryClient();\n\n const history = opts?.history ?? createMemoryHistory();\n\n const cspNonce = context?.cspNonce;\n // RouterCore's `in out` type parameters reject the framework's loose\n // AnyRouter contract when the tree is typed as the wide AnyRoute — the\n // runtime instance genuinely satisfies it, so the boundary casts once.\n const router = createTanStackRouter({\n routeTree: (opts?.routeTree ?? defaultRouteTree) as TRouteTree,\n history,\n basepath: opts?.basepath,\n context: {\n queryClient,\n runtimeConfig: context?.runtimeConfig,\n apiClient: context?.apiClient,\n authClient:\n context?.authClient ??\n createAuthClient({\n runtimeConfig: context?.runtimeConfig,\n cspNonce: context?.cspNonce,\n }),\n session: context?.session,\n cspNonce,\n locale: context?.locale,\n pluginNav: context?.pluginNav,\n },\n ...(cspNonce ? { ssr: { nonce: cspNonce } } : {}),\n defaultPreload: \"intent\",\n scrollRestoration: true,\n defaultStructuralSharing: true,\n defaultPreloadStaleTime: 0,\n defaultErrorComponent: RouterError,\n defaultOnCatch: (error, errorInfo) => {\n console.error(\"[SSR] Router error boundary caught:\", error, {\n componentStack: errorInfo.componentStack,\n });\n },\n defaultNotFoundComponent,\n defaultPendingComponent,\n defaultPendingMinMs: 0,\n dehydrate: () => {\n if (typeof window === \"undefined\") {\n return { queryClientState: dehydrate(queryClient) };\n }\n\n return { queryClientState: {} };\n },\n hydrate: (dehydrated: { queryClientState?: unknown }) => {\n if (typeof window !== \"undefined\" && dehydrated?.queryClientState) {\n hydrate(queryClient, dehydrated.queryClientState);\n }\n },\n });\n\n return { router, queryClient };\n };\n\n // SSR parity seam: the app's authored factory (client and server mint\n // through the same code) or the framework's own.\n const buildRouter = options.createRouter ?? createRouter;\n\n const getRouteHead = async (\n pathname: string,\n context?: Partial<RouterContextWithApi> & { routeTree?: TRouteTree },\n ): Promise<HeadData> => {\n const history = createMemoryHistory({ initialEntries: [pathname] });\n const queryClient = new QueryClient();\n const runtimeConfig = context?.runtimeConfig;\n if (!runtimeConfig?.hostUrl || !runtimeConfig.rpcBase) {\n throw new Error(\"Missing runtime config for route head generation\");\n }\n\n const router = createTanStackRouter({\n routeTree: context?.routeTree ?? defaultRouteTree,\n history,\n context: {\n queryClient,\n runtimeConfig,\n apiClient:\n context?.apiClient ??\n createApiClient({ hostUrl: runtimeConfig.hostUrl, rpcBase: runtimeConfig.rpcBase }),\n authClient:\n context?.authClient ?? createAuthClient({ runtimeConfig, cspNonce: context?.cspNonce }),\n session: context?.session,\n locale: context?.locale,\n },\n });\n\n return collectHeadData(router);\n };\n\n const renderToStream = async (\n request: Request,\n renderOptions: RenderOptionsWithApi,\n ): Promise<RenderResult> => {\n const url = new URL(request.url);\n const history = createMemoryHistory({ initialEntries: [url.pathname + url.search] });\n let queryClientRef: QueryClient | null = null;\n\n const handler = createRequestHandler({\n request,\n createRouter: () => {\n const localQueryClient =\n queryClientRef ?? options.createQueryClient?.() ?? defaultQueryClient();\n const built = buildRouter({\n history,\n routeTree: renderOptions.routeTree as TRouteTree,\n basepath: renderOptions.basepath,\n context: {\n queryClient: localQueryClient,\n runtimeConfig: renderOptions.runtimeConfig,\n apiClient: renderOptions.apiClient,\n authClient: createAuthClient({\n runtimeConfig: renderOptions.runtimeConfig,\n headers: request.headers,\n cspNonce: renderOptions.cspNonce,\n }),\n session: renderOptions.session,\n cspNonce: renderOptions.cspNonce,\n pluginNav: renderOptions.pluginNav,\n locale: options.locale\n ? resolveLocale({\n ...options.locale,\n cookie: request.headers.get(\"cookie\") ?? \"\",\n browserLocales: readAcceptLanguage(request.headers.get(\"accept-language\")),\n })\n : undefined,\n },\n });\n queryClientRef = built.queryClient ?? localQueryClient;\n return built.router;\n },\n });\n\n const response = await handler(({ request, responseHeaders, router }) =>\n renderRouterToStream({\n request,\n responseHeaders,\n router,\n children: (\n <QueryClientProvider client={queryClientRef!}>\n <RouterServer router={router} />\n </QueryClientProvider>\n ),\n }),\n );\n\n if (options.locale) response.headers.append(\"Vary\", \"Cookie, Accept-Language\");\n\n return {\n stream: response.body!,\n statusCode: response.status,\n headers: response.headers,\n } satisfies RenderResult;\n };\n\n return {\n createRouter,\n getRouteHead,\n renderToStream,\n };\n}\n"],"mappings":"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"}
|
package/dist/ui/router.cjs
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
|
|
3
2
|
//#region src/ui/router.ts
|
|
4
3
|
function getMetaKey(meta) {
|
|
5
4
|
if (!meta) return "null";
|
|
@@ -25,21 +24,10 @@ async function collectHeadData(router) {
|
|
|
25
24
|
const linkMap = /* @__PURE__ */ new Map();
|
|
26
25
|
const scriptMap = /* @__PURE__ */ new Map();
|
|
27
26
|
for (const match of router.state.matches) {
|
|
28
|
-
const
|
|
29
|
-
if (
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
loaderData: match.loaderData,
|
|
33
|
-
matches: router.state.matches,
|
|
34
|
-
match,
|
|
35
|
-
params: match.params
|
|
36
|
-
});
|
|
37
|
-
if (headResult?.meta) for (const meta of headResult.meta) metaMap.set(getMetaKey(meta), meta);
|
|
38
|
-
if (headResult?.links) for (const link of headResult.links) linkMap.set(getLinkKey(link), link);
|
|
39
|
-
if (headResult?.scripts) for (const script of headResult.scripts) scriptMap.set(getScriptKey(script), script);
|
|
40
|
-
} catch (error) {
|
|
41
|
-
console.warn(`[collectHeadData] head() failed for ${match.routeId}:`, error);
|
|
42
|
-
}
|
|
27
|
+
const matchData = match;
|
|
28
|
+
if (matchData.meta) for (const meta of matchData.meta) metaMap.set(getMetaKey(meta), meta);
|
|
29
|
+
if (matchData.links) for (const link of matchData.links) linkMap.set(getLinkKey(link), link);
|
|
30
|
+
if (matchData.headScripts) for (const script of matchData.headScripts) scriptMap.set(getScriptKey(script), script);
|
|
43
31
|
}
|
|
44
32
|
return {
|
|
45
33
|
meta: [...metaMap.values()],
|
package/dist/ui/router.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.cjs","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.cjs","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":"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"}
|
package/dist/ui/router.mjs
CHANGED
|
@@ -23,21 +23,10 @@ async function collectHeadData(router) {
|
|
|
23
23
|
const linkMap = /* @__PURE__ */ new Map();
|
|
24
24
|
const scriptMap = /* @__PURE__ */ new Map();
|
|
25
25
|
for (const match of router.state.matches) {
|
|
26
|
-
const
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
loaderData: match.loaderData,
|
|
31
|
-
matches: router.state.matches,
|
|
32
|
-
match,
|
|
33
|
-
params: match.params
|
|
34
|
-
});
|
|
35
|
-
if (headResult?.meta) for (const meta of headResult.meta) metaMap.set(getMetaKey(meta), meta);
|
|
36
|
-
if (headResult?.links) for (const link of headResult.links) linkMap.set(getLinkKey(link), link);
|
|
37
|
-
if (headResult?.scripts) for (const script of headResult.scripts) scriptMap.set(getScriptKey(script), script);
|
|
38
|
-
} catch (error) {
|
|
39
|
-
console.warn(`[collectHeadData] head() failed for ${match.routeId}:`, error);
|
|
40
|
-
}
|
|
26
|
+
const matchData = match;
|
|
27
|
+
if (matchData.meta) for (const meta of matchData.meta) metaMap.set(getMetaKey(meta), meta);
|
|
28
|
+
if (matchData.links) for (const link of matchData.links) linkMap.set(getLinkKey(link), link);
|
|
29
|
+
if (matchData.headScripts) for (const script of matchData.headScripts) scriptMap.set(getScriptKey(script), script);
|
|
41
30
|
}
|
|
42
31
|
return {
|
|
43
32
|
meta: [...metaMap.values()],
|