@rangojs/router 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/dist/types/browser/prefetch/default-strategy.d.ts +22 -0
  2. package/dist/types/browser/prefetch/runtime.d.ts +0 -1
  3. package/dist/types/browser/react/Link.d.ts +8 -11
  4. package/dist/types/browser/types.d.ts +5 -0
  5. package/dist/types/cache/types.d.ts +6 -0
  6. package/dist/types/router/prefetch-default.d.ts +28 -0
  7. package/dist/types/router/router-interfaces.d.ts +7 -0
  8. package/dist/types/router/router-options.d.ts +30 -0
  9. package/dist/types/rsc/capture-queue.d.ts +6 -0
  10. package/dist/types/rsc/shell-capture.d.ts +15 -7
  11. package/dist/types/rsc/shell-serve.d.ts +4 -3
  12. package/dist/types/rsc/types.d.ts +2 -0
  13. package/dist/types/testing/e2e/index.d.ts +2 -2
  14. package/dist/types/testing/e2e/page-helpers.d.ts +24 -0
  15. package/dist/types.backup/__internal.d.ts +127 -0
  16. package/dist/types.backup/bin/rango.d.ts +1 -0
  17. package/dist/types.backup/browser/action-coordinator.d.ts +57 -0
  18. package/dist/types.backup/browser/action-fence.d.ts +33 -0
  19. package/dist/types.backup/browser/app-shell.d.ts +34 -0
  20. package/dist/types.backup/browser/app-version.d.ts +6 -0
  21. package/dist/types.backup/browser/connection-warmup.d.ts +31 -0
  22. package/dist/types.backup/browser/cookie-name.d.ts +66 -0
  23. package/dist/types.backup/browser/event-controller.d.ts +221 -0
  24. package/dist/types.backup/browser/history-state.d.ts +26 -0
  25. package/dist/types.backup/browser/index.d.ts +1 -0
  26. package/dist/types.backup/browser/intercept-utils.d.ts +30 -0
  27. package/dist/types.backup/browser/invalidate-client-cache.d.ts +17 -0
  28. package/dist/types.backup/browser/link-interceptor.d.ts +43 -0
  29. package/dist/types.backup/browser/logging.d.ts +33 -0
  30. package/dist/types.backup/browser/merge-segment-loaders.d.ts +38 -0
  31. package/dist/types.backup/browser/navigation-bridge.d.ts +27 -0
  32. package/dist/types.backup/browser/navigation-client.d.ts +17 -0
  33. package/dist/types.backup/browser/navigation-store-handle.d.ts +25 -0
  34. package/dist/types.backup/browser/navigation-store.d.ts +95 -0
  35. package/dist/types.backup/browser/navigation-transaction.d.ts +75 -0
  36. package/dist/types.backup/browser/network-error-handler.d.ts +35 -0
  37. package/dist/types.backup/browser/partial-update.d.ts +61 -0
  38. package/dist/types.backup/browser/prefetch/cache.d.ts +183 -0
  39. package/dist/types.backup/browser/prefetch/fetch.d.ts +52 -0
  40. package/dist/types.backup/browser/prefetch/observer.d.ts +27 -0
  41. package/dist/types.backup/browser/prefetch/policy.d.ts +13 -0
  42. package/dist/types.backup/browser/prefetch/queue.d.ts +48 -0
  43. package/dist/types.backup/browser/prefetch/resource-ready.d.ts +28 -0
  44. package/dist/types.backup/browser/rango-state.d.ts +52 -0
  45. package/dist/types.backup/browser/react/Link.d.ts +140 -0
  46. package/dist/types.backup/browser/react/NavigationProvider.d.ts +88 -0
  47. package/dist/types.backup/browser/react/ScrollRestoration.d.ts +78 -0
  48. package/dist/types.backup/browser/react/context.d.ts +54 -0
  49. package/dist/types.backup/browser/react/filter-segment-order.d.ts +35 -0
  50. package/dist/types.backup/browser/react/index.d.ts +1 -0
  51. package/dist/types.backup/browser/react/location-state-shared.d.ts +162 -0
  52. package/dist/types.backup/browser/react/location-state.d.ts +29 -0
  53. package/dist/types.backup/browser/react/mount-context.d.ts +23 -0
  54. package/dist/types.backup/browser/react/nonce-context.d.ts +14 -0
  55. package/dist/types.backup/browser/react/shallow-equal.d.ts +5 -0
  56. package/dist/types.backup/browser/react/use-action.d.ts +61 -0
  57. package/dist/types.backup/browser/react/use-handle.d.ts +21 -0
  58. package/dist/types.backup/browser/react/use-href.d.ts +32 -0
  59. package/dist/types.backup/browser/react/use-link-status.d.ts +36 -0
  60. package/dist/types.backup/browser/react/use-mount.d.ts +24 -0
  61. package/dist/types.backup/browser/react/use-navigation.d.ts +15 -0
  62. package/dist/types.backup/browser/react/use-params.d.ts +21 -0
  63. package/dist/types.backup/browser/react/use-pathname.d.ts +13 -0
  64. package/dist/types.backup/browser/react/use-reverse.d.ts +40 -0
  65. package/dist/types.backup/browser/react/use-router.d.ts +23 -0
  66. package/dist/types.backup/browser/react/use-search-params.d.ts +19 -0
  67. package/dist/types.backup/browser/react/use-segments.d.ts +29 -0
  68. package/dist/types.backup/browser/response-adapter.d.ts +58 -0
  69. package/dist/types.backup/browser/rsc-router.d.ts +141 -0
  70. package/dist/types.backup/browser/scroll-restoration.d.ts +103 -0
  71. package/dist/types.backup/browser/segment-reconciler.d.ts +74 -0
  72. package/dist/types.backup/browser/segment-structure-assert.d.ts +16 -0
  73. package/dist/types.backup/browser/server-action-bridge.d.ts +29 -0
  74. package/dist/types.backup/browser/types.d.ts +530 -0
  75. package/dist/types.backup/browser/validate-redirect-origin.d.ts +28 -0
  76. package/dist/types.backup/build/collect-fallback-refs.d.ts +5 -0
  77. package/dist/types.backup/build/generate-manifest.d.ts +100 -0
  78. package/dist/types.backup/build/generate-route-types.d.ts +8 -0
  79. package/dist/types.backup/build/index.d.ts +21 -0
  80. package/dist/types.backup/build/prefix-tree-utils.d.ts +56 -0
  81. package/dist/types.backup/build/route-trie.d.ts +89 -0
  82. package/dist/types.backup/build/route-types/ast-helpers.d.ts +3 -0
  83. package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +13 -0
  84. package/dist/types.backup/build/route-types/codegen.d.ts +16 -0
  85. package/dist/types.backup/build/route-types/include-resolution.d.ts +74 -0
  86. package/dist/types.backup/build/route-types/param-extraction.d.ts +13 -0
  87. package/dist/types.backup/build/route-types/per-module-writer.d.ts +18 -0
  88. package/dist/types.backup/build/route-types/router-processing.d.ts +82 -0
  89. package/dist/types.backup/build/route-types/scan-filter.d.ts +17 -0
  90. package/dist/types.backup/build/route-types/source-scan.d.ts +13 -0
  91. package/dist/types.backup/build/runtime-discovery.d.ts +24 -0
  92. package/dist/types.backup/cache/background-task.d.ts +21 -0
  93. package/dist/types.backup/cache/cache-error.d.ts +71 -0
  94. package/dist/types.backup/cache/cache-key-utils.d.ts +35 -0
  95. package/dist/types.backup/cache/cache-policy.d.ts +59 -0
  96. package/dist/types.backup/cache/cache-runtime.d.ts +51 -0
  97. package/dist/types.backup/cache/cache-scope.d.ts +134 -0
  98. package/dist/types.backup/cache/cache-tag.d.ts +79 -0
  99. package/dist/types.backup/cache/cf/cf-base64.d.ts +4 -0
  100. package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +105 -0
  101. package/dist/types.backup/cache/cf/cf-cache-store.d.ts +481 -0
  102. package/dist/types.backup/cache/cf/cf-cache-types.d.ts +300 -0
  103. package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +22 -0
  104. package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +15 -0
  105. package/dist/types.backup/cache/cf/index.d.ts +3 -0
  106. package/dist/types.backup/cache/document-cache.d.ts +69 -0
  107. package/dist/types.backup/cache/handle-capture.d.ts +23 -0
  108. package/dist/types.backup/cache/handle-snapshot.d.ts +39 -0
  109. package/dist/types.backup/cache/index.d.ts +7 -0
  110. package/dist/types.backup/cache/memory-segment-store.d.ts +163 -0
  111. package/dist/types.backup/cache/profile-registry.d.ts +40 -0
  112. package/dist/types.backup/cache/read-through-swr.d.ts +60 -0
  113. package/dist/types.backup/cache/segment-codec.d.ts +78 -0
  114. package/dist/types.backup/cache/shell-snapshot.d.ts +162 -0
  115. package/dist/types.backup/cache/tag-invalidation.d.ts +74 -0
  116. package/dist/types.backup/cache/taint.d.ts +71 -0
  117. package/dist/types.backup/cache/types.d.ts +407 -0
  118. package/dist/types.backup/cache/vercel/index.d.ts +1 -0
  119. package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +267 -0
  120. package/dist/types.backup/client.d.ts +184 -0
  121. package/dist/types.backup/client.rsc.d.ts +39 -0
  122. package/dist/types.backup/cloudflare/index.d.ts +7 -0
  123. package/dist/types.backup/cloudflare/tracing.d.ts +53 -0
  124. package/dist/types.backup/component-utils.d.ts +46 -0
  125. package/dist/types.backup/components/DefaultDocument.d.ts +13 -0
  126. package/dist/types.backup/context-var.d.ts +84 -0
  127. package/dist/types.backup/debug.d.ts +57 -0
  128. package/dist/types.backup/decode-loader-results.d.ts +5 -0
  129. package/dist/types.backup/default-error-boundary.d.ts +10 -0
  130. package/dist/types.backup/defer.d.ts +89 -0
  131. package/dist/types.backup/deps/browser.d.ts +1 -0
  132. package/dist/types.backup/deps/html-stream-client.d.ts +1 -0
  133. package/dist/types.backup/deps/html-stream-server.d.ts +1 -0
  134. package/dist/types.backup/deps/rsc.d.ts +1 -0
  135. package/dist/types.backup/deps/ssr.d.ts +1 -0
  136. package/dist/types.backup/encode-kv.d.ts +35 -0
  137. package/dist/types.backup/errors.d.ts +226 -0
  138. package/dist/types.backup/escape-script.d.ts +44 -0
  139. package/dist/types.backup/handle.d.ts +93 -0
  140. package/dist/types.backup/handles/MetaTags.d.ts +17 -0
  141. package/dist/types.backup/handles/Scripts.d.ts +38 -0
  142. package/dist/types.backup/handles/breadcrumbs.d.ts +43 -0
  143. package/dist/types.backup/handles/deferred-resolution.d.ts +53 -0
  144. package/dist/types.backup/handles/is-thenable.d.ts +12 -0
  145. package/dist/types.backup/handles/meta.d.ts +43 -0
  146. package/dist/types.backup/handles/script.d.ts +139 -0
  147. package/dist/types.backup/host/cookie-handler.d.ts +8 -0
  148. package/dist/types.backup/host/errors.d.ts +40 -0
  149. package/dist/types.backup/host/index.d.ts +33 -0
  150. package/dist/types.backup/host/pattern-matcher.d.ts +30 -0
  151. package/dist/types.backup/host/router.d.ts +12 -0
  152. package/dist/types.backup/host/testing.d.ts +41 -0
  153. package/dist/types.backup/host/types.d.ts +148 -0
  154. package/dist/types.backup/host/utils.d.ts +20 -0
  155. package/dist/types.backup/href-client.d.ts +214 -0
  156. package/dist/types.backup/index.d.ts +112 -0
  157. package/dist/types.backup/index.rsc.d.ts +51 -0
  158. package/dist/types.backup/internal-debug.d.ts +1 -0
  159. package/dist/types.backup/loader-store.d.ts +193 -0
  160. package/dist/types.backup/loader.d.ts +18 -0
  161. package/dist/types.backup/loader.rsc.d.ts +18 -0
  162. package/dist/types.backup/missing-id-error.d.ts +1 -0
  163. package/dist/types.backup/outlet-context.d.ts +12 -0
  164. package/dist/types.backup/outlet-provider.d.ts +12 -0
  165. package/dist/types.backup/prerender/build-shell-capture.d.ts +104 -0
  166. package/dist/types.backup/prerender/param-hash.d.ts +6 -0
  167. package/dist/types.backup/prerender/shell-manifest-key.d.ts +18 -0
  168. package/dist/types.backup/prerender/store.d.ts +62 -0
  169. package/dist/types.backup/prerender.d.ts +292 -0
  170. package/dist/types.backup/redirect-origin.d.ts +55 -0
  171. package/dist/types.backup/regex-escape.d.ts +6 -0
  172. package/dist/types.backup/render-error-thrower.d.ts +13 -0
  173. package/dist/types.backup/response-utils.d.ts +35 -0
  174. package/dist/types.backup/reverse.d.ts +206 -0
  175. package/dist/types.backup/root-error-boundary.d.ts +32 -0
  176. package/dist/types.backup/route-content-wrapper.d.ts +40 -0
  177. package/dist/types.backup/route-definition/dsl-helpers.d.ts +130 -0
  178. package/dist/types.backup/route-definition/helper-factories.d.ts +22 -0
  179. package/dist/types.backup/route-definition/helpers-types.d.ts +392 -0
  180. package/dist/types.backup/route-definition/index.d.ts +7 -0
  181. package/dist/types.backup/route-definition/redirect.d.ts +48 -0
  182. package/dist/types.backup/route-definition/resolve-handler-use.d.ts +19 -0
  183. package/dist/types.backup/route-definition/use-item-types.d.ts +1 -0
  184. package/dist/types.backup/route-definition.d.ts +1 -0
  185. package/dist/types.backup/route-map-builder.d.ts +127 -0
  186. package/dist/types.backup/route-name.d.ts +27 -0
  187. package/dist/types.backup/route-types.d.ts +172 -0
  188. package/dist/types.backup/router/basename.d.ts +10 -0
  189. package/dist/types.backup/router/content-negotiation.d.ts +91 -0
  190. package/dist/types.backup/router/debug-manifest.d.ts +7 -0
  191. package/dist/types.backup/router/error-handling.d.ts +76 -0
  192. package/dist/types.backup/router/find-match.d.ts +19 -0
  193. package/dist/types.backup/router/handler-context.d.ts +41 -0
  194. package/dist/types.backup/router/instrument.d.ts +161 -0
  195. package/dist/types.backup/router/intercept-resolution.d.ts +79 -0
  196. package/dist/types.backup/router/lazy-includes.d.ts +26 -0
  197. package/dist/types.backup/router/loader-resolution.d.ts +63 -0
  198. package/dist/types.backup/router/logging.d.ts +41 -0
  199. package/dist/types.backup/router/manifest.d.ts +8 -0
  200. package/dist/types.backup/router/match-api.d.ts +19 -0
  201. package/dist/types.backup/router/match-context.d.ts +184 -0
  202. package/dist/types.backup/router/match-handlers.d.ts +49 -0
  203. package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +113 -0
  204. package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +113 -0
  205. package/dist/types.backup/router/match-middleware/cache-store.d.ts +112 -0
  206. package/dist/types.backup/router/match-middleware/index.d.ts +80 -0
  207. package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +116 -0
  208. package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +94 -0
  209. package/dist/types.backup/router/match-pipelines.d.ts +103 -0
  210. package/dist/types.backup/router/match-result.d.ts +114 -0
  211. package/dist/types.backup/router/metrics.d.ts +6 -0
  212. package/dist/types.backup/router/middleware-types.d.ts +74 -0
  213. package/dist/types.backup/router/middleware.d.ts +116 -0
  214. package/dist/types.backup/router/navigation-snapshot.d.ts +22 -0
  215. package/dist/types.backup/router/params-util.d.ts +8 -0
  216. package/dist/types.backup/router/parse-pattern.d.ts +38 -0
  217. package/dist/types.backup/router/pattern-matching.d.ts +169 -0
  218. package/dist/types.backup/router/prefetch-cache-ttl.d.ts +27 -0
  219. package/dist/types.backup/router/prefetch-limits.d.ts +20 -0
  220. package/dist/types.backup/router/prerender-match.d.ts +50 -0
  221. package/dist/types.backup/router/preview-match.d.ts +22 -0
  222. package/dist/types.backup/router/request-classification.d.ts +104 -0
  223. package/dist/types.backup/router/revalidation.d.ts +57 -0
  224. package/dist/types.backup/router/route-snapshot.d.ts +112 -0
  225. package/dist/types.backup/router/router-context.d.ts +137 -0
  226. package/dist/types.backup/router/router-interfaces.d.ts +432 -0
  227. package/dist/types.backup/router/router-options.d.ts +738 -0
  228. package/dist/types.backup/router/router-registry.d.ts +15 -0
  229. package/dist/types.backup/router/segment-resolution/fresh.d.ts +55 -0
  230. package/dist/types.backup/router/segment-resolution/helpers.d.ts +93 -0
  231. package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +33 -0
  232. package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +44 -0
  233. package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +90 -0
  234. package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +53 -0
  235. package/dist/types.backup/router/segment-resolution/revalidation.d.ts +85 -0
  236. package/dist/types.backup/router/segment-resolution/static-store.d.ts +17 -0
  237. package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
  238. package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +28 -0
  239. package/dist/types.backup/router/segment-resolution.d.ts +3 -0
  240. package/dist/types.backup/router/segment-wrappers.d.ts +53 -0
  241. package/dist/types.backup/router/state-cookie-name.d.ts +1 -0
  242. package/dist/types.backup/router/substitute-pattern-params.d.ts +23 -0
  243. package/dist/types.backup/router/telemetry-otel.d.ts +113 -0
  244. package/dist/types.backup/router/telemetry.d.ts +215 -0
  245. package/dist/types.backup/router/timeout.d.ts +68 -0
  246. package/dist/types.backup/router/tracing.d.ts +125 -0
  247. package/dist/types.backup/router/trie-matching.d.ts +32 -0
  248. package/dist/types.backup/router/types.d.ts +98 -0
  249. package/dist/types.backup/router/url-params.d.ts +26 -0
  250. package/dist/types.backup/router.d.ts +7 -0
  251. package/dist/types.backup/rsc/capture-queue.d.ts +6 -0
  252. package/dist/types.backup/rsc/full-payload.d.ts +22 -0
  253. package/dist/types.backup/rsc/handler-context.d.ts +31 -0
  254. package/dist/types.backup/rsc/handler.d.ts +9 -0
  255. package/dist/types.backup/rsc/helpers.d.ts +213 -0
  256. package/dist/types.backup/rsc/index.d.ts +17 -0
  257. package/dist/types.backup/rsc/json-route-result.d.ts +20 -0
  258. package/dist/types.backup/rsc/loader-fetch.d.ts +14 -0
  259. package/dist/types.backup/rsc/manifest-init.d.ts +18 -0
  260. package/dist/types.backup/rsc/nonce.d.ts +28 -0
  261. package/dist/types.backup/rsc/origin-guard.d.ts +50 -0
  262. package/dist/types.backup/rsc/progressive-enhancement.d.ts +19 -0
  263. package/dist/types.backup/rsc/redirect-guard.d.ts +35 -0
  264. package/dist/types.backup/rsc/response-cache-serve.d.ts +46 -0
  265. package/dist/types.backup/rsc/response-error.d.ts +19 -0
  266. package/dist/types.backup/rsc/response-route-handler.d.ts +29 -0
  267. package/dist/types.backup/rsc/rsc-rendering.d.ts +23 -0
  268. package/dist/types.backup/rsc/runtime-warnings.d.ts +22 -0
  269. package/dist/types.backup/rsc/server-action.d.ts +68 -0
  270. package/dist/types.backup/rsc/shell-build-manifest.d.ts +84 -0
  271. package/dist/types.backup/rsc/shell-capture-constants.d.ts +27 -0
  272. package/dist/types.backup/rsc/shell-capture.d.ts +374 -0
  273. package/dist/types.backup/rsc/shell-serve.d.ts +136 -0
  274. package/dist/types.backup/rsc/ssr-setup.d.ts +48 -0
  275. package/dist/types.backup/rsc/transition-gate.d.ts +27 -0
  276. package/dist/types.backup/rsc/types.d.ts +290 -0
  277. package/dist/types.backup/runtime-env.d.ts +1 -0
  278. package/dist/types.backup/search-params.d.ts +125 -0
  279. package/dist/types.backup/segment-content-promise.d.ts +13 -0
  280. package/dist/types.backup/segment-fragments.d.ts +56 -0
  281. package/dist/types.backup/segment-loader-promise.d.ts +22 -0
  282. package/dist/types.backup/segment-system.d.ts +84 -0
  283. package/dist/types.backup/serialize.d.ts +164 -0
  284. package/dist/types.backup/server/context.d.ts +494 -0
  285. package/dist/types.backup/server/cookie-parse.d.ts +10 -0
  286. package/dist/types.backup/server/cookie-store.d.ts +107 -0
  287. package/dist/types.backup/server/fetchable-loader-store.d.ts +20 -0
  288. package/dist/types.backup/server/handle-store.d.ts +100 -0
  289. package/dist/types.backup/server/loader-registry.d.ts +32 -0
  290. package/dist/types.backup/server/request-context.d.ts +596 -0
  291. package/dist/types.backup/server/root-layout.d.ts +3 -0
  292. package/dist/types.backup/server.d.ts +15 -0
  293. package/dist/types.backup/ssr/index.d.ts +233 -0
  294. package/dist/types.backup/ssr/inject-rsc-eager.d.ts +3 -0
  295. package/dist/types.backup/ssr/preinit-client-references.d.ts +71 -0
  296. package/dist/types.backup/ssr/ssr-root.d.ts +69 -0
  297. package/dist/types.backup/static-handler.d.ts +57 -0
  298. package/dist/types.backup/testing/cache-status.d.ts +63 -0
  299. package/dist/types.backup/testing/collect-handle.d.ts +20 -0
  300. package/dist/types.backup/testing/dispatch.d.ts +123 -0
  301. package/dist/types.backup/testing/dom.entry.d.ts +15 -0
  302. package/dist/types.backup/testing/e2e/fixture.d.ts +37 -0
  303. package/dist/types.backup/testing/e2e/index.d.ts +30 -0
  304. package/dist/types.backup/testing/e2e/matchers.d.ts +17 -0
  305. package/dist/types.backup/testing/e2e/page-helpers.d.ts +62 -0
  306. package/dist/types.backup/testing/e2e/parity.d.ts +111 -0
  307. package/dist/types.backup/testing/e2e/server.d.ts +35 -0
  308. package/dist/types.backup/testing/flight-matchers.d.ts +55 -0
  309. package/dist/types.backup/testing/flight-normalize.d.ts +1 -0
  310. package/dist/types.backup/testing/flight-tree.d.ts +192 -0
  311. package/dist/types.backup/testing/flight.d.ts +115 -0
  312. package/dist/types.backup/testing/flight.entry.d.ts +27 -0
  313. package/dist/types.backup/testing/generated-routes.d.ts +66 -0
  314. package/dist/types.backup/testing/index.d.ts +52 -0
  315. package/dist/types.backup/testing/internal/context.d.ts +225 -0
  316. package/dist/types.backup/testing/internal/flight-client-globals.d.ts +1 -0
  317. package/dist/types.backup/testing/internal/seed-vars.d.ts +30 -0
  318. package/dist/types.backup/testing/render-handler.d.ts +160 -0
  319. package/dist/types.backup/testing/render-route.d.ts +246 -0
  320. package/dist/types.backup/testing/run-loader.d.ts +186 -0
  321. package/dist/types.backup/testing/run-middleware.d.ts +132 -0
  322. package/dist/types.backup/testing/run-transition-when.d.ts +77 -0
  323. package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
  324. package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
  325. package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
  326. package/dist/types.backup/testing/vitest-stubs/version.d.ts +1 -0
  327. package/dist/types.backup/testing/vitest.d.ts +205 -0
  328. package/dist/types.backup/theme/ThemeProvider.d.ts +13 -0
  329. package/dist/types.backup/theme/ThemeScript.d.ts +45 -0
  330. package/dist/types.backup/theme/constants.d.ts +39 -0
  331. package/dist/types.backup/theme/index.d.ts +29 -0
  332. package/dist/types.backup/theme/theme-context.d.ts +21 -0
  333. package/dist/types.backup/theme/theme-script.d.ts +26 -0
  334. package/dist/types.backup/theme/types.d.ts +162 -0
  335. package/dist/types.backup/theme/use-theme.d.ts +8 -0
  336. package/dist/types.backup/types/boundaries.d.ts +93 -0
  337. package/dist/types.backup/types/cache-types.d.ts +191 -0
  338. package/dist/types.backup/types/error-types.d.ts +114 -0
  339. package/dist/types.backup/types/global-namespace.d.ts +90 -0
  340. package/dist/types.backup/types/handler-context.d.ts +658 -0
  341. package/dist/types.backup/types/index.d.ts +11 -0
  342. package/dist/types.backup/types/loader-types.d.ts +182 -0
  343. package/dist/types.backup/types/request-scope.d.ts +93 -0
  344. package/dist/types.backup/types/route-config.d.ts +105 -0
  345. package/dist/types.backup/types/route-entry.d.ts +95 -0
  346. package/dist/types.backup/types/segments.d.ts +234 -0
  347. package/dist/types.backup/types.d.ts +1 -0
  348. package/dist/types.backup/urls/include-helper.d.ts +17 -0
  349. package/dist/types.backup/urls/include-provider.d.ts +27 -0
  350. package/dist/types.backup/urls/index.d.ts +6 -0
  351. package/dist/types.backup/urls/path-helper-types.d.ts +197 -0
  352. package/dist/types.backup/urls/path-helper.d.ts +12 -0
  353. package/dist/types.backup/urls/pattern-types.d.ts +166 -0
  354. package/dist/types.backup/urls/response-types.d.ts +67 -0
  355. package/dist/types.backup/urls/type-extraction.d.ts +157 -0
  356. package/dist/types.backup/urls/urls-function.d.ts +24 -0
  357. package/dist/types.backup/urls.d.ts +1 -0
  358. package/dist/types.backup/use-loader.d.ts +150 -0
  359. package/dist/types.backup/vercel/index.d.ts +10 -0
  360. package/dist/types.backup/vercel/tracing.d.ts +70 -0
  361. package/dist/types.backup/vite/debug.d.ts +80 -0
  362. package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +12 -0
  363. package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +65 -0
  364. package/dist/types.backup/vite/discovery/discover-routers.d.ts +17 -0
  365. package/dist/types.backup/vite/discovery/discovery-errors.d.ts +113 -0
  366. package/dist/types.backup/vite/discovery/gate-state.d.ts +79 -0
  367. package/dist/types.backup/vite/discovery/prerender-collection.d.ts +24 -0
  368. package/dist/types.backup/vite/discovery/route-types-writer.d.ts +32 -0
  369. package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +22 -0
  370. package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +40 -0
  371. package/dist/types.backup/vite/discovery/state.d.ts +162 -0
  372. package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +15 -0
  373. package/dist/types.backup/vite/index.d.ts +11 -0
  374. package/dist/types.backup/vite/inject-client-debug.d.ts +56 -0
  375. package/dist/types.backup/vite/plugin-types.d.ts +298 -0
  376. package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +6 -0
  377. package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +40 -0
  378. package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +35 -0
  379. package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
  380. package/dist/types.backup/vite/plugins/expose-action-id.d.ts +18 -0
  381. package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +37 -0
  382. package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
  383. package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
  384. package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
  385. package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +13 -0
  386. package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +29 -0
  387. package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +6 -0
  388. package/dist/types.backup/vite/plugins/performance-tracks.d.ts +25 -0
  389. package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +20 -0
  390. package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +20 -0
  391. package/dist/types.backup/vite/plugins/vercel-output.d.ts +85 -0
  392. package/dist/types.backup/vite/plugins/version-injector.d.ts +21 -0
  393. package/dist/types.backup/vite/plugins/version-plugin.d.ts +19 -0
  394. package/dist/types.backup/vite/plugins/virtual-entries.d.ts +36 -0
  395. package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +7 -0
  396. package/dist/types.backup/vite/rango.d.ts +29 -0
  397. package/dist/types.backup/vite/router-discovery.d.ts +23 -0
  398. package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +64 -0
  399. package/dist/types.backup/vite/utils/banner.d.ts +2 -0
  400. package/dist/types.backup/vite/utils/bundle-analysis.d.ts +28 -0
  401. package/dist/types.backup/vite/utils/client-chunks.d.ts +55 -0
  402. package/dist/types.backup/vite/utils/directive-prologue.d.ts +16 -0
  403. package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +37 -0
  404. package/dist/types.backup/vite/utils/manifest-utils.d.ts +7 -0
  405. package/dist/types.backup/vite/utils/package-resolution.d.ts +6 -0
  406. package/dist/types.backup/vite/utils/prerender-utils.d.ts +32 -0
  407. package/dist/types.backup/vite/utils/shared-utils.d.ts +55 -0
  408. package/dist/vite/index.js +5 -2
  409. package/package.json +1 -1
  410. package/skills/comparison/references/framework-comparison.md +2 -1
  411. package/skills/ppr/SKILL.md +28 -13
  412. package/skills/router-setup/SKILL.md +4 -0
  413. package/src/browser/prefetch/default-strategy.ts +34 -0
  414. package/src/browser/prefetch/loader.ts +6 -12
  415. package/src/browser/prefetch/runtime.ts +0 -1
  416. package/src/browser/react/Link.tsx +22 -21
  417. package/src/browser/rsc-router.tsx +8 -0
  418. package/src/browser/types.ts +5 -0
  419. package/src/cache/cf/cf-cache-store.ts +4 -0
  420. package/src/cache/types.ts +6 -0
  421. package/src/cache/vercel/vercel-cache-store.ts +6 -1
  422. package/src/router/prefetch-default.ts +59 -0
  423. package/src/router/router-interfaces.ts +8 -0
  424. package/src/router/router-options.ts +31 -0
  425. package/src/router.ts +7 -0
  426. package/src/rsc/capture-queue.ts +24 -1
  427. package/src/rsc/full-payload.ts +1 -0
  428. package/src/rsc/handler.ts +1 -0
  429. package/src/rsc/rsc-rendering.ts +120 -18
  430. package/src/rsc/shell-capture.ts +94 -50
  431. package/src/rsc/shell-serve.ts +6 -4
  432. package/src/rsc/types.ts +2 -0
  433. package/src/testing/e2e/index.ts +6 -0
  434. package/src/testing/e2e/page-helpers.ts +47 -0
  435. package/src/testing/e2e/parity.ts +13 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Router-wide default Link prefetch strategy (client seat).
