@rangojs/router 0.0.0-experimental.35 → 0.0.0-experimental.358c376d
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 +11 -3
- package/README.md +320 -735
- package/dist/bin/rango.js +983 -241
- 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 +62 -0
- package/dist/types/client-urls/types.d.ts +144 -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 +404 -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 +520 -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 +717 -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 +234 -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 +203 -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 +10725 -3898
- package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
- package/package.json +129 -46
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +117 -8
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +255 -25
- package/skills/caching/SKILL.md +414 -17
- package/skills/catalog.json +289 -0
- package/skills/client-urls/SKILL.md +307 -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 +858 -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 +282 -0
- package/skills/hooks/handle-and-actions.md +110 -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 +415 -55
- package/skills/middleware/SKILL.md +92 -16
- package/skills/migrate-nextjs/SKILL.md +852 -0
- package/skills/migrate-nextjs/backend-host-swap.md +120 -0
- package/skills/migrate-react-router/SKILL.md +189 -0
- package/skills/migrate-react-router/component-migration.md +201 -0
- package/skills/migrate-react-router/data-and-actions.md +236 -0
- package/skills/migrate-react-router/route-mapping.md +284 -0
- package/skills/mime-routes/SKILL.md +55 -18
- package/skills/observability/SKILL.md +231 -0
- package/skills/parallel/SKILL.md +245 -10
- package/skills/ppr/SKILL.md +914 -0
- package/skills/prerender/SKILL.md +243 -135
- package/skills/rango/SKILL.md +325 -24
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +180 -52
- package/skills/route/SKILL.md +181 -9
- package/skills/router-setup/SKILL.md +154 -11
- package/skills/scripts/SKILL.md +189 -0
- package/skills/server-actions/SKILL.md +776 -0
- package/skills/shell-manifest/SKILL.md +194 -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 +153 -0
- package/skills/testing/loader.md +130 -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 +9 -6
- 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 +405 -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 +209 -40
- package/src/browser/navigation-client.ts +284 -73
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +208 -329
- package/src/browser/navigation-transaction.ts +18 -66
- package/src/browser/network-error-handler.ts +34 -7
- package/src/browser/notify-listeners.ts +22 -0
- package/src/browser/partial-update.ts +278 -126
- package/src/browser/prefetch/cache.ts +362 -51
- package/src/browser/prefetch/default-strategy.ts +74 -0
- package/src/browser/prefetch/fetch.ts +453 -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/policy.ts +6 -0
- package/src/browser/prefetch/queue.ts +144 -23
- 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 +187 -75
- package/src/browser/react/NavigationProvider.tsx +249 -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 +375 -84
- package/src/browser/scroll-restoration.ts +61 -47
- package/src/browser/segment-reconciler.ts +44 -7
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +270 -71
- package/src/browser/types.ts +166 -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 +411 -154
- 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 +431 -112
- 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 +3250 -173
- 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 +16 -17
- package/src/cache/document-cache.ts +202 -61
- package/src/cache/handle-snapshot.ts +92 -1
- package/src/cache/index.ts +33 -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 +698 -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 +579 -0
- package/src/client-urls/types.ts +195 -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/debug.ts +2 -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 +151 -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 +519 -307
- package/src/route-definition/helper-factories.ts +28 -140
- package/src/route-definition/helpers-types.ts +169 -78
- package/src/route-definition/index.ts +4 -2
- package/src/route-definition/redirect.ts +53 -12
- 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 -68
- 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 +130 -29
- package/src/router/handler-context.ts +105 -45
- package/src/router/instrument.ts +401 -0
- package/src/router/intercept-resolution.ts +108 -24
- package/src/router/lazy-includes.ts +90 -63
- package/src/router/loader-resolution.ts +529 -57
- package/src/router/logging.ts +5 -8
- package/src/router/manifest.ts +105 -56
- 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 +66 -22
- package/src/router/match-middleware/cache-lookup.ts +368 -277
- package/src/router/match-middleware/cache-store.ts +175 -50
- package/src/router/match-middleware/intercept-resolution.ts +8 -28
- package/src/router/match-middleware/segment-resolution.ts +52 -18
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +135 -44
- package/src/router/metrics.ts +22 -36
- package/src/router/middleware-types.ts +26 -138
- package/src/router/middleware.ts +305 -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 +11 -29
- 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 +367 -78
- package/src/router/segment-resolution/helpers.ts +116 -33
- package/src/router/segment-resolution/loader-cache.ts +188 -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 +520 -385
- 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 +8 -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 +301 -78
- 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 +507 -133
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +581 -61
- 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 +961 -186
- package/src/server.ts +7 -2
- package/src/ssr/index.tsx +631 -179
- 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 +244 -81
- package/src/types/index.ts +4 -10
- package/src/types/loader-types.ts +99 -15
- package/src/types/request-scope.ts +112 -0
- package/src/types/route-config.ts +20 -52
- package/src/types/route-entry.ts +22 -7
- package/src/types/segments.ts +149 -14
- 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 +118 -26
- 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 -11
- 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 +267 -62
- 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 +51 -100
- 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 +54 -37
- package/src/vite/plugins/virtual-entries.ts +193 -30
- package/src/vite/rango.ts +403 -304
- package/src/vite/router-discovery.ts +1802 -187
- package/src/vite/utils/ast-handler-extract.ts +26 -35
- package/src/vite/utils/banner.ts +4 -4
- 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/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
|
@@ -70,9 +70,11 @@
|
|
|
70
70
|
* - No segments yielded from this middleware
|
|
71
71
|
*
|
|
72
72
|
* Loaders:
|
|
73
|
-
* - NEVER cached
|
|
73
|
+
* - NEVER cached in the segment cache
|
|
74
74
|
* - Always resolved fresh on every request
|
|
75
75
|
* - Ensures data freshness even with cached UI components
|
|
76
|
+
* - Segment cache staleness does NOT propagate to loader revalidation;
|
|
77
|
+
* loaders use their own revalidation rules (actionId, user-defined)
|
|
76
78
|
*
|
|
77
79
|
*
|
|
78
80
|
* REVALIDATION RULES
|
|
@@ -90,16 +92,20 @@
|
|
|
90
92
|
* - Action context (if POST)
|
|
91
93
|
*/
|
|
92
94
|
import type { ResolvedSegment } from "../../types.js";
|
|
95
|
+
import type { EntryData } from "../../server/context.js";
|
|
93
96
|
import type { MatchContext, MatchPipelineState } from "../match-context.js";
|
|
94
|
-
import { getRouterContext } from "../router-context.js";
|
|
95
|
-
import {
|
|
97
|
+
import { getRouterContext, type RouterContext } from "../router-context.js";
|
|
98
|
+
import { observeEvent } from "../instrument.js";
|
|
96
99
|
import { pushRevalidationTraceEntry, isTraceActive } from "../logging.js";
|
|
100
|
+
import { treeHasStreaming } from "./segment-resolution.js";
|
|
97
101
|
import type { PrerenderStore, PrerenderEntry } from "../../prerender/store.js";
|
|
98
|
-
import type { HandleStore } from "../../server/handle-store.js";
|
|
99
102
|
import {
|
|
100
|
-
getRequestContext,
|
|
101
103
|
_getRequestContext,
|
|
104
|
+
type RequestContext,
|
|
102
105
|
} from "../../server/request-context.js";
|
|
106
|
+
import { createShellImplicitDocScope } from "../../cache/cache-scope.js";
|
|
107
|
+
import { prerenderStoreShortCircuits } from "../navigation-snapshot.js";
|
|
108
|
+
import { paramsEqual } from "../params-util.js";
|
|
103
109
|
|
|
104
110
|
// Lazily initialized prerender store singleton and dynamically imported deps.
|
|
105
111
|
// Dynamic imports prevent pulling in @vitejs/plugin-rsc/rsc virtual module at
|
|
@@ -108,45 +114,32 @@ let prerenderStoreInstance: PrerenderStore | null | undefined;
|
|
|
108
114
|
let _deserializeSegments:
|
|
109
115
|
| typeof import("../../cache/segment-codec.js").deserializeSegments
|
|
110
116
|
| undefined;
|
|
117
|
+
let _fragmentSegments:
|
|
118
|
+
| typeof import("../../cache/segment-codec.js").fragmentSegments
|
|
119
|
+
| undefined;
|
|
111
120
|
let _restoreHandles:
|
|
112
121
|
| typeof import("../../cache/handle-snapshot.js").restoreHandles
|
|
113
122
|
| undefined;
|
|
123
|
+
let _decodeHandles:
|
|
124
|
+
| typeof import("../../cache/handle-snapshot.js").decodeHandles
|
|
125
|
+
| undefined;
|
|
114
126
|
let _hashParams:
|
|
115
127
|
| typeof import("../../prerender/param-hash.js").hashParams
|
|
116
128
|
| undefined;
|
|
117
|
-
let _lazyGetRequestContext:
|
|
118
|
-
| typeof import("../../server/request-context.js").getRequestContext
|
|
119
|
-
| undefined;
|
|
120
|
-
|
|
121
|
-
function paramsEqual(
|
|
122
|
-
a: Record<string, string>,
|
|
123
|
-
b: Record<string, string>,
|
|
124
|
-
): boolean {
|
|
125
|
-
if (a === b) return true;
|
|
126
|
-
|
|
127
|
-
const keysA = Object.keys(a);
|
|
128
|
-
if (keysA.length !== Object.keys(b).length) return false;
|
|
129
|
-
|
|
130
|
-
for (const key of keysA) {
|
|
131
|
-
if (a[key] !== b[key]) return false;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
return true;
|
|
135
|
-
}
|
|
136
129
|
|
|
137
130
|
async function ensurePrerenderDeps() {
|
|
138
131
|
if (!_deserializeSegments) {
|
|
139
|
-
const [codec, snapshot, paramHash,
|
|
132
|
+
const [codec, snapshot, paramHash, store] = await Promise.all([
|
|
140
133
|
import("../../cache/segment-codec.js"),
|
|
141
134
|
import("../../cache/handle-snapshot.js"),
|
|
142
135
|
import("../../prerender/param-hash.js"),
|
|
143
|
-
import("../../server/request-context.js"),
|
|
144
136
|
import("../../prerender/store.js"),
|
|
145
137
|
]);
|
|
146
138
|
_deserializeSegments = codec.deserializeSegments;
|
|
139
|
+
_fragmentSegments = codec.fragmentSegments;
|
|
147
140
|
_restoreHandles = snapshot.restoreHandles;
|
|
141
|
+
_decodeHandles = snapshot.decodeHandles;
|
|
148
142
|
_hashParams = paramHash.hashParams;
|
|
149
|
-
_lazyGetRequestContext = reqCtx.getRequestContext;
|
|
150
143
|
if (prerenderStoreInstance === undefined) {
|
|
151
144
|
prerenderStoreInstance = store.createPrerenderStore();
|
|
152
145
|
}
|
|
@@ -158,58 +151,23 @@ async function ensurePrerenderDeps() {
|
|
|
158
151
|
* Deserializes segments, replays handle data, yields segments with partial
|
|
159
152
|
* navigation nullification, and resolves fresh loaders.
|
|
160
153
|
*/
|
|
161
|
-
|
|
162
|
-
|
|
154
|
+
// Resolve loaders fresh on a cache hit (loaders are NEVER cached) and yield
|
|
155
|
+
// the loader segments, updating state.matchedIds and pushing the loader-resolve
|
|
156
|
+
// + cache-hit metrics. Shared verbatim by the prerender-store path
|
|
157
|
+
// (yieldFromStore) and the runtime cache-hit path (withCacheLookup). The router
|
|
158
|
+
// resolve fns are passed in (captured early by the callers) rather than re-read
|
|
159
|
+
// from getRouterContext() here, because that is ALS-backed and the callers run
|
|
160
|
+
// awaits before reaching this point (workerd can disrupt ALS mid-pipeline).
|
|
161
|
+
async function* resolveFreshLoadersAndYield<TEnv>(
|
|
163
162
|
ctx: MatchContext<TEnv>,
|
|
164
163
|
state: MatchPipelineState,
|
|
165
164
|
pipelineStart: number,
|
|
166
|
-
|
|
165
|
+
ms: MatchContext<TEnv>["metricsStore"],
|
|
166
|
+
resolveLoadersOnly: RouterContext<TEnv>["resolveLoadersOnly"],
|
|
167
|
+
resolveLoadersOnlyWithRevalidation: RouterContext<TEnv>["resolveLoadersOnlyWithRevalidation"],
|
|
167
168
|
): AsyncGenerator<ResolvedSegment> {
|
|
168
|
-
const
|
|
169
|
-
getRouterContext<TEnv>();
|
|
170
|
-
|
|
171
|
-
if (
|
|
172
|
-
!_deserializeSegments ||
|
|
173
|
-
!_restoreHandles ||
|
|
174
|
-
!_hashParams ||
|
|
175
|
-
!_lazyGetRequestContext
|
|
176
|
-
) {
|
|
177
|
-
throw new Error("yieldFromStore called before ensurePrerenderDeps");
|
|
178
|
-
}
|
|
169
|
+
const loaderStart = performance.now();
|
|
179
170
|
|
|
180
|
-
const segments = await _deserializeSegments(entry.segments);
|
|
181
|
-
|
|
182
|
-
// Replay handle data (same as runtime cache hit path).
|
|
183
|
-
// Prefer the eagerly-captured handleStoreRef to avoid ALS disruption in workerd.
|
|
184
|
-
const handleStore = handleStoreRef ?? _lazyGetRequestContext()?._handleStore;
|
|
185
|
-
if (handleStore) {
|
|
186
|
-
_restoreHandles(entry.handles, handleStore);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
state.cacheHit = true;
|
|
190
|
-
state.cacheSource = "prerender";
|
|
191
|
-
state.cachedSegments = segments;
|
|
192
|
-
state.cachedMatchedIds = segments.map((s) => s.id);
|
|
193
|
-
|
|
194
|
-
// For partial navigation, nullify components the client already has
|
|
195
|
-
// so parent layouts stay live (client keeps its existing versions).
|
|
196
|
-
// When params changed (e.g., different guide slug), the segments have
|
|
197
|
-
// different content, so we must NOT nullify.
|
|
198
|
-
const paramsChanged =
|
|
199
|
-
!ctx.isFullMatch && !paramsEqual(ctx.matched.params, ctx.prevParams);
|
|
200
|
-
for (const segment of segments) {
|
|
201
|
-
if (
|
|
202
|
-
!ctx.isFullMatch &&
|
|
203
|
-
!paramsChanged &&
|
|
204
|
-
ctx.clientSegmentSet.has(segment.id)
|
|
205
|
-
) {
|
|
206
|
-
segment.component = null;
|
|
207
|
-
segment.loading = undefined;
|
|
208
|
-
}
|
|
209
|
-
yield segment;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
// Resolve loaders fresh (loaders are never pre-rendered/cached)
|
|
213
171
|
if (ctx.isFullMatch) {
|
|
214
172
|
if (resolveLoadersOnly) {
|
|
215
173
|
const loaderSegments = await ctx.Store.run(() =>
|
|
@@ -235,6 +193,9 @@ async function* yieldFromStore<TEnv>(
|
|
|
235
193
|
ctx.url,
|
|
236
194
|
ctx.routeKey,
|
|
237
195
|
ctx.actionContext,
|
|
196
|
+
// Loaders are never cached in the segment cache, so segment staleness
|
|
197
|
+
// must not propagate; browser-sent staleness (ctx.stale) still must.
|
|
198
|
+
ctx.stale || undefined,
|
|
238
199
|
),
|
|
239
200
|
);
|
|
240
201
|
state.matchedIds = [
|
|
@@ -249,16 +210,195 @@ async function* yieldFromStore<TEnv>(
|
|
|
249
210
|
}
|
|
250
211
|
}
|
|
251
212
|
|
|
252
|
-
const ms = ctx.metricsStore;
|
|
253
213
|
if (ms) {
|
|
214
|
+
const loaderEnd = performance.now();
|
|
215
|
+
ms.metrics.push({
|
|
216
|
+
label: "pipeline:loader-resolve",
|
|
217
|
+
duration: loaderEnd - loaderStart,
|
|
218
|
+
startTime: loaderStart - ms.requestStart,
|
|
219
|
+
depth: 1,
|
|
220
|
+
});
|
|
254
221
|
ms.metrics.push({
|
|
255
|
-
label: "pipeline:cache-
|
|
256
|
-
duration:
|
|
222
|
+
label: "pipeline:cache-hit",
|
|
223
|
+
duration: loaderEnd - pipelineStart,
|
|
257
224
|
startTime: pipelineStart - ms.requestStart,
|
|
258
225
|
});
|
|
259
226
|
}
|
|
260
227
|
}
|
|
261
228
|
|
|
229
|
+
async function* yieldFromStore<TEnv>(
|
|
230
|
+
entry: PrerenderEntry,
|
|
231
|
+
ctx: MatchContext<TEnv>,
|
|
232
|
+
state: MatchPipelineState,
|
|
233
|
+
pipelineStart: number,
|
|
234
|
+
reqCtx: RequestContext<TEnv> | undefined,
|
|
235
|
+
resolveLoadersOnly: RouterContext<TEnv>["resolveLoadersOnly"],
|
|
236
|
+
resolveLoadersOnlyWithRevalidation: RouterContext<TEnv>["resolveLoadersOnlyWithRevalidation"],
|
|
237
|
+
): AsyncGenerator<ResolvedSegment> {
|
|
238
|
+
if (
|
|
239
|
+
!_deserializeSegments ||
|
|
240
|
+
!_fragmentSegments ||
|
|
241
|
+
!_restoreHandles ||
|
|
242
|
+
!_decodeHandles ||
|
|
243
|
+
!_hashParams
|
|
244
|
+
) {
|
|
245
|
+
throw new Error("yieldFromStore called before ensurePrerenderDeps");
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// Shell-HIT tail (issue #700): a Prerender+ppr route's tail serves from THIS
|
|
249
|
+
// store (the prerender lookup runs before the cache scope), so the fragment
|
|
250
|
+
// splice must apply here too — otherwise producer B entries re-serialize the
|
|
251
|
+
// whole tree per request while producer A entries do not.
|
|
252
|
+
const segments = reqCtx?._shellFragmentPayload
|
|
253
|
+
? await _fragmentSegments(entry.segments)
|
|
254
|
+
: await _deserializeSegments(entry.segments);
|
|
255
|
+
|
|
256
|
+
// Replay handle data (same as runtime cache hit path). entry.handles is a
|
|
257
|
+
// Flight-encoded string ("" when none) — decode before restore so
|
|
258
|
+
// Promise/ReactNode handle values are revived, not the corrupted JSON form.
|
|
259
|
+
const handleStore = reqCtx?._handleStore;
|
|
260
|
+
if (handleStore && entry.handles) {
|
|
261
|
+
const handlesRecord = await _decodeHandles(entry.handles);
|
|
262
|
+
if (handlesRecord) {
|
|
263
|
+
_restoreHandles(handlesRecord, handleStore);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
state.cacheHit = true;
|
|
268
|
+
state.cacheSource = "prerender";
|
|
269
|
+
state.cachedSegments = segments;
|
|
270
|
+
state.cachedMatchedIds = segments.map((s) => s.id);
|
|
271
|
+
|
|
272
|
+
// Set streaming flag (once) and resolve render barrier.
|
|
273
|
+
// Post-match serve-source truth for the PPR replay reporter. This overwrites
|
|
274
|
+
// `intercept` because the prerender store is the response source.
|
|
275
|
+
if (reqCtx) {
|
|
276
|
+
reqCtx._pprReplayPostMatchReason = "prerender-store";
|
|
277
|
+
if (reqCtx._treeHasStreaming === undefined) {
|
|
278
|
+
reqCtx._treeHasStreaming = treeHasStreaming(ctx.entries);
|
|
279
|
+
}
|
|
280
|
+
reqCtx._resolveRenderBarrier(segments);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// For partial navigation, nullify components the client already has
|
|
284
|
+
// so parent layouts stay live (client keeps its existing versions).
|
|
285
|
+
// When params changed (e.g., different guide slug), the segments have
|
|
286
|
+
// different content, so we must NOT nullify.
|
|
287
|
+
const paramsChanged =
|
|
288
|
+
!ctx.isFullMatch && !paramsEqual(ctx.matched.params, ctx.prevParams);
|
|
289
|
+
for (const segment of segments) {
|
|
290
|
+
if (
|
|
291
|
+
!ctx.isFullMatch &&
|
|
292
|
+
!paramsChanged &&
|
|
293
|
+
ctx.clientSegmentSet.has(segment.id)
|
|
294
|
+
) {
|
|
295
|
+
segment.component = null;
|
|
296
|
+
segment.loading = undefined;
|
|
297
|
+
}
|
|
298
|
+
yield segment;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// Resolve loaders fresh (loaders are never pre-rendered/cached).
|
|
302
|
+
yield* resolveFreshLoadersAndYield(
|
|
303
|
+
ctx,
|
|
304
|
+
state,
|
|
305
|
+
pipelineStart,
|
|
306
|
+
ctx.metricsStore,
|
|
307
|
+
resolveLoadersOnly,
|
|
308
|
+
resolveLoadersOnlyWithRevalidation,
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Whether the prerender store holds a baked entry for this route + params.
|
|
314
|
+
* Consulted by the PPR replay gate (matchPartialWithPprReplay), which must
|
|
315
|
+
* only report `prerender-store` when the short-circuit below will actually
|
|
316
|
+
* serve: a Passthrough(Prerender()) route with an unbaked/passthrough param
|
|
317
|
+
* misses the store and renders live, and replay — including its heal
|
|
318
|
+
* capture — must stay available for it (withCacheStore records the doc
|
|
319
|
+
* record on that path; state.cacheSource is not "prerender"). The store
|
|
320
|
+
* memoizes per routeKey/paramHash, so this probe and tryPrerenderLookup's
|
|
321
|
+
* subsequent get() share one underlying load.
|
|
322
|
+
*/
|
|
323
|
+
export async function prerenderEntryExists(
|
|
324
|
+
routeKey: string | undefined,
|
|
325
|
+
params: Record<string, string>,
|
|
326
|
+
pathname: string,
|
|
327
|
+
entries: EntryData[],
|
|
328
|
+
): Promise<boolean> {
|
|
329
|
+
if (!routeKey) return false;
|
|
330
|
+
// Deliberately NOT ensurePrerenderDeps(): the probe needs only the store
|
|
331
|
+
// and the param hasher — pulling segment-codec here would drag the
|
|
332
|
+
// @vitejs/plugin-rsc virtual module onto a path that never deserializes.
|
|
333
|
+
if (!_hashParams) {
|
|
334
|
+
_hashParams = (await import("../../prerender/param-hash.js")).hashParams;
|
|
335
|
+
}
|
|
336
|
+
if (prerenderStoreInstance === undefined) {
|
|
337
|
+
prerenderStoreInstance = (
|
|
338
|
+
await import("../../prerender/store.js")
|
|
339
|
+
).createPrerenderStore();
|
|
340
|
+
}
|
|
341
|
+
if (!prerenderStoreInstance) return false;
|
|
342
|
+
// Non-intercept variant only: whether the navigation IS an intercept (and
|
|
343
|
+
// therefore whether tryPrerenderLookup reads `paramHash + "/i"`) resolves
|
|
344
|
+
// during the match, so this pre-match fast path can only guess the normal
|
|
345
|
+
// artifact. A wrong guess is reclassified post-match from the match
|
|
346
|
+
// pipeline's `_pprReplayPostMatchReason` stamp.
|
|
347
|
+
const entry = await prerenderStoreInstance.get(
|
|
348
|
+
routeKey,
|
|
349
|
+
_hashParams!(params),
|
|
350
|
+
{
|
|
351
|
+
pathname,
|
|
352
|
+
isPassthroughRoute: entries.some(
|
|
353
|
+
(entry) => entry.type === "route" && entry.isPassthrough === true,
|
|
354
|
+
),
|
|
355
|
+
},
|
|
356
|
+
);
|
|
357
|
+
return entry != null;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* Look up a prerendered (build-time cached) entry for the current route and, on
|
|
362
|
+
* a hit, yield its segments. Returns true when an entry was served (the caller
|
|
363
|
+
* should stop the pipeline) and false on a miss. Intercept navigations consult
|
|
364
|
+
* only the intercept-specific entry (`paramHash + "/i"`); a miss there falls
|
|
365
|
+
* through to the normal pipeline so intercept-resolution can run. Callers must
|
|
366
|
+
* guard on `prerenderStoreInstance` after `ensurePrerenderDeps()`.
|
|
367
|
+
*/
|
|
368
|
+
async function* tryPrerenderLookup<TEnv>(
|
|
369
|
+
ctx: MatchContext<TEnv>,
|
|
370
|
+
state: MatchPipelineState,
|
|
371
|
+
pipelineStart: number,
|
|
372
|
+
reqCtx: RequestContext<TEnv> | undefined,
|
|
373
|
+
resolveLoadersOnly: RouterContext<TEnv>["resolveLoadersOnly"],
|
|
374
|
+
resolveLoadersOnlyWithRevalidation: RouterContext<TEnv>["resolveLoadersOnlyWithRevalidation"],
|
|
375
|
+
): AsyncGenerator<ResolvedSegment, boolean> {
|
|
376
|
+
const paramHash = _hashParams!(ctx.matched.params);
|
|
377
|
+
const isPassthroughPrerenderRoute = ctx.entries.some(
|
|
378
|
+
(entry) => entry.type === "route" && entry.isPassthrough === true,
|
|
379
|
+
);
|
|
380
|
+
const lookupHash = ctx.isIntercept ? paramHash + "/i" : paramHash;
|
|
381
|
+
const entry = await prerenderStoreInstance!.get(
|
|
382
|
+
ctx.matched.routeKey,
|
|
383
|
+
lookupHash,
|
|
384
|
+
{
|
|
385
|
+
pathname: ctx.pathname,
|
|
386
|
+
isPassthroughRoute: isPassthroughPrerenderRoute,
|
|
387
|
+
},
|
|
388
|
+
);
|
|
389
|
+
if (!entry) return false;
|
|
390
|
+
yield* yieldFromStore(
|
|
391
|
+
entry,
|
|
392
|
+
ctx,
|
|
393
|
+
state,
|
|
394
|
+
pipelineStart,
|
|
395
|
+
reqCtx,
|
|
396
|
+
resolveLoadersOnly,
|
|
397
|
+
resolveLoadersOnlyWithRevalidation,
|
|
398
|
+
);
|
|
399
|
+
return true;
|
|
400
|
+
}
|
|
401
|
+
|
|
262
402
|
/**
|
|
263
403
|
* Async generator middleware type
|
|
264
404
|
*/
|
|
@@ -294,7 +434,14 @@ export function withCacheLookup<TEnv>(
|
|
|
294
434
|
// can disrupt AsyncLocalStorage, causing getRequestContext() to return
|
|
295
435
|
// undefined afterward. Capturing the reference early ensures handle replay
|
|
296
436
|
// and handler handle-push work regardless of ALS state.
|
|
297
|
-
const
|
|
437
|
+
const pipelineReqCtx = _getRequestContext<TEnv>();
|
|
438
|
+
// Only the match can determine interception; the source header proves
|
|
439
|
+
// nothing in either direction. Clear a stale reason on normal matches.
|
|
440
|
+
if (pipelineReqCtx) {
|
|
441
|
+
pipelineReqCtx._pprReplayPostMatchReason = ctx.isIntercept
|
|
442
|
+
? "intercept"
|
|
443
|
+
: undefined;
|
|
444
|
+
}
|
|
298
445
|
|
|
299
446
|
const {
|
|
300
447
|
evaluateRevalidation,
|
|
@@ -303,72 +450,33 @@ export function withCacheLookup<TEnv>(
|
|
|
303
450
|
resolveLoadersOnly,
|
|
304
451
|
} = getRouterContext<TEnv>();
|
|
305
452
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
const
|
|
321
|
-
ctx
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
);
|
|
328
|
-
if (entry) {
|
|
329
|
-
yield* yieldFromStore(
|
|
330
|
-
entry,
|
|
331
|
-
ctx,
|
|
332
|
-
state,
|
|
333
|
-
pipelineStart,
|
|
334
|
-
handleStoreRef,
|
|
335
|
-
);
|
|
336
|
-
return;
|
|
337
|
-
}
|
|
338
|
-
// No intercept prerender -- fall through to normal pipeline
|
|
339
|
-
// (skip non-intercept prerender to let intercept-resolution run)
|
|
340
|
-
} else {
|
|
341
|
-
// Normal navigation: existing behavior
|
|
342
|
-
const entry = await prerenderStoreInstance.get(
|
|
343
|
-
ctx.matched.routeKey,
|
|
344
|
-
paramHash,
|
|
345
|
-
{
|
|
346
|
-
pathname: ctx.pathname,
|
|
347
|
-
isPassthroughRoute: isPassthroughPrerenderRoute,
|
|
348
|
-
},
|
|
453
|
+
if (prerenderStoreShortCircuits(ctx.matched.pr, ctx.request)) {
|
|
454
|
+
// Actions normally re-render fresh and skip the prerender store. But a pure
|
|
455
|
+
// Prerender route's handler is evicted at build, so there is no fresh
|
|
456
|
+
// handler to run on an action re-render -- without the fallback the
|
|
457
|
+
// re-render falls through to the evicted handler and throws "No prerender
|
|
458
|
+
// data found". Serve the prerendered entry instead (the action ran already;
|
|
459
|
+
// its result is applied client-side via useActionState). Passthrough routes
|
|
460
|
+
// keep a liveHandler, so they still re-render fresh on actions.
|
|
461
|
+
const isPassthroughPrerenderRoute = ctx.entries.some(
|
|
462
|
+
(entry) => entry.type === "route" && entry.isPassthrough === true,
|
|
463
|
+
);
|
|
464
|
+
if (!ctx.isAction || !isPassthroughPrerenderRoute) {
|
|
465
|
+
await ensurePrerenderDeps();
|
|
466
|
+
if (prerenderStoreInstance) {
|
|
467
|
+
const served = yield* tryPrerenderLookup(
|
|
468
|
+
ctx,
|
|
469
|
+
state,
|
|
470
|
+
pipelineStart,
|
|
471
|
+
pipelineReqCtx,
|
|
472
|
+
resolveLoadersOnly,
|
|
473
|
+
resolveLoadersOnlyWithRevalidation,
|
|
349
474
|
);
|
|
350
|
-
if (
|
|
351
|
-
yield* yieldFromStore(
|
|
352
|
-
entry,
|
|
353
|
-
ctx,
|
|
354
|
-
state,
|
|
355
|
-
pipelineStart,
|
|
356
|
-
handleStoreRef,
|
|
357
|
-
);
|
|
358
|
-
return;
|
|
359
|
-
}
|
|
475
|
+
if (served) return;
|
|
360
476
|
}
|
|
361
477
|
}
|
|
362
478
|
}
|
|
363
479
|
|
|
364
|
-
// Dev-mode static handler interception for non-Node.js runtimes.
|
|
365
|
-
// __PRERENDER_DEV_URL is set by the Vite plugin when the RSC environment
|
|
366
|
-
// lacks a Node.js module runner (e.g. workerd, Deno workers). In those
|
|
367
|
-
// runtimes, handlers that depend on Node APIs like node:fs can't run
|
|
368
|
-
// in-process. We redirect them to the /__rsc_prerender endpoint which
|
|
369
|
-
// resolves segments in a Node.js temp server, same as prerender routes.
|
|
370
|
-
// In Node.js dev mode this variable is undefined -- handlers run
|
|
371
|
-
// in-process where Node APIs work, so no interception is needed.
|
|
372
480
|
if (!ctx.isAction && !ctx.matched.pr && globalThis.__PRERENDER_DEV_URL) {
|
|
373
481
|
const hasStatic = ctx.entries.some(
|
|
374
482
|
(e) =>
|
|
@@ -380,64 +488,24 @@ export function withCacheLookup<TEnv>(
|
|
|
380
488
|
if (hasStatic) {
|
|
381
489
|
await ensurePrerenderDeps();
|
|
382
490
|
if (prerenderStoreInstance) {
|
|
383
|
-
const
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
491
|
+
const served = yield* tryPrerenderLookup(
|
|
492
|
+
ctx,
|
|
493
|
+
state,
|
|
494
|
+
pipelineStart,
|
|
495
|
+
pipelineReqCtx,
|
|
496
|
+
resolveLoadersOnly,
|
|
497
|
+
resolveLoadersOnlyWithRevalidation,
|
|
388
498
|
);
|
|
389
|
-
|
|
390
|
-
if (ctx.isIntercept) {
|
|
391
|
-
const entry = await prerenderStoreInstance.get(
|
|
392
|
-
ctx.matched.routeKey,
|
|
393
|
-
paramHash + "/i",
|
|
394
|
-
{
|
|
395
|
-
pathname: ctx.pathname,
|
|
396
|
-
isPassthroughRoute: isPassthroughPrerenderRoute,
|
|
397
|
-
},
|
|
398
|
-
);
|
|
399
|
-
if (entry) {
|
|
400
|
-
yield* yieldFromStore(
|
|
401
|
-
entry,
|
|
402
|
-
ctx,
|
|
403
|
-
state,
|
|
404
|
-
pipelineStart,
|
|
405
|
-
handleStoreRef,
|
|
406
|
-
);
|
|
407
|
-
return;
|
|
408
|
-
}
|
|
409
|
-
// No intercept prerender -- fall through to normal pipeline
|
|
410
|
-
} else {
|
|
411
|
-
const entry = await prerenderStoreInstance.get(
|
|
412
|
-
ctx.matched.routeKey,
|
|
413
|
-
paramHash,
|
|
414
|
-
{
|
|
415
|
-
pathname: ctx.pathname,
|
|
416
|
-
isPassthroughRoute: isPassthroughPrerenderRoute,
|
|
417
|
-
},
|
|
418
|
-
);
|
|
419
|
-
if (entry) {
|
|
420
|
-
yield* yieldFromStore(
|
|
421
|
-
entry,
|
|
422
|
-
ctx,
|
|
423
|
-
state,
|
|
424
|
-
pipelineStart,
|
|
425
|
-
handleStoreRef,
|
|
426
|
-
);
|
|
427
|
-
return;
|
|
428
|
-
}
|
|
429
|
-
}
|
|
499
|
+
if (served) return;
|
|
430
500
|
}
|
|
431
501
|
}
|
|
432
502
|
}
|
|
433
503
|
|
|
434
|
-
// Skip cache during actions
|
|
435
504
|
if (ctx.isAction || !ctx.cacheScope?.enabled) {
|
|
436
|
-
// Cache miss - pass through to segment resolution
|
|
437
505
|
yield* source;
|
|
438
506
|
if (ms) {
|
|
439
507
|
ms.metrics.push({
|
|
440
|
-
label: "pipeline:cache-
|
|
508
|
+
label: "pipeline:cache-miss",
|
|
441
509
|
duration: performance.now() - pipelineStart,
|
|
442
510
|
startTime: pipelineStart - ms.requestStart,
|
|
443
511
|
});
|
|
@@ -445,19 +513,64 @@ export function withCacheLookup<TEnv>(
|
|
|
445
513
|
return;
|
|
446
514
|
}
|
|
447
515
|
|
|
448
|
-
|
|
449
|
-
const cacheResult = await ctx.cacheScope.lookupRoute(
|
|
516
|
+
const explicitLookup = await ctx.cacheScope.lookupRouteDetailed(
|
|
450
517
|
ctx.pathname,
|
|
451
518
|
ctx.matched.params,
|
|
452
519
|
ctx.isIntercept,
|
|
453
520
|
);
|
|
521
|
+
let cacheResult =
|
|
522
|
+
explicitLookup.status === "hit" ? explicitLookup.result : null;
|
|
523
|
+
|
|
524
|
+
// PPR navigation replay composed with a route-derived cache() scope. The
|
|
525
|
+
// explicit tier stays authoritative: its hit serves under its own
|
|
526
|
+
// key/ttl/swr semantics and reports `explicit-cache-hit` — never a false
|
|
527
|
+
// replay HIT. ONLY a true `miss` lets the seeded doc record supply the
|
|
528
|
+
// match (the marker's onHit observer then reports the true HIT). The
|
|
529
|
+
// other outcomes render fresh: `bypass` (cache(false), a false
|
|
530
|
+
// condition() — absolute opt-outs even when the pre-read gate saw a
|
|
531
|
+
// different condition() result — or no store) and `error` (a throwing
|
|
532
|
+
// key()/keyGenerator/store.get keeps lookupRoute's render-uncached
|
|
533
|
+
// contract; the canonical record must not serve across a broken key
|
|
534
|
+
// partition). The outcome comes from the lookup itself, not a re-run of
|
|
535
|
+
// the condition, so a flapping predicate cannot re-admit the fallback.
|
|
536
|
+
// Gated on the marker's `onExplicitHit`, set ONLY on the
|
|
537
|
+
// navigation-replay serve path: a CAPTURE render must never fall back
|
|
538
|
+
// here — its marker store reads through to the real store, and a
|
|
539
|
+
// doc-keyed hit would replay the previous generation's segments instead
|
|
540
|
+
// of re-running handlers (breaking SWR recapture freshness). Intercepts
|
|
541
|
+
// stay source-dependent on their normal cache path (match-api never arms
|
|
542
|
+
// replay for them).
|
|
543
|
+
const replayMarker = pipelineReqCtx?._shellImplicitCache;
|
|
544
|
+
if (
|
|
545
|
+
replayMarker?.onExplicitHit &&
|
|
546
|
+
!ctx.isIntercept &&
|
|
547
|
+
!ctx.cacheScope.isShellImplicitDocScope
|
|
548
|
+
) {
|
|
549
|
+
if (explicitLookup.status === "hit") {
|
|
550
|
+
replayMarker.onExplicitHit();
|
|
551
|
+
} else if (explicitLookup.status === "miss" && replayMarker.store) {
|
|
552
|
+
// The store gate keeps report-only markers (installed on the
|
|
553
|
+
// no-eligible-snapshot path purely for truthful status) inert: a
|
|
554
|
+
// store-less marker minting a doc scope here would resolve the APP
|
|
555
|
+
// store and read the REAL doc: partition — a cross-partition serve.
|
|
556
|
+
cacheResult = await createShellImplicitDocScope(
|
|
557
|
+
replayMarker,
|
|
558
|
+
).lookupRoute(ctx.pathname, ctx.matched.params, ctx.isIntercept);
|
|
559
|
+
} else if (explicitLookup.status === "bypass") {
|
|
560
|
+
// condition() refused at lookup time (the gate only pre-decides the
|
|
561
|
+
// static cache(false) case) — report cache-disabled truthfully.
|
|
562
|
+
replayMarker.onExplicitBypass?.();
|
|
563
|
+
}
|
|
564
|
+
// "error" stays unreported: the render is fresh and the seeded record
|
|
565
|
+
// was not consulted, which is exactly what snapshot-miss describes; the
|
|
566
|
+
// store already routed the failure through reportCacheError.
|
|
567
|
+
}
|
|
454
568
|
|
|
455
569
|
if (!cacheResult) {
|
|
456
|
-
// Cache miss - pass through to segment resolution
|
|
457
570
|
yield* source;
|
|
458
571
|
if (ms) {
|
|
459
572
|
ms.metrics.push({
|
|
460
|
-
label: "pipeline:cache-
|
|
573
|
+
label: "pipeline:cache-miss",
|
|
461
574
|
duration: performance.now() - pipelineStart,
|
|
462
575
|
startTime: pipelineStart - ms.requestStart,
|
|
463
576
|
});
|
|
@@ -465,16 +578,13 @@ export function withCacheLookup<TEnv>(
|
|
|
465
578
|
return;
|
|
466
579
|
}
|
|
467
580
|
|
|
468
|
-
// Cache HIT
|
|
469
581
|
state.cacheHit = true;
|
|
470
582
|
state.cacheSource = "runtime";
|
|
471
583
|
state.shouldRevalidate = cacheResult.shouldRevalidate;
|
|
472
584
|
state.cachedSegments = cacheResult.segments;
|
|
473
585
|
state.cachedMatchedIds = cacheResult.segments.map((s) => s.id);
|
|
586
|
+
const pprTransitionDecisions = pipelineReqCtx?._pprTransitionDecisions;
|
|
474
587
|
|
|
475
|
-
// Apply revalidation to cached segments.
|
|
476
|
-
// For full matches or empty client segment sets, this map is unnecessary:
|
|
477
|
-
// we never run segment-level revalidation and can stream segments directly.
|
|
478
588
|
const canCheckSegmentRevalidation =
|
|
479
589
|
!ctx.isFullMatch &&
|
|
480
590
|
ctx.clientSegmentSet.size > 0 &&
|
|
@@ -484,7 +594,6 @@ export function withCacheLookup<TEnv>(
|
|
|
484
594
|
: undefined;
|
|
485
595
|
|
|
486
596
|
for (const segment of cacheResult.segments) {
|
|
487
|
-
// Skip segments client doesn't have - they need their component
|
|
488
597
|
if (!ctx.clientSegmentSet.has(segment.id)) {
|
|
489
598
|
if (isTraceActive()) {
|
|
490
599
|
pushRevalidationTraceEntry({
|
|
@@ -501,16 +610,42 @@ export function withCacheLookup<TEnv>(
|
|
|
501
610
|
continue;
|
|
502
611
|
}
|
|
503
612
|
|
|
504
|
-
// Skip intercept segments - they're handled separately
|
|
505
613
|
if (segment.namespace?.startsWith("intercept:")) {
|
|
506
614
|
yield segment;
|
|
507
615
|
continue;
|
|
508
616
|
}
|
|
509
617
|
|
|
510
|
-
// Look up revalidation rules for this segment
|
|
511
618
|
const entryInfo = entryRevalidateMap?.get(segment.id);
|
|
619
|
+
|
|
620
|
+
const searchChanged = ctx.prevUrl.search !== ctx.url.search;
|
|
621
|
+
const routeParamsChanged = !paramsEqual(
|
|
622
|
+
ctx.matched.params,
|
|
623
|
+
ctx.prevParams,
|
|
624
|
+
);
|
|
625
|
+
const shouldDefaultRevalidate =
|
|
626
|
+
(searchChanged || routeParamsChanged) &&
|
|
627
|
+
(segment.type === "route" ||
|
|
628
|
+
(segment.belongsToRoute &&
|
|
629
|
+
(segment.type === "layout" || segment.type === "parallel")));
|
|
630
|
+
|
|
512
631
|
if (!entryInfo || entryInfo.revalidate.length === 0) {
|
|
513
|
-
|
|
632
|
+
if (shouldDefaultRevalidate) {
|
|
633
|
+
if (isTraceActive()) {
|
|
634
|
+
pushRevalidationTraceEntry({
|
|
635
|
+
segmentId: segment.id,
|
|
636
|
+
segmentType: segment.type,
|
|
637
|
+
belongsToRoute: segment.belongsToRoute ?? false,
|
|
638
|
+
source: "cache-hit",
|
|
639
|
+
defaultShouldRevalidate: true,
|
|
640
|
+
finalShouldRevalidate: true,
|
|
641
|
+
reason: routeParamsChanged
|
|
642
|
+
? "cached-params-changed"
|
|
643
|
+
: "cached-search-changed",
|
|
644
|
+
});
|
|
645
|
+
}
|
|
646
|
+
yield segment;
|
|
647
|
+
continue;
|
|
648
|
+
}
|
|
514
649
|
if (isTraceActive()) {
|
|
515
650
|
pushRevalidationTraceEntry({
|
|
516
651
|
segmentId: segment.id,
|
|
@@ -522,13 +657,17 @@ export function withCacheLookup<TEnv>(
|
|
|
522
657
|
reason: "cached-no-rules",
|
|
523
658
|
});
|
|
524
659
|
}
|
|
525
|
-
|
|
526
|
-
segment.
|
|
660
|
+
// A PPR transition decision must reach the client even when this cached
|
|
661
|
+
// segment otherwise needs no update. Keep its replayed component so the
|
|
662
|
+
// partial result retains the segment for gateTransitions().
|
|
663
|
+
if (!pprTransitionDecisions?.has(segment.id)) {
|
|
664
|
+
segment.component = null;
|
|
665
|
+
segment.loading = undefined;
|
|
666
|
+
}
|
|
527
667
|
yield segment;
|
|
528
668
|
continue;
|
|
529
669
|
}
|
|
530
670
|
|
|
531
|
-
// Evaluate revalidation rules
|
|
532
671
|
const shouldRevalidate = await evaluateRevalidation({
|
|
533
672
|
segment,
|
|
534
673
|
prevParams: ctx.prevParams,
|
|
@@ -543,26 +682,20 @@ export function withCacheLookup<TEnv>(
|
|
|
543
682
|
routeKey: ctx.routeKey,
|
|
544
683
|
context: ctx.handlerContext,
|
|
545
684
|
actionContext: ctx.actionContext,
|
|
546
|
-
stale: cacheResult.shouldRevalidate || undefined,
|
|
685
|
+
stale: cacheResult.shouldRevalidate || ctx.stale || undefined,
|
|
547
686
|
traceSource: "cache-hit",
|
|
548
687
|
});
|
|
549
688
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
pathname: ctx.pathname,
|
|
559
|
-
routeKey: ctx.routeKey,
|
|
560
|
-
shouldRevalidate,
|
|
561
|
-
});
|
|
562
|
-
}
|
|
689
|
+
observeEvent({
|
|
690
|
+
type: "revalidation.decision",
|
|
691
|
+
timestamp: performance.now(),
|
|
692
|
+
segmentId: segment.id,
|
|
693
|
+
pathname: ctx.pathname,
|
|
694
|
+
routeKey: ctx.routeKey,
|
|
695
|
+
shouldRevalidate,
|
|
696
|
+
});
|
|
563
697
|
|
|
564
|
-
if (!shouldRevalidate) {
|
|
565
|
-
// Client has it, no revalidation needed
|
|
698
|
+
if (!shouldRevalidate && !pprTransitionDecisions?.has(segment.id)) {
|
|
566
699
|
segment.component = null;
|
|
567
700
|
segment.loading = undefined;
|
|
568
701
|
}
|
|
@@ -570,65 +703,23 @@ export function withCacheLookup<TEnv>(
|
|
|
570
703
|
yield segment;
|
|
571
704
|
}
|
|
572
705
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
if (ctx.isFullMatch) {
|
|
578
|
-
// Full match (document request) - simple loader resolution without revalidation
|
|
579
|
-
if (resolveLoadersOnly) {
|
|
580
|
-
const loaderSegments = await Store.run(() =>
|
|
581
|
-
resolveLoadersOnly(ctx.entries, ctx.handlerContext),
|
|
582
|
-
);
|
|
583
|
-
|
|
584
|
-
// Update state - full match doesn't track matchedIds separately
|
|
585
|
-
state.matchedIds = state.cachedMatchedIds!;
|
|
586
|
-
|
|
587
|
-
// Yield fresh loader segments
|
|
588
|
-
for (const segment of loaderSegments) {
|
|
589
|
-
yield segment;
|
|
590
|
-
}
|
|
591
|
-
} else {
|
|
592
|
-
state.matchedIds = state.cachedMatchedIds!;
|
|
593
|
-
}
|
|
594
|
-
} else {
|
|
595
|
-
// Partial match (navigation) - loader resolution with revalidation
|
|
596
|
-
if (resolveLoadersOnlyWithRevalidation) {
|
|
597
|
-
const loaderResult = await Store.run(() =>
|
|
598
|
-
resolveLoadersOnlyWithRevalidation(
|
|
599
|
-
ctx.entries,
|
|
600
|
-
ctx.handlerContext,
|
|
601
|
-
ctx.clientSegmentSet,
|
|
602
|
-
ctx.prevParams,
|
|
603
|
-
ctx.request,
|
|
604
|
-
ctx.prevUrl,
|
|
605
|
-
ctx.url,
|
|
606
|
-
ctx.routeKey,
|
|
607
|
-
ctx.actionContext,
|
|
608
|
-
cacheResult.shouldRevalidate || undefined,
|
|
609
|
-
),
|
|
610
|
-
);
|
|
611
|
-
|
|
612
|
-
// Update state with fresh loader matchedIds
|
|
613
|
-
state.matchedIds = [
|
|
614
|
-
...state.cachedMatchedIds!,
|
|
615
|
-
...loaderResult.matchedIds,
|
|
616
|
-
];
|
|
617
|
-
|
|
618
|
-
// Yield fresh loader segments
|
|
619
|
-
for (const segment of loaderResult.segments) {
|
|
620
|
-
yield segment;
|
|
621
|
-
}
|
|
622
|
-
} else {
|
|
623
|
-
state.matchedIds = state.cachedMatchedIds!;
|
|
706
|
+
const barrierReqCtx = pipelineReqCtx;
|
|
707
|
+
if (barrierReqCtx) {
|
|
708
|
+
if (barrierReqCtx._treeHasStreaming === undefined) {
|
|
709
|
+
barrierReqCtx._treeHasStreaming = treeHasStreaming(ctx.entries);
|
|
624
710
|
}
|
|
711
|
+
barrierReqCtx._resolveRenderBarrier(cacheResult.segments);
|
|
625
712
|
}
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
713
|
+
|
|
714
|
+
// Resolve loaders fresh (loaders are never cached). Shared with the
|
|
715
|
+
// prerender-store path via resolveFreshLoadersAndYield.
|
|
716
|
+
yield* resolveFreshLoadersAndYield(
|
|
717
|
+
ctx,
|
|
718
|
+
state,
|
|
719
|
+
pipelineStart,
|
|
720
|
+
ms,
|
|
721
|
+
resolveLoadersOnly,
|
|
722
|
+
resolveLoadersOnlyWithRevalidation,
|
|
723
|
+
);
|
|
633
724
|
};
|
|
634
725
|
}
|