@rangojs/router 0.0.0-experimental.f2d1a2f1 → 0.0.0-experimental.f4a8e8de
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +8 -4
- package/README.md +318 -821
- package/dist/bin/rango.js +925 -271
- package/dist/testing/vitest.js +82 -0
- package/dist/types/__internal.d.ts +127 -0
- package/dist/types/bin/rango.d.ts +1 -0
- package/dist/types/browser/action-coordinator.d.ts +57 -0
- package/dist/types/browser/action-fence.d.ts +33 -0
- package/dist/types/browser/app-shell.d.ts +34 -0
- package/dist/types/browser/app-version.d.ts +6 -0
- package/dist/types/browser/connection-warmup.d.ts +31 -0
- package/dist/types/browser/cookie-name.d.ts +66 -0
- package/dist/types/browser/dev-discovery.d.ts +11 -0
- package/dist/types/browser/event-controller.d.ts +231 -0
- package/dist/types/browser/history-state.d.ts +26 -0
- package/dist/types/browser/index.d.ts +1 -0
- package/dist/types/browser/intercept-utils.d.ts +30 -0
- package/dist/types/browser/invalidate-client-cache.d.ts +17 -0
- package/dist/types/browser/link-interceptor.d.ts +53 -0
- package/dist/types/browser/logging.d.ts +33 -0
- package/dist/types/browser/merge-segment-loaders.d.ts +38 -0
- package/dist/types/browser/navigation-bridge.d.ts +39 -0
- package/dist/types/browser/navigation-client.d.ts +17 -0
- package/dist/types/browser/navigation-store-handle.d.ts +25 -0
- package/dist/types/browser/navigation-store.d.ts +85 -0
- package/dist/types/browser/navigation-transaction.d.ts +75 -0
- package/dist/types/browser/network-error-handler.d.ts +35 -0
- package/dist/types/browser/notify-listeners.d.ts +2 -0
- package/dist/types/browser/partial-update.d.ts +61 -0
- package/dist/types/browser/prefetch/cache.d.ts +224 -0
- package/dist/types/browser/prefetch/default-strategy.d.ts +31 -0
- package/dist/types/browser/prefetch/fetch.d.ts +52 -0
- package/dist/types/browser/prefetch/invalidation.d.ts +6 -0
- package/dist/types/browser/prefetch/loader.d.ts +12 -0
- package/dist/types/browser/prefetch/observer.d.ts +24 -0
- package/dist/types/browser/prefetch/policy.d.ts +13 -0
- package/dist/types/browser/prefetch/queue.d.ts +48 -0
- package/dist/types/browser/prefetch/resource-ready.d.ts +28 -0
- package/dist/types/browser/prefetch/runtime.d.ts +2 -0
- package/dist/types/browser/rango-state.d.ts +56 -0
- package/dist/types/browser/react/Link.d.ts +132 -0
- package/dist/types/browser/react/NavigationProvider.d.ts +88 -0
- package/dist/types/browser/react/ScrollRestoration.d.ts +78 -0
- package/dist/types/browser/react/context.d.ts +57 -0
- package/dist/types/browser/react/filter-segment-order.d.ts +35 -0
- package/dist/types/browser/react/index.d.ts +1 -0
- package/dist/types/browser/react/location-state-shared.d.ts +162 -0
- package/dist/types/browser/react/location-state.d.ts +29 -0
- package/dist/types/browser/react/mount-context.d.ts +23 -0
- package/dist/types/browser/react/nonce-context.d.ts +14 -0
- package/dist/types/browser/react/shallow-equal.d.ts +5 -0
- package/dist/types/browser/react/use-action.d.ts +61 -0
- package/dist/types/browser/react/use-handle.d.ts +21 -0
- package/dist/types/browser/react/use-href.d.ts +32 -0
- package/dist/types/browser/react/use-link-status.d.ts +36 -0
- package/dist/types/browser/react/use-mount.d.ts +24 -0
- package/dist/types/browser/react/use-navigation.d.ts +15 -0
- package/dist/types/browser/react/use-params.d.ts +21 -0
- package/dist/types/browser/react/use-pathname.d.ts +13 -0
- package/dist/types/browser/react/use-reverse.d.ts +40 -0
- package/dist/types/browser/react/use-router.d.ts +23 -0
- package/dist/types/browser/react/use-search-params.d.ts +19 -0
- package/dist/types/browser/react/use-segments.d.ts +29 -0
- package/dist/types/browser/response-adapter.d.ts +58 -0
- package/dist/types/browser/rsc-router.d.ts +146 -0
- package/dist/types/browser/scroll-restoration.d.ts +103 -0
- package/dist/types/browser/segment-reconciler.d.ts +74 -0
- package/dist/types/browser/segment-structure-assert.d.ts +16 -0
- package/dist/types/browser/server-action-bridge.d.ts +29 -0
- package/dist/types/browser/types.d.ts +546 -0
- package/dist/types/browser/validate-redirect-origin.d.ts +28 -0
- package/dist/types/build/collect-fallback-refs.d.ts +5 -0
- package/dist/types/build/generate-manifest.d.ts +106 -0
- package/dist/types/build/generate-route-types.d.ts +8 -0
- package/dist/types/build/index.d.ts +21 -0
- package/dist/types/build/merge-full-manifests.d.ts +3 -0
- package/dist/types/build/prefix-tree-utils.d.ts +56 -0
- package/dist/types/build/route-trie.d.ts +20 -0
- package/dist/types/build/route-types/ast-helpers.d.ts +3 -0
- package/dist/types/build/route-types/ast-route-extraction.d.ts +13 -0
- package/dist/types/build/route-types/codegen.d.ts +16 -0
- package/dist/types/build/route-types/include-resolution.d.ts +74 -0
- package/dist/types/build/route-types/param-extraction.d.ts +13 -0
- package/dist/types/build/route-types/per-module-writer.d.ts +20 -0
- package/dist/types/build/route-types/router-processing.d.ts +81 -0
- package/dist/types/build/route-types/scan-filter.d.ts +17 -0
- package/dist/types/build/route-types/source-scan.d.ts +13 -0
- package/dist/types/build/runtime-discovery.d.ts +24 -0
- package/dist/types/cache/background-task.d.ts +21 -0
- package/dist/types/cache/cache-error.d.ts +71 -0
- package/dist/types/cache/cache-exec-scope.d.ts +31 -0
- package/dist/types/cache/cache-key-utils.d.ts +43 -0
- package/dist/types/cache/cache-policy.d.ts +59 -0
- package/dist/types/cache/cache-runtime.d.ts +51 -0
- package/dist/types/cache/cache-scope.d.ts +215 -0
- package/dist/types/cache/cache-tag.d.ts +79 -0
- package/dist/types/cache/cf/cf-base64.d.ts +4 -0
- package/dist/types/cache/cf/cf-cache-constants.d.ts +112 -0
- package/dist/types/cache/cf/cf-cache-store.d.ts +616 -0
- package/dist/types/cache/cf/cf-cache-types.d.ts +365 -0
- package/dist/types/cache/cf/cf-kv-utils.d.ts +43 -0
- package/dist/types/cache/cf/cf-tag-marker-memo.d.ts +15 -0
- package/dist/types/cache/cf/cf-zone-purge.d.ts +31 -0
- package/dist/types/cache/cf/index.d.ts +4 -0
- package/dist/types/cache/document-cache.d.ts +71 -0
- package/dist/types/cache/handle-capture.d.ts +23 -0
- package/dist/types/cache/handle-snapshot.d.ts +39 -0
- package/dist/types/cache/index.d.ts +9 -0
- package/dist/types/cache/memory-segment-store.d.ts +163 -0
- package/dist/types/cache/profile-registry.d.ts +40 -0
- package/dist/types/cache/read-through-swr.d.ts +61 -0
- package/dist/types/cache/search-params-filter.d.ts +64 -0
- package/dist/types/cache/segment-codec.d.ts +78 -0
- package/dist/types/cache/shell-snapshot.d.ts +186 -0
- package/dist/types/cache/tag-invalidation.d.ts +74 -0
- package/dist/types/cache/taint.d.ts +77 -0
- package/dist/types/cache/types.d.ts +503 -0
- package/dist/types/cache/vercel/index.d.ts +1 -0
- package/dist/types/cache/vercel/vercel-cache-store.d.ts +268 -0
- package/dist/types/client-urls/client-root.d.ts +38 -0
- package/dist/types/client-urls/client-urls.d.ts +5 -0
- package/dist/types/client-urls/navigation.d.ts +38 -0
- package/dist/types/client-urls/revalidation-protocol.d.ts +25 -0
- package/dist/types/client-urls/server-projection.d.ts +57 -0
- package/dist/types/client-urls/types.d.ts +132 -0
- package/dist/types/client.d.ts +191 -0
- package/dist/types/client.rsc.d.ts +41 -0
- package/dist/types/cloudflare/index.d.ts +7 -0
- package/dist/types/cloudflare/tracing.d.ts +57 -0
- package/dist/types/component-utils.d.ts +46 -0
- package/dist/types/components/DefaultDocument.d.ts +13 -0
- package/dist/types/context-var.d.ts +84 -0
- package/dist/types/debug.d.ts +57 -0
- package/dist/types/decode-loader-results.d.ts +42 -0
- package/dist/types/default-error-boundary.d.ts +10 -0
- package/dist/types/defer.d.ts +89 -0
- package/dist/types/deps/browser.d.ts +1 -0
- package/dist/types/deps/html-stream-client.d.ts +1 -0
- package/dist/types/deps/html-stream-server.d.ts +1 -0
- package/dist/types/deps/rsc.d.ts +1 -0
- package/dist/types/deps/ssr.d.ts +1 -0
- package/dist/types/dev-discovery-protocol.d.ts +5 -0
- package/dist/types/encode-kv.d.ts +35 -0
- package/dist/types/errors.d.ts +227 -0
- package/dist/types/escape-script.d.ts +44 -0
- package/dist/types/handle.d.ts +93 -0
- package/dist/types/handles/MetaTags.d.ts +17 -0
- package/dist/types/handles/Scripts.d.ts +38 -0
- package/dist/types/handles/breadcrumbs.d.ts +43 -0
- package/dist/types/handles/deferred-resolution.d.ts +53 -0
- package/dist/types/handles/is-thenable.d.ts +10 -0
- package/dist/types/handles/meta.d.ts +43 -0
- package/dist/types/handles/script.d.ts +139 -0
- package/dist/types/host/cookie-handler.d.ts +8 -0
- package/dist/types/host/errors.d.ts +40 -0
- package/dist/types/host/index.d.ts +33 -0
- package/dist/types/host/pattern-matcher.d.ts +30 -0
- package/dist/types/host/router.d.ts +12 -0
- package/dist/types/host/testing.d.ts +41 -0
- package/dist/types/host/types.d.ts +148 -0
- package/dist/types/host/utils.d.ts +20 -0
- package/dist/types/href-client.d.ts +214 -0
- package/dist/types/index.d.ts +113 -0
- package/dist/types/index.rsc.d.ts +52 -0
- package/dist/types/internal-debug.d.ts +1 -0
- package/dist/types/loader-redirect.d.ts +18 -0
- package/dist/types/loader-store.d.ts +193 -0
- package/dist/types/loader.d.ts +18 -0
- package/dist/types/loader.rsc.d.ts +18 -0
- package/dist/types/missing-id-error.d.ts +1 -0
- package/dist/types/outlet-context.d.ts +24 -0
- package/dist/types/outlet-provider.d.ts +14 -0
- package/dist/types/prerender/build-shell-capture.d.ts +104 -0
- package/dist/types/prerender/param-hash.d.ts +6 -0
- package/dist/types/prerender/shell-manifest-key.d.ts +18 -0
- package/dist/types/prerender/store.d.ts +63 -0
- package/dist/types/prerender.d.ts +292 -0
- package/dist/types/redirect-origin.d.ts +67 -0
- package/dist/types/regex-escape.d.ts +6 -0
- package/dist/types/render-error-thrower.d.ts +13 -0
- package/dist/types/response-utils.d.ts +35 -0
- package/dist/types/reverse.d.ts +206 -0
- package/dist/types/root-error-boundary.d.ts +32 -0
- package/dist/types/route-content-wrapper.d.ts +81 -0
- package/dist/types/route-definition/dsl-helpers.d.ts +130 -0
- package/dist/types/route-definition/helper-factories.d.ts +22 -0
- package/dist/types/route-definition/helpers-types.d.ts +393 -0
- package/dist/types/route-definition/index.d.ts +7 -0
- package/dist/types/route-definition/redirect.d.ts +48 -0
- package/dist/types/route-definition/resolve-handler-use.d.ts +19 -0
- package/dist/types/route-definition/use-item-types.d.ts +1 -0
- package/dist/types/route-definition.d.ts +1 -0
- package/dist/types/route-map-builder.d.ts +102 -0
- package/dist/types/route-name.d.ts +27 -0
- package/dist/types/route-types.d.ts +172 -0
- package/dist/types/router/basename.d.ts +10 -0
- package/dist/types/router/content-negotiation.d.ts +91 -0
- package/dist/types/router/debug-manifest.d.ts +7 -0
- package/dist/types/router/error-handling.d.ts +110 -0
- package/dist/types/router/find-match.d.ts +19 -0
- package/dist/types/router/handler-context.d.ts +41 -0
- package/dist/types/router/instrument.d.ts +191 -0
- package/dist/types/router/intercept-resolution.d.ts +91 -0
- package/dist/types/router/lazy-includes.d.ts +26 -0
- package/dist/types/router/loader-resolution.d.ts +85 -0
- package/dist/types/router/logging.d.ts +41 -0
- package/dist/types/router/manifest.d.ts +8 -0
- package/dist/types/router/match-api.d.ts +19 -0
- package/dist/types/router/match-context.d.ts +184 -0
- package/dist/types/router/match-handlers.d.ts +48 -0
- package/dist/types/router/match-middleware/background-revalidation.d.ts +113 -0
- package/dist/types/router/match-middleware/cache-lookup.d.ts +126 -0
- package/dist/types/router/match-middleware/cache-store.d.ts +112 -0
- package/dist/types/router/match-middleware/index.d.ts +80 -0
- package/dist/types/router/match-middleware/intercept-resolution.d.ts +116 -0
- package/dist/types/router/match-middleware/segment-resolution.d.ts +94 -0
- package/dist/types/router/match-pipelines.d.ts +103 -0
- package/dist/types/router/match-result.d.ts +114 -0
- package/dist/types/router/metrics.d.ts +6 -0
- package/dist/types/router/middleware-types.d.ts +74 -0
- package/dist/types/router/middleware.d.ts +116 -0
- package/dist/types/router/navigation-snapshot.d.ts +51 -0
- package/dist/types/router/params-util.d.ts +8 -0
- package/dist/types/router/parse-pattern.d.ts +38 -0
- package/dist/types/router/pattern-matching.d.ts +169 -0
- package/dist/types/router/prefetch-cache-ttl.d.ts +27 -0
- package/dist/types/router/prefetch-default.d.ts +28 -0
- package/dist/types/router/prefetch-limits.d.ts +20 -0
- package/dist/types/router/prerender-match.d.ts +53 -0
- package/dist/types/router/preview-match.d.ts +22 -0
- package/dist/types/router/request-classification.d.ts +104 -0
- package/dist/types/router/revalidation.d.ts +64 -0
- package/dist/types/router/route-snapshot.d.ts +112 -0
- package/dist/types/router/route-trie-builder.d.ts +77 -0
- package/dist/types/router/router-context.d.ts +137 -0
- package/dist/types/router/router-interfaces.d.ts +461 -0
- package/dist/types/router/router-options.d.ts +792 -0
- package/dist/types/router/router-registry.d.ts +15 -0
- package/dist/types/router/segment-resolution/fresh.d.ts +55 -0
- package/dist/types/router/segment-resolution/helpers.d.ts +93 -0
- package/dist/types/router/segment-resolution/loader-cache.d.ts +33 -0
- package/dist/types/router/segment-resolution/loader-mask.d.ts +44 -0
- package/dist/types/router/segment-resolution/loader-snapshot.d.ts +90 -0
- package/dist/types/router/segment-resolution/mask-nested.d.ts +53 -0
- package/dist/types/router/segment-resolution/revalidation.d.ts +85 -0
- package/dist/types/router/segment-resolution/static-store.d.ts +17 -0
- package/dist/types/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
- package/dist/types/router/segment-resolution/view-transition-default.d.ts +27 -0
- package/dist/types/router/segment-resolution.d.ts +3 -0
- package/dist/types/router/segment-wrappers.d.ts +53 -0
- package/dist/types/router/state-cookie-name.d.ts +1 -0
- package/dist/types/router/substitute-pattern-params.d.ts +23 -0
- package/dist/types/router/telemetry-otel.d.ts +113 -0
- package/dist/types/router/telemetry.d.ts +216 -0
- package/dist/types/router/timeout.d.ts +107 -0
- package/dist/types/router/tracing.d.ts +139 -0
- package/dist/types/router/transition-when.d.ts +13 -0
- package/dist/types/router/trie-matching.d.ts +32 -0
- package/dist/types/router/types.d.ts +98 -0
- package/dist/types/router/url-params.d.ts +26 -0
- package/dist/types/router.d.ts +7 -0
- package/dist/types/rsc/capture-queue.d.ts +49 -0
- package/dist/types/rsc/full-payload.d.ts +22 -0
- package/dist/types/rsc/handler-context.d.ts +32 -0
- package/dist/types/rsc/handler.d.ts +9 -0
- package/dist/types/rsc/helpers.d.ts +127 -0
- package/dist/types/rsc/index.d.ts +17 -0
- package/dist/types/rsc/json-route-result.d.ts +20 -0
- package/dist/types/rsc/loader-fetch.d.ts +14 -0
- package/dist/types/rsc/manifest-init.d.ts +18 -0
- package/dist/types/rsc/nonce.d.ts +28 -0
- package/dist/types/rsc/origin-guard.d.ts +50 -0
- package/dist/types/rsc/progressive-enhancement.d.ts +19 -0
- package/dist/types/rsc/redirect-guard.d.ts +37 -0
- package/dist/types/rsc/render-pipeline.d.ts +148 -0
- package/dist/types/rsc/response-cache-serve.d.ts +46 -0
- package/dist/types/rsc/response-error.d.ts +19 -0
- package/dist/types/rsc/response-route-handler.d.ts +29 -0
- package/dist/types/rsc/routine-plan.d.ts +124 -0
- package/dist/types/rsc/rsc-rendering.d.ts +18 -0
- package/dist/types/rsc/runtime-warnings.d.ts +22 -0
- package/dist/types/rsc/server-action.d.ts +68 -0
- package/dist/types/rsc/shell-build-manifest.d.ts +90 -0
- package/dist/types/rsc/shell-capture-constants.d.ts +44 -0
- package/dist/types/rsc/shell-capture.d.ts +406 -0
- package/dist/types/rsc/shell-serve.d.ts +189 -0
- package/dist/types/rsc/ssr-setup.d.ts +73 -0
- package/dist/types/rsc/stream-idle.d.ts +60 -0
- package/dist/types/rsc/transition-gate.d.ts +23 -0
- package/dist/types/rsc/types.d.ts +328 -0
- package/dist/types/runtime-env.d.ts +1 -0
- package/dist/types/search-params.d.ts +125 -0
- package/dist/types/segment-content-promise.d.ts +13 -0
- package/dist/types/segment-fragments.d.ts +79 -0
- package/dist/types/segment-loader-promise.d.ts +22 -0
- package/dist/types/segment-system.d.ts +86 -0
- package/dist/types/serialize.d.ts +164 -0
- package/dist/types/server/context.d.ts +510 -0
- package/dist/types/server/cookie-parse.d.ts +10 -0
- package/dist/types/server/cookie-store.d.ts +107 -0
- package/dist/types/server/fetchable-loader-store.d.ts +20 -0
- package/dist/types/server/handle-store.d.ts +131 -0
- package/dist/types/server/loader-registry.d.ts +32 -0
- package/dist/types/server/request-context.d.ts +707 -0
- package/dist/types/server/root-layout.d.ts +3 -0
- package/dist/types/server.d.ts +16 -0
- package/dist/types/ssr/index.d.ts +233 -0
- package/dist/types/ssr/inject-rsc-eager.d.ts +3 -0
- package/dist/types/ssr/preinit-client-references.d.ts +71 -0
- package/dist/types/ssr/ssr-root.d.ts +69 -0
- package/dist/types/static-handler.d.ts +71 -0
- package/dist/types/testing/cache-status.d.ts +63 -0
- package/dist/types/testing/collect-handle.d.ts +20 -0
- package/dist/types/testing/dispatch.d.ts +127 -0
- package/dist/types/testing/dom.entry.d.ts +15 -0
- package/dist/types/testing/e2e/fixture.d.ts +37 -0
- package/dist/types/testing/e2e/index.d.ts +31 -0
- package/dist/types/testing/e2e/matchers.d.ts +17 -0
- package/dist/types/testing/e2e/page-helpers.d.ts +86 -0
- package/dist/types/testing/e2e/parity.d.ts +111 -0
- package/dist/types/testing/e2e/server.d.ts +35 -0
- package/dist/types/testing/flight-matchers.d.ts +55 -0
- package/dist/types/testing/flight-normalize.d.ts +1 -0
- package/dist/types/testing/flight-tree.d.ts +192 -0
- package/dist/types/testing/flight.d.ts +115 -0
- package/dist/types/testing/flight.entry.d.ts +27 -0
- package/dist/types/testing/generated-routes.d.ts +66 -0
- package/dist/types/testing/index.d.ts +54 -0
- package/dist/types/testing/internal/context.d.ts +225 -0
- package/dist/types/testing/internal/flight-client-globals.d.ts +1 -0
- package/dist/types/testing/internal/seed-vars.d.ts +30 -0
- package/dist/types/testing/render-handler.d.ts +160 -0
- package/dist/types/testing/render-route.d.ts +265 -0
- package/dist/types/testing/run-loader.d.ts +195 -0
- package/dist/types/testing/run-middleware.d.ts +132 -0
- package/dist/types/testing/run-transition-when.d.ts +78 -0
- package/dist/types/testing/shell-status.d.ts +81 -0
- package/dist/types/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
- package/dist/types/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
- package/dist/types/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
- package/dist/types/testing/vitest-stubs/version.d.ts +1 -0
- package/dist/types/testing/vitest.d.ts +205 -0
- package/dist/types/theme/ThemeProvider.d.ts +13 -0
- package/dist/types/theme/ThemeScript.d.ts +45 -0
- package/dist/types/theme/constants.d.ts +39 -0
- package/dist/types/theme/index.d.ts +29 -0
- package/dist/types/theme/theme-context.d.ts +21 -0
- package/dist/types/theme/theme-script.d.ts +26 -0
- package/dist/types/theme/types.d.ts +162 -0
- package/dist/types/theme/use-theme.d.ts +8 -0
- package/dist/types/types/boundaries.d.ts +110 -0
- package/dist/types/types/cache-types.d.ts +191 -0
- package/dist/types/types/error-types.d.ts +114 -0
- package/dist/types/types/global-namespace.d.ts +90 -0
- package/dist/types/types/handler-context.d.ts +658 -0
- package/dist/types/types/index.d.ts +11 -0
- package/dist/types/types/loader-types.d.ts +208 -0
- package/dist/types/types/request-scope.d.ts +93 -0
- package/dist/types/types/route-config.d.ts +105 -0
- package/dist/types/types/route-entry.d.ts +98 -0
- package/dist/types/types/segments.d.ts +246 -0
- package/dist/types/types.d.ts +1 -0
- package/dist/types/urls/include-helper.d.ts +17 -0
- package/dist/types/urls/include-provider.d.ts +27 -0
- package/dist/types/urls/index.d.ts +6 -0
- package/dist/types/urls/path-helper-types.d.ts +198 -0
- package/dist/types/urls/path-helper.d.ts +12 -0
- package/dist/types/urls/pattern-types.d.ts +166 -0
- package/dist/types/urls/response-types.d.ts +67 -0
- package/dist/types/urls/type-extraction.d.ts +157 -0
- package/dist/types/urls/urls-function.d.ts +24 -0
- package/dist/types/urls.d.ts +1 -0
- package/dist/types/use-loader.d.ts +150 -0
- package/dist/types/vercel/index.d.ts +10 -0
- package/dist/types/vercel/tracing.d.ts +71 -0
- package/dist/types/vite/debug.d.ts +80 -0
- package/dist/types/vite/discovery/bundle-postprocess.d.ts +12 -0
- package/dist/types/vite/discovery/client-urls-projection.d.ts +53 -0
- package/dist/types/vite/discovery/dev-prerender-cache.d.ts +65 -0
- package/dist/types/vite/discovery/discover-routers.d.ts +17 -0
- package/dist/types/vite/discovery/discovery-errors.d.ts +113 -0
- package/dist/types/vite/discovery/gate-state.d.ts +79 -0
- package/dist/types/vite/discovery/prerender-collection.d.ts +24 -0
- package/dist/types/vite/discovery/route-types-writer.d.ts +32 -0
- package/dist/types/vite/discovery/self-gen-tracking.d.ts +22 -0
- package/dist/types/vite/discovery/shell-prerender-phase.d.ts +40 -0
- package/dist/types/vite/discovery/state.d.ts +170 -0
- package/dist/types/vite/discovery/virtual-module-codegen.d.ts +15 -0
- package/dist/types/vite/encryption-key.d.ts +2 -0
- package/dist/types/vite/index.d.ts +11 -0
- package/dist/types/vite/inject-client-debug.d.ts +56 -0
- package/dist/types/vite/plugin-types.d.ts +298 -0
- package/dist/types/vite/plugins/cjs-to-esm.d.ts +6 -0
- package/dist/types/vite/plugins/client-ref-dedup.d.ts +40 -0
- package/dist/types/vite/plugins/client-ref-hashing.d.ts +35 -0
- package/dist/types/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
- package/dist/types/vite/plugins/expose-action-id.d.ts +18 -0
- package/dist/types/vite/plugins/expose-id-utils.d.ts +37 -0
- package/dist/types/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
- package/dist/types/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
- package/dist/types/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
- package/dist/types/vite/plugins/expose-ids/router-transform.d.ts +13 -0
- package/dist/types/vite/plugins/expose-ids/types.d.ts +29 -0
- package/dist/types/vite/plugins/expose-internal-ids.d.ts +16 -0
- package/dist/types/vite/plugins/performance-tracks.d.ts +25 -0
- package/dist/types/vite/plugins/refresh-cmd.d.ts +20 -0
- package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
- package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
- package/dist/types/vite/plugins/use-cache-transform.d.ts +20 -0
- package/dist/types/vite/plugins/vercel-output.d.ts +85 -0
- package/dist/types/vite/plugins/version-injector.d.ts +21 -0
- package/dist/types/vite/plugins/version-plugin.d.ts +19 -0
- package/dist/types/vite/plugins/virtual-entries.d.ts +36 -0
- package/dist/types/vite/plugins/virtual-stub-plugin.d.ts +7 -0
- package/dist/types/vite/rango.d.ts +29 -0
- package/dist/types/vite/router-discovery.d.ts +23 -0
- package/dist/types/vite/utils/ast-handler-extract.d.ts +64 -0
- package/dist/types/vite/utils/banner.d.ts +2 -0
- package/dist/types/vite/utils/bundle-analysis.d.ts +28 -0
- package/dist/types/vite/utils/client-chunks.d.ts +55 -0
- package/dist/types/vite/utils/directive-prologue.d.ts +16 -0
- package/dist/types/vite/utils/forward-user-plugins.d.ts +37 -0
- package/dist/types/vite/utils/manifest-utils.d.ts +7 -0
- package/dist/types/vite/utils/package-resolution.d.ts +6 -0
- package/dist/types/vite/utils/prerender-utils.d.ts +32 -0
- package/dist/types/vite/utils/shared-utils.d.ts +67 -0
- package/dist/types.backup/__internal.d.ts +127 -0
- package/dist/types.backup/bin/rango.d.ts +1 -0
- package/dist/types.backup/browser/action-coordinator.d.ts +57 -0
- package/dist/types.backup/browser/action-fence.d.ts +33 -0
- package/dist/types.backup/browser/app-shell.d.ts +34 -0
- package/dist/types.backup/browser/app-version.d.ts +6 -0
- package/dist/types.backup/browser/connection-warmup.d.ts +31 -0
- package/dist/types.backup/browser/cookie-name.d.ts +66 -0
- package/dist/types.backup/browser/event-controller.d.ts +221 -0
- package/dist/types.backup/browser/history-state.d.ts +26 -0
- package/dist/types.backup/browser/index.d.ts +1 -0
- package/dist/types.backup/browser/intercept-utils.d.ts +30 -0
- package/dist/types.backup/browser/invalidate-client-cache.d.ts +17 -0
- package/dist/types.backup/browser/link-interceptor.d.ts +43 -0
- package/dist/types.backup/browser/logging.d.ts +33 -0
- package/dist/types.backup/browser/merge-segment-loaders.d.ts +38 -0
- package/dist/types.backup/browser/navigation-bridge.d.ts +27 -0
- package/dist/types.backup/browser/navigation-client.d.ts +17 -0
- package/dist/types.backup/browser/navigation-store-handle.d.ts +25 -0
- package/dist/types.backup/browser/navigation-store.d.ts +95 -0
- package/dist/types.backup/browser/navigation-transaction.d.ts +75 -0
- package/dist/types.backup/browser/network-error-handler.d.ts +35 -0
- package/dist/types.backup/browser/partial-update.d.ts +61 -0
- package/dist/types.backup/browser/prefetch/cache.d.ts +183 -0
- package/dist/types.backup/browser/prefetch/fetch.d.ts +52 -0
- package/dist/types.backup/browser/prefetch/observer.d.ts +27 -0
- package/dist/types.backup/browser/prefetch/policy.d.ts +13 -0
- package/dist/types.backup/browser/prefetch/queue.d.ts +48 -0
- package/dist/types.backup/browser/prefetch/resource-ready.d.ts +28 -0
- package/dist/types.backup/browser/rango-state.d.ts +52 -0
- package/dist/types.backup/browser/react/Link.d.ts +140 -0
- package/dist/types.backup/browser/react/NavigationProvider.d.ts +88 -0
- package/dist/types.backup/browser/react/ScrollRestoration.d.ts +78 -0
- package/dist/types.backup/browser/react/context.d.ts +54 -0
- package/dist/types.backup/browser/react/filter-segment-order.d.ts +35 -0
- package/dist/types.backup/browser/react/index.d.ts +1 -0
- package/dist/types.backup/browser/react/location-state-shared.d.ts +162 -0
- package/dist/types.backup/browser/react/location-state.d.ts +29 -0
- package/dist/types.backup/browser/react/mount-context.d.ts +23 -0
- package/dist/types.backup/browser/react/nonce-context.d.ts +14 -0
- package/dist/types.backup/browser/react/shallow-equal.d.ts +5 -0
- package/dist/types.backup/browser/react/use-action.d.ts +61 -0
- package/dist/types.backup/browser/react/use-handle.d.ts +21 -0
- package/dist/types.backup/browser/react/use-href.d.ts +32 -0
- package/dist/types.backup/browser/react/use-link-status.d.ts +36 -0
- package/dist/types.backup/browser/react/use-mount.d.ts +24 -0
- package/dist/types.backup/browser/react/use-navigation.d.ts +15 -0
- package/dist/types.backup/browser/react/use-params.d.ts +21 -0
- package/dist/types.backup/browser/react/use-pathname.d.ts +13 -0
- package/dist/types.backup/browser/react/use-reverse.d.ts +40 -0
- package/dist/types.backup/browser/react/use-router.d.ts +23 -0
- package/dist/types.backup/browser/react/use-search-params.d.ts +19 -0
- package/dist/types.backup/browser/react/use-segments.d.ts +29 -0
- package/dist/types.backup/browser/response-adapter.d.ts +58 -0
- package/dist/types.backup/browser/rsc-router.d.ts +141 -0
- package/dist/types.backup/browser/scroll-restoration.d.ts +103 -0
- package/dist/types.backup/browser/segment-reconciler.d.ts +74 -0
- package/dist/types.backup/browser/segment-structure-assert.d.ts +16 -0
- package/dist/types.backup/browser/server-action-bridge.d.ts +29 -0
- package/dist/types.backup/browser/types.d.ts +530 -0
- package/dist/types.backup/browser/validate-redirect-origin.d.ts +28 -0
- package/dist/types.backup/build/collect-fallback-refs.d.ts +5 -0
- package/dist/types.backup/build/generate-manifest.d.ts +100 -0
- package/dist/types.backup/build/generate-route-types.d.ts +8 -0
- package/dist/types.backup/build/index.d.ts +21 -0
- package/dist/types.backup/build/prefix-tree-utils.d.ts +56 -0
- package/dist/types.backup/build/route-trie.d.ts +89 -0
- package/dist/types.backup/build/route-types/ast-helpers.d.ts +3 -0
- package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +13 -0
- package/dist/types.backup/build/route-types/codegen.d.ts +16 -0
- package/dist/types.backup/build/route-types/include-resolution.d.ts +74 -0
- package/dist/types.backup/build/route-types/param-extraction.d.ts +13 -0
- package/dist/types.backup/build/route-types/per-module-writer.d.ts +18 -0
- package/dist/types.backup/build/route-types/router-processing.d.ts +82 -0
- package/dist/types.backup/build/route-types/scan-filter.d.ts +17 -0
- package/dist/types.backup/build/route-types/source-scan.d.ts +13 -0
- package/dist/types.backup/build/runtime-discovery.d.ts +24 -0
- package/dist/types.backup/cache/background-task.d.ts +21 -0
- package/dist/types.backup/cache/cache-error.d.ts +71 -0
- package/dist/types.backup/cache/cache-key-utils.d.ts +35 -0
- package/dist/types.backup/cache/cache-policy.d.ts +59 -0
- package/dist/types.backup/cache/cache-runtime.d.ts +51 -0
- package/dist/types.backup/cache/cache-scope.d.ts +134 -0
- package/dist/types.backup/cache/cache-tag.d.ts +79 -0
- package/dist/types.backup/cache/cf/cf-base64.d.ts +4 -0
- package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +105 -0
- package/dist/types.backup/cache/cf/cf-cache-store.d.ts +481 -0
- package/dist/types.backup/cache/cf/cf-cache-types.d.ts +300 -0
- package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +22 -0
- package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +15 -0
- package/dist/types.backup/cache/cf/index.d.ts +3 -0
- package/dist/types.backup/cache/document-cache.d.ts +69 -0
- package/dist/types.backup/cache/handle-capture.d.ts +23 -0
- package/dist/types.backup/cache/handle-snapshot.d.ts +39 -0
- package/dist/types.backup/cache/index.d.ts +7 -0
- package/dist/types.backup/cache/memory-segment-store.d.ts +163 -0
- package/dist/types.backup/cache/profile-registry.d.ts +40 -0
- package/dist/types.backup/cache/read-through-swr.d.ts +60 -0
- package/dist/types.backup/cache/segment-codec.d.ts +78 -0
- package/dist/types.backup/cache/shell-snapshot.d.ts +162 -0
- package/dist/types.backup/cache/tag-invalidation.d.ts +74 -0
- package/dist/types.backup/cache/taint.d.ts +71 -0
- package/dist/types.backup/cache/types.d.ts +407 -0
- package/dist/types.backup/cache/vercel/index.d.ts +1 -0
- package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +267 -0
- package/dist/types.backup/client.d.ts +184 -0
- package/dist/types.backup/client.rsc.d.ts +39 -0
- package/dist/types.backup/cloudflare/index.d.ts +7 -0
- package/dist/types.backup/cloudflare/tracing.d.ts +53 -0
- package/dist/types.backup/component-utils.d.ts +46 -0
- package/dist/types.backup/components/DefaultDocument.d.ts +13 -0
- package/dist/types.backup/context-var.d.ts +84 -0
- package/dist/types.backup/debug.d.ts +57 -0
- package/dist/types.backup/decode-loader-results.d.ts +5 -0
- package/dist/types.backup/default-error-boundary.d.ts +10 -0
- package/dist/types.backup/defer.d.ts +89 -0
- package/dist/types.backup/deps/browser.d.ts +1 -0
- package/dist/types.backup/deps/html-stream-client.d.ts +1 -0
- package/dist/types.backup/deps/html-stream-server.d.ts +1 -0
- package/dist/types.backup/deps/rsc.d.ts +1 -0
- package/dist/types.backup/deps/ssr.d.ts +1 -0
- package/dist/types.backup/encode-kv.d.ts +35 -0
- package/dist/types.backup/errors.d.ts +226 -0
- package/dist/types.backup/escape-script.d.ts +44 -0
- package/dist/types.backup/handle.d.ts +93 -0
- package/dist/types.backup/handles/MetaTags.d.ts +17 -0
- package/dist/types.backup/handles/Scripts.d.ts +38 -0
- package/dist/types.backup/handles/breadcrumbs.d.ts +43 -0
- package/dist/types.backup/handles/deferred-resolution.d.ts +53 -0
- package/dist/types.backup/handles/is-thenable.d.ts +12 -0
- package/dist/types.backup/handles/meta.d.ts +43 -0
- package/dist/types.backup/handles/script.d.ts +139 -0
- package/dist/types.backup/host/cookie-handler.d.ts +8 -0
- package/dist/types.backup/host/errors.d.ts +40 -0
- package/dist/types.backup/host/index.d.ts +33 -0
- package/dist/types.backup/host/pattern-matcher.d.ts +30 -0
- package/dist/types.backup/host/router.d.ts +12 -0
- package/dist/types.backup/host/testing.d.ts +41 -0
- package/dist/types.backup/host/types.d.ts +148 -0
- package/dist/types.backup/host/utils.d.ts +20 -0
- package/dist/types.backup/href-client.d.ts +214 -0
- package/dist/types.backup/index.d.ts +112 -0
- package/dist/types.backup/index.rsc.d.ts +51 -0
- package/dist/types.backup/internal-debug.d.ts +1 -0
- package/dist/types.backup/loader-store.d.ts +193 -0
- package/dist/types.backup/loader.d.ts +18 -0
- package/dist/types.backup/loader.rsc.d.ts +18 -0
- package/dist/types.backup/missing-id-error.d.ts +1 -0
- package/dist/types.backup/outlet-context.d.ts +12 -0
- package/dist/types.backup/outlet-provider.d.ts +12 -0
- package/dist/types.backup/prerender/build-shell-capture.d.ts +104 -0
- package/dist/types.backup/prerender/param-hash.d.ts +6 -0
- package/dist/types.backup/prerender/shell-manifest-key.d.ts +18 -0
- package/dist/types.backup/prerender/store.d.ts +62 -0
- package/dist/types.backup/prerender.d.ts +292 -0
- package/dist/types.backup/redirect-origin.d.ts +55 -0
- package/dist/types.backup/regex-escape.d.ts +6 -0
- package/dist/types.backup/render-error-thrower.d.ts +13 -0
- package/dist/types.backup/response-utils.d.ts +35 -0
- package/dist/types.backup/reverse.d.ts +206 -0
- package/dist/types.backup/root-error-boundary.d.ts +32 -0
- package/dist/types.backup/route-content-wrapper.d.ts +40 -0
- package/dist/types.backup/route-definition/dsl-helpers.d.ts +130 -0
- package/dist/types.backup/route-definition/helper-factories.d.ts +22 -0
- package/dist/types.backup/route-definition/helpers-types.d.ts +392 -0
- package/dist/types.backup/route-definition/index.d.ts +7 -0
- package/dist/types.backup/route-definition/redirect.d.ts +48 -0
- package/dist/types.backup/route-definition/resolve-handler-use.d.ts +19 -0
- package/dist/types.backup/route-definition/use-item-types.d.ts +1 -0
- package/dist/types.backup/route-definition.d.ts +1 -0
- package/dist/types.backup/route-map-builder.d.ts +127 -0
- package/dist/types.backup/route-name.d.ts +27 -0
- package/dist/types.backup/route-types.d.ts +172 -0
- package/dist/types.backup/router/basename.d.ts +10 -0
- package/dist/types.backup/router/content-negotiation.d.ts +91 -0
- package/dist/types.backup/router/debug-manifest.d.ts +7 -0
- package/dist/types.backup/router/error-handling.d.ts +76 -0
- package/dist/types.backup/router/find-match.d.ts +19 -0
- package/dist/types.backup/router/handler-context.d.ts +41 -0
- package/dist/types.backup/router/instrument.d.ts +161 -0
- package/dist/types.backup/router/intercept-resolution.d.ts +79 -0
- package/dist/types.backup/router/lazy-includes.d.ts +26 -0
- package/dist/types.backup/router/loader-resolution.d.ts +63 -0
- package/dist/types.backup/router/logging.d.ts +41 -0
- package/dist/types.backup/router/manifest.d.ts +8 -0
- package/dist/types.backup/router/match-api.d.ts +19 -0
- package/dist/types.backup/router/match-context.d.ts +184 -0
- package/dist/types.backup/router/match-handlers.d.ts +49 -0
- package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +113 -0
- package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +113 -0
- package/dist/types.backup/router/match-middleware/cache-store.d.ts +112 -0
- package/dist/types.backup/router/match-middleware/index.d.ts +80 -0
- package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +116 -0
- package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +94 -0
- package/dist/types.backup/router/match-pipelines.d.ts +103 -0
- package/dist/types.backup/router/match-result.d.ts +114 -0
- package/dist/types.backup/router/metrics.d.ts +6 -0
- package/dist/types.backup/router/middleware-types.d.ts +74 -0
- package/dist/types.backup/router/middleware.d.ts +116 -0
- package/dist/types.backup/router/navigation-snapshot.d.ts +22 -0
- package/dist/types.backup/router/params-util.d.ts +8 -0
- package/dist/types.backup/router/parse-pattern.d.ts +38 -0
- package/dist/types.backup/router/pattern-matching.d.ts +169 -0
- package/dist/types.backup/router/prefetch-cache-ttl.d.ts +27 -0
- package/dist/types.backup/router/prefetch-limits.d.ts +20 -0
- package/dist/types.backup/router/prerender-match.d.ts +50 -0
- package/dist/types.backup/router/preview-match.d.ts +22 -0
- package/dist/types.backup/router/request-classification.d.ts +104 -0
- package/dist/types.backup/router/revalidation.d.ts +57 -0
- package/dist/types.backup/router/route-snapshot.d.ts +112 -0
- package/dist/types.backup/router/router-context.d.ts +137 -0
- package/dist/types.backup/router/router-interfaces.d.ts +432 -0
- package/dist/types.backup/router/router-options.d.ts +738 -0
- package/dist/types.backup/router/router-registry.d.ts +15 -0
- package/dist/types.backup/router/segment-resolution/fresh.d.ts +55 -0
- package/dist/types.backup/router/segment-resolution/helpers.d.ts +93 -0
- package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +33 -0
- package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +44 -0
- package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +90 -0
- package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +53 -0
- package/dist/types.backup/router/segment-resolution/revalidation.d.ts +85 -0
- package/dist/types.backup/router/segment-resolution/static-store.d.ts +17 -0
- package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
- package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +28 -0
- package/dist/types.backup/router/segment-resolution.d.ts +3 -0
- package/dist/types.backup/router/segment-wrappers.d.ts +53 -0
- package/dist/types.backup/router/state-cookie-name.d.ts +1 -0
- package/dist/types.backup/router/substitute-pattern-params.d.ts +23 -0
- package/dist/types.backup/router/telemetry-otel.d.ts +113 -0
- package/dist/types.backup/router/telemetry.d.ts +215 -0
- package/dist/types.backup/router/timeout.d.ts +68 -0
- package/dist/types.backup/router/tracing.d.ts +125 -0
- package/dist/types.backup/router/trie-matching.d.ts +32 -0
- package/dist/types.backup/router/types.d.ts +98 -0
- package/dist/types.backup/router/url-params.d.ts +26 -0
- package/dist/types.backup/router.d.ts +7 -0
- package/dist/types.backup/rsc/capture-queue.d.ts +6 -0
- package/dist/types.backup/rsc/full-payload.d.ts +22 -0
- package/dist/types.backup/rsc/handler-context.d.ts +31 -0
- package/dist/types.backup/rsc/handler.d.ts +9 -0
- package/dist/types.backup/rsc/helpers.d.ts +213 -0
- package/dist/types.backup/rsc/index.d.ts +17 -0
- package/dist/types.backup/rsc/json-route-result.d.ts +20 -0
- package/dist/types.backup/rsc/loader-fetch.d.ts +14 -0
- package/dist/types.backup/rsc/manifest-init.d.ts +18 -0
- package/dist/types.backup/rsc/nonce.d.ts +28 -0
- package/dist/types.backup/rsc/origin-guard.d.ts +50 -0
- package/dist/types.backup/rsc/progressive-enhancement.d.ts +19 -0
- package/dist/types.backup/rsc/redirect-guard.d.ts +35 -0
- package/dist/types.backup/rsc/response-cache-serve.d.ts +46 -0
- package/dist/types.backup/rsc/response-error.d.ts +19 -0
- package/dist/types.backup/rsc/response-route-handler.d.ts +29 -0
- package/dist/types.backup/rsc/rsc-rendering.d.ts +23 -0
- package/dist/types.backup/rsc/runtime-warnings.d.ts +22 -0
- package/dist/types.backup/rsc/server-action.d.ts +68 -0
- package/dist/types.backup/rsc/shell-build-manifest.d.ts +84 -0
- package/dist/types.backup/rsc/shell-capture-constants.d.ts +27 -0
- package/dist/types.backup/rsc/shell-capture.d.ts +374 -0
- package/dist/types.backup/rsc/shell-serve.d.ts +136 -0
- package/dist/types.backup/rsc/ssr-setup.d.ts +48 -0
- package/dist/types.backup/rsc/transition-gate.d.ts +27 -0
- package/dist/types.backup/rsc/types.d.ts +290 -0
- package/dist/types.backup/runtime-env.d.ts +1 -0
- package/dist/types.backup/search-params.d.ts +125 -0
- package/dist/types.backup/segment-content-promise.d.ts +13 -0
- package/dist/types.backup/segment-fragments.d.ts +56 -0
- package/dist/types.backup/segment-loader-promise.d.ts +22 -0
- package/dist/types.backup/segment-system.d.ts +84 -0
- package/dist/types.backup/serialize.d.ts +164 -0
- package/dist/types.backup/server/context.d.ts +494 -0
- package/dist/types.backup/server/cookie-parse.d.ts +10 -0
- package/dist/types.backup/server/cookie-store.d.ts +107 -0
- package/dist/types.backup/server/fetchable-loader-store.d.ts +20 -0
- package/dist/types.backup/server/handle-store.d.ts +100 -0
- package/dist/types.backup/server/loader-registry.d.ts +32 -0
- package/dist/types.backup/server/request-context.d.ts +596 -0
- package/dist/types.backup/server/root-layout.d.ts +3 -0
- package/dist/types.backup/server.d.ts +15 -0
- package/dist/types.backup/ssr/index.d.ts +233 -0
- package/dist/types.backup/ssr/inject-rsc-eager.d.ts +3 -0
- package/dist/types.backup/ssr/preinit-client-references.d.ts +71 -0
- package/dist/types.backup/ssr/ssr-root.d.ts +69 -0
- package/dist/types.backup/static-handler.d.ts +57 -0
- package/dist/types.backup/testing/cache-status.d.ts +63 -0
- package/dist/types.backup/testing/collect-handle.d.ts +20 -0
- package/dist/types.backup/testing/dispatch.d.ts +123 -0
- package/dist/types.backup/testing/dom.entry.d.ts +15 -0
- package/dist/types.backup/testing/e2e/fixture.d.ts +37 -0
- package/dist/types.backup/testing/e2e/index.d.ts +30 -0
- package/dist/types.backup/testing/e2e/matchers.d.ts +17 -0
- package/dist/types.backup/testing/e2e/page-helpers.d.ts +62 -0
- package/dist/types.backup/testing/e2e/parity.d.ts +111 -0
- package/dist/types.backup/testing/e2e/server.d.ts +35 -0
- package/dist/types.backup/testing/flight-matchers.d.ts +55 -0
- package/dist/types.backup/testing/flight-normalize.d.ts +1 -0
- package/dist/types.backup/testing/flight-tree.d.ts +192 -0
- package/dist/types.backup/testing/flight.d.ts +115 -0
- package/dist/types.backup/testing/flight.entry.d.ts +27 -0
- package/dist/types.backup/testing/generated-routes.d.ts +66 -0
- package/dist/types.backup/testing/index.d.ts +52 -0
- package/dist/types.backup/testing/internal/context.d.ts +225 -0
- package/dist/types.backup/testing/internal/flight-client-globals.d.ts +1 -0
- package/dist/types.backup/testing/internal/seed-vars.d.ts +30 -0
- package/dist/types.backup/testing/render-handler.d.ts +160 -0
- package/dist/types.backup/testing/render-route.d.ts +246 -0
- package/dist/types.backup/testing/run-loader.d.ts +186 -0
- package/dist/types.backup/testing/run-middleware.d.ts +132 -0
- package/dist/types.backup/testing/run-transition-when.d.ts +77 -0
- package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
- package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
- package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
- package/dist/types.backup/testing/vitest-stubs/version.d.ts +1 -0
- package/dist/types.backup/testing/vitest.d.ts +205 -0
- package/dist/types.backup/theme/ThemeProvider.d.ts +13 -0
- package/dist/types.backup/theme/ThemeScript.d.ts +45 -0
- package/dist/types.backup/theme/constants.d.ts +39 -0
- package/dist/types.backup/theme/index.d.ts +29 -0
- package/dist/types.backup/theme/theme-context.d.ts +21 -0
- package/dist/types.backup/theme/theme-script.d.ts +26 -0
- package/dist/types.backup/theme/types.d.ts +162 -0
- package/dist/types.backup/theme/use-theme.d.ts +8 -0
- package/dist/types.backup/types/boundaries.d.ts +93 -0
- package/dist/types.backup/types/cache-types.d.ts +191 -0
- package/dist/types.backup/types/error-types.d.ts +114 -0
- package/dist/types.backup/types/global-namespace.d.ts +90 -0
- package/dist/types.backup/types/handler-context.d.ts +658 -0
- package/dist/types.backup/types/index.d.ts +11 -0
- package/dist/types.backup/types/loader-types.d.ts +182 -0
- package/dist/types.backup/types/request-scope.d.ts +93 -0
- package/dist/types.backup/types/route-config.d.ts +105 -0
- package/dist/types.backup/types/route-entry.d.ts +95 -0
- package/dist/types.backup/types/segments.d.ts +234 -0
- package/dist/types.backup/types.d.ts +1 -0
- package/dist/types.backup/urls/include-helper.d.ts +17 -0
- package/dist/types.backup/urls/include-provider.d.ts +27 -0
- package/dist/types.backup/urls/index.d.ts +6 -0
- package/dist/types.backup/urls/path-helper-types.d.ts +197 -0
- package/dist/types.backup/urls/path-helper.d.ts +12 -0
- package/dist/types.backup/urls/pattern-types.d.ts +166 -0
- package/dist/types.backup/urls/response-types.d.ts +67 -0
- package/dist/types.backup/urls/type-extraction.d.ts +157 -0
- package/dist/types.backup/urls/urls-function.d.ts +24 -0
- package/dist/types.backup/urls.d.ts +1 -0
- package/dist/types.backup/use-loader.d.ts +150 -0
- package/dist/types.backup/vercel/index.d.ts +10 -0
- package/dist/types.backup/vercel/tracing.d.ts +70 -0
- package/dist/types.backup/vite/debug.d.ts +80 -0
- package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +12 -0
- package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +65 -0
- package/dist/types.backup/vite/discovery/discover-routers.d.ts +17 -0
- package/dist/types.backup/vite/discovery/discovery-errors.d.ts +113 -0
- package/dist/types.backup/vite/discovery/gate-state.d.ts +79 -0
- package/dist/types.backup/vite/discovery/prerender-collection.d.ts +24 -0
- package/dist/types.backup/vite/discovery/route-types-writer.d.ts +32 -0
- package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +22 -0
- package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +40 -0
- package/dist/types.backup/vite/discovery/state.d.ts +162 -0
- package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +15 -0
- package/dist/types.backup/vite/index.d.ts +11 -0
- package/dist/types.backup/vite/inject-client-debug.d.ts +56 -0
- package/dist/types.backup/vite/plugin-types.d.ts +298 -0
- package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +6 -0
- package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +40 -0
- package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +35 -0
- package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
- package/dist/types.backup/vite/plugins/expose-action-id.d.ts +18 -0
- package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +37 -0
- package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
- package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
- package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
- package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +13 -0
- package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +29 -0
- package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +6 -0
- package/dist/types.backup/vite/plugins/performance-tracks.d.ts +25 -0
- package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +20 -0
- package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +20 -0
- package/dist/types.backup/vite/plugins/vercel-output.d.ts +85 -0
- package/dist/types.backup/vite/plugins/version-injector.d.ts +21 -0
- package/dist/types.backup/vite/plugins/version-plugin.d.ts +19 -0
- package/dist/types.backup/vite/plugins/virtual-entries.d.ts +36 -0
- package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +7 -0
- package/dist/types.backup/vite/rango.d.ts +29 -0
- package/dist/types.backup/vite/router-discovery.d.ts +23 -0
- package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +64 -0
- package/dist/types.backup/vite/utils/banner.d.ts +2 -0
- package/dist/types.backup/vite/utils/bundle-analysis.d.ts +28 -0
- package/dist/types.backup/vite/utils/client-chunks.d.ts +55 -0
- package/dist/types.backup/vite/utils/directive-prologue.d.ts +16 -0
- package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +37 -0
- package/dist/types.backup/vite/utils/manifest-utils.d.ts +7 -0
- package/dist/types.backup/vite/utils/package-resolution.d.ts +6 -0
- package/dist/types.backup/vite/utils/prerender-utils.d.ts +32 -0
- package/dist/types.backup/vite/utils/shared-utils.d.ts +55 -0
- package/dist/vite/index.js +9695 -3592
- package/package.json +119 -39
- package/skills/api-client/SKILL.md +211 -0
- package/skills/breadcrumbs/SKILL.md +82 -5
- package/skills/bundle-analysis/SKILL.md +159 -0
- package/skills/cache-guide/SKILL.md +232 -34
- package/skills/caching/SKILL.md +375 -19
- package/skills/catalog.json +283 -0
- package/skills/cloudflare/SKILL.md +151 -0
- package/skills/cloudflare/agents/openai.yaml +4 -0
- package/skills/cloudflare/references/d1-and-local-dev.md +131 -0
- package/skills/cloudflare/references/streaming-and-deploy.md +107 -0
- package/skills/cloudflare/references/webhooks-and-crypto.md +147 -0
- package/skills/comparison/SKILL.md +50 -0
- package/skills/comparison/agents/openai.yaml +4 -0
- package/skills/comparison/references/framework-comparison.md +844 -0
- package/skills/composability/SKILL.md +124 -4
- package/skills/css/SKILL.md +76 -0
- package/skills/debug-manifest/SKILL.md +5 -11
- package/skills/defer-hydration/SKILL.md +235 -0
- package/skills/deployment-caching/SKILL.md +176 -0
- package/skills/document-cache/SKILL.md +116 -58
- package/skills/fonts/SKILL.md +1 -1
- package/skills/handler-use/SKILL.md +12 -10
- package/skills/hooks/SKILL.md +73 -699
- package/skills/hooks/data.md +273 -0
- package/skills/hooks/handle-and-actions.md +103 -0
- package/skills/hooks/navigation.md +110 -0
- package/skills/hooks/outlets.md +62 -0
- package/skills/hooks/state.md +228 -0
- package/skills/hooks/urls.md +135 -0
- package/skills/host-router/SKILL.md +129 -27
- package/skills/i18n/SKILL.md +276 -0
- package/skills/intercept/SKILL.md +75 -19
- package/skills/layout/SKILL.md +40 -19
- package/skills/links/SKILL.md +211 -17
- package/skills/loader/SKILL.md +230 -25
- package/skills/middleware/SKILL.md +58 -13
- package/skills/migrate-nextjs/SKILL.md +267 -33
- package/skills/migrate-nextjs/backend-host-swap.md +120 -0
- package/skills/migrate-react-router/SKILL.md +59 -671
- package/skills/migrate-react-router/component-migration.md +196 -0
- package/skills/migrate-react-router/data-and-actions.md +225 -0
- package/skills/migrate-react-router/route-mapping.md +271 -0
- package/skills/mime-routes/SKILL.md +55 -18
- package/skills/observability/SKILL.md +231 -0
- package/skills/parallel/SKILL.md +50 -10
- package/skills/ppr/SKILL.md +904 -0
- package/skills/prerender/SKILL.md +130 -68
- package/skills/rango/SKILL.md +321 -26
- package/skills/react-compiler/SKILL.md +168 -0
- package/skills/response-routes/SKILL.md +172 -52
- package/skills/route/SKILL.md +123 -9
- package/skills/router-setup/SKILL.md +53 -9
- package/skills/scripts/SKILL.md +179 -0
- package/skills/server-actions/SKILL.md +776 -0
- package/skills/shell-manifest/SKILL.md +185 -0
- package/skills/streams-and-websockets/SKILL.md +1 -1
- package/skills/tailwind/SKILL.md +28 -4
- package/skills/testing/SKILL.md +131 -0
- package/skills/testing/bindings.md +103 -0
- package/skills/testing/cache-prerender.md +172 -0
- package/skills/testing/client-components.md +131 -0
- package/skills/testing/e2e-parity.md +125 -0
- package/skills/testing/flight.md +91 -0
- package/skills/testing/handles.md +131 -0
- package/skills/testing/loader.md +128 -0
- package/skills/testing/middleware.md +99 -0
- package/skills/testing/render-handler.md +122 -0
- package/skills/testing/response-routes.md +95 -0
- package/skills/testing/reverse-and-types.md +85 -0
- package/skills/testing/server-actions.md +107 -0
- package/skills/testing/server-tree.md +128 -0
- package/skills/testing/setup.md +123 -0
- package/skills/theme/SKILL.md +1 -1
- package/skills/typesafety/SKILL.md +45 -628
- 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 +0 -65
- package/src/browser/action-coordinator.ts +53 -36
- package/src/browser/action-fence.ts +47 -0
- package/src/browser/app-shell.ts +14 -27
- package/src/browser/connection-warmup.ts +134 -0
- package/src/browser/cookie-name.ts +140 -0
- package/src/browser/dev-discovery.ts +66 -0
- package/src/browser/event-controller.ts +400 -168
- package/src/browser/history-state.ts +21 -0
- package/src/browser/index.ts +3 -3
- package/src/browser/invalidate-client-cache.ts +52 -0
- package/src/browser/link-interceptor.ts +469 -20
- package/src/browser/logging.ts +28 -0
- package/src/browser/merge-segment-loaders.ts +6 -4
- package/src/browser/navigation-bridge.ts +164 -69
- package/src/browser/navigation-client.ts +199 -96
- package/src/browser/navigation-store-handle.ts +38 -0
- package/src/browser/navigation-store.ts +165 -345
- package/src/browser/navigation-transaction.ts +9 -59
- package/src/browser/network-error-handler.ts +34 -7
- package/src/browser/notify-listeners.ts +22 -0
- package/src/browser/partial-update.ts +219 -163
- package/src/browser/prefetch/cache.ts +240 -97
- package/src/browser/prefetch/default-strategy.ts +74 -0
- package/src/browser/prefetch/fetch.ts +317 -51
- package/src/browser/prefetch/invalidation.ts +30 -0
- package/src/browser/prefetch/loader.ts +111 -0
- package/src/browser/prefetch/observer.ts +50 -22
- package/src/browser/prefetch/queue.ts +25 -7
- package/src/browser/prefetch/runtime.ts +6 -0
- package/src/browser/rango-state.ts +177 -114
- package/src/browser/react/Link.tsx +115 -75
- package/src/browser/react/NavigationProvider.tsx +194 -143
- package/src/browser/react/ScrollRestoration.tsx +10 -6
- package/src/browser/react/context.ts +4 -0
- 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 +17 -14
- package/src/browser/react/use-href.tsx +8 -1
- package/src/browser/react/use-link-status.ts +33 -8
- package/src/browser/react/use-navigation.ts +10 -5
- package/src/browser/react/use-params.ts +11 -11
- package/src/browser/react/use-reverse.ts +106 -0
- package/src/browser/react/use-router.ts +21 -6
- 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 +230 -42
- package/src/browser/scroll-restoration.ts +37 -22
- package/src/browser/segment-reconciler.ts +31 -21
- package/src/browser/segment-structure-assert.ts +2 -2
- package/src/browser/server-action-bridge.ts +262 -65
- package/src/browser/types.ts +132 -47
- package/src/browser/validate-redirect-origin.ts +43 -16
- package/src/build/collect-fallback-refs.ts +107 -0
- package/src/build/generate-manifest.ts +213 -184
- package/src/build/generate-route-types.ts +3 -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 -280
- 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 +513 -64
- 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 +312 -204
- package/src/build/route-types/scan-filter.ts +1 -1
- package/src/build/route-types/source-scan.ts +216 -0
- package/src/build/runtime-discovery.ts +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 -121
- package/src/cache/cache-scope.ts +383 -105
- 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 +3028 -391
- package/src/cache/cf/cf-cache-types.ts +417 -0
- package/src/cache/cf/cf-kv-utils.ts +84 -0
- package/src/cache/cf/cf-tag-marker-memo.ts +108 -0
- package/src/cache/cf/cf-zone-purge.ts +101 -0
- package/src/cache/cf/index.ts +11 -16
- package/src/cache/document-cache.ts +184 -53
- package/src/cache/handle-snapshot.ts +92 -1
- package/src/cache/index.ts +32 -20
- package/src/cache/memory-segment-store.ts +286 -37
- package/src/cache/profile-registry.ts +46 -31
- package/src/cache/read-through-swr.ts +66 -16
- package/src/cache/search-params-filter.ts +118 -0
- package/src/cache/segment-codec.ts +80 -25
- package/src/cache/shell-snapshot.ts +516 -0
- package/src/cache/tag-invalidation.ts +230 -0
- package/src/cache/taint.ts +28 -9
- package/src/cache/types.ts +323 -100
- package/src/cache/vercel/index.ts +11 -0
- package/src/cache/vercel/vercel-cache-store.ts +1264 -0
- package/src/client-urls/client-root.tsx +161 -0
- package/src/client-urls/client-urls.ts +665 -0
- package/src/client-urls/navigation.ts +237 -0
- package/src/client-urls/revalidation-protocol.ts +56 -0
- package/src/client-urls/server-projection.ts +563 -0
- package/src/client-urls/types.ts +178 -0
- package/src/client.rsc.tsx +48 -21
- package/src/client.tsx +77 -67
- 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 +18 -6
- 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 +67 -37
- 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 +105 -12
- package/src/index.ts +102 -14
- 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 +12 -0
- 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 +47 -38
- package/src/prerender.ts +81 -13
- 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 +34 -0
- package/src/reverse.ts +65 -40
- package/src/root-error-boundary.tsx +1 -19
- package/src/route-content-wrapper.tsx +112 -78
- package/src/route-definition/dsl-helpers.ts +300 -313
- package/src/route-definition/helper-factories.ts +28 -140
- package/src/route-definition/helpers-types.ts +92 -62
- package/src/route-definition/index.ts +1 -2
- package/src/route-definition/redirect.ts +44 -11
- package/src/route-definition/resolve-handler-use.ts +6 -1
- package/src/route-definition/use-item-types.ts +29 -0
- package/src/route-map-builder.ts +102 -74
- package/src/route-types.ts +19 -46
- package/src/router/basename.ts +14 -0
- package/src/router/content-negotiation.ts +120 -30
- package/src/router/error-handling.ts +110 -29
- package/src/router/find-match.ts +129 -30
- package/src/router/handler-context.ts +41 -57
- package/src/router/instrument.ts +401 -0
- package/src/router/intercept-resolution.ts +98 -21
- package/src/router/lazy-includes.ts +82 -58
- package/src/router/loader-resolution.ts +401 -85
- package/src/router/logging.ts +0 -6
- package/src/router/manifest.ts +74 -40
- package/src/router/match-api.ts +91 -55
- package/src/router/match-context.ts +0 -22
- package/src/router/match-handlers.ts +268 -171
- package/src/router/match-middleware/background-revalidation.ts +40 -24
- package/src/router/match-middleware/cache-lookup.ts +316 -302
- package/src/router/match-middleware/cache-store.ts +134 -52
- package/src/router/match-middleware/intercept-resolution.ts +0 -22
- package/src/router/match-middleware/segment-resolution.ts +0 -22
- package/src/router/match-pipelines.ts +1 -42
- package/src/router/match-result.ts +76 -79
- package/src/router/metrics.ts +17 -36
- package/src/router/middleware-types.ts +20 -110
- package/src/router/middleware.ts +275 -173
- package/src/router/navigation-snapshot.ts +51 -60
- package/src/router/params-util.ts +23 -0
- package/src/router/parse-pattern.ts +115 -0
- package/src/router/pattern-matching.ts +134 -154
- 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 +159 -69
- package/src/router/preview-match.ts +6 -2
- package/src/router/request-classification.ts +50 -69
- package/src/router/revalidation.ts +146 -83
- package/src/router/route-snapshot.ts +14 -3
- package/src/router/route-trie-builder.ts +334 -0
- package/src/router/router-context.ts +6 -29
- package/src/router/router-interfaces.ts +168 -38
- package/src/router/router-options.ts +235 -11
- package/src/router/router-registry.ts +2 -5
- package/src/router/segment-resolution/fresh.ts +163 -88
- package/src/router/segment-resolution/helpers.ts +96 -18
- package/src/router/segment-resolution/loader-cache.ts +187 -39
- package/src/router/segment-resolution/loader-mask.ts +60 -0
- package/src/router/segment-resolution/loader-snapshot.ts +259 -0
- package/src/router/segment-resolution/mask-nested.ts +99 -0
- package/src/router/segment-resolution/revalidation.ts +316 -321
- package/src/router/segment-resolution/static-store.ts +55 -15
- package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
- package/src/router/segment-resolution/view-transition-default.ts +60 -0
- package/src/router/segment-resolution.ts +5 -1
- package/src/router/segment-wrappers.ts +6 -5
- package/src/router/state-cookie-name.ts +33 -0
- package/src/router/substitute-pattern-params.ts +75 -0
- package/src/router/telemetry-otel.ts +171 -200
- package/src/router/telemetry.ts +106 -20
- package/src/router/timeout.ts +53 -22
- package/src/router/tracing.ts +235 -0
- package/src/router/transition-when.ts +76 -0
- package/src/router/trie-matching.ts +170 -64
- package/src/router/types.ts +9 -63
- package/src/router/url-params.ts +13 -5
- package/src/router.ts +248 -77
- package/src/rsc/capture-queue.ts +218 -0
- package/src/rsc/full-payload.ts +77 -0
- package/src/rsc/handler-context.ts +4 -2
- package/src/rsc/handler.ts +562 -284
- package/src/rsc/helpers.ts +179 -9
- package/src/rsc/index.ts +2 -5
- package/src/rsc/json-route-result.ts +38 -0
- package/src/rsc/loader-fetch.ts +116 -40
- package/src/rsc/manifest-init.ts +55 -56
- package/src/rsc/nonce.ts +10 -1
- package/src/rsc/origin-guard.ts +39 -25
- package/src/rsc/progressive-enhancement.ts +377 -84
- 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 +73 -212
- package/src/rsc/routine-plan.ts +359 -0
- package/src/rsc/rsc-rendering.ts +1624 -171
- package/src/rsc/runtime-warnings.ts +23 -10
- package/src/rsc/server-action.ts +420 -139
- 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 +111 -16
- package/src/rsc/stream-idle.ts +137 -0
- package/src/rsc/transition-gate.ts +86 -0
- package/src/rsc/types.ts +91 -5
- package/src/runtime-env.ts +18 -0
- package/src/search-params.ts +35 -30
- package/src/segment-fragments.ts +165 -0
- package/src/segment-loader-promise.ts +49 -4
- package/src/segment-system.tsx +441 -153
- package/src/serialize.ts +243 -0
- package/src/server/context.ts +416 -55
- package/src/server/cookie-parse.ts +32 -0
- package/src/server/cookie-store.ts +162 -15
- package/src/server/handle-store.ts +190 -70
- package/src/server/loader-registry.ts +33 -42
- package/src/server/request-context.ts +805 -177
- package/src/server.ts +7 -2
- package/src/ssr/index.tsx +631 -183
- 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 +28 -15
- 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 +13 -4
- package/src/types/error-types.ts +30 -90
- package/src/types/global-namespace.ts +54 -41
- package/src/types/handler-context.ts +121 -30
- package/src/types/index.ts +3 -10
- package/src/types/loader-types.ts +38 -7
- package/src/types/request-scope.ts +8 -22
- package/src/types/route-config.ts +20 -52
- package/src/types/route-entry.ts +3 -6
- package/src/types/segments.ts +147 -14
- package/src/urls/include-helper.ts +38 -64
- package/src/urls/include-provider.ts +71 -0
- package/src/urls/index.ts +2 -11
- package/src/urls/path-helper-types.ts +76 -24
- package/src/urls/path-helper.ts +30 -110
- package/src/urls/pattern-types.ts +101 -19
- package/src/urls/response-types.ts +20 -19
- package/src/urls/type-extraction.ts +98 -154
- package/src/urls/urls-function.ts +1 -19
- package/src/use-loader.tsx +355 -109
- package/src/vercel/index.ts +11 -0
- package/src/vercel/tracing.ts +89 -0
- package/src/vite/debug.ts +102 -3
- package/src/vite/discovery/bundle-postprocess.ts +18 -14
- 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 -151
- 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 +125 -70
- 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 +104 -6
- package/src/vite/discovery/virtual-module-codegen.ts +226 -87
- package/src/vite/encryption-key.ts +29 -0
- package/src/vite/index.ts +12 -0
- package/src/vite/inject-client-debug.ts +88 -0
- package/src/vite/plugin-types.ts +243 -10
- 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-stub.ts +1 -21
- package/src/vite/plugins/expose-action-id.ts +50 -97
- package/src/vite/plugins/expose-id-utils.ts +88 -55
- package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
- package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
- package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
- package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
- package/src/vite/plugins/expose-internal-ids.ts +551 -486
- package/src/vite/plugins/performance-tracks.ts +25 -22
- package/src/vite/plugins/refresh-cmd.ts +1 -1
- package/src/vite/plugins/server-ref-hashing.ts +74 -0
- package/src/vite/plugins/server-reference-pattern.ts +10 -0
- package/src/vite/plugins/use-cache-transform.ts +73 -83
- package/src/vite/plugins/vercel-output.ts +384 -0
- package/src/vite/plugins/version-injector.ts +39 -29
- package/src/vite/plugins/version-plugin.ts +45 -40
- package/src/vite/plugins/virtual-entries.ts +193 -30
- package/src/vite/rango.ts +240 -128
- package/src/vite/router-discovery.ts +1518 -174
- package/src/vite/utils/ast-handler-extract.ts +26 -35
- package/src/vite/utils/bundle-analysis.ts +10 -15
- package/src/vite/utils/client-chunks.ts +184 -0
- package/src/vite/utils/directive-prologue.ts +40 -0
- package/src/vite/utils/forward-user-plugins.ts +171 -0
- package/src/vite/utils/manifest-utils.ts +1 -59
- package/src/vite/utils/package-resolution.ts +2 -73
- package/src/vite/utils/prerender-utils.ts +96 -49
- package/src/vite/utils/shared-utils.ts +156 -43
- package/src/browser/action-response-classifier.ts +0 -99
- package/src/browser/react/use-client-cache.ts +0 -58
- package/src/browser/shallow.ts +0 -40
- package/src/handles/index.ts +0 -7
- package/src/network-error-thrower.tsx +0 -23
- package/src/router/middleware-cookies.ts +0 -55
package/src/server/context.ts
CHANGED
|
@@ -10,7 +10,7 @@ import type {
|
|
|
10
10
|
ShouldRevalidateFn,
|
|
11
11
|
TransitionConfig,
|
|
12
12
|
} from "../types";
|
|
13
|
-
import { invariant } from "../errors";
|
|
13
|
+
import { invariant, DslContextError } from "../errors";
|
|
14
14
|
import type { DefaultRouteName } from "../types/global-namespace.js";
|
|
15
15
|
|
|
16
16
|
// ============================================================================
|
|
@@ -27,6 +27,7 @@ export interface PerformanceMetric {
|
|
|
27
27
|
duration: number; // milliseconds
|
|
28
28
|
startTime: number; // relative to request start
|
|
29
29
|
depth?: number; // nesting level for hierarchical display (0 = top-level)
|
|
30
|
+
desc?: string; // free-form outcome detail, emitted as Server-Timing desc="..."
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
/**
|
|
@@ -40,7 +41,7 @@ export interface MetricsStore {
|
|
|
40
41
|
metrics: PerformanceMetric[];
|
|
41
42
|
}
|
|
42
43
|
// ============================================================================
|
|
43
|
-
//
|
|
44
|
+
// Rango Context
|
|
44
45
|
// ============================================================================
|
|
45
46
|
|
|
46
47
|
/**
|
|
@@ -71,6 +72,10 @@ export type EntryPropCommon = {
|
|
|
71
72
|
};
|
|
72
73
|
|
|
73
74
|
/**
|
|
75
|
+
* Attachments resolved by walking the parent chain, not owned by the entry:
|
|
76
|
+
* middleware composes downward; revalidate and the error/notFound boundaries are
|
|
77
|
+
* resolved by nearest-ancestor lookup. Inherited, not a single execution chain.
|
|
78
|
+
*
|
|
74
79
|
* @internal This type is an implementation detail and may change without notice.
|
|
75
80
|
*/
|
|
76
81
|
export type EntryPropDatas = {
|
|
@@ -80,6 +85,16 @@ export type EntryPropDatas = {
|
|
|
80
85
|
notFoundBoundary: (ReactNode | NotFoundBoundaryHandler)[];
|
|
81
86
|
};
|
|
82
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Render-time presentation fields shared by every entry variant.
|
|
90
|
+
*
|
|
91
|
+
* @internal This type is an implementation detail and may change without notice.
|
|
92
|
+
*/
|
|
93
|
+
export type EntryPropRender = {
|
|
94
|
+
loading?: ReactNode | false;
|
|
95
|
+
transition?: TransitionConfig;
|
|
96
|
+
};
|
|
97
|
+
|
|
83
98
|
/**
|
|
84
99
|
* Loader entry stored in EntryData
|
|
85
100
|
* Contains the loader definition and its revalidation rules
|
|
@@ -136,6 +151,19 @@ export type InterceptWhenFn<TEnv = any> = (
|
|
|
136
151
|
ctx: InterceptSelectorContext<TEnv>,
|
|
137
152
|
) => boolean;
|
|
138
153
|
|
|
154
|
+
/**
|
|
155
|
+
* Config object passed to intercept() (its 4th argument). `when` gates whether
|
|
156
|
+
* the intercept activates on a soft navigation — a single match-time selector or
|
|
157
|
+
* an array of them (ALL must return true; omit to always activate). This is the
|
|
158
|
+
* intercept counterpart to transition({ when }); both express conditional
|
|
159
|
+
* behavior as a config field rather than a separate DSL helper.
|
|
160
|
+
*
|
|
161
|
+
* @internal This type is an implementation detail and may change without notice.
|
|
162
|
+
*/
|
|
163
|
+
export interface InterceptConfig<TEnv = any> {
|
|
164
|
+
when?: InterceptWhenFn<TEnv> | InterceptWhenFn<TEnv>[];
|
|
165
|
+
}
|
|
166
|
+
|
|
139
167
|
/**
|
|
140
168
|
* Intercept entry stored in EntryData
|
|
141
169
|
* Contains the slot name, route to intercept, and handler
|
|
@@ -158,11 +186,9 @@ export type InterceptEntry = {
|
|
|
158
186
|
};
|
|
159
187
|
|
|
160
188
|
export interface ParallelEntryData
|
|
161
|
-
extends EntryPropCommon, EntryPropDatas, EntryPropSegments {
|
|
189
|
+
extends EntryPropCommon, EntryPropDatas, EntryPropSegments, EntryPropRender {
|
|
162
190
|
type: "parallel";
|
|
163
191
|
handler: Record<`@${string}`, Handler<any, any, any> | ReactNode>;
|
|
164
|
-
loading?: ReactNode | false;
|
|
165
|
-
transition?: TransitionConfig;
|
|
166
192
|
/** Set when any parallel slot is a Static definition */
|
|
167
193
|
isStaticPrerender?: true;
|
|
168
194
|
/** Per-slot static handler $$ids for build-time store lookup */
|
|
@@ -171,6 +197,13 @@ export interface ParallelEntryData
|
|
|
171
197
|
|
|
172
198
|
export type ParallelEntries = Partial<Record<`@${string}`, ParallelEntryData>>;
|
|
173
199
|
|
|
200
|
+
/**
|
|
201
|
+
* This entry's own structural children plus its owned loaders. `loader` lives
|
|
202
|
+
* here (not in EntryPropDatas) because loaders are owned by the entry, not
|
|
203
|
+
* inherited from ancestors.
|
|
204
|
+
*
|
|
205
|
+
* @internal This type is an implementation detail and may change without notice.
|
|
206
|
+
*/
|
|
174
207
|
export type EntryPropSegments = {
|
|
175
208
|
loader: LoaderEntry[];
|
|
176
209
|
layout: EntryData[];
|
|
@@ -182,8 +215,6 @@ export type EntryData =
|
|
|
182
215
|
| ({
|
|
183
216
|
type: "route";
|
|
184
217
|
handler: Handler<any, any, any>;
|
|
185
|
-
loading?: ReactNode | false;
|
|
186
|
-
transition?: TransitionConfig;
|
|
187
218
|
/** URL pattern for this route (used by path() in urls()) */
|
|
188
219
|
pattern?: string;
|
|
189
220
|
/** Set when handler is a Prerender definition */
|
|
@@ -203,31 +234,37 @@ export type EntryData =
|
|
|
203
234
|
staticHandlerId?: string;
|
|
204
235
|
/** Response type for non-RSC routes (json, text, image, any) */
|
|
205
236
|
responseType?: string;
|
|
237
|
+
/**
|
|
238
|
+
* PPR (partial pre-rendering) opt-in from the path() `ppr` option. A
|
|
239
|
+
* document-level property of the page route: `true` uses the default
|
|
240
|
+
* shell policy, an object carries ttl/swr/tags. Read by the integrated
|
|
241
|
+
* PPR serve path (rsc/shell-serve.ts resolvePprConfig).
|
|
242
|
+
*/
|
|
243
|
+
ppr?: boolean | import("../urls/pattern-types.js").PartialPrerenderProps;
|
|
206
244
|
} & EntryPropCommon &
|
|
207
245
|
EntryPropDatas &
|
|
208
|
-
EntryPropSegments
|
|
246
|
+
EntryPropSegments &
|
|
247
|
+
EntryPropRender)
|
|
209
248
|
| ({
|
|
210
249
|
type: "layout";
|
|
211
250
|
handler: ReactNode | Handler<any, any, any>;
|
|
212
|
-
loading?: ReactNode | false;
|
|
213
|
-
transition?: TransitionConfig;
|
|
214
251
|
/** Set when handler is a Static definition (build-time only) */
|
|
215
252
|
isStaticPrerender?: true;
|
|
216
253
|
/** Static handler $$id for build-time store lookup */
|
|
217
254
|
staticHandlerId?: string;
|
|
218
255
|
} & EntryPropCommon &
|
|
219
256
|
EntryPropDatas &
|
|
220
|
-
EntryPropSegments
|
|
257
|
+
EntryPropSegments &
|
|
258
|
+
EntryPropRender)
|
|
221
259
|
| ParallelEntryData
|
|
222
260
|
| ({
|
|
223
261
|
type: "cache";
|
|
224
262
|
/** Cache entries create cache boundaries and render like layouts (with Outlet) */
|
|
225
263
|
handler: ReactNode | Handler<any, any, any>;
|
|
226
|
-
loading?: ReactNode | false;
|
|
227
|
-
transition?: TransitionConfig;
|
|
228
264
|
} & EntryPropCommon &
|
|
229
265
|
EntryPropDatas &
|
|
230
|
-
EntryPropSegments
|
|
266
|
+
EntryPropSegments &
|
|
267
|
+
EntryPropRender);
|
|
231
268
|
|
|
232
269
|
/**
|
|
233
270
|
* Tracked include info for build-time manifest generation
|
|
@@ -240,6 +277,17 @@ export interface TrackedInclude {
|
|
|
240
277
|
lazy: boolean;
|
|
241
278
|
}
|
|
242
279
|
|
|
280
|
+
/**
|
|
281
|
+
* Cached response-header write scope (issue #713). `kind` selects the error
|
|
282
|
+
* wording; `routeKey` names the route in the error.
|
|
283
|
+
*
|
|
284
|
+
* @internal This type is an implementation detail and may change without notice.
|
|
285
|
+
*/
|
|
286
|
+
export type CachedHeaderScope = {
|
|
287
|
+
kind: "cache" | "ppr";
|
|
288
|
+
routeKey?: string;
|
|
289
|
+
};
|
|
290
|
+
|
|
243
291
|
/**
|
|
244
292
|
* Context stored in AsyncLocalStorage
|
|
245
293
|
*/
|
|
@@ -250,6 +298,10 @@ interface HelperContext {
|
|
|
250
298
|
counters: Record<string, number>;
|
|
251
299
|
forRoute?: string;
|
|
252
300
|
mountIndex?: number;
|
|
301
|
+
/** Owning router id, when known (threaded by generateManifestFull). Scopes
|
|
302
|
+
* the search-schema/root-scope registries so same-named routes in
|
|
303
|
+
* different routers don't clobber each other (route-map-builder.ts). */
|
|
304
|
+
routerId?: string;
|
|
253
305
|
metrics?: MetricsStore;
|
|
254
306
|
/** True when rendering for SSR (document requests) */
|
|
255
307
|
isSSR?: boolean;
|
|
@@ -280,6 +332,13 @@ interface HelperContext {
|
|
|
280
332
|
/** True when resolving handlers inside a cache() DSL boundary.
|
|
281
333
|
* Read by ctx.get() to guard non-cacheable variable reads. */
|
|
282
334
|
insideCacheScope?: boolean;
|
|
335
|
+
/**
|
|
336
|
+
* RULE (issue #713): in any cached scenario ONLY MIDDLEWARE writes response
|
|
337
|
+
* headers. Latched by the segment funnels, consulted by
|
|
338
|
+
* assertCachedHeaderWriteAllowed(); full doctrine in
|
|
339
|
+
* docs/design/ppr-shell-resume.md "The header doctrine".
|
|
340
|
+
*/
|
|
341
|
+
cachedHeaderScope?: CachedHeaderScope;
|
|
283
342
|
/**
|
|
284
343
|
* Include scope string applied to direct-descendant shortCodes.
|
|
285
344
|
*
|
|
@@ -303,10 +362,28 @@ interface HelperContext {
|
|
|
303
362
|
// hold references to the old instance — causing getStore() to return
|
|
304
363
|
// undefined even inside a run() callback.
|
|
305
364
|
const RSC_CONTEXT_KEY = Symbol.for("rangojs-router:rsc-context");
|
|
306
|
-
export const
|
|
365
|
+
export const RangoContext: AsyncLocalStorage<HelperContext> = ((
|
|
307
366
|
globalThis as any
|
|
308
367
|
)[RSC_CONTEXT_KEY] ??= new AsyncLocalStorage<HelperContext>());
|
|
309
368
|
|
|
369
|
+
/** shortCode prefix letter per entry type (e.g. "L0", "R2", "M1C0"). */
|
|
370
|
+
const SHORT_CODE_PREFIX: Record<
|
|
371
|
+
"layout" | "parallel" | "route" | "loader" | "cache",
|
|
372
|
+
string
|
|
373
|
+
> = {
|
|
374
|
+
layout: "L",
|
|
375
|
+
parallel: "P",
|
|
376
|
+
route: "R",
|
|
377
|
+
loader: "D",
|
|
378
|
+
cache: "C",
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
/** Post-increment a named per-store counter, returning the prior value. */
|
|
382
|
+
function bumpCounter(store: HelperContext, key: string): number {
|
|
383
|
+
store.counters[key] ??= 0;
|
|
384
|
+
return store.counters[key]++;
|
|
385
|
+
}
|
|
386
|
+
|
|
310
387
|
export const getContext = (): {
|
|
311
388
|
context: AsyncLocalStorage<HelperContext>;
|
|
312
389
|
getStore: () => HelperContext;
|
|
@@ -330,12 +407,12 @@ export const getContext = (): {
|
|
|
330
407
|
callback: (...args: any[]) => T,
|
|
331
408
|
) => T;
|
|
332
409
|
} => {
|
|
333
|
-
const context =
|
|
410
|
+
const context = RangoContext;
|
|
334
411
|
|
|
335
412
|
return {
|
|
336
413
|
context,
|
|
337
414
|
getOrCreateStore: (forRoute?: string): HelperContext => {
|
|
338
|
-
let store =
|
|
415
|
+
let store = RangoContext.getStore();
|
|
339
416
|
if (!store) {
|
|
340
417
|
store = {
|
|
341
418
|
manifest: new Map<string, EntryData>(),
|
|
@@ -355,7 +432,7 @@ export const getContext = (): {
|
|
|
355
432
|
const store = context.getStore();
|
|
356
433
|
if (!store) {
|
|
357
434
|
throw new Error(
|
|
358
|
-
"
|
|
435
|
+
"Rango context store is not available. Make sure to run within Rango context.",
|
|
359
436
|
);
|
|
360
437
|
}
|
|
361
438
|
return store;
|
|
@@ -372,29 +449,17 @@ export const getContext = (): {
|
|
|
372
449
|
type: (string & {}) | "layout" | "parallel" | "middleware" | "revalidate",
|
|
373
450
|
) => {
|
|
374
451
|
const store = context.getStore();
|
|
375
|
-
invariant(store, "No context
|
|
376
|
-
store
|
|
377
|
-
const index = store.counters[type];
|
|
378
|
-
store.counters[type] = index + 1;
|
|
379
|
-
return `$${type}.${index}`;
|
|
452
|
+
invariant(store, "No context RangoContext available");
|
|
453
|
+
return `$${type}.${bumpCounter(store, type)}`;
|
|
380
454
|
},
|
|
381
455
|
getShortCode: (
|
|
382
456
|
type: "layout" | "parallel" | "route" | "loader" | "cache",
|
|
383
457
|
) => {
|
|
384
458
|
const store = context.getStore();
|
|
385
|
-
invariant(store, "No context
|
|
459
|
+
invariant(store, "No context RangoContext available");
|
|
386
460
|
|
|
387
461
|
const parent = store.parent;
|
|
388
|
-
const prefix =
|
|
389
|
-
type === "layout"
|
|
390
|
-
? "L"
|
|
391
|
-
: type === "parallel"
|
|
392
|
-
? "P"
|
|
393
|
-
: type === "loader"
|
|
394
|
-
? "D"
|
|
395
|
-
: type === "cache"
|
|
396
|
-
? "C"
|
|
397
|
-
: "R";
|
|
462
|
+
const prefix = SHORT_CODE_PREFIX[type];
|
|
398
463
|
const mountPrefix =
|
|
399
464
|
store.mountIndex !== undefined ? `M${store.mountIndex}` : "";
|
|
400
465
|
|
|
@@ -405,10 +470,7 @@ export const getContext = (): {
|
|
|
405
470
|
const counterKey = mountPrefix
|
|
406
471
|
? `${mountPrefix}_root_${type}`
|
|
407
472
|
: `root_${type}`;
|
|
408
|
-
store
|
|
409
|
-
const index = store.counters[counterKey];
|
|
410
|
-
store.counters[counterKey] = index + 1;
|
|
411
|
-
return `${mountPrefix}${prefix}${index}`;
|
|
473
|
+
return `${mountPrefix}${prefix}${bumpCounter(store, counterKey)}`;
|
|
412
474
|
} else {
|
|
413
475
|
// Child entry: use parent-scoped counter with includeScope appended.
|
|
414
476
|
// When we're evaluating a lazy include's direct children, includeScope
|
|
@@ -416,10 +478,7 @@ export const getContext = (): {
|
|
|
416
478
|
// parent's counter namespace so routes inside one include cannot
|
|
417
479
|
// collide with siblings declared outside it.
|
|
418
480
|
const counterKey = `${parent.shortCode}${includeScope}_${type}`;
|
|
419
|
-
store
|
|
420
|
-
const index = store.counters[counterKey];
|
|
421
|
-
store.counters[counterKey] = index + 1;
|
|
422
|
-
return `${parent.shortCode}${includeScope}${prefix}${index}`;
|
|
481
|
+
return `${parent.shortCode}${includeScope}${prefix}${bumpCounter(store, counterKey)}`;
|
|
423
482
|
}
|
|
424
483
|
},
|
|
425
484
|
runWithStore: <T>(
|
|
@@ -436,6 +495,7 @@ export const getContext = (): {
|
|
|
436
495
|
counters: store.counters,
|
|
437
496
|
forRoute: store.forRoute,
|
|
438
497
|
mountIndex: store.mountIndex,
|
|
498
|
+
routerId: store.routerId,
|
|
439
499
|
metrics: store.metrics,
|
|
440
500
|
isSSR: store.isSSR,
|
|
441
501
|
patterns: store.patterns,
|
|
@@ -447,6 +507,9 @@ export const getContext = (): {
|
|
|
447
507
|
trackedIncludes: store.trackedIncludes,
|
|
448
508
|
cacheProfiles: store.cacheProfiles,
|
|
449
509
|
includeScope: store.includeScope,
|
|
510
|
+
// cachedHeaderScope (and insideCacheScope) deliberately NOT copied —
|
|
511
|
+
// the header guard's middleware exemption depends on the latch dying
|
|
512
|
+
// with the funnel scope (see assertCachedHeaderWriteAllowed).
|
|
450
513
|
},
|
|
451
514
|
callback,
|
|
452
515
|
);
|
|
@@ -475,6 +538,7 @@ export const getContext = (): {
|
|
|
475
538
|
counters,
|
|
476
539
|
forRoute: store?.forRoute,
|
|
477
540
|
mountIndex: store?.mountIndex,
|
|
541
|
+
routerId: store?.routerId,
|
|
478
542
|
metrics: store?.metrics,
|
|
479
543
|
isSSR: store?.isSSR,
|
|
480
544
|
patterns,
|
|
@@ -493,6 +557,31 @@ export const getContext = (): {
|
|
|
493
557
|
};
|
|
494
558
|
};
|
|
495
559
|
|
|
560
|
+
/**
|
|
561
|
+
* Acquire the active DSL build context, throwing `message` if a helper was
|
|
562
|
+
* called outside a urls()/map() builder. Returns the store API and the live
|
|
563
|
+
* HelperContext so callers avoid a second getContext() lookup.
|
|
564
|
+
*/
|
|
565
|
+
export function requireDslContext(message: string): {
|
|
566
|
+
store: ReturnType<typeof getContext>;
|
|
567
|
+
ctx: HelperContext;
|
|
568
|
+
} {
|
|
569
|
+
const store = getContext();
|
|
570
|
+
const ctx = store.context.getStore();
|
|
571
|
+
if (!ctx) {
|
|
572
|
+
// The only reason the store is absent here is that a route-definition helper
|
|
573
|
+
// ran with no active RangoContext — i.e. outside a urls()/map() builder.
|
|
574
|
+
// Record that as the cause so the throw is self-explanatory, not a bare
|
|
575
|
+
// "must be called inside urls()" with no indication of the mechanism.
|
|
576
|
+
throw new DslContextError(message, {
|
|
577
|
+
cause:
|
|
578
|
+
"RangoContext store is undefined: a route-definition helper was called " +
|
|
579
|
+
"outside an active urls()/map() builder.",
|
|
580
|
+
});
|
|
581
|
+
}
|
|
582
|
+
return { store, ctx };
|
|
583
|
+
}
|
|
584
|
+
|
|
496
585
|
/**
|
|
497
586
|
* Run a callback with specific URL and name prefixes
|
|
498
587
|
* Used by include() to apply prefixes to nested patterns
|
|
@@ -502,7 +591,7 @@ export function runWithPrefixes<T>(
|
|
|
502
591
|
namePrefix: string | undefined,
|
|
503
592
|
callback: () => T,
|
|
504
593
|
): T {
|
|
505
|
-
const store =
|
|
594
|
+
const store = RangoContext.getStore();
|
|
506
595
|
if (!store) {
|
|
507
596
|
throw new Error("runWithPrefixes must be called within router context");
|
|
508
597
|
}
|
|
@@ -547,7 +636,7 @@ export function runWithPrefixes<T>(
|
|
|
547
636
|
? (store.rootScoped ?? false)
|
|
548
637
|
: store.rootScoped;
|
|
549
638
|
|
|
550
|
-
return
|
|
639
|
+
return RangoContext.run(
|
|
551
640
|
{
|
|
552
641
|
...store,
|
|
553
642
|
urlPrefix: combinedUrlPrefix,
|
|
@@ -562,7 +651,7 @@ export function runWithPrefixes<T>(
|
|
|
562
651
|
* Get current URL prefix from context
|
|
563
652
|
*/
|
|
564
653
|
export function getUrlPrefix(): string {
|
|
565
|
-
const store =
|
|
654
|
+
const store = RangoContext.getStore();
|
|
566
655
|
return store?.urlPrefix || "";
|
|
567
656
|
}
|
|
568
657
|
|
|
@@ -570,7 +659,7 @@ export function getUrlPrefix(): string {
|
|
|
570
659
|
* Get current name prefix from context
|
|
571
660
|
*/
|
|
572
661
|
export function getNamePrefix(): string | undefined {
|
|
573
|
-
const store =
|
|
662
|
+
const store = RangoContext.getStore();
|
|
574
663
|
return store?.namePrefix;
|
|
575
664
|
}
|
|
576
665
|
|
|
@@ -579,10 +668,32 @@ export function getNamePrefix(): string | undefined {
|
|
|
579
668
|
* Returns true at root or inside { name: "" } includes, false inside named includes.
|
|
580
669
|
*/
|
|
581
670
|
export function getRootScoped(): boolean {
|
|
582
|
-
const store =
|
|
671
|
+
const store = RangoContext.getStore();
|
|
583
672
|
return store?.rootScoped ?? true;
|
|
584
673
|
}
|
|
585
674
|
|
|
675
|
+
/**
|
|
676
|
+
* Stamp build-time scope identity onto a Static() definition at mount time.
|
|
677
|
+
* The bake collector (prerender-collection.ts) renders defs OUTSIDE any
|
|
678
|
+
* evaluation scope and used to iterate the registry first-non-null, so these
|
|
679
|
+
* are the ONLY reliable carriers of the def's owning router, root-scope, and
|
|
680
|
+
* full route name — a name-keyed registry lookup at bake time reproduces the
|
|
681
|
+
* cross-router collision #757/#762 fixed (and the collector's historical
|
|
682
|
+
* `$$routePrefix` argument is a name PREFIX, which the root-scope registry
|
|
683
|
+
* never contains, silently degrading to the dot-heuristic).
|
|
684
|
+
* A definition mounted more than once is stamped each time; the last mount wins.
|
|
685
|
+
*/
|
|
686
|
+
export function stampStaticDefScope(
|
|
687
|
+
handler: unknown,
|
|
688
|
+
routeName?: string,
|
|
689
|
+
): void {
|
|
690
|
+
const store = RangoContext.getStore();
|
|
691
|
+
const def = handler as Record<string, unknown>;
|
|
692
|
+
if (routeName !== undefined) def.$$routeName = routeName;
|
|
693
|
+
def.$$rootScoped = getRootScoped();
|
|
694
|
+
if (store?.routerId !== undefined) def.$$routerId = store.routerId;
|
|
695
|
+
}
|
|
696
|
+
|
|
586
697
|
// Export HelperContext type for use in other modules
|
|
587
698
|
export type { HelperContext };
|
|
588
699
|
|
|
@@ -676,7 +787,7 @@ export function getParallelSlotCount(
|
|
|
676
787
|
* ```
|
|
677
788
|
*/
|
|
678
789
|
export function track(label: string, depth?: number): () => void {
|
|
679
|
-
const store =
|
|
790
|
+
const store = RangoContext.getStore();
|
|
680
791
|
|
|
681
792
|
// No-op if context unavailable or metrics not enabled
|
|
682
793
|
if (!store?.metrics?.enabled) {
|
|
@@ -699,25 +810,50 @@ export function track(label: string, depth?: number): () => void {
|
|
|
699
810
|
|
|
700
811
|
/**
|
|
701
812
|
* Separate ALS for tracking loader execution scope.
|
|
702
|
-
* Uses a dedicated ALS (not
|
|
703
|
-
* nested
|
|
813
|
+
* Uses a dedicated ALS (not RangoContext) to avoid issues with
|
|
814
|
+
* nested RangoContext.run() calls in Vite's module runner.
|
|
704
815
|
*/
|
|
705
816
|
const LOADER_SCOPE_KEY = Symbol.for("rangojs-router:loader-scope");
|
|
706
817
|
const loaderScopeALS: AsyncLocalStorage<{ active: true }> = ((
|
|
707
818
|
globalThis as any
|
|
708
819
|
)[LOADER_SCOPE_KEY] ??= new AsyncLocalStorage<{ active: true }>());
|
|
709
820
|
|
|
821
|
+
// Purity-only scope: marks that a loader FUNCTION BODY is executing, regardless
|
|
822
|
+
// of how the loader was invoked (DSL via runInsideLoaderScope, or handler-
|
|
823
|
+
// invoked via ctx.use). Consulted by isInsideCacheScope() to exempt
|
|
824
|
+
// request-scoped reads, by getCurrentLoaderBodyId() for guard-warning
|
|
825
|
+
// attribution, and by isInsideHandlerInvokedLoaderBody() for the
|
|
826
|
+
// consumption-lane rule (the shell-capture guard exemption). It deliberately
|
|
827
|
+
// does NOT affect isInsideLoaderScope(), so rendered()/barrier/deadlock
|
|
828
|
+
// gating (which must distinguish DSL from handler-invoked loaders) is
|
|
829
|
+
// unchanged.
|
|
830
|
+
const LOADER_BODY_SCOPE_KEY = Symbol.for("rangojs-router:loader-body-scope");
|
|
831
|
+
const loaderBodyScopeALS: AsyncLocalStorage<{
|
|
832
|
+
active: true;
|
|
833
|
+
loaderId?: string;
|
|
834
|
+
handlerInvoked?: boolean;
|
|
835
|
+
}> = ((globalThis as any)[LOADER_BODY_SCOPE_KEY] ??= new AsyncLocalStorage<{
|
|
836
|
+
active: true;
|
|
837
|
+
loaderId?: string;
|
|
838
|
+
handlerInvoked?: boolean;
|
|
839
|
+
}>());
|
|
840
|
+
|
|
710
841
|
/**
|
|
711
842
|
* Check if the current execution is inside a cache() DSL boundary.
|
|
712
843
|
* Returns false inside loader execution — loaders are always fresh
|
|
713
844
|
* (never cached), so non-cacheable reads are safe.
|
|
714
845
|
*/
|
|
715
846
|
export function isInsideCacheScope(): boolean {
|
|
716
|
-
if (
|
|
717
|
-
//
|
|
718
|
-
//
|
|
719
|
-
//
|
|
720
|
-
|
|
847
|
+
if (RangoContext.getStore()?.insideCacheScope !== true) return false;
|
|
848
|
+
// Request-scoped READS are exempt in any loader body — DSL loaders re-run on
|
|
849
|
+
// every request (including cache() HITs via resolveLoadersOnly), and a
|
|
850
|
+
// handler-invoked loader body, though skipped with its handler on a HIT,
|
|
851
|
+
// yields a BAKED shared copy in the cached artifact — an accepted
|
|
852
|
+
// consumption-lane tradeoff (#672/#674). This is deliberately BROADER than
|
|
853
|
+
// the WRITE guard (assertCachedHeaderWriteAllowed narrows the cache()
|
|
854
|
+
// exemption to DSL scope, #725): a read bakes-and-accepts, a Set-Cookie/header
|
|
855
|
+
// write drops-and-throws because it has no baked-copy semantics on a HIT.
|
|
856
|
+
if (isInsideAnyLoaderScope()) return false;
|
|
721
857
|
return true;
|
|
722
858
|
}
|
|
723
859
|
|
|
@@ -730,6 +866,159 @@ export function isInsideLoaderScope(): boolean {
|
|
|
730
866
|
return loaderScopeALS.getStore()?.active === true;
|
|
731
867
|
}
|
|
732
868
|
|
|
869
|
+
/**
|
|
870
|
+
* Latch the cached header-write scope for the current request. First latch
|
|
871
|
+
* wins: a ppr route latched at the funnel top is not downgraded by a nested
|
|
872
|
+
* cache() entry (the document-scoped wording is the more useful one).
|
|
873
|
+
* Takes scalars so the already-latched path allocates nothing.
|
|
874
|
+
*/
|
|
875
|
+
export function latchCachedHeaderScope(
|
|
876
|
+
kind: CachedHeaderScope["kind"],
|
|
877
|
+
routeKey?: string,
|
|
878
|
+
): void {
|
|
879
|
+
const store = RangoContext.getStore();
|
|
880
|
+
if (store && !store.cachedHeaderScope) {
|
|
881
|
+
store.cachedHeaderScope = { kind, routeKey };
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
/** True inside ANY loader execution — DSL loader scope or a loader body
|
|
886
|
+
* (however invoked). The "loaders always re-run fresh" exemptions key off
|
|
887
|
+
* this. */
|
|
888
|
+
function isInsideAnyLoaderScope(): boolean {
|
|
889
|
+
return (
|
|
890
|
+
loaderScopeALS.getStore()?.active === true ||
|
|
891
|
+
loaderBodyScopeALS.getStore()?.active === true
|
|
892
|
+
);
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
/**
|
|
896
|
+
* The one ppr opt-in predicate: a page route entry that DECLARED `ppr`
|
|
897
|
+
* (`false` and undefined mean plain axis 1). Shared by the serve path
|
|
898
|
+
* (rsc/shell-serve.ts resolvePprConfig) and the header-write latch below so
|
|
899
|
+
* the two layers can never drift on what counts as a ppr route.
|
|
900
|
+
*/
|
|
901
|
+
export function isPprEntry(entry: EntryData): entry is EntryData & {
|
|
902
|
+
type: "route";
|
|
903
|
+
ppr: true | import("../urls/pattern-types.js").PartialPrerenderProps;
|
|
904
|
+
} {
|
|
905
|
+
return (
|
|
906
|
+
entry.type === "route" && entry.ppr !== undefined && entry.ppr !== false
|
|
907
|
+
);
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
/**
|
|
911
|
+
* Latch the ppr header-write scope when the entry chain about to resolve is a
|
|
912
|
+
* `ppr` page route's. Called at the TOP of every segment funnel — unlike
|
|
913
|
+
* cache() (positional: ancestors before the boundary stay writable), ppr is
|
|
914
|
+
* document-scoped: the root layout down to the page bakes into the shared
|
|
915
|
+
* shell, so the whole funnel is cached territory.
|
|
916
|
+
*
|
|
917
|
+
* Checks the LEAF entry only: `entries` is the traverseBack chain
|
|
918
|
+
* [root, ..., manifestEntry], and the serve path reads `ppr` off the same
|
|
919
|
+
* leaf (rsc-rendering.ts: resolvePprConfig(manifestEntry)) — guard and serve
|
|
920
|
+
* share the predicate (isPprEntry) AND the input, so they cannot drift.
|
|
921
|
+
*/
|
|
922
|
+
export function latchPprHeaderScopeForEntries(
|
|
923
|
+
entries: EntryData[],
|
|
924
|
+
routeKey?: string,
|
|
925
|
+
): void {
|
|
926
|
+
const store = RangoContext.getStore();
|
|
927
|
+
if (!store || store.cachedHeaderScope) return;
|
|
928
|
+
const leaf = entries[entries.length - 1];
|
|
929
|
+
if (leaf !== undefined && isPprEntry(leaf)) {
|
|
930
|
+
store.cachedHeaderScope = { kind: "ppr", routeKey };
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
/**
|
|
935
|
+
* Clear the ppr header-write latch for the remainder of this render (issue
|
|
936
|
+
* #735). Called by ctx.dynamic(): a dynamic() render opts off the SHELL axis
|
|
937
|
+
* (rsc-rendering.ts skips both the HIT commit and the MISS capture on
|
|
938
|
+
* `_dynamic`), so it is ALWAYS live — every request re-runs the handler and its
|
|
939
|
+
* header write lands identically each time. The guard's reason to forbid it
|
|
940
|
+
* (MISS/HIT divergence) evaporates, so the write is re-permitted.
|
|
941
|
+
*
|
|
942
|
+
* ONLY the ppr (shell) axis is dropped — dynamic() does NOT opt off the CACHE
|
|
943
|
+
* axis. Two cases:
|
|
944
|
+
* - Pure ppr funnel (no cache() boundary): clear the latch → writes re-permit.
|
|
945
|
+
* - ppr route nested under a cache() boundary: fresh.ts latches "ppr" at the
|
|
946
|
+
* funnel top (first-wins), which MASKS the positional cache() latch, but the
|
|
947
|
+
* handler still runs inside the cache scope (`insideCacheScope`). A cache()
|
|
948
|
+
* HIT skips that handler, so the write is still non-deterministic — UNMASK to
|
|
949
|
+
* "cache" instead of clearing, so the guard keeps throwing (accurate cache()
|
|
950
|
+
* wording). This is why the check keys off `insideCacheScope`, not just kind.
|
|
951
|
+
*
|
|
952
|
+
* A subsequent cache() entered AFTER dynamic() on a pure-ppr funnel re-latches
|
|
953
|
+
* "cache" via latchCachedHeaderScope's `!store.cachedHeaderScope` guard (the
|
|
954
|
+
* field is undefined again once cleared). No-op when there is no funnel store or
|
|
955
|
+
* no ppr latch (dynamic() from middleware runs outside the funnel Store.run
|
|
956
|
+
* scope, so nothing is latched — the middleware exemption is unchanged).
|
|
957
|
+
*/
|
|
958
|
+
export function clearPprHeaderScope(): void {
|
|
959
|
+
const store = RangoContext.getStore();
|
|
960
|
+
if (store?.cachedHeaderScope?.kind !== "ppr") return;
|
|
961
|
+
store.cachedHeaderScope = store.insideCacheScope
|
|
962
|
+
? { kind: "cache", routeKey: store.cachedHeaderScope.routeKey }
|
|
963
|
+
: undefined;
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
/**
|
|
967
|
+
* RULE (issue #713): in any cached scenario ONLY MIDDLEWARE writes response
|
|
968
|
+
* headers — handler and loader writes throw while a scope is latched; the one
|
|
969
|
+
* exemption is DSL (registered) loaders under plain cache(). A handler-invoked
|
|
970
|
+
* loader body (ctx.use from a handler, never registered with loader()) is
|
|
971
|
+
* skipped with its handler on a HIT and throws like a handler write (#725).
|
|
972
|
+
* A ctx.dynamic() render clears the ppr latch (clearPprHeaderScope, #735) so
|
|
973
|
+
* its always-live handler header writes are re-permitted. Full layer rules and
|
|
974
|
+
* rationale: docs/design/ppr-shell-resume.md "The header doctrine".
|
|
975
|
+
*/
|
|
976
|
+
export function assertCachedHeaderWriteAllowed(
|
|
977
|
+
surface: string,
|
|
978
|
+
surfaceProp?: string | symbol,
|
|
979
|
+
): void {
|
|
980
|
+
const scope = RangoContext.getStore()?.cachedHeaderScope;
|
|
981
|
+
if (!scope) return;
|
|
982
|
+
// Exempt DSL loaders (loaderScopeALS) ONLY. A registered loader re-runs on
|
|
983
|
+
// every cache HIT (fresh.ts runInsideLoaderScope -> cache-lookup.ts
|
|
984
|
+
// resolveLoadersOnly), so its header/cookie writes merge into every response
|
|
985
|
+
// with no MISS/HIT divergence. A handler-invoked loader body has
|
|
986
|
+
// loaderBodyScopeALS active but loaderScopeALS unset (loader-resolution.ts
|
|
987
|
+
// derives isDslLoader from isInsideLoaderScope()); on a HIT the handler is
|
|
988
|
+
// skipped so that loader never re-runs and its write would land only on the
|
|
989
|
+
// MISS — throw it. isInsideLoaderScope() (not isInsideAnyLoaderScope) is the
|
|
990
|
+
// discriminator; the DSL scope ALS survives nested ctx.use bodies, so a
|
|
991
|
+
// handler-invoked loader nested under a DSL loader stays exempt (its DSL
|
|
992
|
+
// parent re-invokes it on every HIT). This is the exempt fast path, so the
|
|
993
|
+
// broad predicate for the error label is deferred to the throw path below.
|
|
994
|
+
if (scope.kind === "cache" && isInsideLoaderScope()) return;
|
|
995
|
+
// Everything below runs only on the throw path — `surfaceProp` exists so
|
|
996
|
+
// callers pass constants and the success path allocates nothing (the full
|
|
997
|
+
// surface, e.g. "ctx.headers.set()", is assembled here). isInsideAnyLoaderScope
|
|
998
|
+
// (broad) labels a now-throwing handler-invoked loader body "loader".
|
|
999
|
+
const fullSurface =
|
|
1000
|
+
surfaceProp === undefined ? surface : `${surface}.${String(surfaceProp)}()`;
|
|
1001
|
+
const layer = isInsideAnyLoaderScope() ? "loader" : "handler";
|
|
1002
|
+
const route = scope.routeKey ? ` (route "${scope.routeKey}")` : "";
|
|
1003
|
+
const where =
|
|
1004
|
+
scope.kind === "ppr"
|
|
1005
|
+
? `on a ppr route${route} — the document shell is cached and replayed`
|
|
1006
|
+
: `inside a cache() boundary${route}`;
|
|
1007
|
+
// ppr loader writes fail by physics (headers flush before loaders settle);
|
|
1008
|
+
// every other throw — a handler, or a handler-invoked loader under cache() —
|
|
1009
|
+
// fails because the handler is skipped on a HIT, so key the reason on the
|
|
1010
|
+
// scope kind, not the layer.
|
|
1011
|
+
const why =
|
|
1012
|
+
scope.kind === "ppr" && layer === "loader"
|
|
1013
|
+
? "The response headers flush with the shell before loaders settle, so this write is dropped on cache hits."
|
|
1014
|
+
: "On a cache hit the handler is skipped, so this write would silently vanish.";
|
|
1015
|
+
throw new Error(
|
|
1016
|
+
`${fullSurface} cannot be called from a ${layer} ${where}. ${why} ` +
|
|
1017
|
+
"Set response headers in route middleware instead — middleware runs " +
|
|
1018
|
+
"on every request, including cache hits.",
|
|
1019
|
+
);
|
|
1020
|
+
}
|
|
1021
|
+
|
|
733
1022
|
/**
|
|
734
1023
|
* Run `fn` inside a loader scope. While active, cache-scope guards
|
|
735
1024
|
* are bypassed because loaders are always fresh (never cached) and
|
|
@@ -738,3 +1027,75 @@ export function isInsideLoaderScope(): boolean {
|
|
|
738
1027
|
export function runInsideLoaderScope<T>(fn: () => T): T {
|
|
739
1028
|
return loaderScopeALS.run({ active: true }, fn);
|
|
740
1029
|
}
|
|
1030
|
+
|
|
1031
|
+
/**
|
|
1032
|
+
* Run `fn` inside a loader BODY scope. Marks loader-function execution for the
|
|
1033
|
+
* cache-purity guard only (isInsideCacheScope), WITHOUT affecting
|
|
1034
|
+
* isInsideLoaderScope()/rendered() gating. Applied to every loader body (DSL
|
|
1035
|
+
* and handler-invoked via ctx.use) so request-scoped reads inside a loader
|
|
1036
|
+
* never trip the cache-scope guards — loaders always run fresh.
|
|
1037
|
+
*/
|
|
1038
|
+
export function runInsideLoaderBodyScope<T>(
|
|
1039
|
+
fn: () => T,
|
|
1040
|
+
loaderId?: string,
|
|
1041
|
+
handlerInvoked?: boolean,
|
|
1042
|
+
): T {
|
|
1043
|
+
return loaderBodyScopeALS.run({ active: true, loaderId, handlerInvoked }, fn);
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
/**
|
|
1047
|
+
* The $$id of the loader whose body is currently executing, or undefined
|
|
1048
|
+
* outside any loader body. Used by the shell-capture identity guard
|
|
1049
|
+
* (cookie-store.ts) so its refusal warning can name the loader that read
|
|
1050
|
+
* cookies()/headers() instead of blaming a lane it cannot see — the old
|
|
1051
|
+
* hardcoded "bake-lane loader" text misled a live-lane debugging session
|
|
1052
|
+
* (issue #672, secondary).
|
|
1053
|
+
*/
|
|
1054
|
+
export function getCurrentLoaderBodyId(): string | undefined {
|
|
1055
|
+
return loaderBodyScopeALS.getStore()?.loaderId;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
/**
|
|
1059
|
+
* True while a HANDLER-invoked loader body (`await ctx.use(Loader)` from a
|
|
1060
|
+
* handler, not the DSL segment funnel) is executing. The consumption-lane
|
|
1061
|
+
* rule keys off this: handler consumption yields a BAKED copy in every shared
|
|
1062
|
+
* artifact — cache(), "use cache", and the PPR shell — so the shell-capture
|
|
1063
|
+
* identity guard (cookie-store.ts) permits cookies()/headers() here, exactly
|
|
1064
|
+
* like the cache-purity guards do. DSL segment loaders (live lane masked at
|
|
1065
|
+
* capture, bake lane guarded) never set the flag.
|
|
1066
|
+
*/
|
|
1067
|
+
export function isInsideHandlerInvokedLoaderBody(): boolean {
|
|
1068
|
+
return loaderBodyScopeALS.getStore()?.handlerInvoked === true;
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
// Scope for handle PUSH CALLBACKS (push(() => ...), including async ones).
|
|
1072
|
+
// A push callback's value is stored as-is; if it is a promise it is NOT tracked
|
|
1073
|
+
// by handleStore.settled and does not block segment resolution, so a
|
|
1074
|
+
// ctx.use(loader) made from inside such a callback can never form a rendered()
|
|
1075
|
+
// deadlock. This is an ALS (not a plain boolean) so the exemption survives the
|
|
1076
|
+
// callback's own awaits — an async push callback that resumes after `await`
|
|
1077
|
+
// still reads as "inside a push callback" and stays out of the deadlock guard.
|
|
1078
|
+
const PUSH_CALLBACK_SCOPE_KEY = Symbol.for(
|
|
1079
|
+
"rangojs-router:push-callback-scope",
|
|
1080
|
+
);
|
|
1081
|
+
const pushCallbackScopeALS: AsyncLocalStorage<{ active: true }> = ((
|
|
1082
|
+
globalThis as any
|
|
1083
|
+
)[PUSH_CALLBACK_SCOPE_KEY] ??= new AsyncLocalStorage<{ active: true }>());
|
|
1084
|
+
|
|
1085
|
+
/**
|
|
1086
|
+
* Check if the current execution is inside a handle push callback (sync or an
|
|
1087
|
+
* async callback's continuation). Used by the handler-to-loader deadlock guard
|
|
1088
|
+
* to exempt push-callback continuations.
|
|
1089
|
+
*/
|
|
1090
|
+
export function isInsidePushCallbackScope(): boolean {
|
|
1091
|
+
return pushCallbackScopeALS.getStore()?.active === true;
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
/**
|
|
1095
|
+
* Run `fn` inside a push-callback scope. Wraps the invocation of a handle push
|
|
1096
|
+
* callback so that any ctx.use(loader) it makes — including after one of its own
|
|
1097
|
+
* awaits — is exempt from the deadlock guard.
|
|
1098
|
+
*/
|
|
1099
|
+
export function runInsidePushCallbackScope<T>(fn: () => T): T {
|
|
1100
|
+
return pushCallbackScopeALS.run({ active: true }, fn);
|
|
1101
|
+
}
|