3
+ *
4
+ * The server resolves `createRouter({ defaultPrefetch })` once at router init
5
+ * (router/prefetch-default.ts) and ships it in initial payload metadata; the
6
+ * browser entry applies it here before hydration — same lifecycle as
7
+ * `initPrefetchCache` / `setPrefetchConcurrency`. Every `<Link>` without an
8
+ * explicit `prefetch` prop reads the value at render time.
9
+ *
10
+ * The module initial value must equal the server resolver's environment default:
11
+ * `"none"` in development and `"viewport"` in production. During SSR this
12
+ * module is never initialized from metadata, so keeping both seats aligned also
13
+ * gives metadata-less payloads the documented behavior.
14
+ */
15
+ import type { PrefetchStrategy } from "../../router/prefetch-default.js";
16
+ /**
17
+ * Apply the server-resolved default strategy. Called once at browser app init
18
+ * from payload metadata; also used by tests to reset state.
19
+ */
20
+ export declare function setDefaultPrefetchStrategy(strategy: PrefetchStrategy): void;
21
+ /** Current default strategy for Links without an explicit `prefetch` prop. */
22
+ export declare function getDefaultPrefetchStrategy(): PrefetchStrategy;
@@ -1,3 +1,2 @@
1
1
  export { prefetchDirect, prefetchQueued, setPrefetchDecoder } from "./fetch.js";
