@rangojs/router 0.0.0-experimental.f3c21dba → 0.0.0-experimental.f4a8e8de
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 -4
- package/README.md +320 -735
- package/dist/bin/rango.js +977 -240
- package/dist/testing/vitest.js +82 -0
- package/dist/types/__internal.d.ts +127 -0
- package/dist/types/bin/rango.d.ts +1 -0
- package/dist/types/browser/action-coordinator.d.ts +57 -0
- package/dist/types/browser/action-fence.d.ts +33 -0
- package/dist/types/browser/app-shell.d.ts +34 -0
- package/dist/types/browser/app-version.d.ts +6 -0
- package/dist/types/browser/connection-warmup.d.ts +31 -0
- package/dist/types/browser/cookie-name.d.ts +66 -0
- package/dist/types/browser/dev-discovery.d.ts +11 -0
- package/dist/types/browser/event-controller.d.ts +231 -0
- package/dist/types/browser/history-state.d.ts +26 -0
- package/dist/types/browser/index.d.ts +1 -0
- package/dist/types/browser/intercept-utils.d.ts +30 -0
- package/dist/types/browser/invalidate-client-cache.d.ts +17 -0
- package/dist/types/browser/link-interceptor.d.ts +53 -0
- package/dist/types/browser/logging.d.ts +33 -0
- package/dist/types/browser/merge-segment-loaders.d.ts +38 -0
- package/dist/types/browser/navigation-bridge.d.ts +39 -0
- package/dist/types/browser/navigation-client.d.ts +17 -0
- package/dist/types/browser/navigation-store-handle.d.ts +25 -0
- package/dist/types/browser/navigation-store.d.ts +85 -0
- package/dist/types/browser/navigation-transaction.d.ts +75 -0
- package/dist/types/browser/network-error-handler.d.ts +35 -0
- package/dist/types/browser/notify-listeners.d.ts +2 -0
- package/dist/types/browser/partial-update.d.ts +61 -0
- package/dist/types/browser/prefetch/cache.d.ts +224 -0
- package/dist/types/browser/prefetch/default-strategy.d.ts +31 -0
- package/dist/types/browser/prefetch/fetch.d.ts +52 -0
- package/dist/types/browser/prefetch/invalidation.d.ts +6 -0
- package/dist/types/browser/prefetch/loader.d.ts +12 -0
- package/dist/types/browser/prefetch/observer.d.ts +24 -0
- package/dist/types/browser/prefetch/policy.d.ts +13 -0
- package/dist/types/browser/prefetch/queue.d.ts +48 -0
- package/dist/types/browser/prefetch/resource-ready.d.ts +28 -0
- package/dist/types/browser/prefetch/runtime.d.ts +2 -0
- package/dist/types/browser/rango-state.d.ts +56 -0
- package/dist/types/browser/react/Link.d.ts +132 -0
- package/dist/types/browser/react/NavigationProvider.d.ts +88 -0
- package/dist/types/browser/react/ScrollRestoration.d.ts +78 -0
- package/dist/types/browser/react/context.d.ts +57 -0
- package/dist/types/browser/react/filter-segment-order.d.ts +35 -0
- package/dist/types/browser/react/index.d.ts +1 -0
- package/dist/types/browser/react/location-state-shared.d.ts +162 -0
- package/dist/types/browser/react/location-state.d.ts +29 -0
- package/dist/types/browser/react/mount-context.d.ts +23 -0
- package/dist/types/browser/react/nonce-context.d.ts +14 -0
- package/dist/types/browser/react/shallow-equal.d.ts +5 -0
- package/dist/types/browser/react/use-action.d.ts +61 -0
- package/dist/types/browser/react/use-handle.d.ts +21 -0
- package/dist/types/browser/react/use-href.d.ts +32 -0
- package/dist/types/browser/react/use-link-status.d.ts +36 -0
- package/dist/types/browser/react/use-mount.d.ts +24 -0
- package/dist/types/browser/react/use-navigation.d.ts +15 -0
- package/dist/types/browser/react/use-params.d.ts +21 -0
- package/dist/types/browser/react/use-pathname.d.ts +13 -0
- package/dist/types/browser/react/use-reverse.d.ts +40 -0
- package/dist/types/browser/react/use-router.d.ts +23 -0
- package/dist/types/browser/react/use-search-params.d.ts +19 -0
- package/dist/types/browser/react/use-segments.d.ts +29 -0
- package/dist/types/browser/response-adapter.d.ts +58 -0
- package/dist/types/browser/rsc-router.d.ts +146 -0
- package/dist/types/browser/scroll-restoration.d.ts +103 -0
- package/dist/types/browser/segment-reconciler.d.ts +74 -0
- package/dist/types/browser/segment-structure-assert.d.ts +16 -0
- package/dist/types/browser/server-action-bridge.d.ts +29 -0
- package/dist/types/browser/types.d.ts +546 -0
- package/dist/types/browser/validate-redirect-origin.d.ts +28 -0
- package/dist/types/build/collect-fallback-refs.d.ts +5 -0
- package/dist/types/build/generate-manifest.d.ts +106 -0
- package/dist/types/build/generate-route-types.d.ts +8 -0
- package/dist/types/build/index.d.ts +21 -0
- package/dist/types/build/merge-full-manifests.d.ts +3 -0
- package/dist/types/build/prefix-tree-utils.d.ts +56 -0
- package/dist/types/build/route-trie.d.ts +20 -0
- package/dist/types/build/route-types/ast-helpers.d.ts +3 -0
- package/dist/types/build/route-types/ast-route-extraction.d.ts +13 -0
- package/dist/types/build/route-types/codegen.d.ts +16 -0
- package/dist/types/build/route-types/include-resolution.d.ts +74 -0
- package/dist/types/build/route-types/param-extraction.d.ts +13 -0
- package/dist/types/build/route-types/per-module-writer.d.ts +20 -0
- package/dist/types/build/route-types/router-processing.d.ts +81 -0
- package/dist/types/build/route-types/scan-filter.d.ts +17 -0
- package/dist/types/build/route-types/source-scan.d.ts +13 -0
- package/dist/types/build/runtime-discovery.d.ts +24 -0
- package/dist/types/cache/background-task.d.ts +21 -0
- package/dist/types/cache/cache-error.d.ts +71 -0
- package/dist/types/cache/cache-exec-scope.d.ts +31 -0
- package/dist/types/cache/cache-key-utils.d.ts +43 -0
- package/dist/types/cache/cache-policy.d.ts +59 -0
- package/dist/types/cache/cache-runtime.d.ts +51 -0
- package/dist/types/cache/cache-scope.d.ts +215 -0
- package/dist/types/cache/cache-tag.d.ts +79 -0
- package/dist/types/cache/cf/cf-base64.d.ts +4 -0
- package/dist/types/cache/cf/cf-cache-constants.d.ts +112 -0
- package/dist/types/cache/cf/cf-cache-store.d.ts +616 -0
- package/dist/types/cache/cf/cf-cache-types.d.ts +365 -0
- package/dist/types/cache/cf/cf-kv-utils.d.ts +43 -0
- package/dist/types/cache/cf/cf-tag-marker-memo.d.ts +15 -0
- package/dist/types/cache/cf/cf-zone-purge.d.ts +31 -0
- package/dist/types/cache/cf/index.d.ts +4 -0
- package/dist/types/cache/document-cache.d.ts +71 -0
- package/dist/types/cache/handle-capture.d.ts +23 -0
- package/dist/types/cache/handle-snapshot.d.ts +39 -0
- package/dist/types/cache/index.d.ts +9 -0
- package/dist/types/cache/memory-segment-store.d.ts +163 -0
- package/dist/types/cache/profile-registry.d.ts +40 -0
- package/dist/types/cache/read-through-swr.d.ts +61 -0
- package/dist/types/cache/search-params-filter.d.ts +64 -0
- package/dist/types/cache/segment-codec.d.ts +78 -0
- package/dist/types/cache/shell-snapshot.d.ts +186 -0
- package/dist/types/cache/tag-invalidation.d.ts +74 -0
- package/dist/types/cache/taint.d.ts +77 -0
- package/dist/types/cache/types.d.ts +503 -0
- package/dist/types/cache/vercel/index.d.ts +1 -0
- package/dist/types/cache/vercel/vercel-cache-store.d.ts +268 -0
- package/dist/types/client-urls/client-root.d.ts +38 -0
- package/dist/types/client-urls/client-urls.d.ts +5 -0
- package/dist/types/client-urls/navigation.d.ts +38 -0
- package/dist/types/client-urls/revalidation-protocol.d.ts +25 -0
- package/dist/types/client-urls/server-projection.d.ts +57 -0
- package/dist/types/client-urls/types.d.ts +132 -0
- package/dist/types/client.d.ts +191 -0
- package/dist/types/client.rsc.d.ts +41 -0
- package/dist/types/cloudflare/index.d.ts +7 -0
- package/dist/types/cloudflare/tracing.d.ts +57 -0
- package/dist/types/component-utils.d.ts +46 -0
- package/dist/types/components/DefaultDocument.d.ts +13 -0
- package/dist/types/context-var.d.ts +84 -0
- package/dist/types/debug.d.ts +57 -0
- package/dist/types/decode-loader-results.d.ts +42 -0
- package/dist/types/default-error-boundary.d.ts +10 -0
- package/dist/types/defer.d.ts +89 -0
- package/dist/types/deps/browser.d.ts +1 -0
- package/dist/types/deps/html-stream-client.d.ts +1 -0
- package/dist/types/deps/html-stream-server.d.ts +1 -0
- package/dist/types/deps/rsc.d.ts +1 -0
- package/dist/types/deps/ssr.d.ts +1 -0
- package/dist/types/dev-discovery-protocol.d.ts +5 -0
- package/dist/types/encode-kv.d.ts +35 -0
- package/dist/types/errors.d.ts +227 -0
- package/dist/types/escape-script.d.ts +44 -0
- package/dist/types/handle.d.ts +93 -0
- package/dist/types/handles/MetaTags.d.ts +17 -0
- package/dist/types/handles/Scripts.d.ts +38 -0
- package/dist/types/handles/breadcrumbs.d.ts +43 -0
- package/dist/types/handles/deferred-resolution.d.ts +53 -0
- package/dist/types/handles/is-thenable.d.ts +10 -0
- package/dist/types/handles/meta.d.ts +43 -0
- package/dist/types/handles/script.d.ts +139 -0
- package/dist/types/host/cookie-handler.d.ts +8 -0
- package/dist/types/host/errors.d.ts +40 -0
- package/dist/types/host/index.d.ts +33 -0
- package/dist/types/host/pattern-matcher.d.ts +30 -0
- package/dist/types/host/router.d.ts +12 -0
- package/dist/types/host/testing.d.ts +41 -0
- package/dist/types/host/types.d.ts +148 -0
- package/dist/types/host/utils.d.ts +20 -0
- package/dist/types/href-client.d.ts +214 -0
- package/dist/types/index.d.ts +113 -0
- package/dist/types/index.rsc.d.ts +52 -0
- package/dist/types/internal-debug.d.ts +1 -0
- package/dist/types/loader-redirect.d.ts +18 -0
- package/dist/types/loader-store.d.ts +193 -0
- package/dist/types/loader.d.ts +18 -0
- package/dist/types/loader.rsc.d.ts +18 -0
- package/dist/types/missing-id-error.d.ts +1 -0
- package/dist/types/outlet-context.d.ts +24 -0
- package/dist/types/outlet-provider.d.ts +14 -0
- package/dist/types/prerender/build-shell-capture.d.ts +104 -0
- package/dist/types/prerender/param-hash.d.ts +6 -0
- package/dist/types/prerender/shell-manifest-key.d.ts +18 -0
- package/dist/types/prerender/store.d.ts +63 -0
- package/dist/types/prerender.d.ts +292 -0
- package/dist/types/redirect-origin.d.ts +67 -0
- package/dist/types/regex-escape.d.ts +6 -0
- package/dist/types/render-error-thrower.d.ts +13 -0
- package/dist/types/response-utils.d.ts +35 -0
- package/dist/types/reverse.d.ts +206 -0
- package/dist/types/root-error-boundary.d.ts +32 -0
- package/dist/types/route-content-wrapper.d.ts +81 -0
- package/dist/types/route-definition/dsl-helpers.d.ts +130 -0
- package/dist/types/route-definition/helper-factories.d.ts +22 -0
- package/dist/types/route-definition/helpers-types.d.ts +393 -0
- package/dist/types/route-definition/index.d.ts +7 -0
- package/dist/types/route-definition/redirect.d.ts +48 -0
- package/dist/types/route-definition/resolve-handler-use.d.ts +19 -0
- package/dist/types/route-definition/use-item-types.d.ts +1 -0
- package/dist/types/route-definition.d.ts +1 -0
- package/dist/types/route-map-builder.d.ts +102 -0
- package/dist/types/route-name.d.ts +27 -0
- package/dist/types/route-types.d.ts +172 -0
- package/dist/types/router/basename.d.ts +10 -0
- package/dist/types/router/content-negotiation.d.ts +91 -0
- package/dist/types/router/debug-manifest.d.ts +7 -0
- package/dist/types/router/error-handling.d.ts +110 -0
- package/dist/types/router/find-match.d.ts +19 -0
- package/dist/types/router/handler-context.d.ts +41 -0
- package/dist/types/router/instrument.d.ts +191 -0
- package/dist/types/router/intercept-resolution.d.ts +91 -0
- package/dist/types/router/lazy-includes.d.ts +26 -0
- package/dist/types/router/loader-resolution.d.ts +85 -0
- package/dist/types/router/logging.d.ts +41 -0
- package/dist/types/router/manifest.d.ts +8 -0
- package/dist/types/router/match-api.d.ts +19 -0
- package/dist/types/router/match-context.d.ts +184 -0
- package/dist/types/router/match-handlers.d.ts +48 -0
- package/dist/types/router/match-middleware/background-revalidation.d.ts +113 -0
- package/dist/types/router/match-middleware/cache-lookup.d.ts +126 -0
- package/dist/types/router/match-middleware/cache-store.d.ts +112 -0
- package/dist/types/router/match-middleware/index.d.ts +80 -0
- package/dist/types/router/match-middleware/intercept-resolution.d.ts +116 -0
- package/dist/types/router/match-middleware/segment-resolution.d.ts +94 -0
- package/dist/types/router/match-pipelines.d.ts +103 -0
- package/dist/types/router/match-result.d.ts +114 -0
- package/dist/types/router/metrics.d.ts +6 -0
- package/dist/types/router/middleware-types.d.ts +74 -0
- package/dist/types/router/middleware.d.ts +116 -0
- package/dist/types/router/navigation-snapshot.d.ts +51 -0
- package/dist/types/router/params-util.d.ts +8 -0
- package/dist/types/router/parse-pattern.d.ts +38 -0
- package/dist/types/router/pattern-matching.d.ts +169 -0
- package/dist/types/router/prefetch-cache-ttl.d.ts +27 -0
- package/dist/types/router/prefetch-default.d.ts +28 -0
- package/dist/types/router/prefetch-limits.d.ts +20 -0
- package/dist/types/router/prerender-match.d.ts +53 -0
- package/dist/types/router/preview-match.d.ts +22 -0
- package/dist/types/router/request-classification.d.ts +104 -0
- package/dist/types/router/revalidation.d.ts +64 -0
- package/dist/types/router/route-snapshot.d.ts +112 -0
- package/dist/types/router/route-trie-builder.d.ts +77 -0
- package/dist/types/router/router-context.d.ts +137 -0
- package/dist/types/router/router-interfaces.d.ts +461 -0
- package/dist/types/router/router-options.d.ts +792 -0
- package/dist/types/router/router-registry.d.ts +15 -0
- package/dist/types/router/segment-resolution/fresh.d.ts +55 -0
- package/dist/types/router/segment-resolution/helpers.d.ts +93 -0
- package/dist/types/router/segment-resolution/loader-cache.d.ts +33 -0
- package/dist/types/router/segment-resolution/loader-mask.d.ts +44 -0
- package/dist/types/router/segment-resolution/loader-snapshot.d.ts +90 -0
- package/dist/types/router/segment-resolution/mask-nested.d.ts +53 -0
- package/dist/types/router/segment-resolution/revalidation.d.ts +85 -0
- package/dist/types/router/segment-resolution/static-store.d.ts +17 -0
- package/dist/types/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
- package/dist/types/router/segment-resolution/view-transition-default.d.ts +27 -0
- package/dist/types/router/segment-resolution.d.ts +3 -0
- package/dist/types/router/segment-wrappers.d.ts +53 -0
- package/dist/types/router/state-cookie-name.d.ts +1 -0
- package/dist/types/router/substitute-pattern-params.d.ts +23 -0
- package/dist/types/router/telemetry-otel.d.ts +113 -0
- package/dist/types/router/telemetry.d.ts +216 -0
- package/dist/types/router/timeout.d.ts +107 -0
- package/dist/types/router/tracing.d.ts +139 -0
- package/dist/types/router/transition-when.d.ts +13 -0
- package/dist/types/router/trie-matching.d.ts +32 -0
- package/dist/types/router/types.d.ts +98 -0
- package/dist/types/router/url-params.d.ts +26 -0
- package/dist/types/router.d.ts +7 -0
- package/dist/types/rsc/capture-queue.d.ts +49 -0
- package/dist/types/rsc/full-payload.d.ts +22 -0
- package/dist/types/rsc/handler-context.d.ts +32 -0
- package/dist/types/rsc/handler.d.ts +9 -0
- package/dist/types/rsc/helpers.d.ts +127 -0
- package/dist/types/rsc/index.d.ts +17 -0
- package/dist/types/rsc/json-route-result.d.ts +20 -0
- package/dist/types/rsc/loader-fetch.d.ts +14 -0
- package/dist/types/rsc/manifest-init.d.ts +18 -0
- package/dist/types/rsc/nonce.d.ts +28 -0
- package/dist/types/rsc/origin-guard.d.ts +50 -0
- package/dist/types/rsc/progressive-enhancement.d.ts +19 -0
- package/dist/types/rsc/redirect-guard.d.ts +37 -0
- package/dist/types/rsc/render-pipeline.d.ts +148 -0
- package/dist/types/rsc/response-cache-serve.d.ts +46 -0
- package/dist/types/rsc/response-error.d.ts +19 -0
- package/dist/types/rsc/response-route-handler.d.ts +29 -0
- package/dist/types/rsc/routine-plan.d.ts +124 -0
- package/dist/types/rsc/rsc-rendering.d.ts +18 -0
- package/dist/types/rsc/runtime-warnings.d.ts +22 -0
- package/dist/types/rsc/server-action.d.ts +68 -0
- package/dist/types/rsc/shell-build-manifest.d.ts +90 -0
- package/dist/types/rsc/shell-capture-constants.d.ts +44 -0
- package/dist/types/rsc/shell-capture.d.ts +406 -0
- package/dist/types/rsc/shell-serve.d.ts +189 -0
- package/dist/types/rsc/ssr-setup.d.ts +73 -0
- package/dist/types/rsc/stream-idle.d.ts +60 -0
- package/dist/types/rsc/transition-gate.d.ts +23 -0
- package/dist/types/rsc/types.d.ts +328 -0
- package/dist/types/runtime-env.d.ts +1 -0
- package/dist/types/search-params.d.ts +125 -0
- package/dist/types/segment-content-promise.d.ts +13 -0
- package/dist/types/segment-fragments.d.ts +79 -0
- package/dist/types/segment-loader-promise.d.ts +22 -0
- package/dist/types/segment-system.d.ts +86 -0
- package/dist/types/serialize.d.ts +164 -0
- package/dist/types/server/context.d.ts +510 -0
- package/dist/types/server/cookie-parse.d.ts +10 -0
- package/dist/types/server/cookie-store.d.ts +107 -0
- package/dist/types/server/fetchable-loader-store.d.ts +20 -0
- package/dist/types/server/handle-store.d.ts +131 -0
- package/dist/types/server/loader-registry.d.ts +32 -0
- package/dist/types/server/request-context.d.ts +707 -0
- package/dist/types/server/root-layout.d.ts +3 -0
- package/dist/types/server.d.ts +16 -0
- package/dist/types/ssr/index.d.ts +233 -0
- package/dist/types/ssr/inject-rsc-eager.d.ts +3 -0
- package/dist/types/ssr/preinit-client-references.d.ts +71 -0
- package/dist/types/ssr/ssr-root.d.ts +69 -0
- package/dist/types/static-handler.d.ts +71 -0
- package/dist/types/testing/cache-status.d.ts +63 -0
- package/dist/types/testing/collect-handle.d.ts +20 -0
- package/dist/types/testing/dispatch.d.ts +127 -0
- package/dist/types/testing/dom.entry.d.ts +15 -0
- package/dist/types/testing/e2e/fixture.d.ts +37 -0
- package/dist/types/testing/e2e/index.d.ts +31 -0
- package/dist/types/testing/e2e/matchers.d.ts +17 -0
- package/dist/types/testing/e2e/page-helpers.d.ts +86 -0
- package/dist/types/testing/e2e/parity.d.ts +111 -0
- package/dist/types/testing/e2e/server.d.ts +35 -0
- package/dist/types/testing/flight-matchers.d.ts +55 -0
- package/dist/types/testing/flight-normalize.d.ts +1 -0
- package/dist/types/testing/flight-tree.d.ts +192 -0
- package/dist/types/testing/flight.d.ts +115 -0
- package/dist/types/testing/flight.entry.d.ts +27 -0
- package/dist/types/testing/generated-routes.d.ts +66 -0
- package/dist/types/testing/index.d.ts +54 -0
- package/dist/types/testing/internal/context.d.ts +225 -0
- package/dist/types/testing/internal/flight-client-globals.d.ts +1 -0
- package/dist/types/testing/internal/seed-vars.d.ts +30 -0
- package/dist/types/testing/render-handler.d.ts +160 -0
- package/dist/types/testing/render-route.d.ts +265 -0
- package/dist/types/testing/run-loader.d.ts +195 -0
- package/dist/types/testing/run-middleware.d.ts +132 -0
- package/dist/types/testing/run-transition-when.d.ts +78 -0
- package/dist/types/testing/shell-status.d.ts +81 -0
- package/dist/types/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
- package/dist/types/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
- package/dist/types/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
- package/dist/types/testing/vitest-stubs/version.d.ts +1 -0
- package/dist/types/testing/vitest.d.ts +205 -0
- package/dist/types/theme/ThemeProvider.d.ts +13 -0
- package/dist/types/theme/ThemeScript.d.ts +45 -0
- package/dist/types/theme/constants.d.ts +39 -0
- package/dist/types/theme/index.d.ts +29 -0
- package/dist/types/theme/theme-context.d.ts +21 -0
- package/dist/types/theme/theme-script.d.ts +26 -0
- package/dist/types/theme/types.d.ts +162 -0
- package/dist/types/theme/use-theme.d.ts +8 -0
- package/dist/types/types/boundaries.d.ts +110 -0
- package/dist/types/types/cache-types.d.ts +191 -0
- package/dist/types/types/error-types.d.ts +114 -0
- package/dist/types/types/global-namespace.d.ts +90 -0
- package/dist/types/types/handler-context.d.ts +658 -0
- package/dist/types/types/index.d.ts +11 -0
- package/dist/types/types/loader-types.d.ts +208 -0
- package/dist/types/types/request-scope.d.ts +93 -0
- package/dist/types/types/route-config.d.ts +105 -0
- package/dist/types/types/route-entry.d.ts +98 -0
- package/dist/types/types/segments.d.ts +246 -0
- package/dist/types/types.d.ts +1 -0
- package/dist/types/urls/include-helper.d.ts +17 -0
- package/dist/types/urls/include-provider.d.ts +27 -0
- package/dist/types/urls/index.d.ts +6 -0
- package/dist/types/urls/path-helper-types.d.ts +198 -0
- package/dist/types/urls/path-helper.d.ts +12 -0
- package/dist/types/urls/pattern-types.d.ts +166 -0
- package/dist/types/urls/response-types.d.ts +67 -0
- package/dist/types/urls/type-extraction.d.ts +157 -0
- package/dist/types/urls/urls-function.d.ts +24 -0
- package/dist/types/urls.d.ts +1 -0
- package/dist/types/use-loader.d.ts +150 -0
- package/dist/types/vercel/index.d.ts +10 -0
- package/dist/types/vercel/tracing.d.ts +71 -0
- package/dist/types/vite/debug.d.ts +80 -0
- package/dist/types/vite/discovery/bundle-postprocess.d.ts +12 -0
- package/dist/types/vite/discovery/client-urls-projection.d.ts +53 -0
- package/dist/types/vite/discovery/dev-prerender-cache.d.ts +65 -0
- package/dist/types/vite/discovery/discover-routers.d.ts +17 -0
- package/dist/types/vite/discovery/discovery-errors.d.ts +113 -0
- package/dist/types/vite/discovery/gate-state.d.ts +79 -0
- package/dist/types/vite/discovery/prerender-collection.d.ts +24 -0
- package/dist/types/vite/discovery/route-types-writer.d.ts +32 -0
- package/dist/types/vite/discovery/self-gen-tracking.d.ts +22 -0
- package/dist/types/vite/discovery/shell-prerender-phase.d.ts +40 -0
- package/dist/types/vite/discovery/state.d.ts +170 -0
- package/dist/types/vite/discovery/virtual-module-codegen.d.ts +15 -0
- package/dist/types/vite/encryption-key.d.ts +2 -0
- package/dist/types/vite/index.d.ts +11 -0
- package/dist/types/vite/inject-client-debug.d.ts +56 -0
- package/dist/types/vite/plugin-types.d.ts +298 -0
- package/dist/types/vite/plugins/cjs-to-esm.d.ts +6 -0
- package/dist/types/vite/plugins/client-ref-dedup.d.ts +40 -0
- package/dist/types/vite/plugins/client-ref-hashing.d.ts +35 -0
- package/dist/types/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
- package/dist/types/vite/plugins/expose-action-id.d.ts +18 -0
- package/dist/types/vite/plugins/expose-id-utils.d.ts +37 -0
- package/dist/types/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
- package/dist/types/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
- package/dist/types/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
- package/dist/types/vite/plugins/expose-ids/router-transform.d.ts +13 -0
- package/dist/types/vite/plugins/expose-ids/types.d.ts +29 -0
- package/dist/types/vite/plugins/expose-internal-ids.d.ts +16 -0
- package/dist/types/vite/plugins/performance-tracks.d.ts +25 -0
- package/dist/types/vite/plugins/refresh-cmd.d.ts +20 -0
- package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
- package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
- package/dist/types/vite/plugins/use-cache-transform.d.ts +20 -0
- package/dist/types/vite/plugins/vercel-output.d.ts +85 -0
- package/dist/types/vite/plugins/version-injector.d.ts +21 -0
- package/dist/types/vite/plugins/version-plugin.d.ts +19 -0
- package/dist/types/vite/plugins/virtual-entries.d.ts +36 -0
- package/dist/types/vite/plugins/virtual-stub-plugin.d.ts +7 -0
- package/dist/types/vite/rango.d.ts +29 -0
- package/dist/types/vite/router-discovery.d.ts +23 -0
- package/dist/types/vite/utils/ast-handler-extract.d.ts +64 -0
- package/dist/types/vite/utils/banner.d.ts +2 -0
- package/dist/types/vite/utils/bundle-analysis.d.ts +28 -0
- package/dist/types/vite/utils/client-chunks.d.ts +55 -0
- package/dist/types/vite/utils/directive-prologue.d.ts +16 -0
- package/dist/types/vite/utils/forward-user-plugins.d.ts +37 -0
- package/dist/types/vite/utils/manifest-utils.d.ts +7 -0
- package/dist/types/vite/utils/package-resolution.d.ts +6 -0
- package/dist/types/vite/utils/prerender-utils.d.ts +32 -0
- package/dist/types/vite/utils/shared-utils.d.ts +67 -0
- package/dist/types.backup/__internal.d.ts +127 -0
- package/dist/types.backup/bin/rango.d.ts +1 -0
- package/dist/types.backup/browser/action-coordinator.d.ts +57 -0
- package/dist/types.backup/browser/action-fence.d.ts +33 -0
- package/dist/types.backup/browser/app-shell.d.ts +34 -0
- package/dist/types.backup/browser/app-version.d.ts +6 -0
- package/dist/types.backup/browser/connection-warmup.d.ts +31 -0
- package/dist/types.backup/browser/cookie-name.d.ts +66 -0
- package/dist/types.backup/browser/event-controller.d.ts +221 -0
- package/dist/types.backup/browser/history-state.d.ts +26 -0
- package/dist/types.backup/browser/index.d.ts +1 -0
- package/dist/types.backup/browser/intercept-utils.d.ts +30 -0
- package/dist/types.backup/browser/invalidate-client-cache.d.ts +17 -0
- package/dist/types.backup/browser/link-interceptor.d.ts +43 -0
- package/dist/types.backup/browser/logging.d.ts +33 -0
- package/dist/types.backup/browser/merge-segment-loaders.d.ts +38 -0
- package/dist/types.backup/browser/navigation-bridge.d.ts +27 -0
- package/dist/types.backup/browser/navigation-client.d.ts +17 -0
- package/dist/types.backup/browser/navigation-store-handle.d.ts +25 -0
- package/dist/types.backup/browser/navigation-store.d.ts +95 -0
- package/dist/types.backup/browser/navigation-transaction.d.ts +75 -0
- package/dist/types.backup/browser/network-error-handler.d.ts +35 -0
- package/dist/types.backup/browser/partial-update.d.ts +61 -0
- package/dist/types.backup/browser/prefetch/cache.d.ts +183 -0
- package/dist/types.backup/browser/prefetch/fetch.d.ts +52 -0
- package/dist/types.backup/browser/prefetch/observer.d.ts +27 -0
- package/dist/types.backup/browser/prefetch/policy.d.ts +13 -0
- package/dist/types.backup/browser/prefetch/queue.d.ts +48 -0
- package/dist/types.backup/browser/prefetch/resource-ready.d.ts +28 -0
- package/dist/types.backup/browser/rango-state.d.ts +52 -0
- package/dist/types.backup/browser/react/Link.d.ts +140 -0
- package/dist/types.backup/browser/react/NavigationProvider.d.ts +88 -0
- package/dist/types.backup/browser/react/ScrollRestoration.d.ts +78 -0
- package/dist/types.backup/browser/react/context.d.ts +54 -0
- package/dist/types.backup/browser/react/filter-segment-order.d.ts +35 -0
- package/dist/types.backup/browser/react/index.d.ts +1 -0
- package/dist/types.backup/browser/react/location-state-shared.d.ts +162 -0
- package/dist/types.backup/browser/react/location-state.d.ts +29 -0
- package/dist/types.backup/browser/react/mount-context.d.ts +23 -0
- package/dist/types.backup/browser/react/nonce-context.d.ts +14 -0
- package/dist/types.backup/browser/react/shallow-equal.d.ts +5 -0
- package/dist/types.backup/browser/react/use-action.d.ts +61 -0
- package/dist/types.backup/browser/react/use-handle.d.ts +21 -0
- package/dist/types.backup/browser/react/use-href.d.ts +32 -0
- package/dist/types.backup/browser/react/use-link-status.d.ts +36 -0
- package/dist/types.backup/browser/react/use-mount.d.ts +24 -0
- package/dist/types.backup/browser/react/use-navigation.d.ts +15 -0
- package/dist/types.backup/browser/react/use-params.d.ts +21 -0
- package/dist/types.backup/browser/react/use-pathname.d.ts +13 -0
- package/dist/types.backup/browser/react/use-reverse.d.ts +40 -0
- package/dist/types.backup/browser/react/use-router.d.ts +23 -0
- package/dist/types.backup/browser/react/use-search-params.d.ts +19 -0
- package/dist/types.backup/browser/react/use-segments.d.ts +29 -0
- package/dist/types.backup/browser/response-adapter.d.ts +58 -0
- package/dist/types.backup/browser/rsc-router.d.ts +141 -0
- package/dist/types.backup/browser/scroll-restoration.d.ts +103 -0
- package/dist/types.backup/browser/segment-reconciler.d.ts +74 -0
- package/dist/types.backup/browser/segment-structure-assert.d.ts +16 -0
- package/dist/types.backup/browser/server-action-bridge.d.ts +29 -0
- package/dist/types.backup/browser/types.d.ts +530 -0
- package/dist/types.backup/browser/validate-redirect-origin.d.ts +28 -0
- package/dist/types.backup/build/collect-fallback-refs.d.ts +5 -0
- package/dist/types.backup/build/generate-manifest.d.ts +100 -0
- package/dist/types.backup/build/generate-route-types.d.ts +8 -0
- package/dist/types.backup/build/index.d.ts +21 -0
- package/dist/types.backup/build/prefix-tree-utils.d.ts +56 -0
- package/dist/types.backup/build/route-trie.d.ts +89 -0
- package/dist/types.backup/build/route-types/ast-helpers.d.ts +3 -0
- package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +13 -0
- package/dist/types.backup/build/route-types/codegen.d.ts +16 -0
- package/dist/types.backup/build/route-types/include-resolution.d.ts +74 -0
- package/dist/types.backup/build/route-types/param-extraction.d.ts +13 -0
- package/dist/types.backup/build/route-types/per-module-writer.d.ts +18 -0
- package/dist/types.backup/build/route-types/router-processing.d.ts +82 -0
- package/dist/types.backup/build/route-types/scan-filter.d.ts +17 -0
- package/dist/types.backup/build/route-types/source-scan.d.ts +13 -0
- package/dist/types.backup/build/runtime-discovery.d.ts +24 -0
- package/dist/types.backup/cache/background-task.d.ts +21 -0
- package/dist/types.backup/cache/cache-error.d.ts +71 -0
- package/dist/types.backup/cache/cache-key-utils.d.ts +35 -0
- package/dist/types.backup/cache/cache-policy.d.ts +59 -0
- package/dist/types.backup/cache/cache-runtime.d.ts +51 -0
- package/dist/types.backup/cache/cache-scope.d.ts +134 -0
- package/dist/types.backup/cache/cache-tag.d.ts +79 -0
- package/dist/types.backup/cache/cf/cf-base64.d.ts +4 -0
- package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +105 -0
- package/dist/types.backup/cache/cf/cf-cache-store.d.ts +481 -0
- package/dist/types.backup/cache/cf/cf-cache-types.d.ts +300 -0
- package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +22 -0
- package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +15 -0
- package/dist/types.backup/cache/cf/index.d.ts +3 -0
- package/dist/types.backup/cache/document-cache.d.ts +69 -0
- package/dist/types.backup/cache/handle-capture.d.ts +23 -0
- package/dist/types.backup/cache/handle-snapshot.d.ts +39 -0
- package/dist/types.backup/cache/index.d.ts +7 -0
- package/dist/types.backup/cache/memory-segment-store.d.ts +163 -0
- package/dist/types.backup/cache/profile-registry.d.ts +40 -0
- package/dist/types.backup/cache/read-through-swr.d.ts +60 -0
- package/dist/types.backup/cache/segment-codec.d.ts +78 -0
- package/dist/types.backup/cache/shell-snapshot.d.ts +162 -0
- package/dist/types.backup/cache/tag-invalidation.d.ts +74 -0
- package/dist/types.backup/cache/taint.d.ts +71 -0
- package/dist/types.backup/cache/types.d.ts +407 -0
- package/dist/types.backup/cache/vercel/index.d.ts +1 -0
- package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +267 -0
- package/dist/types.backup/client.d.ts +184 -0
- package/dist/types.backup/client.rsc.d.ts +39 -0
- package/dist/types.backup/cloudflare/index.d.ts +7 -0
- package/dist/types.backup/cloudflare/tracing.d.ts +53 -0
- package/dist/types.backup/component-utils.d.ts +46 -0
- package/dist/types.backup/components/DefaultDocument.d.ts +13 -0
- package/dist/types.backup/context-var.d.ts +84 -0
- package/dist/types.backup/debug.d.ts +57 -0
- package/dist/types.backup/decode-loader-results.d.ts +5 -0
- package/dist/types.backup/default-error-boundary.d.ts +10 -0
- package/dist/types.backup/defer.d.ts +89 -0
- package/dist/types.backup/deps/browser.d.ts +1 -0
- package/dist/types.backup/deps/html-stream-client.d.ts +1 -0
- package/dist/types.backup/deps/html-stream-server.d.ts +1 -0
- package/dist/types.backup/deps/rsc.d.ts +1 -0
- package/dist/types.backup/deps/ssr.d.ts +1 -0
- package/dist/types.backup/encode-kv.d.ts +35 -0
- package/dist/types.backup/errors.d.ts +226 -0
- package/dist/types.backup/escape-script.d.ts +44 -0
- package/dist/types.backup/handle.d.ts +93 -0
- package/dist/types.backup/handles/MetaTags.d.ts +17 -0
- package/dist/types.backup/handles/Scripts.d.ts +38 -0
- package/dist/types.backup/handles/breadcrumbs.d.ts +43 -0
- package/dist/types.backup/handles/deferred-resolution.d.ts +53 -0
- package/dist/types.backup/handles/is-thenable.d.ts +12 -0
- package/dist/types.backup/handles/meta.d.ts +43 -0
- package/dist/types.backup/handles/script.d.ts +139 -0
- package/dist/types.backup/host/cookie-handler.d.ts +8 -0
- package/dist/types.backup/host/errors.d.ts +40 -0
- package/dist/types.backup/host/index.d.ts +33 -0
- package/dist/types.backup/host/pattern-matcher.d.ts +30 -0
- package/dist/types.backup/host/router.d.ts +12 -0
- package/dist/types.backup/host/testing.d.ts +41 -0
- package/dist/types.backup/host/types.d.ts +148 -0
- package/dist/types.backup/host/utils.d.ts +20 -0
- package/dist/types.backup/href-client.d.ts +214 -0
- package/dist/types.backup/index.d.ts +112 -0
- package/dist/types.backup/index.rsc.d.ts +51 -0
- package/dist/types.backup/internal-debug.d.ts +1 -0
- package/dist/types.backup/loader-store.d.ts +193 -0
- package/dist/types.backup/loader.d.ts +18 -0
- package/dist/types.backup/loader.rsc.d.ts +18 -0
- package/dist/types.backup/missing-id-error.d.ts +1 -0
- package/dist/types.backup/outlet-context.d.ts +12 -0
- package/dist/types.backup/outlet-provider.d.ts +12 -0
- package/dist/types.backup/prerender/build-shell-capture.d.ts +104 -0
- package/dist/types.backup/prerender/param-hash.d.ts +6 -0
- package/dist/types.backup/prerender/shell-manifest-key.d.ts +18 -0
- package/dist/types.backup/prerender/store.d.ts +62 -0
- package/dist/types.backup/prerender.d.ts +292 -0
- package/dist/types.backup/redirect-origin.d.ts +55 -0
- package/dist/types.backup/regex-escape.d.ts +6 -0
- package/dist/types.backup/render-error-thrower.d.ts +13 -0
- package/dist/types.backup/response-utils.d.ts +35 -0
- package/dist/types.backup/reverse.d.ts +206 -0
- package/dist/types.backup/root-error-boundary.d.ts +32 -0
- package/dist/types.backup/route-content-wrapper.d.ts +40 -0
- package/dist/types.backup/route-definition/dsl-helpers.d.ts +130 -0
- package/dist/types.backup/route-definition/helper-factories.d.ts +22 -0
- package/dist/types.backup/route-definition/helpers-types.d.ts +392 -0
- package/dist/types.backup/route-definition/index.d.ts +7 -0
- package/dist/types.backup/route-definition/redirect.d.ts +48 -0
- package/dist/types.backup/route-definition/resolve-handler-use.d.ts +19 -0
- package/dist/types.backup/route-definition/use-item-types.d.ts +1 -0
- package/dist/types.backup/route-definition.d.ts +1 -0
- package/dist/types.backup/route-map-builder.d.ts +127 -0
- package/dist/types.backup/route-name.d.ts +27 -0
- package/dist/types.backup/route-types.d.ts +172 -0
- package/dist/types.backup/router/basename.d.ts +10 -0
- package/dist/types.backup/router/content-negotiation.d.ts +91 -0
- package/dist/types.backup/router/debug-manifest.d.ts +7 -0
- package/dist/types.backup/router/error-handling.d.ts +76 -0
- package/dist/types.backup/router/find-match.d.ts +19 -0
- package/dist/types.backup/router/handler-context.d.ts +41 -0
- package/dist/types.backup/router/instrument.d.ts +161 -0
- package/dist/types.backup/router/intercept-resolution.d.ts +79 -0
- package/dist/types.backup/router/lazy-includes.d.ts +26 -0
- package/dist/types.backup/router/loader-resolution.d.ts +63 -0
- package/dist/types.backup/router/logging.d.ts +41 -0
- package/dist/types.backup/router/manifest.d.ts +8 -0
- package/dist/types.backup/router/match-api.d.ts +19 -0
- package/dist/types.backup/router/match-context.d.ts +184 -0
- package/dist/types.backup/router/match-handlers.d.ts +49 -0
- package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +113 -0
- package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +113 -0
- package/dist/types.backup/router/match-middleware/cache-store.d.ts +112 -0
- package/dist/types.backup/router/match-middleware/index.d.ts +80 -0
- package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +116 -0
- package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +94 -0
- package/dist/types.backup/router/match-pipelines.d.ts +103 -0
- package/dist/types.backup/router/match-result.d.ts +114 -0
- package/dist/types.backup/router/metrics.d.ts +6 -0
- package/dist/types.backup/router/middleware-types.d.ts +74 -0
- package/dist/types.backup/router/middleware.d.ts +116 -0
- package/dist/types.backup/router/navigation-snapshot.d.ts +22 -0
- package/dist/types.backup/router/params-util.d.ts +8 -0
- package/dist/types.backup/router/parse-pattern.d.ts +38 -0
- package/dist/types.backup/router/pattern-matching.d.ts +169 -0
- package/dist/types.backup/router/prefetch-cache-ttl.d.ts +27 -0
- package/dist/types.backup/router/prefetch-limits.d.ts +20 -0
- package/dist/types.backup/router/prerender-match.d.ts +50 -0
- package/dist/types.backup/router/preview-match.d.ts +22 -0
- package/dist/types.backup/router/request-classification.d.ts +104 -0
- package/dist/types.backup/router/revalidation.d.ts +57 -0
- package/dist/types.backup/router/route-snapshot.d.ts +112 -0
- package/dist/types.backup/router/router-context.d.ts +137 -0
- package/dist/types.backup/router/router-interfaces.d.ts +432 -0
- package/dist/types.backup/router/router-options.d.ts +738 -0
- package/dist/types.backup/router/router-registry.d.ts +15 -0
- package/dist/types.backup/router/segment-resolution/fresh.d.ts +55 -0
- package/dist/types.backup/router/segment-resolution/helpers.d.ts +93 -0
- package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +33 -0
- package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +44 -0
- package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +90 -0
- package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +53 -0
- package/dist/types.backup/router/segment-resolution/revalidation.d.ts +85 -0
- package/dist/types.backup/router/segment-resolution/static-store.d.ts +17 -0
- package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
- package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +28 -0
- package/dist/types.backup/router/segment-resolution.d.ts +3 -0
- package/dist/types.backup/router/segment-wrappers.d.ts +53 -0
- package/dist/types.backup/router/state-cookie-name.d.ts +1 -0
- package/dist/types.backup/router/substitute-pattern-params.d.ts +23 -0
- package/dist/types.backup/router/telemetry-otel.d.ts +113 -0
- package/dist/types.backup/router/telemetry.d.ts +215 -0
- package/dist/types.backup/router/timeout.d.ts +68 -0
- package/dist/types.backup/router/tracing.d.ts +125 -0
- package/dist/types.backup/router/trie-matching.d.ts +32 -0
- package/dist/types.backup/router/types.d.ts +98 -0
- package/dist/types.backup/router/url-params.d.ts +26 -0
- package/dist/types.backup/router.d.ts +7 -0
- package/dist/types.backup/rsc/capture-queue.d.ts +6 -0
- package/dist/types.backup/rsc/full-payload.d.ts +22 -0
- package/dist/types.backup/rsc/handler-context.d.ts +31 -0
- package/dist/types.backup/rsc/handler.d.ts +9 -0
- package/dist/types.backup/rsc/helpers.d.ts +213 -0
- package/dist/types.backup/rsc/index.d.ts +17 -0
- package/dist/types.backup/rsc/json-route-result.d.ts +20 -0
- package/dist/types.backup/rsc/loader-fetch.d.ts +14 -0
- package/dist/types.backup/rsc/manifest-init.d.ts +18 -0
- package/dist/types.backup/rsc/nonce.d.ts +28 -0
- package/dist/types.backup/rsc/origin-guard.d.ts +50 -0
- package/dist/types.backup/rsc/progressive-enhancement.d.ts +19 -0
- package/dist/types.backup/rsc/redirect-guard.d.ts +35 -0
- package/dist/types.backup/rsc/response-cache-serve.d.ts +46 -0
- package/dist/types.backup/rsc/response-error.d.ts +19 -0
- package/dist/types.backup/rsc/response-route-handler.d.ts +29 -0
- package/dist/types.backup/rsc/rsc-rendering.d.ts +23 -0
- package/dist/types.backup/rsc/runtime-warnings.d.ts +22 -0
- package/dist/types.backup/rsc/server-action.d.ts +68 -0
- package/dist/types.backup/rsc/shell-build-manifest.d.ts +84 -0
- package/dist/types.backup/rsc/shell-capture-constants.d.ts +27 -0
- package/dist/types.backup/rsc/shell-capture.d.ts +374 -0
- package/dist/types.backup/rsc/shell-serve.d.ts +136 -0
- package/dist/types.backup/rsc/ssr-setup.d.ts +48 -0
- package/dist/types.backup/rsc/transition-gate.d.ts +27 -0
- package/dist/types.backup/rsc/types.d.ts +290 -0
- package/dist/types.backup/runtime-env.d.ts +1 -0
- package/dist/types.backup/search-params.d.ts +125 -0
- package/dist/types.backup/segment-content-promise.d.ts +13 -0
- package/dist/types.backup/segment-fragments.d.ts +56 -0
- package/dist/types.backup/segment-loader-promise.d.ts +22 -0
- package/dist/types.backup/segment-system.d.ts +84 -0
- package/dist/types.backup/serialize.d.ts +164 -0
- package/dist/types.backup/server/context.d.ts +494 -0
- package/dist/types.backup/server/cookie-parse.d.ts +10 -0
- package/dist/types.backup/server/cookie-store.d.ts +107 -0
- package/dist/types.backup/server/fetchable-loader-store.d.ts +20 -0
- package/dist/types.backup/server/handle-store.d.ts +100 -0
- package/dist/types.backup/server/loader-registry.d.ts +32 -0
- package/dist/types.backup/server/request-context.d.ts +596 -0
- package/dist/types.backup/server/root-layout.d.ts +3 -0
- package/dist/types.backup/server.d.ts +15 -0
- package/dist/types.backup/ssr/index.d.ts +233 -0
- package/dist/types.backup/ssr/inject-rsc-eager.d.ts +3 -0
- package/dist/types.backup/ssr/preinit-client-references.d.ts +71 -0
- package/dist/types.backup/ssr/ssr-root.d.ts +69 -0
- package/dist/types.backup/static-handler.d.ts +57 -0
- package/dist/types.backup/testing/cache-status.d.ts +63 -0
- package/dist/types.backup/testing/collect-handle.d.ts +20 -0
- package/dist/types.backup/testing/dispatch.d.ts +123 -0
- package/dist/types.backup/testing/dom.entry.d.ts +15 -0
- package/dist/types.backup/testing/e2e/fixture.d.ts +37 -0
- package/dist/types.backup/testing/e2e/index.d.ts +30 -0
- package/dist/types.backup/testing/e2e/matchers.d.ts +17 -0
- package/dist/types.backup/testing/e2e/page-helpers.d.ts +62 -0
- package/dist/types.backup/testing/e2e/parity.d.ts +111 -0
- package/dist/types.backup/testing/e2e/server.d.ts +35 -0
- package/dist/types.backup/testing/flight-matchers.d.ts +55 -0
- package/dist/types.backup/testing/flight-normalize.d.ts +1 -0
- package/dist/types.backup/testing/flight-tree.d.ts +192 -0
- package/dist/types.backup/testing/flight.d.ts +115 -0
- package/dist/types.backup/testing/flight.entry.d.ts +27 -0
- package/dist/types.backup/testing/generated-routes.d.ts +66 -0
- package/dist/types.backup/testing/index.d.ts +52 -0
- package/dist/types.backup/testing/internal/context.d.ts +225 -0
- package/dist/types.backup/testing/internal/flight-client-globals.d.ts +1 -0
- package/dist/types.backup/testing/internal/seed-vars.d.ts +30 -0
- package/dist/types.backup/testing/render-handler.d.ts +160 -0
- package/dist/types.backup/testing/render-route.d.ts +246 -0
- package/dist/types.backup/testing/run-loader.d.ts +186 -0
- package/dist/types.backup/testing/run-middleware.d.ts +132 -0
- package/dist/types.backup/testing/run-transition-when.d.ts +77 -0
- package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
- package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
- package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
- package/dist/types.backup/testing/vitest-stubs/version.d.ts +1 -0
- package/dist/types.backup/testing/vitest.d.ts +205 -0
- package/dist/types.backup/theme/ThemeProvider.d.ts +13 -0
- package/dist/types.backup/theme/ThemeScript.d.ts +45 -0
- package/dist/types.backup/theme/constants.d.ts +39 -0
- package/dist/types.backup/theme/index.d.ts +29 -0
- package/dist/types.backup/theme/theme-context.d.ts +21 -0
- package/dist/types.backup/theme/theme-script.d.ts +26 -0
- package/dist/types.backup/theme/types.d.ts +162 -0
- package/dist/types.backup/theme/use-theme.d.ts +8 -0
- package/dist/types.backup/types/boundaries.d.ts +93 -0
- package/dist/types.backup/types/cache-types.d.ts +191 -0
- package/dist/types.backup/types/error-types.d.ts +114 -0
- package/dist/types.backup/types/global-namespace.d.ts +90 -0
- package/dist/types.backup/types/handler-context.d.ts +658 -0
- package/dist/types.backup/types/index.d.ts +11 -0
- package/dist/types.backup/types/loader-types.d.ts +182 -0
- package/dist/types.backup/types/request-scope.d.ts +93 -0
- package/dist/types.backup/types/route-config.d.ts +105 -0
- package/dist/types.backup/types/route-entry.d.ts +95 -0
- package/dist/types.backup/types/segments.d.ts +234 -0
- package/dist/types.backup/types.d.ts +1 -0
- package/dist/types.backup/urls/include-helper.d.ts +17 -0
- package/dist/types.backup/urls/include-provider.d.ts +27 -0
- package/dist/types.backup/urls/index.d.ts +6 -0
- package/dist/types.backup/urls/path-helper-types.d.ts +197 -0
- package/dist/types.backup/urls/path-helper.d.ts +12 -0
- package/dist/types.backup/urls/pattern-types.d.ts +166 -0
- package/dist/types.backup/urls/response-types.d.ts +67 -0
- package/dist/types.backup/urls/type-extraction.d.ts +157 -0
- package/dist/types.backup/urls/urls-function.d.ts +24 -0
- package/dist/types.backup/urls.d.ts +1 -0
- package/dist/types.backup/use-loader.d.ts +150 -0
- package/dist/types.backup/vercel/index.d.ts +10 -0
- package/dist/types.backup/vercel/tracing.d.ts +70 -0
- package/dist/types.backup/vite/debug.d.ts +80 -0
- package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +12 -0
- package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +65 -0
- package/dist/types.backup/vite/discovery/discover-routers.d.ts +17 -0
- package/dist/types.backup/vite/discovery/discovery-errors.d.ts +113 -0
- package/dist/types.backup/vite/discovery/gate-state.d.ts +79 -0
- package/dist/types.backup/vite/discovery/prerender-collection.d.ts +24 -0
- package/dist/types.backup/vite/discovery/route-types-writer.d.ts +32 -0
- package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +22 -0
- package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +40 -0
- package/dist/types.backup/vite/discovery/state.d.ts +162 -0
- package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +15 -0
- package/dist/types.backup/vite/index.d.ts +11 -0
- package/dist/types.backup/vite/inject-client-debug.d.ts +56 -0
- package/dist/types.backup/vite/plugin-types.d.ts +298 -0
- package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +6 -0
- package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +40 -0
- package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +35 -0
- package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
- package/dist/types.backup/vite/plugins/expose-action-id.d.ts +18 -0
- package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +37 -0
- package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
- package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
- package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
- package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +13 -0
- package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +29 -0
- package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +6 -0
- package/dist/types.backup/vite/plugins/performance-tracks.d.ts +25 -0
- package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +20 -0
- package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +20 -0
- package/dist/types.backup/vite/plugins/vercel-output.d.ts +85 -0
- package/dist/types.backup/vite/plugins/version-injector.d.ts +21 -0
- package/dist/types.backup/vite/plugins/version-plugin.d.ts +19 -0
- package/dist/types.backup/vite/plugins/virtual-entries.d.ts +36 -0
- package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +7 -0
- package/dist/types.backup/vite/rango.d.ts +29 -0
- package/dist/types.backup/vite/router-discovery.d.ts +23 -0
- package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +64 -0
- package/dist/types.backup/vite/utils/banner.d.ts +2 -0
- package/dist/types.backup/vite/utils/bundle-analysis.d.ts +28 -0
- package/dist/types.backup/vite/utils/client-chunks.d.ts +55 -0
- package/dist/types.backup/vite/utils/directive-prologue.d.ts +16 -0
- package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +37 -0
- package/dist/types.backup/vite/utils/manifest-utils.d.ts +7 -0
- package/dist/types.backup/vite/utils/package-resolution.d.ts +6 -0
- package/dist/types.backup/vite/utils/prerender-utils.d.ts +32 -0
- package/dist/types.backup/vite/utils/shared-utils.d.ts +55 -0
- package/dist/vite/index.js +10628 -3742
- package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/package.json +120 -38
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +85 -6
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +255 -25
- package/skills/caching/SKILL.md +377 -13
- package/skills/catalog.json +283 -0
- package/skills/cloudflare/SKILL.md +151 -0
- package/skills/cloudflare/agents/openai.yaml +4 -0
- package/skills/cloudflare/references/d1-and-local-dev.md +131 -0
- package/skills/cloudflare/references/streaming-and-deploy.md +107 -0
- package/skills/cloudflare/references/webhooks-and-crypto.md +147 -0
- package/skills/comparison/SKILL.md +50 -0
- package/skills/comparison/agents/openai.yaml +4 -0
- package/skills/comparison/references/framework-comparison.md +844 -0
- package/skills/composability/SKILL.md +124 -4
- package/skills/css/SKILL.md +76 -0
- package/skills/debug-manifest/SKILL.md +5 -11
- package/skills/defer-hydration/SKILL.md +235 -0
- package/skills/deployment-caching/SKILL.md +176 -0
- package/skills/document-cache/SKILL.md +116 -58
- package/skills/fonts/SKILL.md +1 -1
- package/skills/handler-use/SKILL.md +364 -0
- package/skills/hooks/SKILL.md +73 -691
- package/skills/hooks/data.md +273 -0
- package/skills/hooks/handle-and-actions.md +103 -0
- package/skills/hooks/navigation.md +110 -0
- package/skills/hooks/outlets.md +62 -0
- package/skills/hooks/state.md +228 -0
- package/skills/hooks/urls.md +135 -0
- package/skills/host-router/SKILL.md +129 -27
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +94 -18
- package/skills/layout/SKILL.md +62 -19
- package/skills/links/SKILL.md +285 -17
- package/skills/loader/SKILL.md +302 -54
- package/skills/middleware/SKILL.md +92 -16
- package/skills/migrate-nextjs/SKILL.md +794 -0
- package/skills/migrate-nextjs/backend-host-swap.md +120 -0
- package/skills/migrate-react-router/SKILL.md +153 -0
- package/skills/migrate-react-router/component-migration.md +196 -0
- package/skills/migrate-react-router/data-and-actions.md +225 -0
- package/skills/migrate-react-router/route-mapping.md +271 -0
- package/skills/mime-routes/SKILL.md +55 -18
- package/skills/observability/SKILL.md +231 -0
- package/skills/parallel/SKILL.md +176 -10
- package/skills/ppr/SKILL.md +904 -0
- package/skills/prerender/SKILL.md +236 -132
- package/skills/rango/SKILL.md +321 -24
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +180 -52
- package/skills/route/SKILL.md +178 -9
- package/skills/router-setup/SKILL.md +140 -11
- package/skills/scripts/SKILL.md +179 -0
- package/skills/server-actions/SKILL.md +776 -0
- package/skills/shell-manifest/SKILL.md +185 -0
- package/skills/streams-and-websockets/SKILL.md +283 -0
- package/skills/tailwind/SKILL.md +28 -4
- package/skills/testing/SKILL.md +131 -0
- package/skills/testing/bindings.md +103 -0
- package/skills/testing/cache-prerender.md +172 -0
- package/skills/testing/client-components.md +131 -0
- package/skills/testing/e2e-parity.md +125 -0
- package/skills/testing/flight.md +91 -0
- package/skills/testing/handles.md +131 -0
- package/skills/testing/loader.md +128 -0
- package/skills/testing/middleware.md +99 -0
- package/skills/testing/render-handler.md +122 -0
- package/skills/testing/response-routes.md +95 -0
- package/skills/testing/reverse-and-types.md +85 -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/theme/SKILL.md +1 -1
- package/skills/typesafety/SKILL.md +45 -616
- package/skills/typesafety/env-and-bindings.md +254 -0
- package/skills/typesafety/generated-files-and-cli.md +342 -0
- package/skills/typesafety/params-and-search.md +153 -0
- package/skills/typesafety/route-types.md +213 -0
- package/skills/use-cache/SKILL.md +121 -15
- package/skills/vercel/SKILL.md +149 -0
- package/skills/view-transitions/SKILL.md +341 -0
- package/src/__augment-tests__/augment.ts +81 -0
- package/src/__augment-tests__/augmented.check.ts +116 -0
- package/src/__internal.ts +1 -66
- package/src/browser/action-coordinator.ts +53 -36
- package/src/browser/action-fence.ts +47 -0
- package/src/browser/app-shell.ts +39 -0
- package/src/browser/app-version.ts +14 -0
- package/src/browser/connection-warmup.ts +134 -0
- package/src/browser/cookie-name.ts +140 -0
- package/src/browser/dev-discovery.ts +66 -0
- package/src/browser/event-controller.ts +400 -168
- 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/link-interceptor.ts +469 -20
- package/src/browser/logging.ts +28 -0
- package/src/browser/merge-segment-loaders.ts +6 -4
- package/src/browser/navigation-bridge.ts +207 -31
- package/src/browser/navigation-client.ts +275 -97
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +208 -329
- package/src/browser/navigation-transaction.ts +9 -59
- package/src/browser/network-error-handler.ts +34 -7
- package/src/browser/notify-listeners.ts +22 -0
- package/src/browser/partial-update.ts +241 -121
- package/src/browser/prefetch/cache.ts +329 -78
- package/src/browser/prefetch/default-strategy.ts +74 -0
- package/src/browser/prefetch/fetch.ts +444 -40
- package/src/browser/prefetch/invalidation.ts +30 -0
- package/src/browser/prefetch/loader.ts +111 -0
- package/src/browser/prefetch/observer.ts +50 -22
- package/src/browser/prefetch/queue.ts +113 -32
- package/src/browser/prefetch/resource-ready.ts +77 -0
- package/src/browser/prefetch/runtime.ts +6 -0
- package/src/browser/rango-state.ts +178 -75
- package/src/browser/react/Link.tsx +179 -75
- package/src/browser/react/NavigationProvider.tsx +222 -123
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/context.ts +11 -2
- package/src/browser/react/filter-segment-order.ts +66 -7
- package/src/browser/react/index.ts +0 -48
- 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 +23 -69
- 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 +32 -7
- package/src/browser/react/use-params.ts +20 -10
- package/src/browser/react/use-reverse.ts +106 -0
- package/src/browser/react/use-router.ts +47 -12
- package/src/browser/react/use-search-params.ts +0 -5
- package/src/browser/react/use-segments.ts +11 -21
- package/src/browser/response-adapter.ts +99 -8
- package/src/browser/rsc-router.tsx +271 -32
- package/src/browser/scroll-restoration.ts +44 -27
- package/src/browser/segment-reconciler.ts +44 -12
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +270 -71
- package/src/browser/types.ts +157 -37
- package/src/browser/validate-redirect-origin.ts +43 -16
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +217 -188
- package/src/build/generate-route-types.ts +6 -1
- package/src/build/index.ts +11 -3
- package/src/build/merge-full-manifests.ts +161 -0
- package/src/build/prefix-tree-utils.ts +123 -0
- package/src/build/route-trie.ts +43 -254
- 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 +521 -65
- package/src/build/route-types/param-extraction.ts +6 -3
- package/src/build/route-types/per-module-writer.ts +33 -12
- package/src/build/route-types/router-processing.ts +408 -161
- package/src/build/route-types/scan-filter.ts +9 -2
- package/src/build/route-types/source-scan.ts +216 -0
- package/src/build/runtime-discovery.ts +32 -29
- package/src/cache/cache-error.ts +104 -0
- package/src/cache/cache-exec-scope.ts +47 -0
- package/src/cache/cache-key-utils.ts +73 -15
- package/src/cache/cache-policy.ts +108 -34
- package/src/cache/cache-runtime.ts +566 -117
- package/src/cache/cache-scope.ts +429 -110
- package/src/cache/cache-tag.ts +149 -0
- package/src/cache/cf/cf-base64.ts +33 -0
- package/src/cache/cf/cf-cache-constants.ts +134 -0
- package/src/cache/cf/cf-cache-store.ts +3027 -392
- package/src/cache/cf/cf-cache-types.ts +417 -0
- package/src/cache/cf/cf-kv-utils.ts +84 -0
- package/src/cache/cf/cf-tag-marker-memo.ts +108 -0
- package/src/cache/cf/cf-zone-purge.ts +101 -0
- package/src/cache/cf/index.ts +11 -16
- package/src/cache/document-cache.ts +184 -53
- package/src/cache/handle-snapshot.ts +92 -1
- package/src/cache/index.ts +32 -20
- package/src/cache/memory-segment-store.ts +286 -37
- package/src/cache/profile-registry.ts +46 -31
- package/src/cache/read-through-swr.ts +66 -16
- package/src/cache/search-params-filter.ts +118 -0
- package/src/cache/segment-codec.ts +80 -25
- package/src/cache/shell-snapshot.ts +516 -0
- package/src/cache/tag-invalidation.ts +230 -0
- package/src/cache/taint.ts +83 -9
- package/src/cache/types.ts +323 -100
- package/src/cache/vercel/index.ts +11 -0
- package/src/cache/vercel/vercel-cache-store.ts +1264 -0
- package/src/client-urls/client-root.tsx +161 -0
- package/src/client-urls/client-urls.ts +665 -0
- package/src/client-urls/navigation.ts +237 -0
- package/src/client-urls/revalidation-protocol.ts +56 -0
- package/src/client-urls/server-projection.ts +563 -0
- package/src/client-urls/types.ts +178 -0
- package/src/client.rsc.tsx +48 -21
- package/src/client.tsx +158 -294
- package/src/cloudflare/index.ts +11 -0
- package/src/cloudflare/tracing.ts +112 -0
- package/src/component-utils.ts +19 -0
- package/src/components/DefaultDocument.tsx +8 -2
- package/src/context-var.ts +84 -2
- package/src/decode-loader-results.ts +160 -0
- package/src/defer.ts +185 -0
- package/src/deps/ssr.ts +4 -2
- package/src/dev-discovery-protocol.ts +11 -0
- package/src/encode-kv.ts +49 -0
- package/src/errors.ts +44 -4
- package/src/escape-script.ts +52 -0
- package/src/handle.ts +104 -34
- package/src/handles/MetaTags.tsx +24 -53
- package/src/handles/Scripts.tsx +183 -0
- package/src/handles/breadcrumbs.ts +35 -8
- package/src/handles/deferred-resolution.ts +134 -0
- package/src/handles/is-thenable.ts +16 -0
- package/src/handles/meta.ts +14 -40
- package/src/handles/script.ts +244 -0
- package/src/host/cookie-handler.ts +9 -60
- package/src/host/errors.ts +13 -22
- package/src/host/index.ts +9 -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 +137 -22
- package/src/index.rsc.ts +111 -13
- package/src/index.ts +150 -19
- package/src/internal-debug.ts +11 -10
- package/src/loader-redirect.tsx +47 -0
- 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-context.ts +13 -1
- package/src/outlet-provider.tsx +16 -6
- package/src/prerender/build-shell-capture.ts +453 -0
- package/src/prerender/param-hash.ts +16 -16
- package/src/prerender/shell-manifest-key.ts +20 -0
- package/src/prerender/store.ts +52 -42
- package/src/prerender.ts +215 -86
- package/src/redirect-origin.ts +143 -0
- package/src/regex-escape.ts +8 -0
- package/src/render-error-thrower.tsx +20 -0
- package/src/response-utils.ts +62 -0
- package/src/reverse.ts +65 -15
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +112 -78
- package/src/route-definition/dsl-helpers.ts +468 -306
- package/src/route-definition/helper-factories.ts +28 -140
- package/src/route-definition/helpers-types.ts +156 -78
- package/src/route-definition/index.ts +4 -2
- package/src/route-definition/redirect.ts +51 -10
- package/src/route-definition/resolve-handler-use.ts +160 -0
- package/src/route-definition/use-item-types.ts +29 -0
- package/src/route-map-builder.ts +102 -74
- package/src/route-types.ts +37 -46
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +211 -22
- package/src/router/error-handling.ts +110 -29
- package/src/router/find-match.ts +129 -30
- package/src/router/handler-context.ts +105 -45
- package/src/router/instrument.ts +401 -0
- package/src/router/intercept-resolution.ts +106 -24
- package/src/router/lazy-includes.ts +86 -62
- package/src/router/loader-resolution.ts +511 -57
- package/src/router/logging.ts +0 -6
- package/src/router/manifest.ts +96 -53
- package/src/router/match-api.ts +190 -219
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +268 -171
- package/src/router/match-middleware/background-revalidation.ts +48 -21
- package/src/router/match-middleware/cache-lookup.ts +332 -291
- package/src/router/match-middleware/cache-store.ts +144 -45
- package/src/router/match-middleware/intercept-resolution.ts +0 -22
- package/src/router/match-middleware/segment-resolution.ts +45 -14
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +124 -43
- package/src/router/metrics.ts +17 -36
- package/src/router/middleware-types.ts +26 -138
- package/src/router/middleware.ts +304 -177
- package/src/router/navigation-snapshot.ts +173 -0
- package/src/router/params-util.ts +23 -0
- package/src/router/parse-pattern.ts +115 -0
- package/src/router/pattern-matching.ts +181 -150
- package/src/router/prefetch-cache-ttl.ts +51 -0
- package/src/router/prefetch-default.ts +59 -0
- package/src/router/prefetch-limits.ts +37 -0
- package/src/router/prerender-match.ts +250 -60
- package/src/router/preview-match.ts +35 -103
- package/src/router/request-classification.ts +291 -0
- package/src/router/revalidation.ts +146 -83
- package/src/router/route-snapshot.ts +256 -0
- package/src/router/route-trie-builder.ts +334 -0
- package/src/router/router-context.ts +6 -28
- package/src/router/router-interfaces.ts +199 -37
- package/src/router/router-options.ts +271 -21
- package/src/router/router-registry.ts +2 -5
- package/src/router/segment-resolution/fresh.ts +235 -89
- package/src/router/segment-resolution/helpers.ts +116 -33
- package/src/router/segment-resolution/loader-cache.ts +187 -39
- package/src/router/segment-resolution/loader-mask.ts +60 -0
- package/src/router/segment-resolution/loader-snapshot.ts +259 -0
- package/src/router/segment-resolution/mask-nested.ts +99 -0
- package/src/router/segment-resolution/revalidation.ts +401 -321
- package/src/router/segment-resolution/static-store.ts +55 -15
- package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
- package/src/router/segment-resolution/view-transition-default.ts +60 -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/substitute-pattern-params.ts +75 -0
- package/src/router/telemetry-otel.ts +171 -200
- package/src/router/telemetry.ts +106 -20
- package/src/router/timeout.ts +53 -22
- package/src/router/tracing.ts +235 -0
- package/src/router/transition-when.ts +76 -0
- package/src/router/trie-matching.ts +171 -59
- package/src/router/types.ts +10 -63
- package/src/router/url-params.ts +57 -0
- package/src/router.ts +296 -77
- package/src/rsc/capture-queue.ts +218 -0
- package/src/rsc/full-payload.ts +77 -0
- package/src/rsc/handler-context.ts +4 -2
- package/src/rsc/handler.ts +901 -519
- package/src/rsc/helpers.ts +245 -47
- package/src/rsc/index.ts +2 -5
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +129 -33
- package/src/rsc/manifest-init.ts +55 -52
- package/src/rsc/nonce.ts +10 -1
- package/src/rsc/origin-guard.ts +39 -25
- package/src/rsc/progressive-enhancement.ts +381 -74
- package/src/rsc/redirect-guard.ts +102 -0
- package/src/rsc/render-pipeline.ts +611 -0
- package/src/rsc/response-cache-serve.ts +259 -0
- package/src/rsc/response-error.ts +79 -12
- package/src/rsc/response-route-handler.ts +80 -206
- package/src/rsc/routine-plan.ts +359 -0
- package/src/rsc/rsc-rendering.ts +1625 -156
- package/src/rsc/runtime-warnings.ts +23 -10
- package/src/rsc/server-action.ts +424 -133
- package/src/rsc/shell-build-manifest.ts +336 -0
- package/src/rsc/shell-capture-constants.ts +45 -0
- package/src/rsc/shell-capture.ts +2063 -0
- package/src/rsc/shell-serve.ts +337 -0
- package/src/rsc/ssr-setup.ts +113 -18
- package/src/rsc/stream-idle.ts +137 -0
- package/src/rsc/transition-gate.ts +86 -0
- package/src/rsc/types.ts +100 -6
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +35 -30
- package/src/segment-content-promise.ts +67 -0
- package/src/segment-fragments.ts +165 -0
- package/src/segment-loader-promise.ts +167 -0
- package/src/segment-system.tsx +446 -208
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +484 -51
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +162 -15
- package/src/server/handle-store.ts +209 -70
- package/src/server/loader-registry.ts +38 -46
- package/src/server/request-context.ts +940 -184
- package/src/server.ts +7 -2
- package/src/ssr/index.tsx +631 -180
- package/src/ssr/inject-rsc-eager.ts +167 -0
- package/src/ssr/preinit-client-references.ts +106 -0
- package/src/ssr/ssr-root.tsx +262 -0
- package/src/static-handler.ts +45 -20
- package/src/testing/cache-status.ts +162 -0
- package/src/testing/collect-handle.ts +46 -0
- package/src/testing/dispatch.ts +951 -0
- package/src/testing/dom.entry.ts +22 -0
- package/src/testing/e2e/fixture.ts +188 -0
- package/src/testing/e2e/index.ts +147 -0
- package/src/testing/e2e/matchers.ts +35 -0
- package/src/testing/e2e/page-helpers.ts +319 -0
- package/src/testing/e2e/parity.ts +400 -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 +199 -0
- package/src/testing/index.ts +121 -0
- package/src/testing/internal/context.ts +380 -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 +371 -0
- package/src/testing/render-route.tsx +667 -0
- package/src/testing/run-loader.ts +423 -0
- package/src/testing/run-middleware.ts +219 -0
- package/src/testing/run-transition-when.ts +197 -0
- package/src/testing/shell-status.ts +206 -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 +56 -84
- 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 +15 -35
- package/src/types/cache-types.ts +17 -8
- package/src/types/error-types.ts +30 -90
- package/src/types/global-namespace.ts +54 -41
- package/src/types/handler-context.ts +155 -78
- package/src/types/index.ts +3 -10
- package/src/types/loader-types.ts +72 -15
- package/src/types/request-scope.ts +112 -0
- package/src/types/route-config.ts +20 -52
- package/src/types/route-entry.ts +15 -7
- package/src/types/segments.ts +148 -15
- package/src/urls/include-helper.ts +59 -75
- package/src/urls/include-provider.ts +71 -0
- package/src/urls/index.ts +2 -11
- package/src/urls/path-helper-types.ts +110 -25
- package/src/urls/path-helper.ts +70 -115
- package/src/urls/pattern-types.ts +113 -19
- package/src/urls/response-types.ts +25 -22
- package/src/urls/type-extraction.ts +98 -154
- package/src/urls/urls-function.ts +1 -19
- package/src/use-loader.tsx +404 -86
- package/src/vercel/index.ts +11 -0
- package/src/vercel/tracing.ts +89 -0
- package/src/vite/debug.ts +185 -0
- package/src/vite/discovery/bundle-postprocess.ts +46 -45
- package/src/vite/discovery/client-urls-projection.ts +322 -0
- package/src/vite/discovery/dev-prerender-cache.ts +117 -0
- package/src/vite/discovery/discover-routers.ts +178 -147
- package/src/vite/discovery/discovery-errors.ts +255 -0
- package/src/vite/discovery/gate-state.ts +171 -0
- package/src/vite/discovery/prerender-collection.ts +243 -134
- package/src/vite/discovery/route-types-writer.ts +40 -84
- package/src/vite/discovery/self-gen-tracking.ts +27 -1
- package/src/vite/discovery/shell-prerender-phase.ts +397 -0
- package/src/vite/discovery/state.ts +116 -9
- package/src/vite/discovery/virtual-module-codegen.ts +226 -87
- package/src/vite/encryption-key.ts +29 -0
- package/src/vite/index.ts +16 -0
- package/src/vite/inject-client-debug.ts +88 -0
- package/src/vite/plugin-types.ts +294 -6
- package/src/vite/plugins/cjs-to-esm.ts +16 -19
- package/src/vite/plugins/client-ref-dedup.ts +16 -11
- package/src/vite/plugins/client-ref-hashing.ts +28 -15
- package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
- package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
- package/src/vite/plugins/expose-action-id.ts +50 -97
- package/src/vite/plugins/expose-id-utils.ts +96 -51
- package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
- package/src/vite/plugins/expose-ids/handler-transform.ts +15 -64
- package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
- package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
- package/src/vite/plugins/expose-internal-ids.ts +599 -317
- package/src/vite/plugins/performance-tracks.ts +89 -0
- package/src/vite/plugins/refresh-cmd.ts +89 -27
- package/src/vite/plugins/server-ref-hashing.ts +74 -0
- package/src/vite/plugins/server-reference-pattern.ts +10 -0
- package/src/vite/plugins/use-cache-transform.ts +73 -83
- package/src/vite/plugins/vercel-output.ts +384 -0
- package/src/vite/plugins/version-injector.ts +39 -29
- package/src/vite/plugins/version-plugin.ts +45 -40
- package/src/vite/plugins/virtual-entries.ts +193 -30
- package/src/vite/rango.ts +298 -134
- package/src/vite/router-discovery.ts +1803 -180
- package/src/vite/utils/ast-handler-extract.ts +26 -35
- package/src/vite/utils/banner.ts +1 -1
- 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 +1 -59
- package/src/vite/utils/package-resolution.ts +21 -52
- package/src/vite/utils/prerender-utils.ts +123 -44
- package/src/vite/utils/shared-utils.ts +158 -44
- 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.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
|
@@ -7,17 +7,16 @@
|
|
|
7
7
|
* and progressive enhancement (no-JS form submissions).
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import {
|
|
11
|
-
import { RouteNotFoundError } from "../errors.js";
|
|
10
|
+
import { isRouteNotFoundError } from "../errors.js";
|
|
12
11
|
import { matchMiddleware, executeMiddleware } from "../router/middleware.js";
|
|
13
12
|
import {
|
|
14
13
|
runWithRequestContext,
|
|
15
14
|
setRequestContextParams,
|
|
16
|
-
|
|
15
|
+
getRequestContext,
|
|
16
|
+
_getRequestContext,
|
|
17
17
|
createRequestContext,
|
|
18
18
|
} from "../server/request-context.js";
|
|
19
19
|
import * as rscDeps from "@vitejs/plugin-rsc/rsc";
|
|
20
|
-
|
|
21
20
|
import type {
|
|
22
21
|
RscPayload,
|
|
23
22
|
CreateRSCHandlerOptions,
|
|
@@ -30,6 +29,18 @@ import {
|
|
|
30
29
|
interceptRedirectForPartial,
|
|
31
30
|
buildRouteMiddlewareEntries,
|
|
32
31
|
} from "./helpers.js";
|
|
32
|
+
import { renderRscFlightStage, renderRscResponse } from "./render-pipeline.js";
|
|
33
|
+
import { guardOutgoingRedirect } from "./redirect-guard.js";
|
|
34
|
+
import {
|
|
35
|
+
resolveSoftRedirectUrl,
|
|
36
|
+
resolveExternalRedirect,
|
|
37
|
+
safeSameOriginLanding,
|
|
38
|
+
} from "../redirect-origin.js";
|
|
39
|
+
import { resolvedHandleStream } from "../handles/deferred-resolution.js";
|
|
40
|
+
import {
|
|
41
|
+
isWebSocketUpgradeResponse,
|
|
42
|
+
appendVaryAccept,
|
|
43
|
+
} from "../response-utils.js";
|
|
33
44
|
import {
|
|
34
45
|
handleResponseRoute,
|
|
35
46
|
type ResponseRouteMatch,
|
|
@@ -38,23 +49,28 @@ import { generateNonce, nonce as nonceToken } from "./nonce.js";
|
|
|
38
49
|
import { VERSION } from "@rangojs/router:version";
|
|
39
50
|
import type { ErrorPhase } from "../types.js";
|
|
40
51
|
import type { RouterRequestInput } from "../router/router-interfaces.js";
|
|
41
|
-
import {
|
|
52
|
+
import {
|
|
53
|
+
invokeOnError,
|
|
54
|
+
resolveDefaultNotFound,
|
|
55
|
+
} from "../router/error-handling.js";
|
|
42
56
|
import {
|
|
43
57
|
createReverseFunction,
|
|
44
58
|
stripInternalParams,
|
|
45
59
|
} from "../router/handler-context.js";
|
|
46
|
-
import { getRouterContext } from "../router/router-context.js";
|
|
47
|
-
import { resolveSink, safeEmit } from "../router/telemetry.js";
|
|
48
60
|
import { contextSet } from "../context-var.js";
|
|
49
61
|
import {
|
|
50
62
|
hasCachedManifest,
|
|
51
|
-
getRouteTrie,
|
|
52
|
-
getPrecomputedEntries,
|
|
53
63
|
waitForManifestReady,
|
|
54
64
|
getRouterManifest,
|
|
55
65
|
getRouterTrie,
|
|
56
66
|
} from "../route-map-builder.js";
|
|
57
67
|
import type { HandlerContext } from "./handler-context.js";
|
|
68
|
+
import type { CacheErrorCategory } from "../cache/cache-error.js";
|
|
69
|
+
import {
|
|
70
|
+
compileSearchParamsFilter,
|
|
71
|
+
type SearchParamsFilter,
|
|
72
|
+
} from "../cache/search-params-filter.js";
|
|
73
|
+
import type { SegmentCacheStore } from "../cache/types.js";
|
|
58
74
|
import { buildRouterTrieFromUrlpatterns } from "./manifest-init.js";
|
|
59
75
|
import { handleProgressiveEnhancement } from "./progressive-enhancement.js";
|
|
60
76
|
import {
|
|
@@ -63,25 +79,40 @@ import {
|
|
|
63
79
|
type ActionContinuation,
|
|
64
80
|
} from "./server-action.js";
|
|
65
81
|
import { handleLoaderFetch } from "./loader-fetch.js";
|
|
66
|
-
import {
|
|
82
|
+
import { applyStreamIdleTimeout } from "./stream-idle.js";
|
|
83
|
+
import {
|
|
84
|
+
checkRequestOrigin,
|
|
85
|
+
ORIGIN_CHECK_PHASE_BY_MODE,
|
|
86
|
+
} from "./origin-guard.js";
|
|
67
87
|
import { handleRscRendering } from "./rsc-rendering.js";
|
|
68
88
|
import {
|
|
69
89
|
withTimeout,
|
|
90
|
+
isTimeoutEnabled,
|
|
70
91
|
RouterTimeoutError,
|
|
71
92
|
createDefaultTimeoutResponse,
|
|
72
93
|
type TimeoutPhase,
|
|
94
|
+
type RenderTimeoutContext,
|
|
73
95
|
} from "../router/timeout.js";
|
|
74
96
|
import {
|
|
75
97
|
createMetricsStore,
|
|
76
98
|
appendMetric,
|
|
77
99
|
buildMetricsTiming,
|
|
78
100
|
} from "../router/metrics.js";
|
|
101
|
+
import { observePhase, PHASES } from "../router/instrument.js";
|
|
102
|
+
import { safeEmit, resolveSink, getRequestId } from "../router/telemetry.js";
|
|
79
103
|
import {
|
|
80
104
|
startSSRSetup,
|
|
81
|
-
|
|
105
|
+
createSsrHtmlStage,
|
|
82
106
|
mayNeedSSR,
|
|
107
|
+
isRscRequest,
|
|
83
108
|
SSR_SETUP_VAR,
|
|
84
109
|
} from "./ssr-setup.js";
|
|
110
|
+
import {
|
|
111
|
+
classifyRequest,
|
|
112
|
+
type RequestPlan,
|
|
113
|
+
type ExecutableRequestPlan,
|
|
114
|
+
} from "../router/request-classification.js";
|
|
115
|
+
import { INTERNAL_RANGO_DEBUG } from "../internal-debug.js";
|
|
85
116
|
|
|
86
117
|
/**
|
|
87
118
|
* Create an RSC request handler.
|
|
@@ -116,12 +147,35 @@ import {
|
|
|
116
147
|
* });
|
|
117
148
|
* ```
|
|
118
149
|
*/
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Response that tells the client to do a full document navigation. Shared by
|
|
153
|
+
* the terminal reload plans (version-mismatch and app-switch): an empty 200
|
|
154
|
+
* carrying X-RSC-Reload, which the client turns into window.location.href.
|
|
155
|
+
*/
|
|
156
|
+
function createReloadResponse(reloadUrl: string) {
|
|
157
|
+
return createResponseWithMergedHeaders(null, {
|
|
158
|
+
status: 200,
|
|
159
|
+
headers: {
|
|
160
|
+
"X-RSC-Reload": reloadUrl,
|
|
161
|
+
"content-type": "text/x-component;charset=utf-8",
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
119
166
|
export function createRSCHandler<
|
|
120
167
|
TEnv = unknown,
|
|
121
168
|
TRoutes extends Record<string, string> = Record<string, string>,
|
|
122
169
|
>(options: CreateRSCHandlerOptions<TEnv, TRoutes>) {
|
|
123
170
|
const { router, version = VERSION, nonce: nonceProvider } = options;
|
|
124
171
|
|
|
172
|
+
// Handler-owned registry of explicit per-scope stores from cache({ store }).
|
|
173
|
+
// Lives in the closure so it is scoped per handler (multi-router deployments
|
|
174
|
+
// get separate registries) and accumulates every explicit store this handler
|
|
175
|
+
// resolves across requests. updateTag()/revalidateTag() iterate it to reach
|
|
176
|
+
// stores not covered by the app-level ctx._cacheStore.
|
|
177
|
+
const explicitTaggedStores = new Set<SegmentCacheStore>();
|
|
178
|
+
|
|
125
179
|
// Use provided deps or default to @vitejs/plugin-rsc/rsc exports
|
|
126
180
|
const deps = options.deps ?? rscDeps;
|
|
127
181
|
const {
|
|
@@ -161,10 +215,13 @@ export function createRSCHandler<
|
|
|
161
215
|
phase: ErrorPhase,
|
|
162
216
|
context: Parameters<typeof invokeOnError<TEnv>>[3],
|
|
163
217
|
): void {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
218
|
+
// Guard: abort signal handlers fire asynchronously outside the ALS
|
|
219
|
+
// request scope, so the context may be gone. Skip dedup in that
|
|
220
|
+
// case — the error is from a cancelled stream, not a real failure.
|
|
221
|
+
const reqCtx = _getRequestContext();
|
|
222
|
+
if (error != null && typeof error === "object" && reqCtx) {
|
|
223
|
+
if (reqCtx._reportedErrors.has(error)) return;
|
|
224
|
+
reqCtx._reportedErrors.add(error);
|
|
168
225
|
}
|
|
169
226
|
invokeOnError(router.onError, error, phase, context, "RSC");
|
|
170
227
|
}
|
|
@@ -193,7 +250,44 @@ export function createRSCHandler<
|
|
|
193
250
|
actionId?: string,
|
|
194
251
|
): Promise<Response> {
|
|
195
252
|
const timeoutError = new RouterTimeoutError(phase, durationMs);
|
|
253
|
+
const requestContext = _getRequestContext<TEnv>();
|
|
254
|
+
const cursor = requestContext?._renderForeground;
|
|
255
|
+
const render: RenderTimeoutContext | undefined =
|
|
256
|
+
phase === "render-start" && cursor
|
|
257
|
+
? {
|
|
258
|
+
mode: cursor.mode,
|
|
259
|
+
phase: cursor.phase,
|
|
260
|
+
state: cursor.state,
|
|
261
|
+
completed: cursor.completed,
|
|
262
|
+
total: cursor.total,
|
|
263
|
+
...(cursor.phaseStartedAt !== undefined && {
|
|
264
|
+
phaseDurationMs: performance.now() - cursor.phaseStartedAt,
|
|
265
|
+
}),
|
|
266
|
+
}
|
|
267
|
+
: undefined;
|
|
268
|
+
const trace =
|
|
269
|
+
phase === "render-start" ? requestContext?._activeRoutine : undefined;
|
|
270
|
+
const activeEntries = trace?.active() ?? [];
|
|
271
|
+
const activeStep = activeEntries.at(-1);
|
|
272
|
+
const activeAt = performance.now();
|
|
273
|
+
const routineSnapshot =
|
|
274
|
+
trace && activeStep
|
|
275
|
+
? {
|
|
276
|
+
name: trace.name,
|
|
277
|
+
path: activeEntries.map((entry) => entry.name),
|
|
278
|
+
durationMs: activeAt - activeStep.startedAt,
|
|
279
|
+
}
|
|
280
|
+
: undefined;
|
|
281
|
+
|
|
282
|
+
if (INTERNAL_RANGO_DEBUG && trace && activeStep) {
|
|
283
|
+
console.log(
|
|
284
|
+
`[routine] TIMEOUT ${request.method} ${url.pathname} (${trace.name})\n${trace.formatActive(activeEntries, activeAt)}`,
|
|
285
|
+
);
|
|
286
|
+
}
|
|
196
287
|
|
|
288
|
+
// Each surface gets its OWN shallow render snapshot. A consumer that mutates
|
|
289
|
+
// its copy must not corrupt what the other two observe. The internal-debug
|
|
290
|
+
// routine snapshot is bounded metadata sent only to onError.
|
|
197
291
|
callOnError(timeoutError, phase === "action" ? "action" : "handler", {
|
|
198
292
|
request,
|
|
199
293
|
url,
|
|
@@ -201,26 +295,28 @@ export function createRSCHandler<
|
|
|
201
295
|
routeKey,
|
|
202
296
|
actionId,
|
|
203
297
|
handledByBoundary: false,
|
|
204
|
-
metadata: {
|
|
298
|
+
metadata: {
|
|
299
|
+
timeout: true,
|
|
300
|
+
phase,
|
|
301
|
+
durationMs,
|
|
302
|
+
...(render && { render: { ...render } }),
|
|
303
|
+
...(routineSnapshot && { routine: routineSnapshot }),
|
|
304
|
+
},
|
|
205
305
|
});
|
|
206
306
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
} catch {
|
|
223
|
-
// Router context may not be available
|
|
307
|
+
if (router.telemetry) {
|
|
308
|
+
safeEmit(resolveSink(router.telemetry), {
|
|
309
|
+
type: "request.timeout",
|
|
310
|
+
timestamp: performance.now(),
|
|
311
|
+
requestId: getRequestId(request),
|
|
312
|
+
phase,
|
|
313
|
+
pathname: url.pathname,
|
|
314
|
+
routeKey,
|
|
315
|
+
actionId,
|
|
316
|
+
durationMs,
|
|
317
|
+
customHandler: !!router.onTimeout,
|
|
318
|
+
...(render && { render: { ...render } }),
|
|
319
|
+
});
|
|
224
320
|
}
|
|
225
321
|
|
|
226
322
|
if (router.onTimeout) {
|
|
@@ -233,6 +329,7 @@ export function createRSCHandler<
|
|
|
233
329
|
routeKey,
|
|
234
330
|
actionId,
|
|
235
331
|
durationMs,
|
|
332
|
+
...(render && { render: { ...render } }),
|
|
236
333
|
});
|
|
237
334
|
} catch (e) {
|
|
238
335
|
if (process.env.NODE_ENV !== "production") {
|
|
@@ -249,20 +346,66 @@ export function createRSCHandler<
|
|
|
249
346
|
* Build a 200 Flight response that carries a redirect URL and optional state.
|
|
250
347
|
* Used when a partial/action request results in a redirect -- fetch
|
|
251
348
|
* auto-follows 3xx so we send the redirect as payload metadata instead.
|
|
349
|
+
*
|
|
350
|
+
* The redirect URL is resolved with {@link resolveSoftRedirectUrl} against
|
|
351
|
+
* the current request origin so an unsafe target never leaves as Flight
|
|
352
|
+
* metadata (client validators remain defense-in-depth).
|
|
252
353
|
*/
|
|
253
354
|
function createRedirectFlightResponse(
|
|
254
355
|
redirectUrl: string,
|
|
255
356
|
locationState?: Record<string, unknown>,
|
|
357
|
+
external?: boolean,
|
|
256
358
|
): Response {
|
|
359
|
+
const reqCtx = _getRequestContext<TEnv>();
|
|
360
|
+
const requestOrigin =
|
|
361
|
+
reqCtx?.url.origin ?? new URL("http://localhost").origin;
|
|
362
|
+
// Resolve with the same policy as 3xx guardOutgoingRedirect. Keep
|
|
363
|
+
// external:true only when the external scheme check passed; a neutralized
|
|
364
|
+
// landing (javascript:/blocked) must not advertise external.
|
|
365
|
+
let resolvedUrl: string;
|
|
366
|
+
let resolvedExternal = false;
|
|
367
|
+
if (external) {
|
|
368
|
+
const ext = resolveExternalRedirect(redirectUrl, requestOrigin);
|
|
369
|
+
if (ext !== null) {
|
|
370
|
+
resolvedUrl = ext;
|
|
371
|
+
resolvedExternal = true;
|
|
372
|
+
} else {
|
|
373
|
+
resolvedUrl = safeSameOriginLanding(router.basename);
|
|
374
|
+
}
|
|
375
|
+
} else {
|
|
376
|
+
resolvedUrl = resolveSoftRedirectUrl(
|
|
377
|
+
redirectUrl,
|
|
378
|
+
requestOrigin,
|
|
379
|
+
router.basename,
|
|
380
|
+
false,
|
|
381
|
+
);
|
|
382
|
+
}
|
|
257
383
|
const redirectPayload: RscPayload = {
|
|
258
384
|
metadata: {
|
|
259
|
-
pathname:
|
|
385
|
+
pathname: resolvedUrl,
|
|
260
386
|
segments: [],
|
|
261
|
-
redirect: {
|
|
387
|
+
redirect: {
|
|
388
|
+
url: resolvedUrl,
|
|
389
|
+
...(resolvedExternal && { external: true }),
|
|
390
|
+
},
|
|
262
391
|
...(locationState && { locationState }),
|
|
263
392
|
},
|
|
264
393
|
};
|
|
265
|
-
const rscStream =
|
|
394
|
+
const rscStream = reqCtx
|
|
395
|
+
? renderRscFlightStage({
|
|
396
|
+
ctx: { renderToReadableStream, callOnError },
|
|
397
|
+
request: reqCtx.request,
|
|
398
|
+
url: reqCtx.url,
|
|
399
|
+
env: reqCtx.env,
|
|
400
|
+
payload: redirectPayload,
|
|
401
|
+
tracking: {
|
|
402
|
+
mode: reqCtx.url.searchParams.has("_rsc_action")
|
|
403
|
+
? "action-revalidation"
|
|
404
|
+
: "partial",
|
|
405
|
+
routeKey: reqCtx._routeName,
|
|
406
|
+
},
|
|
407
|
+
}).stream
|
|
408
|
+
: renderToReadableStream<RscPayload>(redirectPayload);
|
|
266
409
|
return createResponseWithMergedHeaders(rscStream, {
|
|
267
410
|
status: 200,
|
|
268
411
|
headers: { "content-type": "text/x-component;charset=utf-8" },
|
|
@@ -274,6 +417,7 @@ export function createRSCHandler<
|
|
|
274
417
|
const handlerCtx: HandlerContext<TEnv> = {
|
|
275
418
|
router,
|
|
276
419
|
version,
|
|
420
|
+
devDiscoveryEpoch: router.__devDiscoveryEpoch,
|
|
277
421
|
renderToReadableStream,
|
|
278
422
|
decodeReply,
|
|
279
423
|
createTemporaryReferenceSet,
|
|
@@ -343,7 +487,8 @@ export function createRSCHandler<
|
|
|
343
487
|
// Resolve cache store configuration
|
|
344
488
|
// Priority: options.cache (handler override) > router.cache (router default)
|
|
345
489
|
// Store is enabled only if: config provided, enabled, and no ?__no_cache query param
|
|
346
|
-
let cacheStore
|
|
490
|
+
let cacheStore: SegmentCacheStore | undefined;
|
|
491
|
+
let searchParamsFilter: SearchParamsFilter | undefined;
|
|
347
492
|
const cacheOption = options.cache ?? router.cache;
|
|
348
493
|
if (cacheOption && !url.searchParams.has("__no_cache")) {
|
|
349
494
|
const cacheConfig =
|
|
@@ -353,6 +498,9 @@ export function createRSCHandler<
|
|
|
353
498
|
|
|
354
499
|
if (cacheConfig.enabled !== false) {
|
|
355
500
|
cacheStore = cacheConfig.store;
|
|
501
|
+
searchParamsFilter = compileSearchParamsFilter(
|
|
502
|
+
cacheConfig.searchParams,
|
|
503
|
+
);
|
|
356
504
|
}
|
|
357
505
|
}
|
|
358
506
|
|
|
@@ -410,10 +558,25 @@ export function createRSCHandler<
|
|
|
410
558
|
url,
|
|
411
559
|
variables,
|
|
412
560
|
cacheStore,
|
|
561
|
+
searchParamsFilter,
|
|
562
|
+
explicitTaggedStores,
|
|
413
563
|
cacheProfiles: router.cacheProfiles,
|
|
414
564
|
executionContext: executionCtx,
|
|
415
565
|
themeConfig: router.themeConfig,
|
|
566
|
+
stateCookieName: router.resolvedStateCookieName,
|
|
567
|
+
version,
|
|
416
568
|
});
|
|
569
|
+
// Gate on the SAME enabled-semantics withTimeout uses (isTimeoutEnabled):
|
|
570
|
+
// a `renderStartMs: 0` / negative opt-out disables the timeout, so the
|
|
571
|
+
// driver's cursor bookkeeping (which only the timeout reads) must be off too.
|
|
572
|
+
requestContext._renderDiagnosticsEnabled = isTimeoutEnabled(
|
|
573
|
+
router.timeouts.renderStartMs,
|
|
574
|
+
);
|
|
575
|
+
// Thread the true request entry timestamp onto the context so a metrics
|
|
576
|
+
// store created MID-request (ctx.debugPerformance() / getMetricsStore) anchors
|
|
577
|
+
// to the real start, not the opt-in moment — phases that began earlier then
|
|
578
|
+
// report non-negative offsets. Set unconditionally: debug may be enabled later.
|
|
579
|
+
requestContext._handlerStart = handlerStart;
|
|
417
580
|
if (earlyMetricsStore) {
|
|
418
581
|
requestContext._debugPerformance = true;
|
|
419
582
|
requestContext._metricsStore = earlyMetricsStore;
|
|
@@ -422,7 +585,7 @@ export function createRSCHandler<
|
|
|
422
585
|
// can surface non-fatal errors through the router's onError callback.
|
|
423
586
|
requestContext._reportBackgroundError = (
|
|
424
587
|
error: unknown,
|
|
425
|
-
category:
|
|
588
|
+
category: CacheErrorCategory,
|
|
426
589
|
) => {
|
|
427
590
|
callOnError(error, "cache", {
|
|
428
591
|
request,
|
|
@@ -452,82 +615,213 @@ export function createRSCHandler<
|
|
|
452
615
|
// - Server components during rendering
|
|
453
616
|
// - Error boundaries
|
|
454
617
|
// - Streaming
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
618
|
+
// Store basename on request context (scoped per-request via existing ALS)
|
|
619
|
+
requestContext._basename = router.basename;
|
|
620
|
+
requestContext._routerId = router.id;
|
|
621
|
+
|
|
622
|
+
// Resolved span tracing for this request (read at each traced phase).
|
|
623
|
+
requestContext._tracing = router.tracing;
|
|
624
|
+
|
|
625
|
+
// The "rango.request" span is opened inside the request context so the
|
|
626
|
+
// Cloudflare runner can read executionContext.tracing, and so every nested
|
|
627
|
+
// phase span (and the platform's automatic KV/D1/fetch spans) nests under
|
|
628
|
+
// it. Construction-bound: the span ends when the Response is built, never
|
|
629
|
+
// wrapping the streamed body. metric:false — handler:total is metered
|
|
630
|
+
// directly below (a grand total incl. the pre-context bootstrap timings).
|
|
631
|
+
// When tracing is off this is a direct pass-through.
|
|
632
|
+
return runWithRequestContext(requestContext, () =>
|
|
633
|
+
observePhase(PHASES.request, async (span) => {
|
|
634
|
+
span.setAttribute("http.method", request.method);
|
|
635
|
+
// The matched route template is not known until match() runs later, so
|
|
636
|
+
// emit the concrete path as url.path (low-level), NOT http.route — the
|
|
637
|
+
// latter is reserved for the low-cardinality template (OTel convention).
|
|
638
|
+
span.setAttribute("url.path", url.pathname);
|
|
639
|
+
|
|
640
|
+
// Core handler logic (wrapped by middleware)
|
|
641
|
+
const coreHandler = async (): Promise<Response> => {
|
|
642
|
+
return coreRequestHandler(request, env, url, variables, nonce);
|
|
643
|
+
};
|
|
460
644
|
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
const
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
645
|
+
// Execute middleware chain if any, otherwise call core handler
|
|
646
|
+
// directly; the response is finalized below, inside the response span.
|
|
647
|
+
const hasMiddleware = matchedMiddleware.length > 0;
|
|
648
|
+
const downstream = hasMiddleware
|
|
649
|
+
? await executeMiddleware(
|
|
650
|
+
matchedMiddleware,
|
|
651
|
+
request,
|
|
652
|
+
env,
|
|
653
|
+
variables,
|
|
654
|
+
coreHandler,
|
|
655
|
+
createReverseFunction(getRequiredRouteMap()),
|
|
656
|
+
)
|
|
657
|
+
: await coreHandler();
|
|
658
|
+
|
|
659
|
+
// Final response construction + host handoff, wrapped in rango.response
|
|
660
|
+
// — the explicit stream-handoff marker. The callback is synchronous, so
|
|
661
|
+
// the span ends immediately before the handler returns the response to
|
|
662
|
+
// the host; it never reads or wraps response.body. A downstream throw
|
|
663
|
+
// skips it entirely (no response exists to hand off).
|
|
664
|
+
return observePhase(PHASES.response, (responseSpan) => {
|
|
665
|
+
let response: Response;
|
|
666
|
+
if (hasMiddleware) {
|
|
667
|
+
if (
|
|
668
|
+
url.searchParams.has("_rsc_partial") ||
|
|
669
|
+
url.searchParams.has("_rsc_action")
|
|
670
|
+
) {
|
|
671
|
+
const intercepted = interceptRedirectForPartial(
|
|
672
|
+
downstream,
|
|
673
|
+
createRedirectFlightResponse,
|
|
674
|
+
{ requestOrigin: url.origin, basename: router.basename },
|
|
675
|
+
);
|
|
676
|
+
response = intercepted ?? finalizeResponse(downstream);
|
|
677
|
+
} else {
|
|
678
|
+
response = finalizeResponse(downstream);
|
|
679
|
+
}
|
|
680
|
+
} else {
|
|
681
|
+
response = downstream;
|
|
682
|
+
}
|
|
472
683
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
const
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
684
|
+
// Finalize metrics after all middleware (including post-next work)
|
|
685
|
+
// has completed so :post spans are captured in the timeline.
|
|
686
|
+
// Handler timing parts are always emitted (even without debug metrics)
|
|
687
|
+
// so non-debug requests still get bootstrap Server-Timing entries.
|
|
688
|
+
const handlerTimingArr: string[] = variables.__handlerTiming || [];
|
|
689
|
+
// Preserve any existing Server-Timing set by response routes or middleware
|
|
690
|
+
const existingTiming = response.headers.get("Server-Timing");
|
|
691
|
+
const timingParts = existingTiming
|
|
692
|
+
? [existingTiming, ...handlerTimingArr]
|
|
693
|
+
: [...handlerTimingArr];
|
|
694
|
+
|
|
695
|
+
const metricsStore = requestContext._metricsStore;
|
|
696
|
+
if (metricsStore) {
|
|
697
|
+
// When the store was created at handler start (earlyMetricsStore),
|
|
698
|
+
// handler:total covers the full request. When ctx.debugPerformance()
|
|
699
|
+
// created the store mid-request its requestStart is now the threaded
|
|
700
|
+
// _handlerStart (== handlerStart), so both branches yield the true
|
|
701
|
+
// request entry; reading the store's own anchor keeps this correct even
|
|
702
|
+
// if a store ever lands without the threading (falls back to its start).
|
|
703
|
+
const totalStart = earlyMetricsStore
|
|
704
|
+
? handlerStart
|
|
705
|
+
: metricsStore.requestStart;
|
|
706
|
+
appendMetric(
|
|
707
|
+
metricsStore,
|
|
708
|
+
"handler:total",
|
|
709
|
+
totalStart,
|
|
710
|
+
performance.now() - totalStart,
|
|
711
|
+
);
|
|
712
|
+
const metricsTiming = buildMetricsTiming(
|
|
713
|
+
request.method,
|
|
714
|
+
url.pathname,
|
|
715
|
+
metricsStore,
|
|
716
|
+
);
|
|
717
|
+
if (metricsTiming) timingParts.push(metricsTiming);
|
|
718
|
+
}
|
|
488
719
|
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
metricsStore,
|
|
511
|
-
"handler:total",
|
|
512
|
-
totalStart,
|
|
513
|
-
performance.now() - totalStart,
|
|
514
|
-
);
|
|
515
|
-
const metricsTiming = buildMetricsTiming(
|
|
516
|
-
request.method,
|
|
517
|
-
url.pathname,
|
|
518
|
-
metricsStore,
|
|
519
|
-
);
|
|
520
|
-
if (metricsTiming) timingParts.push(metricsTiming);
|
|
521
|
-
}
|
|
720
|
+
const fullTiming = timingParts.join(", ");
|
|
721
|
+
if (fullTiming && !isWebSocketUpgradeResponse(response)) {
|
|
722
|
+
try {
|
|
723
|
+
response.headers.set("Server-Timing", fullTiming);
|
|
724
|
+
} catch {
|
|
725
|
+
// Immutable headers (e.g. a passed-through platform Response) — drop
|
|
726
|
+
// the timing header, never the response. Instrumentation must not
|
|
727
|
+
// 500 a request.
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
// Single open-redirect chokepoint: every response (PE, full-page,
|
|
732
|
+
// middleware short-circuit, response-route) funnels through here, so
|
|
733
|
+
// guarding browser-followed (3xx) redirects once covers them all and any
|
|
734
|
+
// future redirect exit. Soft SPA/Flight redirects are 200/204 and pass
|
|
735
|
+
// through untouched (validated client-side instead).
|
|
736
|
+
const guarded = guardOutgoingRedirect(
|
|
737
|
+
response,
|
|
738
|
+
url.origin,
|
|
739
|
+
router.basename,
|
|
740
|
+
);
|
|
522
741
|
|
|
523
|
-
|
|
524
|
-
|
|
742
|
+
// Stream-idle watchdog (opt-in via timeouts.streamIdleMs): bounds
|
|
743
|
+
// end-to-end idle flow on the streamed body — see rsc/stream-idle.ts
|
|
744
|
+
// for the semantics. Applied at this finalization chokepoint so every
|
|
745
|
+
// streaming exit is covered; websocket upgrades must never be
|
|
746
|
+
// reconstructed and bodiless responses have nothing to bound. The
|
|
747
|
+
// trip fires POST-handoff (the request ALS may be gone), so it
|
|
748
|
+
// reports via the eagerly captured surfaces — callOnError +
|
|
749
|
+
// router.telemetry directly — mirroring handleStore.onError.
|
|
750
|
+
// onTimeout does NOT apply: the response already left the handler,
|
|
751
|
+
// so no replacement Response can be served mid-stream.
|
|
752
|
+
let finalResponse = guarded;
|
|
753
|
+
const streamIdleMs = router.timeouts.streamIdleMs;
|
|
754
|
+
// Websocket check FIRST: a workerd upgrade response must never have
|
|
755
|
+
// its body getter poked (same invariant as the body_kind attribute
|
|
756
|
+
// below).
|
|
757
|
+
if (
|
|
758
|
+
isTimeoutEnabled(streamIdleMs) &&
|
|
759
|
+
!isWebSocketUpgradeResponse(guarded) &&
|
|
760
|
+
guarded.body
|
|
761
|
+
) {
|
|
762
|
+
const routeKey = requestContext._routeName;
|
|
763
|
+
finalResponse = applyStreamIdleTimeout(
|
|
764
|
+
guarded,
|
|
765
|
+
streamIdleMs!,
|
|
766
|
+
(tripInfo) => {
|
|
767
|
+
callOnError(tripInfo.error, "handler", {
|
|
768
|
+
request,
|
|
769
|
+
url,
|
|
770
|
+
env,
|
|
771
|
+
routeKey,
|
|
772
|
+
handledByBoundary: false,
|
|
773
|
+
metadata: {
|
|
774
|
+
timeout: true,
|
|
775
|
+
phase: "stream-idle",
|
|
776
|
+
durationMs: tripInfo.totalMs,
|
|
777
|
+
},
|
|
778
|
+
});
|
|
779
|
+
if (router.telemetry) {
|
|
780
|
+
safeEmit(resolveSink(router.telemetry), {
|
|
781
|
+
type: "request.timeout",
|
|
782
|
+
timestamp: performance.now(),
|
|
783
|
+
requestId: getRequestId(request),
|
|
784
|
+
phase: "stream-idle",
|
|
785
|
+
pathname: url.pathname,
|
|
786
|
+
routeKey,
|
|
787
|
+
durationMs: tripInfo.totalMs,
|
|
788
|
+
customHandler: false,
|
|
789
|
+
});
|
|
790
|
+
}
|
|
791
|
+
},
|
|
792
|
+
);
|
|
793
|
+
}
|
|
525
794
|
|
|
526
|
-
|
|
527
|
-
|
|
795
|
+
// Attributes describe the response actually handed to the host (after
|
|
796
|
+
// unsafe-redirect replacement), low-cardinality only. body_kind checks
|
|
797
|
+
// the websocket marker before the body getter so a workerd upgrade
|
|
798
|
+
// Response is never poked; `.body` is a getter access, not a read of
|
|
799
|
+
// the stream.
|
|
800
|
+
responseSpan.setAttribute(
|
|
801
|
+
"http.response.status_code",
|
|
802
|
+
finalResponse.status,
|
|
803
|
+
);
|
|
804
|
+
responseSpan.setAttribute(
|
|
805
|
+
"rango.response.mode",
|
|
806
|
+
requestContext._requestMode ?? "middleware-short-circuit",
|
|
807
|
+
);
|
|
808
|
+
responseSpan.setAttribute(
|
|
809
|
+
"rango.response.body_kind",
|
|
810
|
+
isWebSocketUpgradeResponse(finalResponse)
|
|
811
|
+
? "websocket"
|
|
812
|
+
: finalResponse.body === null
|
|
813
|
+
? "empty"
|
|
814
|
+
: "stream",
|
|
815
|
+
);
|
|
816
|
+
return finalResponse;
|
|
817
|
+
});
|
|
818
|
+
}),
|
|
819
|
+
);
|
|
528
820
|
};
|
|
529
821
|
|
|
530
|
-
// Core request handling logic (separated for middleware wrapping)
|
|
822
|
+
// Core request handling logic (separated for middleware wrapping).
|
|
823
|
+
// Uses the classify → execute model: classifyRequest produces a RequestPlan,
|
|
824
|
+
// then execution dispatches on the plan mode.
|
|
531
825
|
async function coreRequestHandler(
|
|
532
826
|
request: Request,
|
|
533
827
|
env: TEnv,
|
|
@@ -535,71 +829,80 @@ export function createRSCHandler<
|
|
|
535
829
|
variables: Record<string, any>,
|
|
536
830
|
nonce: string | undefined,
|
|
537
831
|
): Promise<Response> {
|
|
538
|
-
const previewStart = performance.now();
|
|
539
|
-
const preview = await router.previewMatch(request, { env });
|
|
540
|
-
const previewDur = performance.now() - previewStart;
|
|
541
832
|
const handlerTiming: string[] = variables.__handlerTiming || [];
|
|
542
|
-
|
|
543
|
-
//
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
)
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
833
|
+
|
|
834
|
+
// ---- 1. Classify ----
|
|
835
|
+
// classifyRequest may throw RouteNotFoundError for unknown routes.
|
|
836
|
+
// In that case, fall through to a full-render plan so the pipeline
|
|
837
|
+
// can render the 404 page via the existing error handling path.
|
|
838
|
+
const classifyStart = performance.now();
|
|
839
|
+
let plan: RequestPlan<TEnv>;
|
|
840
|
+
try {
|
|
841
|
+
plan = await classifyRequest<TEnv>(request, url, {
|
|
842
|
+
findMatch: router.findMatch,
|
|
843
|
+
routerVersion: version,
|
|
844
|
+
routerId: router.id,
|
|
845
|
+
});
|
|
846
|
+
} catch (error) {
|
|
847
|
+
if (isRouteNotFoundError(error)) {
|
|
848
|
+
// Let the render path handle 404 — match()/matchPartial() will
|
|
849
|
+
// re-throw RouteNotFoundError and the catch block in
|
|
850
|
+
// executeRenderWithMiddleware renders the not-found page.
|
|
851
|
+
plan = {
|
|
852
|
+
mode: "full-render",
|
|
853
|
+
route: {
|
|
854
|
+
matched: null as any,
|
|
855
|
+
manifestEntry: null as any,
|
|
856
|
+
entries: [],
|
|
857
|
+
routeKey: "",
|
|
858
|
+
localRouteName: "",
|
|
859
|
+
params: {},
|
|
860
|
+
routeMiddleware: [],
|
|
861
|
+
cacheScope: null,
|
|
862
|
+
isPassthrough: false,
|
|
863
|
+
},
|
|
864
|
+
negotiated: false,
|
|
865
|
+
};
|
|
866
|
+
} else {
|
|
867
|
+
throw error;
|
|
566
868
|
}
|
|
567
|
-
|
|
869
|
+
}
|
|
870
|
+
const classifyDur = performance.now() - classifyStart;
|
|
871
|
+
handlerTiming.push(`handler-classify;dur=${classifyDur.toFixed(2)}`);
|
|
872
|
+
|
|
873
|
+
// Stash the classified mode for the rango.response span (rango.response.mode)
|
|
874
|
+
// — the outer handler tail cannot see the plan. Stays unset when middleware
|
|
875
|
+
// short-circuits before core execution runs (reported as
|
|
876
|
+
// "middleware-short-circuit").
|
|
877
|
+
getRequestContext()._requestMode = plan.mode;
|
|
878
|
+
|
|
879
|
+
// ---- 2. Terminal plans (no execution needed) ----
|
|
880
|
+
if (plan.mode === "redirect") {
|
|
881
|
+
// Redirects are handled by the pipeline (match/matchPartial),
|
|
882
|
+
// but for partial requests we short-circuit with a Flight redirect.
|
|
883
|
+
if (url.searchParams.has("_rsc_partial")) {
|
|
884
|
+
return createRedirectFlightResponse(plan.redirectUrl);
|
|
885
|
+
}
|
|
886
|
+
// Full requests: let the pipeline handle the redirect via match()
|
|
887
|
+
// which returns { redirect: url }. Fall through to full-render.
|
|
568
888
|
}
|
|
569
889
|
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
if (mayNeedSSR(request, url)) {
|
|
574
|
-
variables[SSR_SETUP_VAR] = startSSRSetup(
|
|
575
|
-
handlerCtx,
|
|
576
|
-
request,
|
|
577
|
-
env,
|
|
578
|
-
url,
|
|
579
|
-
router.debugPerformance
|
|
580
|
-
? () => requireRequestContext()._metricsStore
|
|
581
|
-
: undefined,
|
|
890
|
+
if (plan.mode === "version-mismatch") {
|
|
891
|
+
console.log(
|
|
892
|
+
`[RSC] Version mismatch: client=${url.searchParams.get("_rsc_v")}, server=${version}. Forcing reload.`,
|
|
582
893
|
);
|
|
894
|
+
return createReloadResponse(plan.reloadUrl);
|
|
583
895
|
}
|
|
584
896
|
|
|
585
|
-
|
|
897
|
+
if (plan.mode === "app-switch") {
|
|
898
|
+
// Cross-app SPA navigation crossed a host-router app boundary. Force a
|
|
899
|
+
// real document navigation so the target app's document is re-established
|
|
900
|
+
// (stylesheets, theme, warmup, prefetch-TTL). See request-classification.
|
|
901
|
+
return createReloadResponse(plan.reloadUrl);
|
|
902
|
+
}
|
|
586
903
|
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
const isLoaderFetch = url.searchParams.has("_rsc_loader");
|
|
590
|
-
const actionId =
|
|
591
|
-
request.headers.get("rsc-action") || url.searchParams.get("_rsc_action");
|
|
592
|
-
|
|
593
|
-
// Origin guard: reject cross-origin actions, loader fetches, and
|
|
594
|
-
// PE form submissions before any execution. Regular page navigations
|
|
595
|
-
// (GET without _rsc_loader/_rsc_action) are not affected.
|
|
596
|
-
const originPhase: OriginCheckPhase | null = isAction
|
|
597
|
-
? "action"
|
|
598
|
-
: isLoaderFetch
|
|
599
|
-
? "loader"
|
|
600
|
-
: request.method === "POST"
|
|
601
|
-
? "pe-form"
|
|
602
|
-
: null;
|
|
904
|
+
// ---- 3. Origin guard (gate for action/loader/PE modes) ----
|
|
905
|
+
const originPhase = ORIGIN_CHECK_PHASE_BY_MODE[plan.mode];
|
|
603
906
|
if (originPhase) {
|
|
604
907
|
const originResult = await checkRequestOrigin(
|
|
605
908
|
request,
|
|
@@ -627,37 +930,52 @@ export function createRSCHandler<
|
|
|
627
930
|
},
|
|
628
931
|
});
|
|
629
932
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
host: request.headers.get("host"),
|
|
642
|
-
});
|
|
643
|
-
}
|
|
644
|
-
} catch {
|
|
645
|
-
// Router context may not be available
|
|
933
|
+
if (router.telemetry) {
|
|
934
|
+
safeEmit(resolveSink(router.telemetry), {
|
|
935
|
+
type: "request.origin-rejected",
|
|
936
|
+
timestamp: performance.now(),
|
|
937
|
+
requestId: getRequestId(request),
|
|
938
|
+
method: request.method,
|
|
939
|
+
pathname: url.pathname,
|
|
940
|
+
phase: originPhase,
|
|
941
|
+
origin: request.headers.get("origin"),
|
|
942
|
+
host: request.headers.get("host"),
|
|
943
|
+
});
|
|
646
944
|
}
|
|
647
945
|
|
|
648
946
|
return originResult;
|
|
649
947
|
}
|
|
650
948
|
}
|
|
651
949
|
|
|
652
|
-
//
|
|
653
|
-
|
|
950
|
+
// ---- 4. Execute ----
|
|
951
|
+
return executeRequest(
|
|
952
|
+
plan as ExecutableRequestPlan<TEnv>,
|
|
953
|
+
request,
|
|
954
|
+
env,
|
|
955
|
+
url,
|
|
956
|
+
variables,
|
|
957
|
+
nonce,
|
|
958
|
+
);
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
// Execute a classified request plan. Dispatches to the appropriate handler
|
|
962
|
+
// based on plan.mode. Lives in the createRSCHandler closure for access to
|
|
963
|
+
// handlerCtx, router, callOnError, etc.
|
|
964
|
+
// Only receives executable plans (version-mismatch is handled above).
|
|
965
|
+
async function executeRequest(
|
|
966
|
+
plan: ExecutableRequestPlan<TEnv>,
|
|
967
|
+
request: Request,
|
|
968
|
+
env: TEnv,
|
|
969
|
+
url: URL,
|
|
970
|
+
variables: Record<string, any>,
|
|
971
|
+
nonce: string | undefined,
|
|
972
|
+
): Promise<Response> {
|
|
973
|
+
// Common setup
|
|
974
|
+
const handleStore = getRequestContext()._handleStore;
|
|
654
975
|
|
|
655
976
|
// Wire up error reporting for late streaming-handle failures
|
|
656
|
-
// (LateHandlePushError: handle pushed after stream completion).
|
|
657
|
-
// Without this, these errors are only caught by React's error boundary
|
|
658
|
-
// and never reach the router's onError callback or telemetry.
|
|
659
977
|
handleStore.onError = (error: Error) => {
|
|
660
|
-
const reqCtx =
|
|
978
|
+
const reqCtx = getRequestContext();
|
|
661
979
|
callOnError(error, "handler", {
|
|
662
980
|
request,
|
|
663
981
|
url,
|
|
@@ -665,66 +983,163 @@ export function createRSCHandler<
|
|
|
665
983
|
params: reqCtx.params as Record<string, string>,
|
|
666
984
|
handledByBoundary: true,
|
|
667
985
|
});
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
params: reqCtx.params as Record<string, string>,
|
|
680
|
-
});
|
|
681
|
-
}
|
|
682
|
-
} catch {
|
|
683
|
-
// Router context may not be available (e.g. prerender path)
|
|
986
|
+
if (router.telemetry) {
|
|
987
|
+
safeEmit(resolveSink(router.telemetry), {
|
|
988
|
+
type: "handler.error",
|
|
989
|
+
timestamp: performance.now(),
|
|
990
|
+
requestId: getRequestId(request),
|
|
991
|
+
error,
|
|
992
|
+
handledByBoundary: true,
|
|
993
|
+
pathname: url.pathname,
|
|
994
|
+
routeKey: reqCtx._routeName,
|
|
995
|
+
params: reqCtx.params as Record<string, string>,
|
|
996
|
+
});
|
|
684
997
|
}
|
|
685
998
|
};
|
|
686
999
|
|
|
687
1000
|
// Set route params early so all execution paths can access ctx.params.
|
|
688
|
-
|
|
689
|
-
|
|
1001
|
+
// Also store the classified snapshot so match/matchPartial can reuse it
|
|
1002
|
+
// instead of calling resolveRoute again.
|
|
1003
|
+
if (plan.mode !== "redirect") {
|
|
1004
|
+
setRequestContextParams(plan.route.params, plan.route.routeKey);
|
|
1005
|
+
getRequestContext()._classifiedRoute = plan.route;
|
|
690
1006
|
}
|
|
691
1007
|
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
//
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
routeMiddleware:
|
|
1008
|
+
const routeReverse = createReverseFunction(getRequiredRouteMap());
|
|
1009
|
+
|
|
1010
|
+
// ---- Response route: skip entire RSC pipeline ----
|
|
1011
|
+
if (plan.mode === "response") {
|
|
1012
|
+
// Build ResponseRouteMatch from plan fields. handleResponseRoute
|
|
1013
|
+
// expects a flat object with params at the top level.
|
|
1014
|
+
const responseMatch: ResponseRouteMatch = {
|
|
1015
|
+
responseType: plan.responseType,
|
|
1016
|
+
handler: plan.handler,
|
|
1017
|
+
params: plan.route.params,
|
|
1018
|
+
negotiated: plan.negotiated,
|
|
1019
|
+
manifestEntry: plan.manifestEntry,
|
|
1020
|
+
routeMiddleware: plan.routeMiddleware,
|
|
1021
|
+
};
|
|
1022
|
+
const responseOutcome = await withTimeout(
|
|
1023
|
+
handleResponseRoute(
|
|
1024
|
+
handlerCtx,
|
|
1025
|
+
responseMatch,
|
|
1026
|
+
request,
|
|
1027
|
+
env,
|
|
1028
|
+
url,
|
|
1029
|
+
variables,
|
|
1030
|
+
),
|
|
1031
|
+
router.timeouts.renderStartMs,
|
|
1032
|
+
"render-start",
|
|
1033
|
+
);
|
|
1034
|
+
if (responseOutcome.timedOut) {
|
|
1035
|
+
return handleTimeoutResponse(
|
|
1036
|
+
request,
|
|
1037
|
+
env,
|
|
1038
|
+
url,
|
|
1039
|
+
"render-start",
|
|
1040
|
+
responseOutcome.durationMs,
|
|
1041
|
+
plan.route.routeKey,
|
|
1042
|
+
);
|
|
1043
|
+
}
|
|
1044
|
+
const response = responseOutcome.result;
|
|
1045
|
+
if (plan.negotiated && !isWebSocketUpgradeResponse(response)) {
|
|
1046
|
+
// handleResponseRoute (callHandlerWithVary) already appends Vary: Accept
|
|
1047
|
+
// for negotiated responses; dedup so we don't emit Vary: Accept, Accept.
|
|
1048
|
+
appendVaryAccept(response);
|
|
1049
|
+
}
|
|
1050
|
+
return response;
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
// SSR setup: kick off in parallel for modes that need HTML rendering.
|
|
1054
|
+
// Placed after response-route short-circuit so response/mime routes
|
|
1055
|
+
// never pay for SSR work.
|
|
1056
|
+
//
|
|
1057
|
+
// Only kick off when the request will actually render HTML, so the
|
|
1058
|
+
// eager loadSSRModule() + user resolveStreaming() are not started (and
|
|
1059
|
+
// never consumed) for a request that returns an RSC stream — that wasted
|
|
1060
|
+
// work also leaves an orphaned Promise.all that can reject (D7). PE form
|
|
1061
|
+
// submissions always render HTML (handleProgressiveEnhancement renders via
|
|
1062
|
+
// getSSRSetup regardless of Accept). For full/partial-render and action,
|
|
1063
|
+
// the render-time HTML decision is exactly !isRscRequest — mayNeedSSR is
|
|
1064
|
+
// the coarse transport pre-filter, isRscRequest adds the partial/__rsc
|
|
1065
|
+
// flags; both share the same Accept rule (acceptsFlightExplicitly in
|
|
1066
|
+
// ssr-setup.ts), so the Accept call cannot drift between them. Both must
|
|
1067
|
+
// pass.
|
|
1068
|
+
const willRenderHtml =
|
|
1069
|
+
plan.mode === "pe-render" ||
|
|
1070
|
+
(mayNeedSSR(request, url) &&
|
|
1071
|
+
!isRscRequest(request, url, plan.mode === "partial-render"));
|
|
1072
|
+
if (plan.mode !== "loader" && willRenderHtml) {
|
|
1073
|
+
const ssrSetup = startSSRSetup(
|
|
1074
|
+
handlerCtx,
|
|
1075
|
+
request,
|
|
1076
|
+
env,
|
|
1077
|
+
url,
|
|
1078
|
+
router.debugPerformance
|
|
1079
|
+
? () => getRequestContext()._metricsStore
|
|
1080
|
+
: undefined,
|
|
1081
|
+
);
|
|
1082
|
+
variables[SSR_SETUP_VAR] = ssrSetup;
|
|
1083
|
+
|
|
1084
|
+
// A handler can short-circuit before HTML rendering consumes this promise
|
|
1085
|
+
// (for example, by returning a redirect). Workerd cancels untracked dynamic
|
|
1086
|
+
// imports at the request boundary; retaining that cancelled promise in the
|
|
1087
|
+
// production SSR module memo makes every later document request hang.
|
|
1088
|
+
// Extending the request lifetime lets the shared setup settle without
|
|
1089
|
+
// delaying the short-circuit response.
|
|
1090
|
+
getRequestContext().executionContext?.waitUntil(ssrSetup);
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
// ---- Loader fetch ----
|
|
1094
|
+
if (plan.mode === "loader") {
|
|
1095
|
+
return handleLoaderFetch(
|
|
1096
|
+
handlerCtx,
|
|
1097
|
+
request,
|
|
1098
|
+
env,
|
|
1099
|
+
url,
|
|
705
1100
|
variables,
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
);
|
|
709
|
-
if (progressiveResult) {
|
|
710
|
-
return progressiveResult;
|
|
1101
|
+
plan.route.params,
|
|
1102
|
+
);
|
|
711
1103
|
}
|
|
712
1104
|
|
|
713
|
-
//
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
1105
|
+
// ---- Progressive enhancement ----
|
|
1106
|
+
if (plan.mode === "pe-render") {
|
|
1107
|
+
const peResult = await handleProgressiveEnhancement(
|
|
1108
|
+
handlerCtx,
|
|
1109
|
+
request,
|
|
1110
|
+
env,
|
|
1111
|
+
url,
|
|
1112
|
+
false, // isAction = false for PE
|
|
1113
|
+
handleStore,
|
|
1114
|
+
nonce,
|
|
1115
|
+
{
|
|
1116
|
+
routeMiddleware: plan.route.routeMiddleware,
|
|
1117
|
+
variables,
|
|
1118
|
+
routeReverse,
|
|
1119
|
+
},
|
|
1120
|
+
);
|
|
1121
|
+
if (peResult) return peResult;
|
|
1122
|
+
// PE handler returned null (not a PE form) — fall through to render
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
// ---- Action: execute action, then revalidate wrapped in route middleware ----
|
|
1126
|
+
if (plan.mode === "action") {
|
|
1127
|
+
let actionContinuation: ActionContinuation | undefined;
|
|
719
1128
|
try {
|
|
1129
|
+
// Instrument the action execution as its own phase (action:<actionId> +
|
|
1130
|
+
// rango.action), so a POST shows the mutation time AND which action ran,
|
|
1131
|
+
// not just the downstream revalidation render. The action's own
|
|
1132
|
+
// loaders/fetches nest under rango.action.
|
|
720
1133
|
const actionOutcome = await withTimeout(
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
1134
|
+
observePhase(PHASES.action(plan.actionId), () =>
|
|
1135
|
+
executeServerAction(
|
|
1136
|
+
handlerCtx,
|
|
1137
|
+
request,
|
|
1138
|
+
env,
|
|
1139
|
+
url,
|
|
1140
|
+
plan.actionId,
|
|
1141
|
+
handleStore,
|
|
1142
|
+
),
|
|
728
1143
|
),
|
|
729
1144
|
router.timeouts.actionMs,
|
|
730
1145
|
"action",
|
|
@@ -736,8 +1151,8 @@ export function createRSCHandler<
|
|
|
736
1151
|
url,
|
|
737
1152
|
"action",
|
|
738
1153
|
actionOutcome.durationMs,
|
|
739
|
-
|
|
740
|
-
actionId,
|
|
1154
|
+
plan.route.routeKey,
|
|
1155
|
+
plan.actionId,
|
|
741
1156
|
);
|
|
742
1157
|
}
|
|
743
1158
|
const result = actionOutcome.result;
|
|
@@ -749,40 +1164,271 @@ export function createRSCHandler<
|
|
|
749
1164
|
request,
|
|
750
1165
|
url,
|
|
751
1166
|
env,
|
|
752
|
-
actionId,
|
|
1167
|
+
actionId: plan.actionId,
|
|
753
1168
|
handledByBoundary: false,
|
|
754
1169
|
});
|
|
755
1170
|
console.error(`[RSC] Action error:`, error);
|
|
756
1171
|
throw error;
|
|
757
1172
|
}
|
|
758
|
-
}
|
|
759
1173
|
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
1174
|
+
// Revalidation render wrapped in route middleware.
|
|
1175
|
+
// Actions from client-side navigation include _rsc_partial — preserve
|
|
1176
|
+
// the partial flag so the revalidation returns a Flight stream, not HTML.
|
|
1177
|
+
// App-switch is already excluded by classifyRequest (would be full-render).
|
|
1178
|
+
const isPartialAction = url.searchParams.has("_rsc_partial");
|
|
1179
|
+
return executeRenderWithMiddleware(
|
|
1180
|
+
plan.route.routeMiddleware,
|
|
1181
|
+
plan.negotiated,
|
|
1182
|
+
plan.route.routeKey,
|
|
1183
|
+
routeReverse,
|
|
764
1184
|
request,
|
|
765
1185
|
env,
|
|
766
1186
|
url,
|
|
767
1187
|
variables,
|
|
768
1188
|
nonce,
|
|
769
|
-
preview?.params,
|
|
770
|
-
preview?.routeKey,
|
|
771
1189
|
handleStore,
|
|
1190
|
+
isPartialAction,
|
|
772
1191
|
actionContinuation,
|
|
773
1192
|
);
|
|
774
|
-
|
|
775
|
-
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
// Full render, partial render, fallen-through PE, and full-page redirect all
|
|
1196
|
+
// render through the same middleware-wrapped path. Only full/partial-render
|
|
1197
|
+
// carry negotiation + the partial flag; pe/redirect render plainly.
|
|
1198
|
+
const isPartial = plan.mode === "partial-render";
|
|
1199
|
+
const negotiated =
|
|
1200
|
+
plan.mode === "full-render" || plan.mode === "partial-render"
|
|
1201
|
+
? plan.negotiated
|
|
1202
|
+
: false;
|
|
1203
|
+
return executeRenderWithMiddleware(
|
|
1204
|
+
plan.route.routeMiddleware,
|
|
1205
|
+
negotiated,
|
|
1206
|
+
plan.route.routeKey,
|
|
1207
|
+
routeReverse,
|
|
1208
|
+
request,
|
|
1209
|
+
env,
|
|
1210
|
+
url,
|
|
1211
|
+
variables,
|
|
1212
|
+
nonce,
|
|
1213
|
+
handleStore,
|
|
1214
|
+
isPartial,
|
|
1215
|
+
);
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
// Shared render execution: wraps handleRscRendering (or revalidateAfterAction)
|
|
1219
|
+
// in route middleware and timeout handling. Consolidates the pattern used by
|
|
1220
|
+
// action-revalidate, full-render, and partial-render modes.
|
|
1221
|
+
async function executeRenderWithMiddleware(
|
|
1222
|
+
routeMiddleware: import("../router/middleware-types.js").CollectedMiddleware[],
|
|
1223
|
+
negotiated: boolean,
|
|
1224
|
+
routeKey: string,
|
|
1225
|
+
routeReverse: ReturnType<typeof createReverseFunction>,
|
|
1226
|
+
request: Request,
|
|
1227
|
+
env: TEnv,
|
|
1228
|
+
url: URL,
|
|
1229
|
+
variables: Record<string, any>,
|
|
1230
|
+
nonce: string | undefined,
|
|
1231
|
+
handleStore: ReturnType<typeof getRequestContext>["_handleStore"],
|
|
1232
|
+
isPartial: boolean,
|
|
1233
|
+
actionContinuation?: ActionContinuation,
|
|
1234
|
+
): Promise<Response> {
|
|
1235
|
+
const renderHandler = async (): Promise<Response> => {
|
|
1236
|
+
try {
|
|
1237
|
+
let response: Response;
|
|
1238
|
+
if (actionContinuation) {
|
|
1239
|
+
response = await revalidateAfterAction(
|
|
1240
|
+
handlerCtx,
|
|
1241
|
+
request,
|
|
1242
|
+
env,
|
|
1243
|
+
url,
|
|
1244
|
+
handleStore,
|
|
1245
|
+
actionContinuation,
|
|
1246
|
+
);
|
|
1247
|
+
} else {
|
|
1248
|
+
response = await handleRscRendering(
|
|
1249
|
+
handlerCtx,
|
|
1250
|
+
request,
|
|
1251
|
+
env,
|
|
1252
|
+
url,
|
|
1253
|
+
isPartial,
|
|
1254
|
+
handleStore,
|
|
1255
|
+
nonce,
|
|
1256
|
+
);
|
|
1257
|
+
}
|
|
1258
|
+
if (negotiated && !isWebSocketUpgradeResponse(response)) {
|
|
1259
|
+
// handleRscRendering bakes `accept` into the RSC response's Vary list;
|
|
1260
|
+
// dedup so the negotiated append does not list accept twice.
|
|
1261
|
+
appendVaryAccept(response);
|
|
1262
|
+
}
|
|
1263
|
+
return response;
|
|
1264
|
+
} catch (error) {
|
|
1265
|
+
// Check if middleware/handler returned Response
|
|
1266
|
+
if (error instanceof Response) {
|
|
1267
|
+
// An action revalidation render is delivered to the client over the
|
|
1268
|
+
// same Flight-parsing path as a partial navigation, so a Response
|
|
1269
|
+
// thrown during it must be converted exactly like a partial one
|
|
1270
|
+
// (raw 200 -> hard-nav hint, 3xx -> Flight redirect). Without this,
|
|
1271
|
+
// the no-middleware path returns the raw Response (the with-middleware
|
|
1272
|
+
// path is already covered by the isPartial || actionContinuation
|
|
1273
|
+
// guard below).
|
|
1274
|
+
const treatAsPartial = isPartial || actionContinuation != null;
|
|
1275
|
+
|
|
1276
|
+
// During partial (client-side navigation), a 200 Response from a handler
|
|
1277
|
+
// means the route serves raw content (JSON, text, etc.), not JSX.
|
|
1278
|
+
// Signal the browser to hard-navigate so it renders the raw response.
|
|
1279
|
+
if (treatAsPartial && error.status === 200) {
|
|
1280
|
+
console.warn(
|
|
1281
|
+
`[RSC] Route handler at ${url.pathname} returned a Response during client-side navigation. ` +
|
|
1282
|
+
`Falling back to hard navigation. Use data-external on the <Link> to avoid the extra round-trip.`,
|
|
1283
|
+
);
|
|
1284
|
+
return createResponseWithMergedHeaders(null, {
|
|
1285
|
+
status: 200,
|
|
1286
|
+
headers: {
|
|
1287
|
+
"X-RSC-Reload": stripInternalParams(url).toString(),
|
|
1288
|
+
"content-type": "text/x-component;charset=utf-8",
|
|
1289
|
+
},
|
|
1290
|
+
});
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
if (treatAsPartial) {
|
|
1294
|
+
const intercepted = interceptRedirectForPartial(
|
|
1295
|
+
error,
|
|
1296
|
+
createRedirectFlightResponse,
|
|
1297
|
+
{ requestOrigin: url.origin, basename: router.basename },
|
|
1298
|
+
);
|
|
1299
|
+
if (intercepted) return intercepted;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
return error;
|
|
1303
|
+
}
|
|
1304
|
+
|
|
1305
|
+
// Render 404 page for unmatched routes
|
|
1306
|
+
if (isRouteNotFoundError(error)) {
|
|
1307
|
+
callOnError(error, "routing", {
|
|
1308
|
+
request,
|
|
1309
|
+
url,
|
|
1310
|
+
env,
|
|
1311
|
+
handledByBoundary: true,
|
|
1312
|
+
});
|
|
1313
|
+
|
|
1314
|
+
// No boundary to consult: an unmatched route has no entry chain, so
|
|
1315
|
+
// this always lands on the router option or the shared default.
|
|
1316
|
+
const notFoundComponent = resolveDefaultNotFound(
|
|
1317
|
+
router.notFound,
|
|
1318
|
+
url.pathname,
|
|
1319
|
+
);
|
|
1320
|
+
|
|
1321
|
+
const notFoundSegment = {
|
|
1322
|
+
id: "notFound",
|
|
1323
|
+
namespace: "notFound",
|
|
1324
|
+
type: "route" as const,
|
|
1325
|
+
index: 0,
|
|
1326
|
+
component: notFoundComponent,
|
|
1327
|
+
params: {},
|
|
1328
|
+
};
|
|
1329
|
+
|
|
1330
|
+
const payload: RscPayload = {
|
|
1331
|
+
metadata: {
|
|
1332
|
+
pathname: url.pathname,
|
|
1333
|
+
routerId: router.id,
|
|
1334
|
+
basename: router.basename,
|
|
1335
|
+
segments: [notFoundSegment],
|
|
1336
|
+
matched: [],
|
|
1337
|
+
diff: [],
|
|
1338
|
+
// Shape parity with buildFullPayload (rsc-rendering.ts): the 404
|
|
1339
|
+
// payload carries params/resolvedIds/prefetchCacheTTL the same way a
|
|
1340
|
+
// matched full render does. resolvedIds mirrors the rendered segment
|
|
1341
|
+
// list (the single notFound segment) like the error-boundary path
|
|
1342
|
+
// (match-api.ts) does for its boundary segment.
|
|
1343
|
+
resolvedIds: [notFoundSegment.id],
|
|
1344
|
+
params: {},
|
|
1345
|
+
isPartial: false,
|
|
1346
|
+
rootLayout: router.rootLayout,
|
|
1347
|
+
// Full (404) render: resolve deferred handle values server-side.
|
|
1348
|
+
handles: resolvedHandleStream(handleStore),
|
|
1349
|
+
version,
|
|
1350
|
+
prefetchCacheTTL: router.prefetchCacheTTL,
|
|
1351
|
+
prefetchCacheSize: router.prefetchCacheSize,
|
|
1352
|
+
prefetchConcurrency: router.prefetchConcurrency,
|
|
1353
|
+
defaultPrefetch: router.defaultPrefetch,
|
|
1354
|
+
stateCookieName: router.resolvedStateCookieName,
|
|
1355
|
+
themeConfig: router.themeConfig,
|
|
1356
|
+
warmupEnabled: router.warmupEnabled,
|
|
1357
|
+
strictMode: router.strictMode,
|
|
1358
|
+
initialTheme: getRequestContext().theme,
|
|
1359
|
+
},
|
|
1360
|
+
};
|
|
1361
|
+
|
|
1362
|
+
const isNotFoundFlightResponse = isRscRequest(
|
|
1363
|
+
request,
|
|
1364
|
+
url,
|
|
1365
|
+
isPartial,
|
|
1366
|
+
);
|
|
1367
|
+
const notFoundStageTracking = {
|
|
1368
|
+
mode: isPartial ? ("partial" as const) : ("full" as const),
|
|
1369
|
+
routeKey,
|
|
1370
|
+
};
|
|
1371
|
+
return renderRscResponse(
|
|
1372
|
+
{
|
|
1373
|
+
ctx: handlerCtx,
|
|
1374
|
+
request,
|
|
1375
|
+
url,
|
|
1376
|
+
env,
|
|
1377
|
+
payload,
|
|
1378
|
+
// The 404 path historically records no rsc-serialize metric (it
|
|
1379
|
+
// used the standalone Flight constructor, whose gate was opt-in);
|
|
1380
|
+
// opt out explicitly since renderRscResponse defaults the gate on.
|
|
1381
|
+
recordSerializeMetric: false,
|
|
1382
|
+
init: isNotFoundFlightResponse
|
|
1383
|
+
? {
|
|
1384
|
+
status: 404,
|
|
1385
|
+
headers: {
|
|
1386
|
+
"content-type": "text/x-component;charset=utf-8",
|
|
1387
|
+
// Router identity for the client's pre-decode integrity
|
|
1388
|
+
// check; a same-app 404 applies in place.
|
|
1389
|
+
"X-RSC-Router-Id": router.id,
|
|
1390
|
+
},
|
|
1391
|
+
}
|
|
1392
|
+
: {
|
|
1393
|
+
status: 404,
|
|
1394
|
+
headers: {
|
|
1395
|
+
"content-type": "text/html;charset=utf-8",
|
|
1396
|
+
},
|
|
1397
|
+
},
|
|
1398
|
+
tracking: notFoundStageTracking,
|
|
1399
|
+
},
|
|
1400
|
+
isNotFoundFlightResponse
|
|
1401
|
+
? undefined
|
|
1402
|
+
: {
|
|
1403
|
+
html: createSsrHtmlStage({
|
|
1404
|
+
ctx: handlerCtx,
|
|
1405
|
+
request,
|
|
1406
|
+
env,
|
|
1407
|
+
url,
|
|
1408
|
+
metricsStore: getRequestContext()._metricsStore,
|
|
1409
|
+
render: { nonce },
|
|
1410
|
+
}),
|
|
1411
|
+
},
|
|
1412
|
+
);
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
// Report unhandled errors
|
|
1416
|
+
callOnError(error, "routing", {
|
|
1417
|
+
request,
|
|
1418
|
+
url,
|
|
1419
|
+
env,
|
|
1420
|
+
handledByBoundary: false,
|
|
1421
|
+
});
|
|
1422
|
+
console.error(`[RSC] Error:`, error);
|
|
1423
|
+
throw error;
|
|
776
1424
|
}
|
|
777
|
-
return response;
|
|
778
1425
|
};
|
|
779
1426
|
|
|
780
|
-
// Wrap the render path
|
|
781
|
-
// renderStartMs timeout so slow renders are caught before output.
|
|
1427
|
+
// Wrap the render path in a renderStartMs timeout
|
|
782
1428
|
const executeRender = async (): Promise<Response> => {
|
|
783
|
-
if (
|
|
1429
|
+
if (routeMiddleware.length > 0) {
|
|
784
1430
|
const mwResponse = await executeMiddleware(
|
|
785
|
-
buildRouteMiddlewareEntries<TEnv>(
|
|
1431
|
+
buildRouteMiddlewareEntries<TEnv>(routeMiddleware),
|
|
786
1432
|
request,
|
|
787
1433
|
env,
|
|
788
1434
|
variables,
|
|
@@ -790,13 +1436,11 @@ export function createRSCHandler<
|
|
|
790
1436
|
routeReverse,
|
|
791
1437
|
);
|
|
792
1438
|
|
|
793
|
-
if (
|
|
794
|
-
url.searchParams.has("_rsc_partial") ||
|
|
795
|
-
url.searchParams.has("_rsc_action")
|
|
796
|
-
) {
|
|
1439
|
+
if (isPartial || actionContinuation) {
|
|
797
1440
|
const intercepted = interceptRedirectForPartial(
|
|
798
1441
|
mwResponse,
|
|
799
1442
|
createRedirectFlightResponse,
|
|
1443
|
+
{ requestOrigin: url.origin, basename: router.basename },
|
|
800
1444
|
);
|
|
801
1445
|
if (intercepted) return intercepted;
|
|
802
1446
|
}
|
|
@@ -804,7 +1448,6 @@ export function createRSCHandler<
|
|
|
804
1448
|
return finalizeResponse(mwResponse);
|
|
805
1449
|
}
|
|
806
1450
|
|
|
807
|
-
// No route middleware, proceed directly
|
|
808
1451
|
return renderHandler();
|
|
809
1452
|
};
|
|
810
1453
|
|
|
@@ -820,270 +1463,9 @@ export function createRSCHandler<
|
|
|
820
1463
|
url,
|
|
821
1464
|
"render-start",
|
|
822
1465
|
renderOutcome.durationMs,
|
|
823
|
-
|
|
1466
|
+
routeKey,
|
|
824
1467
|
);
|
|
825
1468
|
}
|
|
826
1469
|
return renderOutcome.result;
|
|
827
1470
|
}
|
|
828
|
-
|
|
829
|
-
// Inner request handler: rendering logic wrapped by route middleware.
|
|
830
|
-
// Handles action revalidation (when actionContinuation is present),
|
|
831
|
-
// loader fetches, and regular RSC rendering.
|
|
832
|
-
async function coreRequestHandlerInner(
|
|
833
|
-
request: Request,
|
|
834
|
-
env: TEnv,
|
|
835
|
-
url: URL,
|
|
836
|
-
variables: Record<string, any>,
|
|
837
|
-
nonce: string | undefined,
|
|
838
|
-
routeParams?: Record<string, string>,
|
|
839
|
-
routeKey?: string,
|
|
840
|
-
handleStore?: ReturnType<typeof requireRequestContext>["_handleStore"],
|
|
841
|
-
actionContinuation?: ActionContinuation,
|
|
842
|
-
): Promise<Response> {
|
|
843
|
-
const isPartial = url.searchParams.has("_rsc_partial");
|
|
844
|
-
const isAction =
|
|
845
|
-
request.headers.has("rsc-action") || url.searchParams.has("_rsc_action");
|
|
846
|
-
|
|
847
|
-
// Version mismatch detection - client may have stale code after HMR/deployment
|
|
848
|
-
// If versions don't match, tell the client to reload
|
|
849
|
-
const clientVersion = url.searchParams.get("_rsc_v");
|
|
850
|
-
if (version && clientVersion && clientVersion !== version) {
|
|
851
|
-
console.log(
|
|
852
|
-
`[RSC] Version mismatch: client=${clientVersion}, server=${version}. Forcing reload.`,
|
|
853
|
-
);
|
|
854
|
-
|
|
855
|
-
// For actions, reload current page (referer) if same origin.
|
|
856
|
-
// For navigation, load the target URL.
|
|
857
|
-
// Validate referer origin to prevent open redirect via crafted header.
|
|
858
|
-
let reloadUrl = stripInternalParams(url).toString();
|
|
859
|
-
if (isAction) {
|
|
860
|
-
const referer = request.headers.get("referer");
|
|
861
|
-
if (referer) {
|
|
862
|
-
try {
|
|
863
|
-
const refererUrl = new URL(referer);
|
|
864
|
-
if (refererUrl.origin === url.origin) {
|
|
865
|
-
reloadUrl = referer;
|
|
866
|
-
}
|
|
867
|
-
} catch {
|
|
868
|
-
// Malformed referer, fall back to cleanUrl
|
|
869
|
-
}
|
|
870
|
-
}
|
|
871
|
-
}
|
|
872
|
-
|
|
873
|
-
// Return special response that tells client to reload
|
|
874
|
-
return createResponseWithMergedHeaders(null, {
|
|
875
|
-
status: 200,
|
|
876
|
-
headers: {
|
|
877
|
-
"X-RSC-Reload": reloadUrl,
|
|
878
|
-
"content-type": "text/x-component;charset=utf-8",
|
|
879
|
-
},
|
|
880
|
-
});
|
|
881
|
-
}
|
|
882
|
-
// Debug manifest endpoint: ?__debug_manifest on any route.
|
|
883
|
-
// Always available in dev, requires allowDebugManifest option in production.
|
|
884
|
-
const isDev = process.env.NODE_ENV !== "production";
|
|
885
|
-
if (
|
|
886
|
-
url.searchParams.has("__debug_manifest") &&
|
|
887
|
-
(isDev || router.allowDebugManifest)
|
|
888
|
-
) {
|
|
889
|
-
const trie = getRouterTrie(router.id) ?? getRouteTrie();
|
|
890
|
-
const routeManifest = getRequiredRouteMap();
|
|
891
|
-
const { extractAncestryFromTrie } =
|
|
892
|
-
await import("../build/route-trie.js");
|
|
893
|
-
return new Response(
|
|
894
|
-
JSON.stringify(
|
|
895
|
-
{
|
|
896
|
-
routerId: router.id,
|
|
897
|
-
routeManifest,
|
|
898
|
-
routeAncestry: trie ? extractAncestryFromTrie(trie) : {},
|
|
899
|
-
routeTrie: trie,
|
|
900
|
-
precomputedEntries: getPrecomputedEntries(),
|
|
901
|
-
},
|
|
902
|
-
null,
|
|
903
|
-
2,
|
|
904
|
-
),
|
|
905
|
-
{
|
|
906
|
-
headers: { "Content-Type": "application/json" },
|
|
907
|
-
},
|
|
908
|
-
);
|
|
909
|
-
}
|
|
910
|
-
|
|
911
|
-
const store = handleStore ?? requireRequestContext()._handleStore;
|
|
912
|
-
|
|
913
|
-
try {
|
|
914
|
-
// Route params were already set in coreRequestHandler, but set again
|
|
915
|
-
// for callers that enter coreRequestHandlerInner directly.
|
|
916
|
-
if (routeParams) {
|
|
917
|
-
setRequestContextParams(routeParams, routeKey);
|
|
918
|
-
}
|
|
919
|
-
|
|
920
|
-
// ============================================================================
|
|
921
|
-
// ACTION REVALIDATION (action already executed, revalidate segments)
|
|
922
|
-
// ============================================================================
|
|
923
|
-
if (actionContinuation) {
|
|
924
|
-
return await revalidateAfterAction(
|
|
925
|
-
handlerCtx,
|
|
926
|
-
request,
|
|
927
|
-
env,
|
|
928
|
-
url,
|
|
929
|
-
store,
|
|
930
|
-
actionContinuation,
|
|
931
|
-
);
|
|
932
|
-
}
|
|
933
|
-
|
|
934
|
-
// ============================================================================
|
|
935
|
-
// LOADER FETCH EXECUTION (data fetching with RSC serialization)
|
|
936
|
-
// ============================================================================
|
|
937
|
-
const isLoaderRequest = url.searchParams.has("_rsc_loader");
|
|
938
|
-
if (isLoaderRequest) {
|
|
939
|
-
return handleLoaderFetch(
|
|
940
|
-
handlerCtx,
|
|
941
|
-
request,
|
|
942
|
-
env,
|
|
943
|
-
url,
|
|
944
|
-
variables,
|
|
945
|
-
routeParams,
|
|
946
|
-
);
|
|
947
|
-
}
|
|
948
|
-
|
|
949
|
-
// ============================================================================
|
|
950
|
-
// REGULAR RSC RENDERING (Navigation)
|
|
951
|
-
// ============================================================================
|
|
952
|
-
// Note: Must use "return await" for try/catch to catch async rejections
|
|
953
|
-
return await handleRscRendering(
|
|
954
|
-
handlerCtx,
|
|
955
|
-
request,
|
|
956
|
-
env,
|
|
957
|
-
url,
|
|
958
|
-
isPartial,
|
|
959
|
-
store,
|
|
960
|
-
nonce,
|
|
961
|
-
);
|
|
962
|
-
} catch (error) {
|
|
963
|
-
// Check if middleware/handler returned Response
|
|
964
|
-
if (error instanceof Response) {
|
|
965
|
-
// During partial (client-side navigation), a 200 Response from a handler
|
|
966
|
-
// means the route serves raw content (JSON, text, etc.), not JSX.
|
|
967
|
-
// Signal the browser to hard-navigate so it renders the raw response.
|
|
968
|
-
// Only for 200 — redirects (3xx) work already because the browser follows
|
|
969
|
-
// them automatically to a URL that serves Flight data.
|
|
970
|
-
if (isPartial && error.status === 200) {
|
|
971
|
-
console.warn(
|
|
972
|
-
`[RSC] Route handler at ${url.pathname} returned a Response during client-side navigation. ` +
|
|
973
|
-
`Falling back to hard navigation. Use data-external on the <Link> to avoid the extra round-trip.`,
|
|
974
|
-
);
|
|
975
|
-
return createResponseWithMergedHeaders(null, {
|
|
976
|
-
status: 200,
|
|
977
|
-
headers: {
|
|
978
|
-
"X-RSC-Reload": stripInternalParams(url).toString(),
|
|
979
|
-
"content-type": "text/x-component;charset=utf-8",
|
|
980
|
-
},
|
|
981
|
-
});
|
|
982
|
-
}
|
|
983
|
-
|
|
984
|
-
if (isPartial) {
|
|
985
|
-
const intercepted = interceptRedirectForPartial(
|
|
986
|
-
error,
|
|
987
|
-
createRedirectFlightResponse,
|
|
988
|
-
);
|
|
989
|
-
if (intercepted) return intercepted;
|
|
990
|
-
}
|
|
991
|
-
|
|
992
|
-
return error;
|
|
993
|
-
}
|
|
994
|
-
|
|
995
|
-
// Render 404 page for unmatched routes
|
|
996
|
-
// Check both instanceof and error.name for cross-bundle compatibility
|
|
997
|
-
const isRouteNotFound =
|
|
998
|
-
error instanceof RouteNotFoundError ||
|
|
999
|
-
(error instanceof Error && error.name === "RouteNotFoundError");
|
|
1000
|
-
if (isRouteNotFound) {
|
|
1001
|
-
callOnError(error, "routing", {
|
|
1002
|
-
request,
|
|
1003
|
-
url,
|
|
1004
|
-
env,
|
|
1005
|
-
handledByBoundary: true, // Handled by notFound component
|
|
1006
|
-
});
|
|
1007
|
-
|
|
1008
|
-
// Get notFound component from router options or use default
|
|
1009
|
-
const notFoundOption = router.notFound;
|
|
1010
|
-
const notFoundComponent =
|
|
1011
|
-
typeof notFoundOption === "function"
|
|
1012
|
-
? notFoundOption({ pathname: url.pathname })
|
|
1013
|
-
: (notFoundOption ?? createElement("h1", null, "Not Found"));
|
|
1014
|
-
|
|
1015
|
-
// Create a simple segment for the 404 page
|
|
1016
|
-
const notFoundSegment = {
|
|
1017
|
-
id: "notFound",
|
|
1018
|
-
namespace: "notFound",
|
|
1019
|
-
type: "route" as const,
|
|
1020
|
-
index: 0,
|
|
1021
|
-
component: notFoundComponent,
|
|
1022
|
-
params: {},
|
|
1023
|
-
};
|
|
1024
|
-
|
|
1025
|
-
const payload: RscPayload = {
|
|
1026
|
-
metadata: {
|
|
1027
|
-
pathname: url.pathname,
|
|
1028
|
-
segments: [notFoundSegment],
|
|
1029
|
-
matched: [],
|
|
1030
|
-
diff: [],
|
|
1031
|
-
isPartial: false,
|
|
1032
|
-
rootLayout: router.rootLayout,
|
|
1033
|
-
handles: store.stream(),
|
|
1034
|
-
version,
|
|
1035
|
-
themeConfig: router.themeConfig,
|
|
1036
|
-
warmupEnabled: router.warmupEnabled,
|
|
1037
|
-
initialTheme: requireRequestContext().theme,
|
|
1038
|
-
// No routeName for not-found routes
|
|
1039
|
-
},
|
|
1040
|
-
};
|
|
1041
|
-
|
|
1042
|
-
const rscStream = renderToReadableStream(payload);
|
|
1043
|
-
|
|
1044
|
-
// Determine if this is an RSC request or HTML request.
|
|
1045
|
-
// Partial requests are always RSC (see main isRscRequest comment).
|
|
1046
|
-
const isRscRequest =
|
|
1047
|
-
isPartial ||
|
|
1048
|
-
(!request.headers.get("accept")?.includes("text/html") &&
|
|
1049
|
-
!url.searchParams.has("__html")) ||
|
|
1050
|
-
url.searchParams.has("__rsc");
|
|
1051
|
-
|
|
1052
|
-
if (isRscRequest) {
|
|
1053
|
-
return createResponseWithMergedHeaders(rscStream, {
|
|
1054
|
-
status: 404,
|
|
1055
|
-
headers: { "content-type": "text/x-component;charset=utf-8" },
|
|
1056
|
-
});
|
|
1057
|
-
}
|
|
1058
|
-
|
|
1059
|
-
// Delegate to SSR for HTML response (reuse early setup if available)
|
|
1060
|
-
const [ssrModule, streamMode] = await getSSRSetup(
|
|
1061
|
-
handlerCtx,
|
|
1062
|
-
request,
|
|
1063
|
-
env,
|
|
1064
|
-
url,
|
|
1065
|
-
requireRequestContext()._metricsStore,
|
|
1066
|
-
);
|
|
1067
|
-
const htmlStream = await ssrModule.renderHTML(rscStream, {
|
|
1068
|
-
nonce,
|
|
1069
|
-
streamMode,
|
|
1070
|
-
});
|
|
1071
|
-
|
|
1072
|
-
return createResponseWithMergedHeaders(htmlStream, {
|
|
1073
|
-
status: 404,
|
|
1074
|
-
headers: { "content-type": "text/html;charset=utf-8" },
|
|
1075
|
-
});
|
|
1076
|
-
}
|
|
1077
|
-
|
|
1078
|
-
// Report unhandled errors
|
|
1079
|
-
callOnError(error, "routing", {
|
|
1080
|
-
request,
|
|
1081
|
-
url,
|
|
1082
|
-
env,
|
|
1083
|
-
handledByBoundary: false,
|
|
1084
|
-
});
|
|
1085
|
-
console.error(`[RSC] Error:`, error);
|
|
1086
|
-
throw error;
|
|
1087
|
-
}
|
|
1088
|
-
}
|
|
1089
1471
|
}
|