@rangojs/router 0.0.0-experimental.d20dd405 → 0.0.0-experimental.d5d3070a
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/AGENTS.md +8 -0
- package/README.md +57 -14
- package/dist/bin/rango.js +312 -93
- package/dist/testing/vitest.js +82 -0
- package/dist/vite/index.js +1632 -705
- package/package.json +64 -12
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +61 -1
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +224 -32
- package/skills/caching/SKILL.md +279 -17
- package/skills/composability/SKILL.md +27 -2
- package/skills/css/SKILL.md +76 -0
- package/skills/debug-manifest/SKILL.md +4 -2
- package/skills/document-cache/SKILL.md +78 -55
- package/skills/handler-use/SKILL.md +2 -2
- package/skills/hooks/SKILL.md +217 -31
- package/skills/host-router/SKILL.md +83 -23
- package/skills/intercept/SKILL.md +5 -6
- package/skills/layout/SKILL.md +11 -9
- package/skills/links/SKILL.md +22 -10
- package/skills/loader/SKILL.md +172 -23
- package/skills/middleware/SKILL.md +16 -10
- package/skills/migrate-nextjs/SKILL.md +38 -16
- package/skills/migrate-react-router/SKILL.md +4 -2
- package/skills/mime-routes/SKILL.md +28 -1
- package/skills/observability/SKILL.md +172 -0
- package/skills/parallel/SKILL.md +9 -7
- package/skills/prerender/SKILL.md +45 -43
- package/skills/rango/SKILL.md +251 -26
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +115 -48
- package/skills/route/SKILL.md +22 -5
- package/skills/router-setup/SKILL.md +29 -6
- package/skills/scripts/SKILL.md +179 -0
- package/skills/server-actions/SKILL.md +78 -42
- package/skills/tailwind/SKILL.md +27 -3
- package/skills/testing/SKILL.md +129 -0
- package/skills/testing/bindings.md +103 -0
- package/skills/testing/cache-prerender.md +127 -0
- package/skills/testing/client-components.md +124 -0
- package/skills/testing/e2e-parity.md +125 -0
- package/skills/testing/flight.md +91 -0
- package/skills/testing/handles.md +129 -0
- package/skills/testing/loader.md +128 -0
- package/skills/testing/middleware.md +99 -0
- package/skills/testing/render-handler.md +121 -0
- package/skills/testing/response-routes.md +95 -0
- package/skills/testing/reverse-and-types.md +84 -0
- package/skills/testing/server-actions.md +107 -0
- package/skills/testing/server-tree.md +128 -0
- package/skills/testing/setup.md +123 -0
- package/skills/typesafety/SKILL.md +313 -28
- package/skills/use-cache/SKILL.md +46 -14
- package/skills/view-transitions/SKILL.md +85 -3
- package/src/__augment-tests__/augment.ts +81 -0
- package/src/__augment-tests__/augmented.check.ts +116 -0
- package/src/__internal.ts +0 -65
- package/src/browser/action-coordinator.ts +53 -36
- package/src/browser/action-fence.ts +47 -0
- package/src/browser/app-shell.ts +14 -27
- package/src/browser/connection-warmup.ts +134 -0
- package/src/browser/cookie-name.ts +140 -0
- package/src/browser/event-controller.ts +151 -149
- package/src/browser/history-state.ts +21 -0
- package/src/browser/index.ts +3 -3
- package/src/browser/invalidate-client-cache.ts +52 -0
- package/src/browser/navigation-bridge.ts +67 -126
- package/src/browser/navigation-client.ts +110 -84
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +32 -82
- package/src/browser/navigation-transaction.ts +9 -59
- package/src/browser/network-error-handler.ts +34 -7
- package/src/browser/partial-update.ts +108 -144
- package/src/browser/prefetch/cache.ts +107 -72
- package/src/browser/prefetch/fetch.ts +186 -34
- package/src/browser/prefetch/queue.ts +6 -3
- package/src/browser/rango-state.ts +157 -115
- package/src/browser/react/Link.tsx +30 -7
- package/src/browser/react/NavigationProvider.tsx +173 -160
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/filter-segment-order.ts +17 -2
- package/src/browser/react/index.ts +0 -51
- package/src/browser/react/location-state-shared.ts +178 -8
- package/src/browser/react/location-state.ts +39 -14
- package/src/browser/react/use-action.ts +6 -15
- package/src/browser/react/use-handle.ts +17 -14
- package/src/browser/react/use-href.tsx +8 -1
- package/src/browser/react/use-link-status.ts +33 -8
- package/src/browser/react/use-navigation.ts +10 -5
- package/src/browser/react/use-params.ts +3 -6
- package/src/browser/react/use-reverse.ts +19 -12
- package/src/browser/react/use-router.ts +20 -5
- package/src/browser/react/use-search-params.ts +0 -5
- package/src/browser/react/use-segments.ts +0 -13
- package/src/browser/response-adapter.ts +80 -5
- package/src/browser/rsc-router.tsx +73 -34
- package/src/browser/scroll-restoration.ts +38 -28
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +214 -55
- package/src/browser/types.ts +51 -21
- package/src/browser/validate-redirect-origin.ts +43 -16
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +60 -35
- package/src/build/generate-route-types.ts +2 -1
- package/src/build/index.ts +8 -2
- package/src/build/prefix-tree-utils.ts +123 -0
- package/src/build/route-trie.ts +117 -15
- package/src/build/route-types/ast-route-extraction.ts +15 -8
- package/src/build/route-types/codegen.ts +16 -5
- package/src/build/route-types/include-resolution.ts +117 -23
- package/src/build/route-types/param-extraction.ts +6 -3
- package/src/build/route-types/per-module-writer.ts +22 -6
- package/src/build/route-types/router-processing.ts +55 -28
- package/src/build/route-types/scan-filter.ts +1 -1
- package/src/build/route-types/source-scan.ts +216 -0
- package/src/build/runtime-discovery.ts +9 -20
- package/src/cache/cache-error.ts +104 -0
- package/src/cache/cache-key-utils.ts +29 -13
- package/src/cache/cache-policy.ts +108 -34
- package/src/cache/cache-runtime.ts +199 -37
- package/src/cache/cache-scope.ts +188 -82
- package/src/cache/cache-tag.ts +103 -0
- package/src/cache/cf/cf-base64.ts +33 -0
- package/src/cache/cf/cf-cache-constants.ts +127 -0
- package/src/cache/cf/cf-cache-store.ts +1990 -377
- package/src/cache/cf/cf-cache-types.ts +349 -0
- package/src/cache/cf/cf-kv-utils.ts +46 -0
- package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
- package/src/cache/cf/index.ts +6 -16
- package/src/cache/document-cache.ts +72 -20
- package/src/cache/handle-snapshot.ts +70 -0
- package/src/cache/index.ts +10 -20
- package/src/cache/memory-segment-store.ts +136 -37
- package/src/cache/profile-registry.ts +31 -31
- package/src/cache/read-through-swr.ts +41 -11
- package/src/cache/segment-codec.ts +9 -17
- package/src/cache/tag-invalidation.ts +230 -0
- package/src/cache/types.ts +37 -100
- package/src/client.rsc.tsx +42 -22
- package/src/client.tsx +33 -62
- package/src/cloudflare/index.ts +11 -0
- package/src/cloudflare/tracing.ts +109 -0
- package/src/component-utils.ts +19 -0
- package/src/components/DefaultDocument.tsx +8 -2
- package/src/context-var.ts +18 -6
- package/src/decode-loader-results.ts +52 -0
- package/src/defer.ts +196 -0
- package/src/deps/ssr.ts +0 -1
- package/src/encode-kv.ts +49 -0
- package/src/errors.ts +30 -4
- package/src/escape-script.ts +52 -0
- package/src/handle.ts +31 -23
- package/src/handles/MetaTags.tsx +62 -19
- package/src/handles/Scripts.tsx +183 -0
- package/src/handles/breadcrumbs.ts +37 -8
- package/src/handles/is-thenable.ts +19 -0
- package/src/handles/meta.ts +51 -40
- package/src/handles/script.ts +244 -0
- package/src/host/cookie-handler.ts +9 -60
- package/src/host/errors.ts +0 -24
- package/src/host/index.ts +8 -2
- package/src/host/pattern-matcher.ts +23 -52
- package/src/host/router.ts +107 -99
- package/src/host/testing.ts +40 -27
- package/src/host/types.ts +37 -4
- package/src/host/utils.ts +1 -1
- package/src/href-client.ts +136 -24
- package/src/index.rsc.ts +87 -11
- package/src/index.ts +85 -10
- package/src/internal-debug.ts +11 -10
- package/src/loader-store.ts +500 -0
- package/src/loader.rsc.ts +20 -13
- package/src/loader.ts +12 -11
- package/src/missing-id-error.ts +68 -0
- package/src/outlet-provider.tsx +1 -5
- package/src/prerender/param-hash.ts +16 -16
- package/src/prerender/store.ts +32 -37
- package/src/prerender.ts +61 -6
- package/src/redirect-origin.ts +100 -0
- package/src/regex-escape.ts +8 -0
- package/src/render-error-thrower.tsx +20 -0
- package/src/response-utils.ts +34 -0
- package/src/reverse.ts +16 -13
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +7 -72
- package/src/route-definition/dsl-helpers.ts +276 -283
- package/src/route-definition/helper-factories.ts +29 -139
- package/src/route-definition/helpers-types.ts +40 -17
- package/src/route-definition/redirect.ts +44 -11
- package/src/route-definition/resolve-handler-use.ts +6 -0
- package/src/route-definition/use-item-types.ts +32 -0
- package/src/route-map-builder.ts +0 -16
- package/src/route-types.ts +19 -41
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +73 -25
- package/src/router/error-handling.ts +45 -18
- package/src/router/find-match.ts +44 -23
- package/src/router/handler-context.ts +6 -1
- package/src/router/instrument.ts +350 -0
- package/src/router/intercept-resolution.ts +39 -20
- package/src/router/lazy-includes.ts +9 -46
- package/src/router/loader-resolution.ts +152 -72
- package/src/router/logging.ts +0 -6
- package/src/router/manifest.ts +18 -29
- package/src/router/match-api.ts +0 -20
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +57 -58
- package/src/router/match-middleware/background-revalidation.ts +6 -7
- package/src/router/match-middleware/cache-lookup.ts +159 -285
- package/src/router/match-middleware/cache-store.ts +31 -34
- package/src/router/match-middleware/intercept-resolution.ts +0 -22
- package/src/router/match-middleware/segment-resolution.ts +0 -22
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +31 -80
- package/src/router/metrics.ts +0 -34
- package/src/router/middleware-types.ts +0 -116
- package/src/router/middleware.ts +216 -163
- package/src/router/navigation-snapshot.ts +0 -51
- package/src/router/params-util.ts +23 -0
- package/src/router/pattern-matching.ts +47 -89
- package/src/router/prefetch-cache-ttl.ts +51 -0
- package/src/router/prerender-match.ts +104 -65
- package/src/router/preview-match.ts +3 -1
- package/src/router/request-classification.ts +28 -62
- package/src/router/revalidation.ts +110 -74
- package/src/router/route-snapshot.ts +0 -1
- package/src/router/router-context.ts +3 -28
- package/src/router/router-interfaces.ts +83 -35
- package/src/router/router-options.ts +136 -5
- package/src/router/router-registry.ts +2 -5
- package/src/router/segment-resolution/fresh.ts +85 -84
- package/src/router/segment-resolution/helpers.ts +86 -6
- package/src/router/segment-resolution/loader-cache.ts +62 -37
- package/src/router/segment-resolution/revalidation.ts +227 -306
- package/src/router/segment-resolution/static-store.ts +19 -5
- package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
- package/src/router/segment-resolution/view-transition-default.ts +36 -0
- package/src/router/segment-resolution.ts +5 -1
- package/src/router/segment-wrappers.ts +6 -5
- package/src/router/state-cookie-name.ts +33 -0
- package/src/router/telemetry-otel.ts +161 -199
- package/src/router/telemetry.ts +96 -19
- package/src/router/timeout.ts +0 -20
- package/src/router/tracing.ts +206 -0
- package/src/router/trie-matching.ts +163 -64
- package/src/router/types.ts +9 -63
- package/src/router/url-params.ts +0 -5
- package/src/router.ts +109 -53
- package/src/rsc/handler-context.ts +3 -2
- package/src/rsc/handler.ts +262 -219
- package/src/rsc/helpers.ts +100 -6
- package/src/rsc/index.ts +2 -5
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +114 -38
- package/src/rsc/manifest-init.ts +28 -41
- package/src/rsc/origin-guard.ts +39 -25
- package/src/rsc/progressive-enhancement.ts +59 -9
- package/src/rsc/redirect-guard.ts +99 -0
- package/src/rsc/response-cache-serve.ts +238 -0
- package/src/rsc/response-error.ts +79 -12
- package/src/rsc/response-route-handler.ts +85 -188
- package/src/rsc/rsc-rendering.ts +91 -77
- package/src/rsc/runtime-warnings.ts +23 -10
- package/src/rsc/server-action.ts +256 -117
- package/src/rsc/ssr-setup.ts +16 -0
- package/src/rsc/types.ts +17 -5
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +35 -30
- package/src/segment-loader-promise.ts +31 -4
- package/src/segment-system.tsx +151 -136
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +150 -51
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +80 -5
- package/src/server/handle-store.ts +21 -38
- package/src/server/loader-registry.ts +21 -42
- package/src/server/request-context.ts +225 -133
- package/src/ssr/index.tsx +19 -18
- package/src/static-handler.ts +10 -13
- package/src/testing/cache-status.ts +162 -0
- package/src/testing/collect-handle.ts +40 -0
- package/src/testing/dispatch.ts +701 -0
- package/src/testing/dom.entry.ts +22 -0
- package/src/testing/e2e/fixture.ts +188 -0
- package/src/testing/e2e/index.ts +128 -0
- package/src/testing/e2e/matchers.ts +35 -0
- package/src/testing/e2e/page-helpers.ts +272 -0
- package/src/testing/e2e/parity.ts +387 -0
- package/src/testing/e2e/server.ts +195 -0
- package/src/testing/flight-matchers.ts +97 -0
- package/src/testing/flight-normalize.ts +11 -0
- package/src/testing/flight-runtime.d.ts +57 -0
- package/src/testing/flight-tree.ts +682 -0
- package/src/testing/flight.entry.ts +52 -0
- package/src/testing/flight.ts +257 -0
- package/src/testing/generated-routes.ts +183 -0
- package/src/testing/index.ts +99 -0
- package/src/testing/internal/context.ts +371 -0
- package/src/testing/internal/flight-client-globals.ts +30 -0
- package/src/testing/internal/seed-vars.ts +54 -0
- package/src/testing/render-handler.ts +343 -0
- package/src/testing/render-route.tsx +581 -0
- package/src/testing/run-loader.ts +385 -0
- package/src/testing/run-middleware.ts +205 -0
- package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
- package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
- package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
- package/src/testing/vitest-stubs/version.ts +5 -0
- package/src/testing/vitest.ts +305 -0
- package/src/theme/ThemeProvider.tsx +20 -58
- package/src/theme/ThemeScript.tsx +7 -9
- package/src/theme/constants.ts +52 -13
- package/src/theme/index.ts +0 -7
- package/src/theme/theme-context.ts +1 -5
- package/src/theme/theme-script.ts +22 -21
- package/src/theme/use-theme.ts +0 -3
- package/src/types/boundaries.ts +0 -35
- package/src/types/cache-types.ts +13 -4
- package/src/types/error-types.ts +30 -90
- package/src/types/global-namespace.ts +54 -41
- package/src/types/handler-context.ts +97 -22
- package/src/types/index.ts +1 -10
- package/src/types/loader-types.ts +6 -3
- package/src/types/request-scope.ts +8 -22
- package/src/types/route-config.ts +6 -50
- package/src/types/route-entry.ts +0 -6
- package/src/types/segments.ts +18 -14
- package/src/urls/include-helper.ts +9 -56
- package/src/urls/index.ts +1 -11
- package/src/urls/path-helper-types.ts +19 -5
- package/src/urls/path-helper.ts +17 -106
- package/src/urls/pattern-types.ts +36 -19
- package/src/urls/response-types.ts +20 -19
- package/src/urls/type-extraction.ts +58 -139
- package/src/urls/urls-function.ts +1 -18
- package/src/use-loader.tsx +292 -107
- package/src/vite/debug.ts +1 -0
- package/src/vite/discovery/bundle-postprocess.ts +8 -7
- package/src/vite/discovery/discover-routers.ts +95 -82
- package/src/vite/discovery/discovery-errors.ts +194 -0
- package/src/vite/discovery/prerender-collection.ts +48 -67
- package/src/vite/discovery/route-types-writer.ts +40 -84
- package/src/vite/discovery/state.ts +44 -0
- package/src/vite/discovery/virtual-module-codegen.ts +14 -34
- package/src/vite/index.ts +2 -0
- package/src/vite/inject-client-debug.ts +36 -0
- package/src/vite/plugin-types.ts +126 -8
- package/src/vite/plugins/cjs-to-esm.ts +11 -19
- package/src/vite/plugins/client-ref-dedup.ts +0 -11
- package/src/vite/plugins/client-ref-hashing.ts +12 -11
- package/src/vite/plugins/cloudflare-protocol-stub.ts +1 -21
- package/src/vite/plugins/expose-action-id.ts +4 -75
- package/src/vite/plugins/expose-id-utils.ts +88 -55
- package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
- package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
- package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
- package/src/vite/plugins/expose-ids/router-transform.ts +98 -26
- package/src/vite/plugins/expose-internal-ids.ts +57 -68
- package/src/vite/plugins/performance-tracks.ts +9 -16
- package/src/vite/plugins/refresh-cmd.ts +1 -1
- package/src/vite/plugins/use-cache-transform.ts +26 -49
- package/src/vite/plugins/version-injector.ts +2 -32
- package/src/vite/plugins/version-plugin.ts +37 -40
- package/src/vite/plugins/virtual-entries.ts +13 -18
- package/src/vite/rango.ts +60 -104
- package/src/vite/router-discovery.ts +236 -83
- package/src/vite/utils/ast-handler-extract.ts +26 -35
- package/src/vite/utils/bundle-analysis.ts +10 -15
- package/src/vite/utils/client-chunks.ts +184 -0
- package/src/vite/utils/directive-prologue.ts +40 -0
- package/src/vite/utils/forward-user-plugins.ts +171 -0
- package/src/vite/utils/manifest-utils.ts +4 -59
- package/src/vite/utils/package-resolution.ts +1 -73
- package/src/vite/utils/prerender-utils.ts +54 -40
- package/src/vite/utils/shared-utils.ts +90 -41
- package/dist/__internal.d.ts +0 -83
- package/dist/__internal.d.ts.map +0 -1
- package/dist/__internal.js +0 -19
- package/dist/__internal.js.map +0 -1
- package/dist/__mocks__/version.d.ts +0 -7
- package/dist/__mocks__/version.d.ts.map +0 -1
- package/dist/__mocks__/version.js +0 -7
- package/dist/__mocks__/version.js.map +0 -1
- package/dist/__tests__/client-href.test.d.ts +0 -2
- package/dist/__tests__/client-href.test.d.ts.map +0 -1
- package/dist/__tests__/client-href.test.js +0 -74
- package/dist/__tests__/client-href.test.js.map +0 -1
- package/dist/__tests__/component-utils.test.d.ts +0 -2
- package/dist/__tests__/component-utils.test.d.ts.map +0 -1
- package/dist/__tests__/component-utils.test.js +0 -51
- package/dist/__tests__/component-utils.test.js.map +0 -1
- package/dist/__tests__/event-controller.test.d.ts +0 -2
- package/dist/__tests__/event-controller.test.d.ts.map +0 -1
- package/dist/__tests__/event-controller.test.js +0 -538
- package/dist/__tests__/event-controller.test.js.map +0 -1
- package/dist/__tests__/helpers/route-tree.d.ts +0 -118
- package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
- package/dist/__tests__/helpers/route-tree.js +0 -374
- package/dist/__tests__/helpers/route-tree.js.map +0 -1
- package/dist/__tests__/match-result.test.d.ts +0 -2
- package/dist/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/__tests__/match-result.test.js +0 -154
- package/dist/__tests__/match-result.test.js.map +0 -1
- package/dist/__tests__/navigation-store.test.d.ts +0 -2
- package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
- package/dist/__tests__/navigation-store.test.js +0 -440
- package/dist/__tests__/navigation-store.test.js.map +0 -1
- package/dist/__tests__/partial-update.test.d.ts +0 -2
- package/dist/__tests__/partial-update.test.d.ts.map +0 -1
- package/dist/__tests__/partial-update.test.js +0 -1009
- package/dist/__tests__/partial-update.test.js.map +0 -1
- package/dist/__tests__/reverse-types.test.d.ts +0 -8
- package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
- package/dist/__tests__/reverse-types.test.js +0 -656
- package/dist/__tests__/reverse-types.test.js.map +0 -1
- package/dist/__tests__/route-definition.test.d.ts +0 -2
- package/dist/__tests__/route-definition.test.d.ts.map +0 -1
- package/dist/__tests__/route-definition.test.js +0 -55
- package/dist/__tests__/route-definition.test.js.map +0 -1
- package/dist/__tests__/router-helpers.test.d.ts +0 -2
- package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
- package/dist/__tests__/router-helpers.test.js +0 -377
- package/dist/__tests__/router-helpers.test.js.map +0 -1
- package/dist/__tests__/router-integration-2.test.d.ts +0 -2
- package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration-2.test.js +0 -426
- package/dist/__tests__/router-integration-2.test.js.map +0 -1
- package/dist/__tests__/router-integration.test.d.ts +0 -2
- package/dist/__tests__/router-integration.test.d.ts.map +0 -1
- package/dist/__tests__/router-integration.test.js +0 -1051
- package/dist/__tests__/router-integration.test.js.map +0 -1
- package/dist/__tests__/search-params.test.d.ts +0 -5
- package/dist/__tests__/search-params.test.d.ts.map +0 -1
- package/dist/__tests__/search-params.test.js +0 -306
- package/dist/__tests__/search-params.test.js.map +0 -1
- package/dist/__tests__/segment-system.test.d.ts +0 -2
- package/dist/__tests__/segment-system.test.d.ts.map +0 -1
- package/dist/__tests__/segment-system.test.js +0 -627
- package/dist/__tests__/segment-system.test.js.map +0 -1
- package/dist/__tests__/static-handler-types.test.d.ts +0 -8
- package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
- package/dist/__tests__/static-handler-types.test.js +0 -63
- package/dist/__tests__/static-handler-types.test.js.map +0 -1
- package/dist/__tests__/urls.test.d.ts +0 -2
- package/dist/__tests__/urls.test.d.ts.map +0 -1
- package/dist/__tests__/urls.test.js +0 -421
- package/dist/__tests__/urls.test.js.map +0 -1
- package/dist/__tests__/use-mount.test.d.ts +0 -2
- package/dist/__tests__/use-mount.test.d.ts.map +0 -1
- package/dist/__tests__/use-mount.test.js +0 -35
- package/dist/__tests__/use-mount.test.js.map +0 -1
- package/dist/bin/rango.d.ts +0 -2
- package/dist/bin/rango.d.ts.map +0 -1
- package/dist/bin/rango.js.map +0 -1
- package/dist/browser/event-controller.d.ts +0 -191
- package/dist/browser/event-controller.d.ts.map +0 -1
- package/dist/browser/event-controller.js +0 -559
- package/dist/browser/event-controller.js.map +0 -1
- package/dist/browser/index.d.ts +0 -2
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -14
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/link-interceptor.d.ts +0 -38
- package/dist/browser/link-interceptor.d.ts.map +0 -1
- package/dist/browser/link-interceptor.js +0 -99
- package/dist/browser/link-interceptor.js.map +0 -1
- package/dist/browser/logging.d.ts +0 -10
- package/dist/browser/logging.d.ts.map +0 -1
- package/dist/browser/logging.js +0 -29
- package/dist/browser/logging.js.map +0 -1
- package/dist/browser/lru-cache.d.ts +0 -17
- package/dist/browser/lru-cache.d.ts.map +0 -1
- package/dist/browser/lru-cache.js +0 -50
- package/dist/browser/lru-cache.js.map +0 -1
- package/dist/browser/merge-segment-loaders.d.ts +0 -39
- package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
- package/dist/browser/merge-segment-loaders.js +0 -102
- package/dist/browser/merge-segment-loaders.js.map +0 -1
- package/dist/browser/navigation-bridge.d.ts +0 -102
- package/dist/browser/navigation-bridge.d.ts.map +0 -1
- package/dist/browser/navigation-bridge.js +0 -708
- package/dist/browser/navigation-bridge.js.map +0 -1
- package/dist/browser/navigation-client.d.ts +0 -25
- package/dist/browser/navigation-client.d.ts.map +0 -1
- package/dist/browser/navigation-client.js +0 -157
- package/dist/browser/navigation-client.js.map +0 -1
- package/dist/browser/navigation-store.d.ts +0 -101
- package/dist/browser/navigation-store.d.ts.map +0 -1
- package/dist/browser/navigation-store.js +0 -625
- package/dist/browser/navigation-store.js.map +0 -1
- package/dist/browser/partial-update.d.ts +0 -75
- package/dist/browser/partial-update.d.ts.map +0 -1
- package/dist/browser/partial-update.js +0 -426
- package/dist/browser/partial-update.js.map +0 -1
- package/dist/browser/react/Link.d.ts +0 -86
- package/dist/browser/react/Link.d.ts.map +0 -1
- package/dist/browser/react/Link.js +0 -128
- package/dist/browser/react/Link.js.map +0 -1
- package/dist/browser/react/NavigationProvider.d.ts +0 -63
- package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
- package/dist/browser/react/NavigationProvider.js +0 -216
- package/dist/browser/react/NavigationProvider.js.map +0 -1
- package/dist/browser/react/ScrollRestoration.d.ts +0 -75
- package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
- package/dist/browser/react/ScrollRestoration.js +0 -57
- package/dist/browser/react/ScrollRestoration.js.map +0 -1
- package/dist/browser/react/context.d.ts +0 -46
- package/dist/browser/react/context.d.ts.map +0 -1
- package/dist/browser/react/context.js +0 -10
- package/dist/browser/react/context.js.map +0 -1
- package/dist/browser/react/index.d.ts +0 -11
- package/dist/browser/react/index.d.ts.map +0 -1
- package/dist/browser/react/index.js +0 -22
- package/dist/browser/react/index.js.map +0 -1
- package/dist/browser/react/location-state-shared.d.ts +0 -63
- package/dist/browser/react/location-state-shared.d.ts.map +0 -1
- package/dist/browser/react/location-state-shared.js +0 -81
- package/dist/browser/react/location-state-shared.js.map +0 -1
- package/dist/browser/react/location-state.d.ts +0 -23
- package/dist/browser/react/location-state.d.ts.map +0 -1
- package/dist/browser/react/location-state.js +0 -29
- package/dist/browser/react/location-state.js.map +0 -1
- package/dist/browser/react/mount-context.d.ts +0 -24
- package/dist/browser/react/mount-context.d.ts.map +0 -1
- package/dist/browser/react/mount-context.js +0 -24
- package/dist/browser/react/mount-context.js.map +0 -1
- package/dist/browser/react/use-action.d.ts +0 -64
- package/dist/browser/react/use-action.d.ts.map +0 -1
- package/dist/browser/react/use-action.js +0 -134
- package/dist/browser/react/use-action.js.map +0 -1
- package/dist/browser/react/use-client-cache.d.ts +0 -41
- package/dist/browser/react/use-client-cache.d.ts.map +0 -1
- package/dist/browser/react/use-client-cache.js +0 -39
- package/dist/browser/react/use-client-cache.js.map +0 -1
- package/dist/browser/react/use-handle.d.ts +0 -31
- package/dist/browser/react/use-handle.d.ts.map +0 -1
- package/dist/browser/react/use-handle.js +0 -144
- package/dist/browser/react/use-handle.js.map +0 -1
- package/dist/browser/react/use-href.d.ts +0 -33
- package/dist/browser/react/use-href.d.ts.map +0 -1
- package/dist/browser/react/use-href.js +0 -39
- package/dist/browser/react/use-href.js.map +0 -1
- package/dist/browser/react/use-link-status.d.ts +0 -37
- package/dist/browser/react/use-link-status.d.ts.map +0 -1
- package/dist/browser/react/use-link-status.js +0 -99
- package/dist/browser/react/use-link-status.js.map +0 -1
- package/dist/browser/react/use-mount.d.ts +0 -25
- package/dist/browser/react/use-mount.d.ts.map +0 -1
- package/dist/browser/react/use-mount.js +0 -30
- package/dist/browser/react/use-mount.js.map +0 -1
- package/dist/browser/react/use-navigation.d.ts +0 -27
- package/dist/browser/react/use-navigation.d.ts.map +0 -1
- package/dist/browser/react/use-navigation.js +0 -87
- package/dist/browser/react/use-navigation.js.map +0 -1
- package/dist/browser/react/use-segments.d.ts +0 -38
- package/dist/browser/react/use-segments.d.ts.map +0 -1
- package/dist/browser/react/use-segments.js +0 -130
- package/dist/browser/react/use-segments.js.map +0 -1
- package/dist/browser/request-controller.d.ts +0 -26
- package/dist/browser/request-controller.d.ts.map +0 -1
- package/dist/browser/request-controller.js +0 -147
- package/dist/browser/request-controller.js.map +0 -1
- package/dist/browser/rsc-router.d.ts +0 -129
- package/dist/browser/rsc-router.d.ts.map +0 -1
- package/dist/browser/rsc-router.js +0 -195
- package/dist/browser/rsc-router.js.map +0 -1
- package/dist/browser/scroll-restoration.d.ts +0 -93
- package/dist/browser/scroll-restoration.d.ts.map +0 -1
- package/dist/browser/scroll-restoration.js +0 -321
- package/dist/browser/scroll-restoration.js.map +0 -1
- package/dist/browser/segment-structure-assert.d.ts +0 -17
- package/dist/browser/segment-structure-assert.d.ts.map +0 -1
- package/dist/browser/segment-structure-assert.js +0 -59
- package/dist/browser/segment-structure-assert.js.map +0 -1
- package/dist/browser/server-action-bridge.d.ts +0 -26
- package/dist/browser/server-action-bridge.d.ts.map +0 -1
- package/dist/browser/server-action-bridge.js +0 -668
- package/dist/browser/server-action-bridge.js.map +0 -1
- package/dist/browser/shallow.d.ts +0 -12
- package/dist/browser/shallow.d.ts.map +0 -1
- package/dist/browser/shallow.js +0 -34
- package/dist/browser/shallow.js.map +0 -1
- package/dist/browser/types.d.ts +0 -369
- package/dist/browser/types.d.ts.map +0 -1
- package/dist/browser/types.js +0 -2
- package/dist/browser/types.js.map +0 -1
- package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
- package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-cli.test.js +0 -237
- package/dist/build/__tests__/generate-cli.test.js.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-manifest.test.js +0 -119
- package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
- package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
- package/dist/build/__tests__/generate-route-types.test.js +0 -620
- package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
- package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
- package/dist/build/__tests__/per-router-manifest.test.js +0 -308
- package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
- package/dist/build/generate-manifest.d.ts +0 -81
- package/dist/build/generate-manifest.d.ts.map +0 -1
- package/dist/build/generate-manifest.js +0 -276
- package/dist/build/generate-manifest.js.map +0 -1
- package/dist/build/generate-route-types.d.ts +0 -115
- package/dist/build/generate-route-types.d.ts.map +0 -1
- package/dist/build/generate-route-types.js +0 -740
- package/dist/build/generate-route-types.js.map +0 -1
- package/dist/build/index.d.ts +0 -21
- package/dist/build/index.d.ts.map +0 -1
- package/dist/build/index.js +0 -21
- package/dist/build/index.js.map +0 -1
- package/dist/build/route-trie.d.ts +0 -71
- package/dist/build/route-trie.d.ts.map +0 -1
- package/dist/build/route-trie.js +0 -175
- package/dist/build/route-trie.js.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
- package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
- package/dist/cache/__tests__/cache-scope.test.js +0 -208
- package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
- package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
- package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
- package/dist/cache/__tests__/document-cache.test.js +0 -345
- package/dist/cache/__tests__/document-cache.test.js.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
- package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
- package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
- package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
- package/dist/cache/__tests__/memory-store.test.js +0 -367
- package/dist/cache/__tests__/memory-store.test.js.map +0 -1
- package/dist/cache/cache-scope.d.ts +0 -102
- package/dist/cache/cache-scope.d.ts.map +0 -1
- package/dist/cache/cache-scope.js +0 -440
- package/dist/cache/cache-scope.js.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
- package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
- package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
- package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
- package/dist/cache/cf/cf-cache-store.d.ts +0 -165
- package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
- package/dist/cache/cf/cf-cache-store.js +0 -242
- package/dist/cache/cf/cf-cache-store.js.map +0 -1
- package/dist/cache/cf/index.d.ts +0 -14
- package/dist/cache/cf/index.d.ts.map +0 -1
- package/dist/cache/cf/index.js +0 -17
- package/dist/cache/cf/index.js.map +0 -1
- package/dist/cache/document-cache.d.ts +0 -64
- package/dist/cache/document-cache.d.ts.map +0 -1
- package/dist/cache/document-cache.js +0 -228
- package/dist/cache/document-cache.js.map +0 -1
- package/dist/cache/index.d.ts +0 -19
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -21
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/memory-segment-store.d.ts +0 -110
- package/dist/cache/memory-segment-store.d.ts.map +0 -1
- package/dist/cache/memory-segment-store.js +0 -117
- package/dist/cache/memory-segment-store.js.map +0 -1
- package/dist/cache/memory-store.d.ts +0 -41
- package/dist/cache/memory-store.d.ts.map +0 -1
- package/dist/cache/memory-store.js +0 -191
- package/dist/cache/memory-store.js.map +0 -1
- package/dist/cache/types.d.ts +0 -317
- package/dist/cache/types.d.ts.map +0 -1
- package/dist/cache/types.js +0 -12
- package/dist/cache/types.js.map +0 -1
- package/dist/client.d.ts +0 -248
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -367
- package/dist/client.js.map +0 -1
- package/dist/client.rsc.d.ts +0 -26
- package/dist/client.rsc.d.ts.map +0 -1
- package/dist/client.rsc.js +0 -46
- package/dist/client.rsc.js.map +0 -1
- package/dist/component-utils.d.ts +0 -36
- package/dist/component-utils.d.ts.map +0 -1
- package/dist/component-utils.js +0 -61
- package/dist/component-utils.js.map +0 -1
- package/dist/components/DefaultDocument.d.ts +0 -13
- package/dist/components/DefaultDocument.d.ts.map +0 -1
- package/dist/components/DefaultDocument.js +0 -15
- package/dist/components/DefaultDocument.js.map +0 -1
- package/dist/debug.d.ts +0 -58
- package/dist/debug.d.ts.map +0 -1
- package/dist/debug.js +0 -157
- package/dist/debug.js.map +0 -1
- package/dist/default-error-boundary.d.ts +0 -11
- package/dist/default-error-boundary.d.ts.map +0 -1
- package/dist/default-error-boundary.js +0 -45
- package/dist/default-error-boundary.js.map +0 -1
- package/dist/deps/browser.d.ts +0 -2
- package/dist/deps/browser.d.ts.map +0 -1
- package/dist/deps/browser.js +0 -3
- package/dist/deps/browser.js.map +0 -1
- package/dist/deps/html-stream-client.d.ts +0 -2
- package/dist/deps/html-stream-client.d.ts.map +0 -1
- package/dist/deps/html-stream-client.js +0 -3
- package/dist/deps/html-stream-client.js.map +0 -1
- package/dist/deps/html-stream-server.d.ts +0 -2
- package/dist/deps/html-stream-server.d.ts.map +0 -1
- package/dist/deps/html-stream-server.js +0 -3
- package/dist/deps/html-stream-server.js.map +0 -1
- package/dist/deps/rsc.d.ts +0 -2
- package/dist/deps/rsc.d.ts.map +0 -1
- package/dist/deps/rsc.js +0 -4
- package/dist/deps/rsc.js.map +0 -1
- package/dist/deps/ssr.d.ts +0 -2
- package/dist/deps/ssr.d.ts.map +0 -1
- package/dist/deps/ssr.js +0 -3
- package/dist/deps/ssr.js.map +0 -1
- package/dist/errors.d.ts +0 -174
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -241
- package/dist/errors.js.map +0 -1
- package/dist/handle.d.ts +0 -78
- package/dist/handle.d.ts.map +0 -1
- package/dist/handle.js +0 -82
- package/dist/handle.js.map +0 -1
- package/dist/handles/MetaTags.d.ts +0 -14
- package/dist/handles/MetaTags.d.ts.map +0 -1
- package/dist/handles/MetaTags.js +0 -136
- package/dist/handles/MetaTags.js.map +0 -1
- package/dist/handles/index.d.ts +0 -6
- package/dist/handles/index.d.ts.map +0 -1
- package/dist/handles/index.js +0 -6
- package/dist/handles/index.js.map +0 -1
- package/dist/handles/meta.d.ts +0 -39
- package/dist/handles/meta.d.ts.map +0 -1
- package/dist/handles/meta.js +0 -202
- package/dist/handles/meta.js.map +0 -1
- package/dist/host/__tests__/errors.test.d.ts +0 -2
- package/dist/host/__tests__/errors.test.d.ts.map +0 -1
- package/dist/host/__tests__/errors.test.js +0 -76
- package/dist/host/__tests__/errors.test.js.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
- package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
- package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
- package/dist/host/__tests__/pattern-matcher.test.js +0 -251
- package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
- package/dist/host/__tests__/router.test.d.ts +0 -2
- package/dist/host/__tests__/router.test.d.ts.map +0 -1
- package/dist/host/__tests__/router.test.js +0 -241
- package/dist/host/__tests__/router.test.js.map +0 -1
- package/dist/host/__tests__/testing.test.d.ts +0 -2
- package/dist/host/__tests__/testing.test.d.ts.map +0 -1
- package/dist/host/__tests__/testing.test.js +0 -64
- package/dist/host/__tests__/testing.test.js.map +0 -1
- package/dist/host/__tests__/utils.test.d.ts +0 -2
- package/dist/host/__tests__/utils.test.d.ts.map +0 -1
- package/dist/host/__tests__/utils.test.js +0 -29
- package/dist/host/__tests__/utils.test.js.map +0 -1
- package/dist/host/cookie-handler.d.ts +0 -34
- package/dist/host/cookie-handler.d.ts.map +0 -1
- package/dist/host/cookie-handler.js +0 -124
- package/dist/host/cookie-handler.js.map +0 -1
- package/dist/host/errors.d.ts +0 -56
- package/dist/host/errors.d.ts.map +0 -1
- package/dist/host/errors.js +0 -79
- package/dist/host/errors.js.map +0 -1
- package/dist/host/index.d.ts +0 -29
- package/dist/host/index.d.ts.map +0 -1
- package/dist/host/index.js +0 -32
- package/dist/host/index.js.map +0 -1
- package/dist/host/pattern-matcher.d.ts +0 -36
- package/dist/host/pattern-matcher.d.ts.map +0 -1
- package/dist/host/pattern-matcher.js +0 -172
- package/dist/host/pattern-matcher.js.map +0 -1
- package/dist/host/router.d.ts +0 -26
- package/dist/host/router.d.ts.map +0 -1
- package/dist/host/router.js +0 -218
- package/dist/host/router.js.map +0 -1
- package/dist/host/testing.d.ts +0 -36
- package/dist/host/testing.d.ts.map +0 -1
- package/dist/host/testing.js +0 -55
- package/dist/host/testing.js.map +0 -1
- package/dist/host/types.d.ts +0 -115
- package/dist/host/types.d.ts.map +0 -1
- package/dist/host/types.js +0 -7
- package/dist/host/types.js.map +0 -1
- package/dist/host/utils.d.ts +0 -21
- package/dist/host/utils.d.ts.map +0 -1
- package/dist/host/utils.js +0 -23
- package/dist/host/utils.js.map +0 -1
- package/dist/href-client.d.ts +0 -131
- package/dist/href-client.d.ts.map +0 -1
- package/dist/href-client.js +0 -64
- package/dist/href-client.js.map +0 -1
- package/dist/href-context.d.ts +0 -29
- package/dist/href-context.d.ts.map +0 -1
- package/dist/href-context.js +0 -21
- package/dist/href-context.js.map +0 -1
- package/dist/index.d.ts +0 -73
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -91
- package/dist/index.js.map +0 -1
- package/dist/index.rsc.d.ts +0 -32
- package/dist/index.rsc.d.ts.map +0 -1
- package/dist/index.rsc.js +0 -40
- package/dist/index.rsc.js.map +0 -1
- package/dist/internal-debug.d.ts +0 -2
- package/dist/internal-debug.d.ts.map +0 -1
- package/dist/internal-debug.js +0 -5
- package/dist/internal-debug.js.map +0 -1
- package/dist/loader.d.ts +0 -14
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -20
- package/dist/loader.js.map +0 -1
- package/dist/loader.rsc.d.ts +0 -19
- package/dist/loader.rsc.d.ts.map +0 -1
- package/dist/loader.rsc.js +0 -99
- package/dist/loader.rsc.js.map +0 -1
- package/dist/network-error-thrower.d.ts +0 -17
- package/dist/network-error-thrower.d.ts.map +0 -1
- package/dist/network-error-thrower.js +0 -14
- package/dist/network-error-thrower.js.map +0 -1
- package/dist/outlet-context.d.ts +0 -13
- package/dist/outlet-context.d.ts.map +0 -1
- package/dist/outlet-context.js +0 -3
- package/dist/outlet-context.js.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
- package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
- package/dist/prerender/__tests__/param-hash.test.js +0 -148
- package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
- package/dist/prerender/param-hash.d.ts +0 -16
- package/dist/prerender/param-hash.d.ts.map +0 -1
- package/dist/prerender/param-hash.js +0 -36
- package/dist/prerender/param-hash.js.map +0 -1
- package/dist/prerender/store.d.ts +0 -38
- package/dist/prerender/store.d.ts.map +0 -1
- package/dist/prerender/store.js +0 -61
- package/dist/prerender/store.js.map +0 -1
- package/dist/prerender.d.ts +0 -66
- package/dist/prerender.d.ts.map +0 -1
- package/dist/prerender.js +0 -57
- package/dist/prerender.js.map +0 -1
- package/dist/reverse.d.ts +0 -196
- package/dist/reverse.d.ts.map +0 -1
- package/dist/reverse.js +0 -78
- package/dist/reverse.js.map +0 -1
- package/dist/root-error-boundary.d.ts +0 -33
- package/dist/root-error-boundary.d.ts.map +0 -1
- package/dist/root-error-boundary.js +0 -165
- package/dist/root-error-boundary.js.map +0 -1
- package/dist/route-content-wrapper.d.ts +0 -46
- package/dist/route-content-wrapper.d.ts.map +0 -1
- package/dist/route-content-wrapper.js +0 -77
- package/dist/route-content-wrapper.js.map +0 -1
- package/dist/route-definition.d.ts +0 -421
- package/dist/route-definition.d.ts.map +0 -1
- package/dist/route-definition.js +0 -868
- package/dist/route-definition.js.map +0 -1
- package/dist/route-map-builder.d.ts +0 -155
- package/dist/route-map-builder.d.ts.map +0 -1
- package/dist/route-map-builder.js +0 -237
- package/dist/route-map-builder.js.map +0 -1
- package/dist/route-types.d.ts +0 -165
- package/dist/route-types.d.ts.map +0 -1
- package/dist/route-types.js +0 -7
- package/dist/route-types.js.map +0 -1
- package/dist/router/__tests__/handler-context.test.d.ts +0 -2
- package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/handler-context.test.js +0 -65
- package/dist/router/__tests__/handler-context.test.js.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
- package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
- package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
- package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
- package/dist/router/__tests__/match-context.test.d.ts +0 -2
- package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-context.test.js +0 -92
- package/dist/router/__tests__/match-context.test.js.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
- package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-pipelines.test.js +0 -417
- package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
- package/dist/router/__tests__/match-result.test.d.ts +0 -2
- package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
- package/dist/router/__tests__/match-result.test.js +0 -457
- package/dist/router/__tests__/match-result.test.js.map +0 -1
- package/dist/router/__tests__/on-error.test.d.ts +0 -2
- package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
- package/dist/router/__tests__/on-error.test.js +0 -678
- package/dist/router/__tests__/on-error.test.js.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
- package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
- package/dist/router/__tests__/pattern-matching.test.js +0 -629
- package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
- package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
- package/dist/router/error-handling.d.ts +0 -77
- package/dist/router/error-handling.d.ts.map +0 -1
- package/dist/router/error-handling.js +0 -202
- package/dist/router/error-handling.js.map +0 -1
- package/dist/router/handler-context.d.ts +0 -20
- package/dist/router/handler-context.d.ts.map +0 -1
- package/dist/router/handler-context.js +0 -198
- package/dist/router/handler-context.js.map +0 -1
- package/dist/router/intercept-resolution.d.ts +0 -66
- package/dist/router/intercept-resolution.d.ts.map +0 -1
- package/dist/router/intercept-resolution.js +0 -246
- package/dist/router/intercept-resolution.js.map +0 -1
- package/dist/router/loader-resolution.d.ts +0 -64
- package/dist/router/loader-resolution.d.ts.map +0 -1
- package/dist/router/loader-resolution.js +0 -284
- package/dist/router/loader-resolution.js.map +0 -1
- package/dist/router/logging.d.ts +0 -15
- package/dist/router/logging.d.ts.map +0 -1
- package/dist/router/logging.js +0 -99
- package/dist/router/logging.js.map +0 -1
- package/dist/router/manifest.d.ts +0 -22
- package/dist/router/manifest.d.ts.map +0 -1
- package/dist/router/manifest.js +0 -181
- package/dist/router/manifest.js.map +0 -1
- package/dist/router/match-api.d.ts +0 -35
- package/dist/router/match-api.d.ts.map +0 -1
- package/dist/router/match-api.js +0 -406
- package/dist/router/match-api.js.map +0 -1
- package/dist/router/match-context.d.ts +0 -206
- package/dist/router/match-context.d.ts.map +0 -1
- package/dist/router/match-context.js +0 -17
- package/dist/router/match-context.js.map +0 -1
- package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
- package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
- package/dist/router/match-middleware/background-revalidation.js +0 -75
- package/dist/router/match-middleware/background-revalidation.js.map +0 -1
- package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
- package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-lookup.js +0 -257
- package/dist/router/match-middleware/cache-lookup.js.map +0 -1
- package/dist/router/match-middleware/cache-store.d.ts +0 -113
- package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
- package/dist/router/match-middleware/cache-store.js +0 -108
- package/dist/router/match-middleware/cache-store.js.map +0 -1
- package/dist/router/match-middleware/index.d.ts +0 -81
- package/dist/router/match-middleware/index.d.ts.map +0 -1
- package/dist/router/match-middleware/index.js +0 -80
- package/dist/router/match-middleware/index.js.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
- package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/intercept-resolution.js +0 -134
- package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
- package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
- package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
- package/dist/router/match-middleware/segment-resolution.js +0 -53
- package/dist/router/match-middleware/segment-resolution.js.map +0 -1
- package/dist/router/match-pipelines.d.ts +0 -147
- package/dist/router/match-pipelines.d.ts.map +0 -1
- package/dist/router/match-pipelines.js +0 -82
- package/dist/router/match-pipelines.js.map +0 -1
- package/dist/router/match-result.d.ts +0 -126
- package/dist/router/match-result.d.ts.map +0 -1
- package/dist/router/match-result.js +0 -93
- package/dist/router/match-result.js.map +0 -1
- package/dist/router/metrics.d.ts +0 -20
- package/dist/router/metrics.d.ts.map +0 -1
- package/dist/router/metrics.js +0 -47
- package/dist/router/metrics.js.map +0 -1
- package/dist/router/middleware.d.ts +0 -249
- package/dist/router/middleware.d.ts.map +0 -1
- package/dist/router/middleware.js +0 -434
- package/dist/router/middleware.js.map +0 -1
- package/dist/router/middleware.test.d.ts +0 -2
- package/dist/router/middleware.test.d.ts.map +0 -1
- package/dist/router/middleware.test.js +0 -816
- package/dist/router/middleware.test.js.map +0 -1
- package/dist/router/pattern-matching.d.ts +0 -149
- package/dist/router/pattern-matching.d.ts.map +0 -1
- package/dist/router/pattern-matching.js +0 -349
- package/dist/router/pattern-matching.js.map +0 -1
- package/dist/router/revalidation.d.ts +0 -44
- package/dist/router/revalidation.d.ts.map +0 -1
- package/dist/router/revalidation.js +0 -147
- package/dist/router/revalidation.js.map +0 -1
- package/dist/router/router-context.d.ts +0 -135
- package/dist/router/router-context.d.ts.map +0 -1
- package/dist/router/router-context.js +0 -36
- package/dist/router/router-context.js.map +0 -1
- package/dist/router/segment-resolution.d.ts +0 -127
- package/dist/router/segment-resolution.d.ts.map +0 -1
- package/dist/router/segment-resolution.js +0 -919
- package/dist/router/segment-resolution.js.map +0 -1
- package/dist/router/trie-matching.d.ts +0 -40
- package/dist/router/trie-matching.d.ts.map +0 -1
- package/dist/router/trie-matching.js +0 -127
- package/dist/router/trie-matching.js.map +0 -1
- package/dist/router/types.d.ts +0 -136
- package/dist/router/types.d.ts.map +0 -1
- package/dist/router/types.js +0 -7
- package/dist/router/types.js.map +0 -1
- package/dist/router.d.ts +0 -753
- package/dist/router.d.ts.map +0 -1
- package/dist/router.gen.d.ts +0 -6
- package/dist/router.gen.d.ts.map +0 -1
- package/dist/router.gen.js +0 -6
- package/dist/router.gen.js.map +0 -1
- package/dist/router.js +0 -1304
- package/dist/router.js.map +0 -1
- package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
- package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
- package/dist/rsc/__tests__/helpers.test.js +0 -140
- package/dist/rsc/__tests__/helpers.test.js.map +0 -1
- package/dist/rsc/handler.d.ts +0 -45
- package/dist/rsc/handler.d.ts.map +0 -1
- package/dist/rsc/handler.js +0 -1172
- package/dist/rsc/handler.js.map +0 -1
- package/dist/rsc/helpers.d.ts +0 -16
- package/dist/rsc/helpers.d.ts.map +0 -1
- package/dist/rsc/helpers.js +0 -55
- package/dist/rsc/helpers.js.map +0 -1
- package/dist/rsc/index.d.ts +0 -22
- package/dist/rsc/index.d.ts.map +0 -1
- package/dist/rsc/index.js +0 -23
- package/dist/rsc/index.js.map +0 -1
- package/dist/rsc/nonce.d.ts +0 -9
- package/dist/rsc/nonce.d.ts.map +0 -1
- package/dist/rsc/nonce.js +0 -18
- package/dist/rsc/nonce.js.map +0 -1
- package/dist/rsc/types.d.ts +0 -206
- package/dist/rsc/types.d.ts.map +0 -1
- package/dist/rsc/types.js +0 -8
- package/dist/rsc/types.js.map +0 -1
- package/dist/search-params.d.ts +0 -103
- package/dist/search-params.d.ts.map +0 -1
- package/dist/search-params.js +0 -74
- package/dist/search-params.js.map +0 -1
- package/dist/segment-system.d.ts +0 -75
- package/dist/segment-system.d.ts.map +0 -1
- package/dist/segment-system.js +0 -336
- package/dist/segment-system.js.map +0 -1
- package/dist/server/context.d.ts +0 -245
- package/dist/server/context.d.ts.map +0 -1
- package/dist/server/context.js +0 -197
- package/dist/server/context.js.map +0 -1
- package/dist/server/fetchable-loader-store.d.ts +0 -18
- package/dist/server/fetchable-loader-store.d.ts.map +0 -1
- package/dist/server/fetchable-loader-store.js +0 -18
- package/dist/server/fetchable-loader-store.js.map +0 -1
- package/dist/server/handle-store.d.ts +0 -85
- package/dist/server/handle-store.d.ts.map +0 -1
- package/dist/server/handle-store.js +0 -142
- package/dist/server/handle-store.js.map +0 -1
- package/dist/server/loader-registry.d.ts +0 -55
- package/dist/server/loader-registry.d.ts.map +0 -1
- package/dist/server/loader-registry.js +0 -132
- package/dist/server/loader-registry.js.map +0 -1
- package/dist/server/request-context.d.ts +0 -226
- package/dist/server/request-context.d.ts.map +0 -1
- package/dist/server/request-context.js +0 -290
- package/dist/server/request-context.js.map +0 -1
- package/dist/server/root-layout.d.ts +0 -4
- package/dist/server/root-layout.d.ts.map +0 -1
- package/dist/server/root-layout.js +0 -5
- package/dist/server/root-layout.js.map +0 -1
- package/dist/server.d.ts +0 -15
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -20
- package/dist/server.js.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
- package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
- package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
- package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
- package/dist/ssr/index.d.ts +0 -98
- package/dist/ssr/index.d.ts.map +0 -1
- package/dist/ssr/index.js +0 -158
- package/dist/ssr/index.js.map +0 -1
- package/dist/static-handler.d.ts +0 -50
- package/dist/static-handler.d.ts.map +0 -1
- package/dist/static-handler.gen.d.ts +0 -5
- package/dist/static-handler.gen.d.ts.map +0 -1
- package/dist/static-handler.gen.js +0 -5
- package/dist/static-handler.gen.js.map +0 -1
- package/dist/static-handler.js +0 -29
- package/dist/static-handler.js.map +0 -1
- package/dist/theme/ThemeProvider.d.ts +0 -20
- package/dist/theme/ThemeProvider.d.ts.map +0 -1
- package/dist/theme/ThemeProvider.js +0 -240
- package/dist/theme/ThemeProvider.js.map +0 -1
- package/dist/theme/ThemeScript.d.ts +0 -48
- package/dist/theme/ThemeScript.d.ts.map +0 -1
- package/dist/theme/ThemeScript.js +0 -13
- package/dist/theme/ThemeScript.js.map +0 -1
- package/dist/theme/__tests__/theme.test.d.ts +0 -2
- package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
- package/dist/theme/__tests__/theme.test.js +0 -103
- package/dist/theme/__tests__/theme.test.js.map +0 -1
- package/dist/theme/constants.d.ts +0 -29
- package/dist/theme/constants.d.ts.map +0 -1
- package/dist/theme/constants.js +0 -48
- package/dist/theme/constants.js.map +0 -1
- package/dist/theme/index.d.ts +0 -31
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/theme/index.js +0 -36
- package/dist/theme/index.js.map +0 -1
- package/dist/theme/theme-context.d.ts +0 -40
- package/dist/theme/theme-context.d.ts.map +0 -1
- package/dist/theme/theme-context.js +0 -60
- package/dist/theme/theme-context.js.map +0 -1
- package/dist/theme/theme-script.d.ts +0 -27
- package/dist/theme/theme-script.d.ts.map +0 -1
- package/dist/theme/theme-script.js +0 -147
- package/dist/theme/theme-script.js.map +0 -1
- package/dist/theme/types.d.ts +0 -163
- package/dist/theme/types.d.ts.map +0 -1
- package/dist/theme/types.js +0 -11
- package/dist/theme/types.js.map +0 -1
- package/dist/theme/use-theme.d.ts +0 -12
- package/dist/theme/use-theme.d.ts.map +0 -1
- package/dist/theme/use-theme.js +0 -40
- package/dist/theme/use-theme.js.map +0 -1
- package/dist/types.d.ts +0 -1479
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +0 -1
- package/dist/urls.d.ts +0 -441
- package/dist/urls.d.ts.map +0 -1
- package/dist/urls.gen.d.ts +0 -8
- package/dist/urls.gen.d.ts.map +0 -1
- package/dist/urls.gen.js +0 -8
- package/dist/urls.gen.js.map +0 -1
- package/dist/urls.js +0 -443
- package/dist/urls.js.map +0 -1
- package/dist/use-loader.d.ts +0 -127
- package/dist/use-loader.d.ts.map +0 -1
- package/dist/use-loader.js +0 -237
- package/dist/use-loader.js.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
- package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
- package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
- package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
- package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
- package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
- package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
- package/dist/vite/__tests__/expose-router-id.test.js +0 -39
- package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
- package/dist/vite/ast-handler-extract.d.ts +0 -49
- package/dist/vite/ast-handler-extract.d.ts.map +0 -1
- package/dist/vite/ast-handler-extract.js +0 -249
- package/dist/vite/ast-handler-extract.js.map +0 -1
- package/dist/vite/expose-action-id.d.ts +0 -19
- package/dist/vite/expose-action-id.d.ts.map +0 -1
- package/dist/vite/expose-action-id.js +0 -250
- package/dist/vite/expose-action-id.js.map +0 -1
- package/dist/vite/expose-id-utils.d.ts +0 -69
- package/dist/vite/expose-id-utils.d.ts.map +0 -1
- package/dist/vite/expose-id-utils.js +0 -289
- package/dist/vite/expose-id-utils.js.map +0 -1
- package/dist/vite/expose-internal-ids.d.ts +0 -22
- package/dist/vite/expose-internal-ids.d.ts.map +0 -1
- package/dist/vite/expose-internal-ids.js +0 -886
- package/dist/vite/expose-internal-ids.js.map +0 -1
- package/dist/vite/index.d.ts +0 -149
- package/dist/vite/index.d.ts.map +0 -1
- package/dist/vite/index.js.bak +0 -5448
- package/dist/vite/index.js.map +0 -1
- package/dist/vite/index.named-routes.gen.ts +0 -103
- package/dist/vite/package-resolution.d.ts +0 -43
- package/dist/vite/package-resolution.d.ts.map +0 -1
- package/dist/vite/package-resolution.js +0 -112
- package/dist/vite/package-resolution.js.map +0 -1
- package/dist/vite/virtual-entries.d.ts +0 -25
- package/dist/vite/virtual-entries.d.ts.map +0 -1
- package/dist/vite/virtual-entries.js +0 -110
- package/dist/vite/virtual-entries.js.map +0 -1
- package/src/browser/action-response-classifier.ts +0 -99
- package/src/browser/react/use-client-cache.ts +0 -58
- package/src/browser/shallow.ts +0 -40
- package/src/handles/index.ts +0 -7
- package/src/network-error-thrower.tsx +0 -23
- package/src/router/middleware-cookies.ts +0 -55
package/src/rsc/handler.ts
CHANGED
|
@@ -8,12 +8,11 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { createElement } from "react";
|
|
11
|
-
import {
|
|
11
|
+
import { isRouteNotFoundError } from "../errors.js";
|
|
12
12
|
import { matchMiddleware, executeMiddleware } from "../router/middleware.js";
|
|
13
13
|
import {
|
|
14
14
|
runWithRequestContext,
|
|
15
15
|
setRequestContextParams,
|
|
16
|
-
requireRequestContext,
|
|
17
16
|
getRequestContext,
|
|
18
17
|
_getRequestContext,
|
|
19
18
|
createRequestContext,
|
|
@@ -31,7 +30,11 @@ import {
|
|
|
31
30
|
interceptRedirectForPartial,
|
|
32
31
|
buildRouteMiddlewareEntries,
|
|
33
32
|
} from "./helpers.js";
|
|
34
|
-
import {
|
|
33
|
+
import { guardOutgoingRedirect } from "./redirect-guard.js";
|
|
34
|
+
import {
|
|
35
|
+
isWebSocketUpgradeResponse,
|
|
36
|
+
appendVaryAccept,
|
|
37
|
+
} from "../response-utils.js";
|
|
35
38
|
import {
|
|
36
39
|
handleResponseRoute,
|
|
37
40
|
type ResponseRouteMatch,
|
|
@@ -45,8 +48,6 @@ import {
|
|
|
45
48
|
createReverseFunction,
|
|
46
49
|
stripInternalParams,
|
|
47
50
|
} from "../router/handler-context.js";
|
|
48
|
-
import { getRouterContext } from "../router/router-context.js";
|
|
49
|
-
import { resolveSink, safeEmit } from "../router/telemetry.js";
|
|
50
51
|
import { contextSet } from "../context-var.js";
|
|
51
52
|
import {
|
|
52
53
|
hasCachedManifest,
|
|
@@ -57,6 +58,7 @@ import {
|
|
|
57
58
|
getRouterTrie,
|
|
58
59
|
} from "../route-map-builder.js";
|
|
59
60
|
import type { HandlerContext } from "./handler-context.js";
|
|
61
|
+
import type { CacheErrorCategory } from "../cache/cache-error.js";
|
|
60
62
|
import type { SegmentCacheStore } from "../cache/types.js";
|
|
61
63
|
import { buildRouterTrieFromUrlpatterns } from "./manifest-init.js";
|
|
62
64
|
import { handleProgressiveEnhancement } from "./progressive-enhancement.js";
|
|
@@ -66,7 +68,10 @@ import {
|
|
|
66
68
|
type ActionContinuation,
|
|
67
69
|
} from "./server-action.js";
|
|
68
70
|
import { handleLoaderFetch } from "./loader-fetch.js";
|
|
69
|
-
import {
|
|
71
|
+
import {
|
|
72
|
+
checkRequestOrigin,
|
|
73
|
+
ORIGIN_CHECK_PHASE_BY_MODE,
|
|
74
|
+
} from "./origin-guard.js";
|
|
70
75
|
import { handleRscRendering } from "./rsc-rendering.js";
|
|
71
76
|
import {
|
|
72
77
|
withTimeout,
|
|
@@ -79,10 +84,12 @@ import {
|
|
|
79
84
|
appendMetric,
|
|
80
85
|
buildMetricsTiming,
|
|
81
86
|
} from "../router/metrics.js";
|
|
87
|
+
import { observePhase, observeEvent, PHASES } from "../router/instrument.js";
|
|
82
88
|
import {
|
|
83
89
|
startSSRSetup,
|
|
84
90
|
getSSRSetup,
|
|
85
91
|
mayNeedSSR,
|
|
92
|
+
isRscRequest,
|
|
86
93
|
SSR_SETUP_VAR,
|
|
87
94
|
} from "./ssr-setup.js";
|
|
88
95
|
import {
|
|
@@ -124,12 +131,35 @@ import {
|
|
|
124
131
|
* });
|
|
125
132
|
* ```
|
|
126
133
|
*/
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Response that tells the client to do a full document navigation. Shared by
|
|
137
|
+
* the terminal reload plans (version-mismatch and app-switch): an empty 200
|
|
138
|
+
* carrying X-RSC-Reload, which the client turns into window.location.href.
|
|
139
|
+
*/
|
|
140
|
+
function createReloadResponse(reloadUrl: string) {
|
|
141
|
+
return createResponseWithMergedHeaders(null, {
|
|
142
|
+
status: 200,
|
|
143
|
+
headers: {
|
|
144
|
+
"X-RSC-Reload": reloadUrl,
|
|
145
|
+
"content-type": "text/x-component;charset=utf-8",
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
127
150
|
export function createRSCHandler<
|
|
128
151
|
TEnv = unknown,
|
|
129
152
|
TRoutes extends Record<string, string> = Record<string, string>,
|
|
130
153
|
>(options: CreateRSCHandlerOptions<TEnv, TRoutes>) {
|
|
131
154
|
const { router, version = VERSION, nonce: nonceProvider } = options;
|
|
132
155
|
|
|
156
|
+
// Handler-owned registry of explicit per-scope stores from cache({ store }).
|
|
157
|
+
// Lives in the closure so it is scoped per handler (multi-router deployments
|
|
158
|
+
// get separate registries) and accumulates every explicit store this handler
|
|
159
|
+
// resolves across requests. updateTag()/revalidateTag() iterate it to reach
|
|
160
|
+
// stores not covered by the app-level ctx._cacheStore.
|
|
161
|
+
const explicitTaggedStores = new Set<SegmentCacheStore>();
|
|
162
|
+
|
|
133
163
|
// Use provided deps or default to @vitejs/plugin-rsc/rsc exports
|
|
134
164
|
const deps = options.deps ?? rscDeps;
|
|
135
165
|
const {
|
|
@@ -215,24 +245,16 @@ export function createRSCHandler<
|
|
|
215
245
|
metadata: { timeout: true, phase, durationMs },
|
|
216
246
|
});
|
|
217
247
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
actionId,
|
|
229
|
-
durationMs,
|
|
230
|
-
customHandler: !!router.onTimeout,
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
} catch {
|
|
234
|
-
// Router context may not be available
|
|
235
|
-
}
|
|
248
|
+
observeEvent({
|
|
249
|
+
type: "request.timeout",
|
|
250
|
+
timestamp: performance.now(),
|
|
251
|
+
phase,
|
|
252
|
+
pathname: url.pathname,
|
|
253
|
+
routeKey,
|
|
254
|
+
actionId,
|
|
255
|
+
durationMs,
|
|
256
|
+
customHandler: !!router.onTimeout,
|
|
257
|
+
});
|
|
236
258
|
|
|
237
259
|
if (router.onTimeout) {
|
|
238
260
|
try {
|
|
@@ -264,16 +286,27 @@ export function createRSCHandler<
|
|
|
264
286
|
function createRedirectFlightResponse(
|
|
265
287
|
redirectUrl: string,
|
|
266
288
|
locationState?: Record<string, unknown>,
|
|
289
|
+
external?: boolean,
|
|
267
290
|
): Response {
|
|
268
291
|
const redirectPayload: RscPayload = {
|
|
269
292
|
metadata: {
|
|
270
293
|
pathname: redirectUrl,
|
|
271
294
|
segments: [],
|
|
272
|
-
redirect: { url: redirectUrl },
|
|
295
|
+
redirect: { url: redirectUrl, ...(external && { external: true }) },
|
|
273
296
|
...(locationState && { locationState }),
|
|
274
297
|
},
|
|
275
298
|
};
|
|
276
|
-
const rscStream = renderToReadableStream<RscPayload>(redirectPayload
|
|
299
|
+
const rscStream = renderToReadableStream<RscPayload>(redirectPayload, {
|
|
300
|
+
onError: (error: unknown) => {
|
|
301
|
+
const reqCtx = _getRequestContext<TEnv>();
|
|
302
|
+
if (!reqCtx) return;
|
|
303
|
+
callOnError(error, "rendering", {
|
|
304
|
+
request: reqCtx.request,
|
|
305
|
+
url: reqCtx.url,
|
|
306
|
+
env: reqCtx.env,
|
|
307
|
+
});
|
|
308
|
+
},
|
|
309
|
+
});
|
|
277
310
|
return createResponseWithMergedHeaders(rscStream, {
|
|
278
311
|
status: 200,
|
|
279
312
|
headers: { "content-type": "text/x-component;charset=utf-8" },
|
|
@@ -421,9 +454,12 @@ export function createRSCHandler<
|
|
|
421
454
|
url,
|
|
422
455
|
variables,
|
|
423
456
|
cacheStore,
|
|
457
|
+
explicitTaggedStores,
|
|
424
458
|
cacheProfiles: router.cacheProfiles,
|
|
425
459
|
executionContext: executionCtx,
|
|
426
460
|
themeConfig: router.themeConfig,
|
|
461
|
+
stateCookieName: router.resolvedStateCookieName,
|
|
462
|
+
version,
|
|
427
463
|
});
|
|
428
464
|
if (earlyMetricsStore) {
|
|
429
465
|
requestContext._debugPerformance = true;
|
|
@@ -433,7 +469,7 @@ export function createRSCHandler<
|
|
|
433
469
|
// can surface non-fatal errors through the router's onError callback.
|
|
434
470
|
requestContext._reportBackgroundError = (
|
|
435
471
|
error: unknown,
|
|
436
|
-
category:
|
|
472
|
+
category: CacheErrorCategory,
|
|
437
473
|
) => {
|
|
438
474
|
callOnError(error, "cache", {
|
|
439
475
|
request,
|
|
@@ -466,81 +502,104 @@ export function createRSCHandler<
|
|
|
466
502
|
// Store basename on request context (scoped per-request via existing ALS)
|
|
467
503
|
requestContext._basename = router.basename;
|
|
468
504
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
);
|
|
505
|
+
// Resolved span tracing for this request (read at each traced phase).
|
|
506
|
+
requestContext._tracing = router.tracing;
|
|
507
|
+
|
|
508
|
+
// The "rango.request" span is opened inside the request context so the
|
|
509
|
+
// Cloudflare runner can read executionContext.tracing, and so every nested
|
|
510
|
+
// phase span (and the platform's automatic KV/D1/fetch spans) nests under
|
|
511
|
+
// it. Construction-bound: the span ends when the Response is built, never
|
|
512
|
+
// wrapping the streamed body. metric:false — handler:total is metered
|
|
513
|
+
// directly below (a grand total incl. the pre-context bootstrap timings).
|
|
514
|
+
// When tracing is off this is a direct pass-through.
|
|
515
|
+
return runWithRequestContext(requestContext, () =>
|
|
516
|
+
observePhase(PHASES.request, async (span) => {
|
|
517
|
+
span.setAttribute("http.method", request.method);
|
|
518
|
+
// The matched route template is not known until match() runs later, so
|
|
519
|
+
// emit the concrete path as url.path (low-level), NOT http.route — the
|
|
520
|
+
// latter is reserved for the low-cardinality template (OTel convention).
|
|
521
|
+
span.setAttribute("url.path", url.pathname);
|
|
522
|
+
|
|
523
|
+
// Core handler logic (wrapped by middleware)
|
|
524
|
+
const coreHandler = async (): Promise<Response> => {
|
|
525
|
+
return coreRequestHandler(request, env, url, variables, nonce);
|
|
526
|
+
};
|
|
486
527
|
|
|
487
|
-
if
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
528
|
+
// Execute middleware chain if any, otherwise call core handler directly
|
|
529
|
+
let response: Response;
|
|
530
|
+
if (matchedMiddleware.length > 0) {
|
|
531
|
+
const mwResponse = await executeMiddleware(
|
|
532
|
+
matchedMiddleware,
|
|
533
|
+
request,
|
|
534
|
+
env,
|
|
535
|
+
variables,
|
|
536
|
+
coreHandler,
|
|
537
|
+
createReverseFunction(getRequiredRouteMap()),
|
|
494
538
|
);
|
|
495
|
-
|
|
539
|
+
|
|
540
|
+
if (
|
|
541
|
+
url.searchParams.has("_rsc_partial") ||
|
|
542
|
+
url.searchParams.has("_rsc_action")
|
|
543
|
+
) {
|
|
544
|
+
const intercepted = interceptRedirectForPartial(
|
|
545
|
+
mwResponse,
|
|
546
|
+
createRedirectFlightResponse,
|
|
547
|
+
);
|
|
548
|
+
response = intercepted ?? finalizeResponse(mwResponse);
|
|
549
|
+
} else {
|
|
550
|
+
response = finalizeResponse(mwResponse);
|
|
551
|
+
}
|
|
496
552
|
} else {
|
|
497
|
-
response =
|
|
553
|
+
response = await coreHandler();
|
|
498
554
|
}
|
|
499
|
-
} else {
|
|
500
|
-
response = await coreHandler();
|
|
501
|
-
}
|
|
502
555
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
556
|
+
// Finalize metrics after all middleware (including post-next work)
|
|
557
|
+
// has completed so :post spans are captured in the timeline.
|
|
558
|
+
// Handler timing parts are always emitted (even without debug metrics)
|
|
559
|
+
// so non-debug requests still get bootstrap Server-Timing entries.
|
|
560
|
+
const handlerTimingArr: string[] = variables.__handlerTiming || [];
|
|
561
|
+
// Preserve any existing Server-Timing set by response routes or middleware
|
|
562
|
+
const existingTiming = response.headers.get("Server-Timing");
|
|
563
|
+
const timingParts = existingTiming
|
|
564
|
+
? [existingTiming, ...handlerTimingArr]
|
|
565
|
+
: [...handlerTimingArr];
|
|
566
|
+
|
|
567
|
+
const metricsStore = requestContext._metricsStore;
|
|
568
|
+
if (metricsStore) {
|
|
569
|
+
// When the store was created at handler start (earlyMetricsStore),
|
|
570
|
+
// handler:total covers the full request. When ctx.debugPerformance()
|
|
571
|
+
// created the store mid-request, use its requestStart to avoid a
|
|
572
|
+
// negative startTime offset.
|
|
573
|
+
const totalStart = earlyMetricsStore
|
|
574
|
+
? handlerStart
|
|
575
|
+
: metricsStore.requestStart;
|
|
576
|
+
appendMetric(
|
|
577
|
+
metricsStore,
|
|
578
|
+
"handler:total",
|
|
579
|
+
totalStart,
|
|
580
|
+
performance.now() - totalStart,
|
|
581
|
+
);
|
|
582
|
+
const metricsTiming = buildMetricsTiming(
|
|
583
|
+
request.method,
|
|
584
|
+
url.pathname,
|
|
585
|
+
metricsStore,
|
|
586
|
+
);
|
|
587
|
+
if (metricsTiming) timingParts.push(metricsTiming);
|
|
588
|
+
}
|
|
536
589
|
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
590
|
+
const fullTiming = timingParts.join(", ");
|
|
591
|
+
if (fullTiming && !isWebSocketUpgradeResponse(response)) {
|
|
592
|
+
response.headers.set("Server-Timing", fullTiming);
|
|
593
|
+
}
|
|
541
594
|
|
|
542
|
-
|
|
543
|
-
|
|
595
|
+
// Single open-redirect chokepoint: every response (PE, full-page,
|
|
596
|
+
// middleware short-circuit, response-route) funnels through here, so
|
|
597
|
+
// guarding browser-followed (3xx) redirects once covers them all and any
|
|
598
|
+
// future redirect exit. Soft SPA/Flight redirects are 200/204 and pass
|
|
599
|
+
// through untouched (validated client-side instead).
|
|
600
|
+
return guardOutgoingRedirect(response, url.origin, router.basename);
|
|
601
|
+
}),
|
|
602
|
+
);
|
|
544
603
|
};
|
|
545
604
|
|
|
546
605
|
// Core request handling logic (separated for middleware wrapping).
|
|
@@ -597,10 +656,7 @@ export function createRSCHandler<
|
|
|
597
656
|
routerId: router.id,
|
|
598
657
|
});
|
|
599
658
|
} catch (error) {
|
|
600
|
-
if (
|
|
601
|
-
error instanceof RouteNotFoundError ||
|
|
602
|
-
(error instanceof Error && error.name === "RouteNotFoundError")
|
|
603
|
-
) {
|
|
659
|
+
if (isRouteNotFoundError(error)) {
|
|
604
660
|
// Let the render path handle 404 — match()/matchPartial() will
|
|
605
661
|
// re-throw RouteNotFoundError and the catch block in
|
|
606
662
|
// executeRenderWithMiddleware renders the not-found page.
|
|
@@ -641,24 +697,18 @@ export function createRSCHandler<
|
|
|
641
697
|
console.log(
|
|
642
698
|
`[RSC] Version mismatch: client=${url.searchParams.get("_rsc_v")}, server=${version}. Forcing reload.`,
|
|
643
699
|
);
|
|
644
|
-
return
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
700
|
+
return createReloadResponse(plan.reloadUrl);
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
if (plan.mode === "app-switch") {
|
|
704
|
+
// Cross-app SPA navigation crossed a host-router app boundary. Force a
|
|
705
|
+
// real document navigation so the target app's document is re-established
|
|
706
|
+
// (stylesheets, theme, warmup, prefetch-TTL). See request-classification.
|
|
707
|
+
return createReloadResponse(plan.reloadUrl);
|
|
651
708
|
}
|
|
652
709
|
|
|
653
710
|
// ---- 3. Origin guard (gate for action/loader/PE modes) ----
|
|
654
|
-
const originPhase
|
|
655
|
-
plan.mode === "action"
|
|
656
|
-
? "action"
|
|
657
|
-
: plan.mode === "loader"
|
|
658
|
-
? "loader"
|
|
659
|
-
: plan.mode === "pe-render"
|
|
660
|
-
? "pe-form"
|
|
661
|
-
: null;
|
|
711
|
+
const originPhase = ORIGIN_CHECK_PHASE_BY_MODE[plan.mode];
|
|
662
712
|
if (originPhase) {
|
|
663
713
|
const originResult = await checkRequestOrigin(
|
|
664
714
|
request,
|
|
@@ -686,23 +736,15 @@ export function createRSCHandler<
|
|
|
686
736
|
},
|
|
687
737
|
});
|
|
688
738
|
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
phase: originPhase,
|
|
699
|
-
origin: request.headers.get("origin"),
|
|
700
|
-
host: request.headers.get("host"),
|
|
701
|
-
});
|
|
702
|
-
}
|
|
703
|
-
} catch {
|
|
704
|
-
// Router context may not be available
|
|
705
|
-
}
|
|
739
|
+
observeEvent({
|
|
740
|
+
type: "request.origin-rejected",
|
|
741
|
+
timestamp: performance.now(),
|
|
742
|
+
method: request.method,
|
|
743
|
+
pathname: url.pathname,
|
|
744
|
+
phase: originPhase,
|
|
745
|
+
origin: request.headers.get("origin"),
|
|
746
|
+
host: request.headers.get("host"),
|
|
747
|
+
});
|
|
706
748
|
|
|
707
749
|
return originResult;
|
|
708
750
|
}
|
|
@@ -732,11 +774,11 @@ export function createRSCHandler<
|
|
|
732
774
|
nonce: string | undefined,
|
|
733
775
|
): Promise<Response> {
|
|
734
776
|
// Common setup
|
|
735
|
-
const handleStore =
|
|
777
|
+
const handleStore = getRequestContext()._handleStore;
|
|
736
778
|
|
|
737
779
|
// Wire up error reporting for late streaming-handle failures
|
|
738
780
|
handleStore.onError = (error: Error) => {
|
|
739
|
-
const reqCtx =
|
|
781
|
+
const reqCtx = getRequestContext();
|
|
740
782
|
callOnError(error, "handler", {
|
|
741
783
|
request,
|
|
742
784
|
url,
|
|
@@ -744,23 +786,15 @@ export function createRSCHandler<
|
|
|
744
786
|
params: reqCtx.params as Record<string, string>,
|
|
745
787
|
handledByBoundary: true,
|
|
746
788
|
});
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
pathname: url.pathname,
|
|
757
|
-
routeKey: reqCtx._routeName,
|
|
758
|
-
params: reqCtx.params as Record<string, string>,
|
|
759
|
-
});
|
|
760
|
-
}
|
|
761
|
-
} catch {
|
|
762
|
-
// Router context may not be available (e.g. prerender path)
|
|
763
|
-
}
|
|
789
|
+
observeEvent({
|
|
790
|
+
type: "handler.error",
|
|
791
|
+
timestamp: performance.now(),
|
|
792
|
+
error,
|
|
793
|
+
handledByBoundary: true,
|
|
794
|
+
pathname: url.pathname,
|
|
795
|
+
routeKey: reqCtx._routeName,
|
|
796
|
+
params: reqCtx.params as Record<string, string>,
|
|
797
|
+
});
|
|
764
798
|
};
|
|
765
799
|
|
|
766
800
|
// Set route params early so all execution paths can access ctx.params.
|
|
@@ -768,7 +802,7 @@ export function createRSCHandler<
|
|
|
768
802
|
// instead of calling resolveRoute again.
|
|
769
803
|
if (plan.mode !== "redirect") {
|
|
770
804
|
setRequestContextParams(plan.route.params, plan.route.routeKey);
|
|
771
|
-
|
|
805
|
+
getRequestContext()._classifiedRoute = plan.route;
|
|
772
806
|
}
|
|
773
807
|
|
|
774
808
|
const routeReverse = createReverseFunction(getRequiredRouteMap());
|
|
@@ -809,7 +843,9 @@ export function createRSCHandler<
|
|
|
809
843
|
}
|
|
810
844
|
const response = responseOutcome.result;
|
|
811
845
|
if (plan.negotiated && !isWebSocketUpgradeResponse(response)) {
|
|
812
|
-
|
|
846
|
+
// handleResponseRoute (callHandlerWithVary) already appends Vary: Accept
|
|
847
|
+
// for negotiated responses; dedup so we don't emit Vary: Accept, Accept.
|
|
848
|
+
appendVaryAccept(response);
|
|
813
849
|
}
|
|
814
850
|
return response;
|
|
815
851
|
}
|
|
@@ -817,14 +853,28 @@ export function createRSCHandler<
|
|
|
817
853
|
// SSR setup: kick off in parallel for modes that need HTML rendering.
|
|
818
854
|
// Placed after response-route short-circuit so response/mime routes
|
|
819
855
|
// never pay for SSR work.
|
|
820
|
-
|
|
856
|
+
//
|
|
857
|
+
// Only kick off when the request will actually render HTML, so the
|
|
858
|
+
// eager loadSSRModule() + user resolveStreaming() are not started (and
|
|
859
|
+
// never consumed) for a request that returns an RSC stream — that wasted
|
|
860
|
+
// work also leaves an orphaned Promise.all that can reject (D7). PE form
|
|
861
|
+
// submissions always render HTML (handleProgressiveEnhancement renders via
|
|
862
|
+
// getSSRSetup regardless of Accept). For full/partial-render and action,
|
|
863
|
+
// the render-time HTML decision is exactly !isRscRequest — mayNeedSSR is
|
|
864
|
+
// the coarse transport pre-filter, isRscRequest is the precise Accept call
|
|
865
|
+
// (it, unlike mayNeedSSR, treats a MISSING Accept as RSC). Both must pass.
|
|
866
|
+
const willRenderHtml =
|
|
867
|
+
plan.mode === "pe-render" ||
|
|
868
|
+
(mayNeedSSR(request, url) &&
|
|
869
|
+
!isRscRequest(request, url, plan.mode === "partial-render"));
|
|
870
|
+
if (plan.mode !== "loader" && willRenderHtml) {
|
|
821
871
|
variables[SSR_SETUP_VAR] = startSSRSetup(
|
|
822
872
|
handlerCtx,
|
|
823
873
|
request,
|
|
824
874
|
env,
|
|
825
875
|
url,
|
|
826
876
|
router.debugPerformance
|
|
827
|
-
? () =>
|
|
877
|
+
? () => getRequestContext()._metricsStore
|
|
828
878
|
: undefined,
|
|
829
879
|
);
|
|
830
880
|
}
|
|
@@ -865,14 +915,20 @@ export function createRSCHandler<
|
|
|
865
915
|
if (plan.mode === "action") {
|
|
866
916
|
let actionContinuation: ActionContinuation | undefined;
|
|
867
917
|
try {
|
|
918
|
+
// Instrument the action execution as its own phase (action:<actionId> +
|
|
919
|
+
// rango.action), so a POST shows the mutation time AND which action ran,
|
|
920
|
+
// not just the downstream revalidation render. The action's own
|
|
921
|
+
// loaders/fetches nest under rango.action.
|
|
868
922
|
const actionOutcome = await withTimeout(
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
923
|
+
observePhase(PHASES.action(plan.actionId), () =>
|
|
924
|
+
executeServerAction(
|
|
925
|
+
handlerCtx,
|
|
926
|
+
request,
|
|
927
|
+
env,
|
|
928
|
+
url,
|
|
929
|
+
plan.actionId,
|
|
930
|
+
handleStore,
|
|
931
|
+
),
|
|
876
932
|
),
|
|
877
933
|
router.timeouts.actionMs,
|
|
878
934
|
"action",
|
|
@@ -925,47 +981,17 @@ export function createRSCHandler<
|
|
|
925
981
|
);
|
|
926
982
|
}
|
|
927
983
|
|
|
928
|
-
//
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
plan.
|
|
935
|
-
|
|
936
|
-
request,
|
|
937
|
-
env,
|
|
938
|
-
url,
|
|
939
|
-
variables,
|
|
940
|
-
nonce,
|
|
941
|
-
handleStore,
|
|
942
|
-
isPartial,
|
|
943
|
-
);
|
|
944
|
-
}
|
|
945
|
-
|
|
946
|
-
// PE that fell through (handleProgressiveEnhancement returned null)
|
|
947
|
-
// falls back to full render
|
|
948
|
-
if (plan.mode === "pe-render") {
|
|
949
|
-
return executeRenderWithMiddleware(
|
|
950
|
-
plan.route.routeMiddleware,
|
|
951
|
-
false,
|
|
952
|
-
plan.route.routeKey,
|
|
953
|
-
routeReverse,
|
|
954
|
-
request,
|
|
955
|
-
env,
|
|
956
|
-
url,
|
|
957
|
-
variables,
|
|
958
|
-
nonce,
|
|
959
|
-
handleStore,
|
|
960
|
-
false,
|
|
961
|
-
);
|
|
962
|
-
}
|
|
963
|
-
|
|
964
|
-
// Redirect plan that wasn't handled above (full-page redirect — let
|
|
965
|
-
// the pipeline handle it via match() which returns { redirect: url })
|
|
984
|
+
// Full render, partial render, fallen-through PE, and full-page redirect all
|
|
985
|
+
// render through the same middleware-wrapped path. Only full/partial-render
|
|
986
|
+
// carry negotiation + the partial flag; pe/redirect render plainly.
|
|
987
|
+
const isPartial = plan.mode === "partial-render";
|
|
988
|
+
const negotiated =
|
|
989
|
+
plan.mode === "full-render" || plan.mode === "partial-render"
|
|
990
|
+
? plan.negotiated
|
|
991
|
+
: false;
|
|
966
992
|
return executeRenderWithMiddleware(
|
|
967
993
|
plan.route.routeMiddleware,
|
|
968
|
-
|
|
994
|
+
negotiated,
|
|
969
995
|
plan.route.routeKey,
|
|
970
996
|
routeReverse,
|
|
971
997
|
request,
|
|
@@ -974,7 +1000,7 @@ export function createRSCHandler<
|
|
|
974
1000
|
variables,
|
|
975
1001
|
nonce,
|
|
976
1002
|
handleStore,
|
|
977
|
-
|
|
1003
|
+
isPartial,
|
|
978
1004
|
);
|
|
979
1005
|
}
|
|
980
1006
|
|
|
@@ -991,7 +1017,7 @@ export function createRSCHandler<
|
|
|
991
1017
|
url: URL,
|
|
992
1018
|
variables: Record<string, any>,
|
|
993
1019
|
nonce: string | undefined,
|
|
994
|
-
handleStore: ReturnType<typeof
|
|
1020
|
+
handleStore: ReturnType<typeof getRequestContext>["_handleStore"],
|
|
995
1021
|
isPartial: boolean,
|
|
996
1022
|
actionContinuation?: ActionContinuation,
|
|
997
1023
|
): Promise<Response> {
|
|
@@ -1019,16 +1045,27 @@ export function createRSCHandler<
|
|
|
1019
1045
|
);
|
|
1020
1046
|
}
|
|
1021
1047
|
if (negotiated && !isWebSocketUpgradeResponse(response)) {
|
|
1022
|
-
response
|
|
1048
|
+
// handleRscRendering bakes `accept` into the RSC response's Vary list;
|
|
1049
|
+
// dedup so the negotiated append does not list accept twice.
|
|
1050
|
+
appendVaryAccept(response);
|
|
1023
1051
|
}
|
|
1024
1052
|
return response;
|
|
1025
1053
|
} catch (error) {
|
|
1026
1054
|
// Check if middleware/handler returned Response
|
|
1027
1055
|
if (error instanceof Response) {
|
|
1056
|
+
// An action revalidation render is delivered to the client over the
|
|
1057
|
+
// same Flight-parsing path as a partial navigation, so a Response
|
|
1058
|
+
// thrown during it must be converted exactly like a partial one
|
|
1059
|
+
// (raw 200 -> hard-nav hint, 3xx -> Flight redirect). Without this,
|
|
1060
|
+
// the no-middleware path returns the raw Response (the with-middleware
|
|
1061
|
+
// path is already covered by the isPartial || actionContinuation
|
|
1062
|
+
// guard below).
|
|
1063
|
+
const treatAsPartial = isPartial || actionContinuation != null;
|
|
1064
|
+
|
|
1028
1065
|
// During partial (client-side navigation), a 200 Response from a handler
|
|
1029
1066
|
// means the route serves raw content (JSON, text, etc.), not JSX.
|
|
1030
1067
|
// Signal the browser to hard-navigate so it renders the raw response.
|
|
1031
|
-
if (
|
|
1068
|
+
if (treatAsPartial && error.status === 200) {
|
|
1032
1069
|
console.warn(
|
|
1033
1070
|
`[RSC] Route handler at ${url.pathname} returned a Response during client-side navigation. ` +
|
|
1034
1071
|
`Falling back to hard navigation. Use data-external on the <Link> to avoid the extra round-trip.`,
|
|
@@ -1042,7 +1079,7 @@ export function createRSCHandler<
|
|
|
1042
1079
|
});
|
|
1043
1080
|
}
|
|
1044
1081
|
|
|
1045
|
-
if (
|
|
1082
|
+
if (treatAsPartial) {
|
|
1046
1083
|
const intercepted = interceptRedirectForPartial(
|
|
1047
1084
|
error,
|
|
1048
1085
|
createRedirectFlightResponse,
|
|
@@ -1054,10 +1091,7 @@ export function createRSCHandler<
|
|
|
1054
1091
|
}
|
|
1055
1092
|
|
|
1056
1093
|
// Render 404 page for unmatched routes
|
|
1057
|
-
|
|
1058
|
-
error instanceof RouteNotFoundError ||
|
|
1059
|
-
(error instanceof Error && error.name === "RouteNotFoundError");
|
|
1060
|
-
if (isRouteNotFound) {
|
|
1094
|
+
if (isRouteNotFoundError(error)) {
|
|
1061
1095
|
callOnError(error, "routing", {
|
|
1062
1096
|
request,
|
|
1063
1097
|
url,
|
|
@@ -1088,13 +1122,23 @@ export function createRSCHandler<
|
|
|
1088
1122
|
segments: [notFoundSegment],
|
|
1089
1123
|
matched: [],
|
|
1090
1124
|
diff: [],
|
|
1125
|
+
// Shape parity with buildFullPayload (rsc-rendering.ts): the 404
|
|
1126
|
+
// payload carries params/resolvedIds/prefetchCacheTTL the same way a
|
|
1127
|
+
// matched full render does. resolvedIds mirrors the rendered segment
|
|
1128
|
+
// list (the single notFound segment) like the error-boundary path
|
|
1129
|
+
// (match-api.ts) does for its boundary segment.
|
|
1130
|
+
resolvedIds: [notFoundSegment.id],
|
|
1131
|
+
params: {},
|
|
1091
1132
|
isPartial: false,
|
|
1092
1133
|
rootLayout: router.rootLayout,
|
|
1093
1134
|
handles: handleStore.stream(),
|
|
1094
1135
|
version,
|
|
1136
|
+
prefetchCacheTTL: router.prefetchCacheTTL,
|
|
1137
|
+
stateCookieName: router.resolvedStateCookieName,
|
|
1095
1138
|
themeConfig: router.themeConfig,
|
|
1096
1139
|
warmupEnabled: router.warmupEnabled,
|
|
1097
|
-
|
|
1140
|
+
strictMode: router.strictMode,
|
|
1141
|
+
initialTheme: getRequestContext().theme,
|
|
1098
1142
|
},
|
|
1099
1143
|
};
|
|
1100
1144
|
|
|
@@ -1104,16 +1148,15 @@ export function createRSCHandler<
|
|
|
1104
1148
|
},
|
|
1105
1149
|
});
|
|
1106
1150
|
|
|
1107
|
-
|
|
1108
|
-
isPartial ||
|
|
1109
|
-
(!request.headers.get("accept")?.includes("text/html") &&
|
|
1110
|
-
!url.searchParams.has("__html")) ||
|
|
1111
|
-
url.searchParams.has("__rsc");
|
|
1112
|
-
|
|
1113
|
-
if (isRscRequest) {
|
|
1151
|
+
if (isRscRequest(request, url, isPartial)) {
|
|
1114
1152
|
return createResponseWithMergedHeaders(rscStream, {
|
|
1115
1153
|
status: 404,
|
|
1116
|
-
headers: {
|
|
1154
|
+
headers: {
|
|
1155
|
+
"content-type": "text/x-component;charset=utf-8",
|
|
1156
|
+
// Router identity for the client's pre-decode integrity check; a
|
|
1157
|
+
// same-app 404 matches and applies in place. See response-adapter.
|
|
1158
|
+
"X-RSC-Router-Id": router.id,
|
|
1159
|
+
},
|
|
1117
1160
|
});
|
|
1118
1161
|
}
|
|
1119
1162
|
|
|
@@ -1122,7 +1165,7 @@ export function createRSCHandler<
|
|
|
1122
1165
|
request,
|
|
1123
1166
|
env,
|
|
1124
1167
|
url,
|
|
1125
|
-
|
|
1168
|
+
getRequestContext()._metricsStore,
|
|
1126
1169
|
);
|
|
1127
1170
|
const htmlStream = await ssrModule.renderHTML(rscStream, {
|
|
1128
1171
|
nonce,
|