2
2
  export { abortAllPrefetches, cancelAllPrefetches, setPrefetchConcurrency, } from "./queue.js";
3
- export { observeForPrefetch, unobserveForPrefetch } from "./observer.js";
@@ -8,15 +8,8 @@ import { type LocationStateEntry } from "./location-state.js";
8
8
  */
9
9
  export type StateOrGetter<T = unknown> = T | (() => T);
10
10
  export type LinkState = LocationStateEntry[] | StateOrGetter<Record<string, unknown>>;
11
- /**
12
- * Prefetch strategy for the Link component
13
- * - "hover": Prefetch on mouse enter (direct, no queue)
14
- * - "viewport": Prefetch when link enters viewport (queued, waits for idle)
15
- * - "render": Prefetch on component mount regardless of visibility (queued, waits for idle)
16
- * - "adaptive": Hover on pointer devices, viewport on touch devices
17
- * - "none": No prefetching (default)
18
- */
19
- export type PrefetchStrategy = "hover" | "viewport" | "render" | "adaptive" | "none";
11
+ import type { PrefetchStrategy } from "../../router/prefetch-default.js";
12
+ export type { PrefetchStrategy } from "../../router/prefetch-default.js";
20
13
  /**
21
14
  * Resolve a prefetch strategy, expanding "adaptive" to the concrete strategy
22
15
  * for the CURRENT input capability: "viewport" on touch (no-hover) devices,
@@ -56,8 +49,12 @@ export interface LinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorEle
56
49
  */
57
50
  revalidate?: boolean;
58
51
  /**
59
- * Prefetch strategy for the link destination
60
- * @default "none"
52
+ * Prefetch strategy for the link destination. When omitted, falls back to
53
+ * the router-wide default (`createRouter({ defaultPrefetch })`: `"none"` in
54
+ * development, `"viewport"` in production). An explicit value always wins
55
+ * over the router default, including `"none"` to opt a single Link out.
56
+ *
57
+ * @default the router's environment-aware `defaultPrefetch`
61
58
  */
62
59
  prefetch?: PrefetchStrategy;
63
60
  /**
@@ -77,6 +77,11 @@ export interface RscMetadata {
77
77
  * Sent on initial render so the browser can configure its prefetch queue.
78
78
  */
79
79
  prefetchConcurrency?: number;
80
+ /**
81
+ * Router-wide default prefetch strategy for Links without a `prefetch` prop.
82
+ * Sent on initial render; applied once at init (default-strategy.ts).
83
+ */
84
+ defaultPrefetch?: import("../router/prefetch-default.js").PrefetchStrategy;
80
85
  /**
81
86
  * Server-resolved rango state cookie name (`{prefix}_{routerId}`). The client
82
87
  * reads it verbatim and binds the rango state cookie to it; composition
@@ -265,6 +265,12 @@ export interface ShellCacheEntry {
265
265
  * heals it. See docs/design/ppr-shell-resume.md ("the capture data snapshot").
266
266
  */
267
267
  snapshot?: ShellSnapshotRecord[];
268
+ /**
269
+ * The entry was captured from a partial request only to produce an eligible
270
+ * segment snapshot. Document serving must treat its HTML prelude as a miss;
271
+ * the partial request's headers and middleware state are not document state.
272
+ */
273
+ navigationOnly?: true;
268
274
  /**
269
275
  * True when the capture's HANDLER layer declared per-request liveness: a
270
276
  * handle pushed OUTSIDE a DSL loader scope carried a nested thenable (the
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Resolve the router-wide default Link prefetch strategy once, at router init.
3
+ * The resolved value ships to the client in payload metadata; the browser
4
+ * entry applies it via `setDefaultPrefetchStrategy` (browser/prefetch/
5
+ * default-strategy.ts) and every `<Link>` without an explicit `prefetch` prop
6
+ * falls back to it.
7
+ *
8
+ * The type lives HERE (not in browser/react/Link.tsx) because both seats need
9
+ * it: this server-side resolver and the client Link/default-strategy modules.
10
+ * Link.tsx re-exports it so the public `PrefetchStrategy` export path is
11
+ * unchanged.
12
+ *
13
+ * Policy note: automatic prefetch stays quiet in development, matching the
14
+ * production-only default used by Next.js. Explicit router and per-Link
15
+ * strategies still work in every mode. Invalid untyped inputs fall back to the
16
+ * current environment's default.
17
+ */
18
+ /**
19
+ * Prefetch strategy for the Link component
20
+ * - "hover": Prefetch on mouse enter (direct, no queue)
21
+ * - "viewport": Prefetch when link enters viewport (queued, waits for idle)
22
+ * - "render": Prefetch on component mount regardless of visibility (queued, waits for idle)
23
+ * - "adaptive": Hover on pointer devices, viewport on touch devices
24
+ * - "none": No prefetching
25
+ */
26
+ export type PrefetchStrategy = "hover" | "viewport" | "render" | "adaptive" | "none";
27
+ export declare const DEFAULT_PREFETCH_STRATEGY: PrefetchStrategy;
28
+ export declare function resolveDefaultPrefetch(raw: PrefetchStrategy | undefined, nodeEnv?: string | undefined): PrefetchStrategy;
@@ -249,6 +249,13 @@ export interface RangoInternal<TEnv = any, TRoutes extends Record<string, unknow
249
249
  * prefetchConcurrency.
250
250
  */
251
251
  readonly prefetchConcurrency: number;
252
+ /**
253
+ * Router-wide default Link prefetch strategy for Links without an explicit
254
+ * `prefetch` prop. Shipped to the client in payload metadata. Derived from
255
+ * the `defaultPrefetch` option (default "none" in development and
256
+ * "viewport" in production).
257
+ */
258
+ readonly defaultPrefetch: import("./prefetch-default.js").PrefetchStrategy;
252
259
  /**
253
260
  * Resolved rango state cookie name (`{prefix}_{routerId}`), composed once at
254
261
  * router init and shipped to the client in payload metadata. The server-side
@@ -7,6 +7,7 @@ import type { ExecutionContext } from "../server/request-context.js";
7
7
  import type { UrlPatterns } from "../urls.js";
8
8
  import type { UrlBuilder } from "../urls/pattern-types.js";
9
9
  import type { NamedRouteEntry } from "./content-negotiation.js";
10
+ import type { PrefetchStrategy } from "./prefetch-default.js";
10
11
  import type { TelemetrySink } from "./telemetry.js";
11
12
  import type { RouterTracingConfig } from "./tracing.js";
12
13
  import type { RouterTimeouts, OnTimeoutCallback } from "./timeout.js";
@@ -495,6 +496,35 @@ export interface RangoOptions<TEnv = any> {
495
496
  * @default 2
496
497
  */
497
498
  prefetchConcurrency?: number;
499
+ /**
500
+ * Default prefetch strategy for every `<Link>` that does not set its own
501
+ * `prefetch` prop. A per-Link `prefetch` prop always wins, in both
502
+ * directions (a Link can opt out of an aggressive default with
503
+ * `prefetch="none"`, or opt in under `defaultPrefetch: "none"`).
504
+ *
505
+ * - `"viewport"` (production default): prefetch when the link enters the viewport —
506
+ * idle-gated and queued (see `prefetchConcurrency`), so prefetches never
507
+ * compete with hydration or an active navigation.
508
+ * - `"hover"`: prefetch on mouse enter only. Much lighter on the server —
509
+ * only links the pointer approaches are fetched — at the cost of the
510
+ * ~100-300ms head start viewport prefetch gives.
511
+ * - `"adaptive"`: `"hover"` on pointer devices, `"viewport"` on touch
512
+ * devices (no hover to wait for).
513
+ * - `"render"`: prefetch on mount regardless of visibility.
514
+ * - `"none"`: manual mode — nothing prefetches unless a Link opts in.
515
+ *
516
+ * Automatic prefetch defaults to `"none"` in development and `"viewport"`
517
+ * in production. With the production default, every visible Link triggers an
518
+ * RSC render (loaders included) on the server. Routes served from cache/PPR
519
+ * absorb this cheaply; per-user dynamic routes pay full price per viewport
520
+ * entry. Set `"hover"`, `"adaptive"`, or `"none"` when that cost matters.
521
+ *
522
+ * To disable the prefetch subsystem entirely (including per-Link opt-ins
523
+ * and `useRouter().prefetch()`), set `prefetchCacheTTL: false` instead.
524
+ *
525
+ * @default "none" in development; "viewport" in production
526
+ */
527
+ defaultPrefetch?: PrefetchStrategy;
498
528
  /**
499
529
  * Prefix for the rango state cookie name. The resolved name is
500
530
  * `{prefix}_{routerId}`; the prefix is sanitized to cookie-name-safe
@@ -1,3 +1,9 @@
1
+ /** Bound queued/running capture closures retained by one isolate. */
2
+ export declare const MAX_ADMITTED_CAPTURES: number;
3
+ /** The caller may drop this best-effort capture and retry on a later request. */
4
+ export declare class CaptureQueueFullError extends Error {
5
+ constructor();
6
+ }
1
7
  /**
2
8
  * Run `task` after every previously enqueued capture has settled. Returns a
3
9
  * promise for THIS task's completion (rejections propagate to the caller —
@@ -124,10 +124,11 @@ export interface ShellCaptureDebugEvent {
124
124
  * the key (stampede guard) and scheduled nothing
125
125
  * - skip-backoff: the key is inside its refused-capture backoff window and
126
126
  * the capture was not attempted
127
+ * - skip-capacity: the isolate capture queue is full; a later request may retry
127
128
  * - backoff: the key entered (or escalated) backoff after a terminal
128
129
  * no-shell — carries the new backoff state
129
130
  */
130
- outcome: "stored" | "redirect" | "no-shell" | "refused" | "error" | "skip-in-flight" | "skip-backoff" | "backoff";
131
+ outcome: "stored" | "redirect" | "no-shell" | "refused" | "error" | "skip-in-flight" | "skip-backoff" | "skip-capacity" | "backoff";
131
132
  /** Attempt number (1 = first, 2 = in-place retry). Absent on skips. */
132
133
  attempt?: number;
133
134
  /** Wall-clock ms of the whole attempt (barrier + render + drain + put). */
@@ -148,6 +149,8 @@ export interface ShellCaptureDebugEvent {
148
149
  snapshotBytes?: number;
149
150
  /** True when the snapshot exceeded maxSnapshotBytes and was dropped. */
150
151
  snapshotSkipped?: boolean;
152
+ /** A bake-lane loader settled into a shell that uses TTL/SWR-only invalidation. */
153
+ untaggedBake?: true;
151
154
  /** Outcome reported by a store that supports shell-write acknowledgements. */
152
155
  storeWrite?: "stored" | "invalidated";
153
156
  /** Consecutive failure count in the key's backoff entry, when one exists. */
@@ -280,6 +283,8 @@ export interface ShellCaptureDescriptor {
280
283
  * {@link ShellCaptureDebugEvent} per attempt/skip.
281
284
  */
282
285
  debugSink?: (event: ShellCaptureDebugEvent) => void;
286
+ /** Store the snapshot for navigation replay, never the captured HTML prelude. */
287
+ navigationOnly?: true;
283
288
  }
284
289
  /**
285
290
  * Schedule the background shell capture for a served document. Stampede-guarded:
@@ -288,11 +293,11 @@ export interface ShellCaptureDescriptor {
288
293
  * error is routed through reportCacheError — capture is best-effort; a failure just
289
294
  * means the next request recaptures.
290
295
  *
291
- * Eligibility (nonce/allReady/partial/status/strategy) is decided by the caller
292
- * (rsc-rendering.ts maybeScheduleShellCapture); this function only owns the
293
- * stampede guard and the background dispatch.
296
+ * Eligibility (nonce/partial/status/strategy) is decided by the caller. An SSR
297
+ * module loader may be passed for cold partial requests; it runs only after the
298
+ * capture enters the guarded background queue, never on response latency.
294
299
  */
295
- export declare function scheduleShellCapture(ctx: HandlerContext<any>, request: Request, env: any, url: URL, reqCtx: RequestContext<any>, ssrModule: SSRModule, descriptor: ShellCaptureDescriptor): void;
300
+ export declare function scheduleShellCapture(ctx: HandlerContext<any>, request: Request, env: any, url: URL, reqCtx: RequestContext<any>, ssrModule: SSRModule | ((request: Request, url: URL) => Promise<SSRModule | null>), descriptor: ShellCaptureDescriptor): void;
296
301
  /**
297
302
  * The outcome of one capture attempt.
298
303
  * - `stored`: a usable shell was captured (and a putShell was attempted; a store
@@ -310,7 +315,7 @@ type CaptureAttemptOutcome = "stored" | "redirect" | "no-shell" | "refused";
310
315
  * bag, not a return value: captureAndStoreShell's outcome type stays a string
311
316
  * union its existing callers (producer B, tests) consume unchanged.
312
317
  */
313
- type CaptureAttemptStats = Pick<ShellCaptureDebugEvent, "barrierWaitMs" | "writeSettleMs" | "preludeBytes" | "snapshotBytes" | "snapshotSkipped" | "storeWrite">;
318
+ type CaptureAttemptStats = Pick<ShellCaptureDebugEvent, "barrierWaitMs" | "writeSettleMs" | "preludeBytes" | "snapshotBytes" | "snapshotSkipped" | "untaggedBake" | "storeWrite">;
314
319
  /**
315
320
  * Run the shell capture with a single in-place retry, then store the result.
316
321
  *
@@ -351,7 +356,10 @@ export interface CaptureContextDerivation {
351
356
  * createRequestContext over the build env, with a fresh MemorySegmentCacheStore
352
357
  * as `_cacheStore` so the recording/snapshot machinery arms identically.
353
358
  */
354
- export declare function deriveShellCaptureContext(reqCtx: RequestContext<any>, descriptor: Pick<ShellCaptureDescriptor, "ttl" | "swr">): CaptureContextDerivation;
359
+ export declare function deriveShellCaptureContext(reqCtx: RequestContext<any>, descriptor: Pick<ShellCaptureDescriptor, "ttl" | "swr">, identity?: {
360
+ request: Request;
361
+ url: URL;
362
+ }): CaptureContextDerivation;
355
363
  /**
356
364
  * Seal handles, derive the quiesce signal, prerender + abort via the SSR module's
357
365
  * captureShellHTML, and store the result. Returns the attempt outcome (the caller
@@ -53,9 +53,10 @@ export interface ResolvedPprConfig {
53
53
  captureTimeout?: number;
54
54
  }
55
55
  /**
56
- * Validate the raw `ppr.captureTimeout` option: a finite number >= 1ms passes
57
- * through; anything else (including 0/negative/NaN/Infinity/non-number)
58
- * resolves to undefined, which means "use the capture default" downstream.
56
+ * Validate the raw `ppr.captureTimeout` option: a finite number >= 1ms is
57
+ * clamped to the default ceiling; anything else (including
58
+ * 0/negative/NaN/Infinity/non-number) resolves to undefined, which means "use
59
+ * the capture default" downstream.
59
60
  * Mirrors the prefetch-limit option policy: invalid values silently fall back
60
61
  * to the default rather than throwing at request time. Also the boundary
61
62
  * re-normalizer for the dev /__rsc_shell endpoint (vite/router-discovery.ts),
@@ -49,6 +49,8 @@ export interface RscPayload {
49
49
  prefetchCacheSize?: number;
50
50
  /** Max concurrent speculative prefetch requests on the client */
51
51
  prefetchConcurrency?: number;
52
+ /** Router-wide default prefetch strategy for Links without a `prefetch` prop */
53
+ defaultPrefetch?: import("../router/prefetch-default.js").PrefetchStrategy;
52
54
  /** Server-resolved rango state cookie name; the client reads it verbatim. */
53
55
  stateCookieName?: string;
54
56
  /** Theme configuration for FOUC prevention */
@@ -1,11 +1,11 @@
1
1
  import type { Expect, TestType } from "@playwright/test";
2
2
  import { createUseFixture, type Fixture, type FixtureOptions } from "./fixture.js";
3
- import { createPageHelpers, createStopwatch, getHistoryState, getNumericContent, goBack, goForward, isVisibleInViewport, measureTime, type PageHelpers, parseNumber, type Stopwatch, testId, waitForElement, waitForHydration, waitForNavigation } from "./page-helpers.js";
3
+ import { blockPrefetch, unblockPrefetch, createPageHelpers, createStopwatch, getHistoryState, getNumericContent, goBack, goForward, isPrefetchRequest, isVisibleInViewport, measureTime, type PageHelpers, parseNumber, type Stopwatch, testId, waitForElement, waitForHydration, waitForNavigation } from "./page-helpers.js";
4
4
  import { createParity, type ExpectParityOptions, type Parity, type ParityDescribeOptions, type ParityIntent } from "./parity.js";
5
5
  import { createRangoMatchers, type RangoMatchers } from "./matchers.js";
6
6
  export { assertCacheStatus, assertCacheDecision, parseCacheHeader, createCacheSink, filterCacheDecisions, type CacheSink, type ExpectedCacheStatus, type CacheStatusTarget, } from "../cache-status.js";
7
7
  export { assertPprReplayStatus, assertShellStatus, parsePprReplayStatus, parseShellStatus, PPR_REPLAY_STATUS_HEADER, shellCacheKey, SHELL_STATUS_HEADER, type PprReplayBypassReason, type PprReplayStatus, type ShellStatus, type ShellStatusTarget, } from "../shell-status.js";
8
- export { testId, waitForHydration, waitForNavigation, goBack, goForward, getHistoryState, waitForElement, isVisibleInViewport, parseNumber, getNumericContent, createStopwatch, measureTime, createPageHelpers, createUseFixture, createParity, createRangoMatchers, };
8
+ export { testId, waitForHydration, waitForNavigation, goBack, goForward, getHistoryState, waitForElement, isVisibleInViewport, isPrefetchRequest, blockPrefetch, unblockPrefetch, parseNumber, getNumericContent, createStopwatch, measureTime, createPageHelpers, createUseFixture, createParity, createRangoMatchers, };
9
9
  export type { Fixture, FixtureOptions, PageHelpers, Stopwatch, Parity, ParityIntent, ParityDescribeOptions, ExpectParityOptions, RangoMatchers, };
10
10
  export interface RangoE2E extends PageHelpers, Parity {
11
11
  useFixture: (options: FixtureOptions) => Fixture;
@@ -43,6 +43,30 @@ export declare function measureTime<T>(fn: () => Promise<T>): Promise<{
43
43
  elapsed: number;
44
44
  result: T;
45
45
  }>;
46
+ /**
47
+ * True when the request is a speculative prefetch (Link viewport/hover/render
48
+ * strategies or `useRouter().prefetch()`). Every prefetch fetch carries the
49
+ * `X-Rango-Prefetch` header. Links prefetch by default in production unless
50
+ * the router opts out, so tests that track `_rsc_partial` requests to pin
51
+ * NAVIGATION behavior must skip these — a request-count or first-request
52
+ * assertion otherwise races background prefetch traffic.
53
+ */
54
+ export declare function isPrefetchRequest(req: {
55
+ headers: () => Record<string, string>;
56
+ }): boolean;
57
+ /**
58
+ * Abort every speculative prefetch request on this page. Install BEFORE
59
+ * `page.goto` so no prefetch can complete first. For tests whose semantics
60
+ * need a virgin prefetch cache: a click on a Link whose target was already
61
+ * prefetched ADOPTS the warmed entry and issues no navigation fetch at all —
62
+ * a `page.route` override, a request waiter, or a Set-Cookie assertion aimed
63
+ * at the navigation request then sees nothing (or sees the prefetch's side
64
+ * effects instead). Aborted prefetches are benign by design (evicted, never
65
+ * adopted, no page error), so the click's real fetch is guaranteed live.
66
+ */
67
+ export declare function blockPrefetch(page: Page): Promise<void>;
68
+ /** Remove a `blockPrefetch` guard, restoring normal prefetch traffic. */
69
+ export declare function unblockPrefetch(page: Page): Promise<void>;
46
70
  export interface PageHelpers {
47
71
  /** Assert that no full page reload occurred between scope entry and exit. */
48
72
  expectNoReload: (page: Page) => AsyncDisposable;
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Internal Types - Implementation Details
3
+ *
4
+ * @internal
5
+ * These types are for internal use only and should not be relied upon by consumers.
6
+ * They may change without notice between versions.
7
+ *
8
+ * If you find yourself needing these types, please open an issue to discuss
9
+ * adding them to the public API.
10
+ */
11
+ /**
12
+ * @internal
13
+ * Internal representation of a resolved route segment.
14
+ * Used during route matching and rendering pipeline.
15
+ */
16
+ export type { ResolvedSegment, SegmentMetadata } from "./types.js";
17
+ /**
18
+ * @internal
19
+ * Internal match result from route resolution.
20
+ */
21
+ export type { MatchResult, SlotState } from "./types.js";
22
+ /**
23
+ * @internal
24
+ * Context for intercept route selection.
25
+ */
26
+ export type { InterceptSelectorContext, InterceptSegmentsState, InterceptWhenFn, } from "./server/context.js";
27
+ /**
28
+ * @internal
29
+ * RSC protocol payload structure.
30
+ */
31
+ export type { RscPayload, ReactFormState } from "./rsc/types.js";
32
+ /**
33
+ * @internal
34
+ * Internal navigation store interface.
35
+ */
36
+ export type { NavigationStore, NavigationBridge, RscMetadata, ActionResult, InflightAction, NavigationState, TrackedActionState, ActionStateListener, SegmentCache, SegmentState, NavigationUpdate, } from "./browser/types.js";
37
+ /**
38
+ * @internal
39
+ * Internal handle storage mechanism.
40
+ */
41
+ export type { HandleStore, HandleData } from "./server/handle-store.js";
42
+ /**
43
+ * @internal
44
+ * Segment handle data in cache.
45
+ */
46
+ export type { SegmentHandleData } from "./cache/types.js";
47
+ /**
48
+ * @internal
49
+ * Internal cache entry data structure.
50
+ */
51
+ export type { CachedEntryData, CacheGetResult, SerializedSegmentData, CacheDefaults, } from "./cache/types.js";
52
+ /**
53
+ * @internal
54
+ * Router context for AsyncLocalStorage.
55
+ */
56
+ export type { RouterContext, RevalidationContext, InterceptResult, } from "./router/router-context.js";
57
+ /**
58
+ * @internal
59
+ * Route match context during pipeline processing.
60
+ */
61
+ export type { MatchContext, MatchPipelineState, } from "./router/match-context.js";
62
+ /**
63
+ * @internal
64
+ * Pattern matching result.
65
+ */
66
+ export type { RouteMatchResult } from "./router/pattern-matching.js";
67
+ /**
68
+ * @internal
69
+ * Entry data during route traversal.
70
+ */
71
+ export type { EntryData, InterceptEntry, MetricsStore, PerformanceMetric, EntryCacheConfig, EntryPropCommon, EntryPropDatas, LoaderEntry, EntryPropSegments, } from "./server/context.js";
72
+ /**
73
+ * @internal
74
+ * Internal handler context with additional props for router internals.
75
+ * Includes `_currentSegmentId` and `_responseType`.
76
+ */
77
+ export type { InternalHandlerContext } from "./types.js";
78
+ /**
79
+ * @internal
80
+ * Builds React element trees from route segments.
81
+ */
82
+ export { renderSegments } from "./segment-system.js";
83
+ /**
84
+ * @internal
85
+ * Error sanitization and network error utilities.
86
+ */
87
+ export { sanitizeError, NetworkError, isNetworkError } from "./errors.js";
88
+ /**
89
+ * @internal
90
+ * Scoped view of GeneratedRouteMap for Handler<"localName", ScopedRouteMap<"prefix">>.
91
+ */
92
+ export type { ScopedRouteMap } from "./types.js";
93
+ /**
94
+ * @internal
95
+ * Type-level utilities for reverse URL generation.
96
+ */
97
+ export type { MergeRoutes, SanitizePrefix } from "./reverse.js";
98
+ /**
99
+ * @internal
100
+ * Individual telemetry event types.
101
+ */
102
+ export type { RequestStartEvent, RequestEndEvent, RequestErrorEvent, RequestTimeoutEvent, LoaderStartEvent, LoaderEndEvent, LoaderErrorEvent, HandlerErrorEvent, CacheDecisionEvent, RevalidationDecisionEvent, } from "./router/telemetry.js";
103
+ /**
104
+ * @internal
105
+ * Type guard for prerender handler definitions.
106
+ */
107
+ export { isPrerenderHandler, isPassthroughHandler } from "./prerender.js";
108
+ /**
109
+ * @internal
110
+ * Type guard for static handler definitions.
111
+ */
112
+ export { isStaticHandler } from "./static-handler.js";
113
+ /**
114
+ * @internal
115
+ * Sentinel used to tag response-type route entries.
116
+ */
117
+ export { RESPONSE_TYPE } from "./urls.js";
118
+ /**
119
+ * @internal
120
+ * Debug utilities for route matching performance analysis.
121
+ */
122
+ export { enableMatchDebug, getMatchDebugStats, } from "./router/pattern-matching.js";
123
+ /**
124
+ * @internal
125
+ * Debug utilities for manifest inspection and comparison.
126
+ */
127
+ export { serializeManifest, compareManifests, formatManifestDiff, type SerializedEntry, type SerializedManifest, } from "./debug.js";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,57 @@
1
+ import type { ActionEntry } from "./event-controller.js";
2
+ /**
3
+ * Post-reconciliation action outcome (discriminated union). Error and
4
+ * full-update-unsupported cases are handled inline in the bridge before
5
+ * reconciliation; this only covers successfully-reconciled partial responses.
6
+ */
7
+ type ActionScenario = {
8
+ type: "navigated-away";
9
+ historyKeyChanged: boolean;
10
+ onInterceptRoute: boolean;
11
+ } | {
12
+ type: "hmr-missing";
13
+ } | {
14
+ type: "consolidation-needed";
15
+ segmentIds: string[];
16
+ } | {
17
+ type: "concurrent-skip";
18
+ otherFetchingCount: number;
19
+ } | {
20
+ type: "normal";
21
+ };
22
+ /**
23
+ * Plain data inputs for classifying a post-reconciliation action outcome.
24
+ * No browser objects or controller references — all values are snapshots.
25
+ */
26
+ export interface ActionOutcomeInput {
27
+ /** This action's unique instance ID */
28
+ handleId: string;
29
+ /** All in-flight action entries (snapshot from event controller) */
30
+ inflightActions: Map<string, ActionEntry>;
31
+ /** Whether any concurrent actions occurred (controller-level shared flag) */
32
+ hadAnyConcurrentActions: boolean;
33
+ /** Segments revalidated by concurrent actions (from tracking set) */
34
+ revalidatedSegments: Set<string>;
35
+ /** window.location.pathname captured at action start */
36
+ actionStartPathname: string;
37
+ /** window.location.pathname at classification time */
38
+ currentPathname: string;
39
+ /** window.history.state?.key captured at action start */
40
+ actionStartLocationKey: string | undefined;
41
+ /** window.history.state?.key at classification time */
42
+ currentLocationKey: string | undefined;
43
+ /** Number of segments after reconciliation */
44
+ reconciledSegmentCount: number;
45
+ /** Number of matched segment IDs from server */
46
+ matchedCount: number;
47
+ /** Current intercept source URL (null when not on intercept route) */
48
+ currentInterceptSource: string | null;
49
+ }
50
+ /**
51
+ * Classify a post-reconciliation action outcome. Ordered priority chain: each
52
+ * case assumes the earlier ones are false (e.g. concurrent-skip only applies on
53
+ * the still-current route, consolidation only once no action is still fetching).
54
+ * The bridge calls this to decide whether to render, skip, consolidate, or refetch.
55
+ */
56
+ export declare function classifyActionOutcome(input: ActionOutcomeInput): ActionScenario;
57
+ export {};
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Action fence: a refcounted flag that is raised while a server action is in
3
+ * flight and lowered when it resolves.
4
+ *
5
+ * It replaces the eager cache clear the action bridge used to do at action
6
+ * start. While the fence is up, the decision of whether the action invalidated
7
+ * anything is deferred to the response:
8
+ *
9
+ * - prefetch consumption is suspended (a queued prefetch result is not served),
10
+ * - a genuine navigation during the flight fetches with `cache: "no-store"` so
11
+ * it cannot be served stale bytes from the browser's Vary-keyed HTTP cache,
12
+ * - popstate reads are treated as stale-while-revalidate.
13
+ *
14
+ * Nothing is wiped, rotated, or broadcast while the fence is up — that is what
15
+ * keeps a sibling tab from seeing a pre-commit signal. Refcounted so concurrent
16
+ * actions compose: each action raises and lowers its own reference, and the
17
+ * fence is down only when the count reaches zero.
18
+ *
19
+ * The refcount is a single module-level counter, not keyed by routerId.
20
+ * Consumers (navigation-client.ts, prefetch/fetch.ts, navigation-bridge.ts)
21
+ * read it unscoped, so an action in one router would suppress another router's
22
+ * navigation/prefetch caches. This is correct only because two routers cannot
23
+ * coexist in one live document: an SPA navigation crossing a host-router
24
+ * boundary forces a full document reload (src/router/request-classification.ts
25
+ * app-switch terminal), so there is always exactly one live router per
26
+ * document. A future multi-router-in-one-document feature must not silently
27
+ * inherit this global, cross-router cache suppression.
28
+ */
29
+ export declare function enterActionFence(): void;
30
+ export declare function exitActionFence(): void;
31
+ export declare function isActionFenceActive(): boolean;
32
+ /** Test-only: reset the refcount between cases. */
33
+ export declare function __resetActionFence(): void;
@@ -0,0 +1,34 @@
1
+ import type { ComponentType, ReactNode } from "react";
2
+ /**
3
+ * App-shell metadata: the per-router fields describing the "envelope" around
4
+ * the current app's segment tree — the rootLayout (Document), basename,
5
+ * version, and router identity. Set once from the initial RSC payload and read
6
+ * through the AppShellRef when rendering segments.
7
+ *
8
+ * This is a per-document value. A navigation that crosses a host-router app
9
+ * boundary is a full document load (the server returns X-RSC-Reload for it;
10
+ * see request-classification.ts, mode "app-switch"), so the target app's shell
11
+ * — along with everything else document-level (theme, warmup, prefetch-TTL) —
12
+ * is established fresh by the target app's own load. The shell is never swapped
13
+ * in place within a session.
14
+ */
15
+ export interface AppShell {
16
+ /** Router identity. Used to namespace per-app client state (e.g. the
17
+ * rango-state localStorage key) so sibling apps on the same origin
18
+ * cannot observe each other's cache invalidations. */
19
+ routerId?: string;
20
+ rootLayout?: ComponentType<{
21
+ children: ReactNode;
22
+ }>;
23
+ basename?: string;
24
+ version?: string;
25
+ }
26
+ /**
27
+ * Container for the active app shell. Read-through via `get()` so closures
28
+ * (e.g. the segment renderer) capture the ref and read the shell at call time
29
+ * rather than closing over a stale snapshot.
30
+ */
31
+ export interface AppShellRef {
32
+ get(): AppShell;
33
+ }
34
+ export declare function createAppShellRef(initial: AppShell): AppShellRef;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Mutable app version — updated after HMR revalidation.
3
+ * Read by prefetch, navigation, and context code.
4
+ */
5
+ export declare function getAppVersion(): string | undefined;
6
+ export declare function setAppVersion(version: string | undefined): void;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Connection warmup: keep TLS alive after idle periods.
3
+ *
4
+ * After IDLE_TIMEOUT of no user interaction the connection is marked "cold".
5
+ * On the next pointer/touch interaction or a visibility change, a HEAD request
6
+ * warms the TLS connection before the user actually clicks a link.
7
+ *
8
+ * Extracted from NavigationProvider so the idle/cold/warmup state machine is
9
+ * unit-testable with an injected environment (document, fetch, timers).
10
+ *
11
+ * Ordering bug this guards against: the warmup listeners (mousemove/touchstart)
12
+ * share events with the idle-reset listeners, and the idle-reset listener is
13
+ * registered first, so it clears the live "cold" flag before the warmup
14
+ * listener reads it on the same event. A separate coldLatch — set when the
15
+ * connection goes cold and cleared only when warmup fires or listeners detach,
16
+ * never by the idle reset — lets the warmup decision see the pre-reset cold
17
+ * state regardless of listener ordering.
18
+ */
19
+ type TimerHandle = ReturnType<typeof setTimeout>;
20
+ export interface WarmupEnv {
21
+ doc: Pick<Document, "addEventListener" | "removeEventListener" | "visibilityState">;
22
+ fetch: typeof fetch;
23
+ setTimeout: (fn: () => void, ms: number) => TimerHandle;
24
+ clearTimeout: (handle: TimerHandle | undefined) => void;
25
+ }
26
+ /**
27
+ * Start the connection-warmup state machine. Returns a cleanup function that
28
+ * cancels timers and removes all listeners.
29
+ */
30
+ export declare function startConnectionWarmup(env?: WarmupEnv): () => void;
31
+ export {};