@rangojs/router 0.0.0-experimental.9 → 0.0.0-experimental.963406dd

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 (1109) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +942 -4
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/dist/__mocks__/version.js +7 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +1619 -155
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/dist/browser/react/use-client-cache.js +39 -0
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/dist/handles/index.d.ts +6 -0
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/{src/href-context.ts → dist/href-context.d.ts} +7 -11
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/dist/network-error-thrower.d.ts +17 -0
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/theme/ThemeProvider.d.ts +20 -0
  712. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  713. package/dist/theme/ThemeProvider.js +240 -0
  714. package/dist/theme/ThemeProvider.js.map +1 -0
  715. package/dist/theme/ThemeScript.d.ts +48 -0
  716. package/dist/theme/ThemeScript.d.ts.map +1 -0
  717. package/dist/theme/ThemeScript.js +13 -0
  718. package/dist/theme/ThemeScript.js.map +1 -0
  719. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  720. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  721. package/dist/theme/__tests__/theme.test.js +103 -0
  722. package/dist/theme/__tests__/theme.test.js.map +1 -0
  723. package/dist/theme/constants.d.ts +29 -0
  724. package/dist/theme/constants.d.ts.map +1 -0
  725. package/dist/theme/constants.js +48 -0
  726. package/dist/theme/constants.js.map +1 -0
  727. package/dist/theme/index.d.ts +31 -0
  728. package/dist/theme/index.d.ts.map +1 -0
  729. package/dist/theme/index.js +36 -0
  730. package/dist/theme/index.js.map +1 -0
  731. package/dist/theme/theme-context.d.ts +40 -0
  732. package/dist/theme/theme-context.d.ts.map +1 -0
  733. package/dist/theme/theme-context.js +60 -0
  734. package/dist/theme/theme-context.js.map +1 -0
  735. package/dist/theme/theme-script.d.ts +27 -0
  736. package/dist/theme/theme-script.d.ts.map +1 -0
  737. package/dist/theme/theme-script.js +147 -0
  738. package/dist/theme/theme-script.js.map +1 -0
  739. package/dist/theme/types.d.ts +163 -0
  740. package/dist/theme/types.d.ts.map +1 -0
  741. package/dist/theme/types.js +11 -0
  742. package/dist/theme/types.js.map +1 -0
  743. package/dist/theme/use-theme.d.ts +12 -0
  744. package/dist/theme/use-theme.d.ts.map +1 -0
  745. package/dist/theme/use-theme.js +40 -0
  746. package/dist/theme/use-theme.js.map +1 -0
  747. package/dist/types.d.ts +1479 -0
  748. package/dist/types.d.ts.map +1 -0
  749. package/dist/types.js +10 -0
  750. package/dist/types.js.map +1 -0
  751. package/dist/urls.d.ts +441 -0
  752. package/dist/urls.d.ts.map +1 -0
  753. package/dist/urls.gen.d.ts +8 -0
  754. package/dist/urls.gen.d.ts.map +1 -0
  755. package/dist/urls.gen.js +8 -0
  756. package/dist/urls.gen.js.map +1 -0
  757. package/dist/urls.js +443 -0
  758. package/dist/urls.js.map +1 -0
  759. package/dist/use-loader.d.ts +127 -0
  760. package/dist/use-loader.d.ts.map +1 -0
  761. package/dist/use-loader.js +237 -0
  762. package/dist/use-loader.js.map +1 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  779. package/dist/vite/ast-handler-extract.d.ts +49 -0
  780. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  781. package/dist/vite/ast-handler-extract.js +249 -0
  782. package/dist/vite/ast-handler-extract.js.map +1 -0
  783. package/dist/vite/expose-action-id.d.ts +19 -0
  784. package/dist/vite/expose-action-id.d.ts.map +1 -0
  785. package/dist/vite/expose-action-id.js +250 -0
  786. package/dist/vite/expose-action-id.js.map +1 -0
  787. package/dist/vite/expose-id-utils.d.ts +69 -0
  788. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  789. package/dist/vite/expose-id-utils.js +289 -0
  790. package/dist/vite/expose-id-utils.js.map +1 -0
  791. package/dist/vite/expose-internal-ids.d.ts +22 -0
  792. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  793. package/dist/vite/expose-internal-ids.js +886 -0
  794. package/dist/vite/expose-internal-ids.js.map +1 -0
  795. package/dist/vite/index.d.ts +149 -0
  796. package/dist/vite/index.d.ts.map +1 -0
  797. package/dist/vite/index.js +4916 -2234
  798. package/dist/vite/index.js.bak +5448 -0
  799. package/dist/vite/index.js.map +1 -0
  800. package/dist/vite/index.named-routes.gen.ts +103 -0
  801. package/dist/vite/package-resolution.d.ts +43 -0
  802. package/dist/vite/package-resolution.d.ts.map +1 -0
  803. package/dist/vite/package-resolution.js +112 -0
  804. package/dist/vite/package-resolution.js.map +1 -0
  805. package/dist/vite/virtual-entries.d.ts +25 -0
  806. package/dist/vite/virtual-entries.d.ts.map +1 -0
  807. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
  808. package/dist/vite/virtual-entries.js.map +1 -0
  809. package/package.json +70 -63
  810. package/skills/breadcrumbs/SKILL.md +250 -0
  811. package/skills/cache-guide/SKILL.md +294 -0
  812. package/skills/caching/SKILL.md +93 -23
  813. package/skills/composability/SKILL.md +172 -0
  814. package/skills/debug-manifest/SKILL.md +12 -8
  815. package/skills/document-cache/SKILL.md +18 -16
  816. package/skills/fonts/SKILL.md +6 -4
  817. package/skills/hooks/SKILL.md +333 -71
  818. package/skills/host-router/SKILL.md +218 -0
  819. package/skills/intercept/SKILL.md +131 -8
  820. package/skills/layout/SKILL.md +100 -3
  821. package/skills/links/SKILL.md +77 -16
  822. package/skills/loader/SKILL.md +404 -44
  823. package/skills/middleware/SKILL.md +173 -34
  824. package/skills/mime-routes/SKILL.md +15 -11
  825. package/skills/parallel/SKILL.md +204 -1
  826. package/skills/prerender/SKILL.md +467 -65
  827. package/skills/rango/SKILL.md +85 -21
  828. package/skills/response-routes/SKILL.md +144 -91
  829. package/skills/route/SKILL.md +257 -14
  830. package/skills/router-setup/SKILL.md +210 -32
  831. package/skills/theme/SKILL.md +9 -8
  832. package/skills/typesafety/SKILL.md +326 -87
  833. package/skills/use-cache/SKILL.md +324 -0
  834. package/src/__internal.ts +102 -4
  835. package/src/bin/rango.ts +312 -15
  836. package/src/browser/action-coordinator.ts +97 -0
  837. package/src/browser/action-response-classifier.ts +99 -0
  838. package/src/browser/app-version.ts +14 -0
  839. package/src/browser/event-controller.ts +92 -64
  840. package/src/browser/history-state.ts +80 -0
  841. package/src/browser/intercept-utils.ts +52 -0
  842. package/src/browser/link-interceptor.ts +24 -4
  843. package/src/browser/logging.ts +55 -0
  844. package/src/browser/merge-segment-loaders.ts +20 -12
  845. package/src/browser/navigation-bridge.ts +296 -558
  846. package/src/browser/navigation-client.ts +178 -71
  847. package/src/browser/navigation-store.ts +73 -55
  848. package/src/browser/navigation-transaction.ts +297 -0
  849. package/src/browser/network-error-handler.ts +61 -0
  850. package/src/browser/partial-update.ts +328 -313
  851. package/src/browser/prefetch/cache.ts +206 -0
  852. package/src/browser/prefetch/fetch.ts +150 -0
  853. package/src/browser/prefetch/observer.ts +65 -0
  854. package/src/browser/prefetch/policy.ts +48 -0
  855. package/src/browser/prefetch/queue.ts +160 -0
  856. package/src/browser/prefetch/resource-ready.ts +77 -0
  857. package/src/browser/rango-state.ts +112 -0
  858. package/src/browser/react/Link.tsx +227 -71
  859. package/src/browser/react/NavigationProvider.tsx +87 -11
  860. package/src/browser/react/context.ts +11 -0
  861. package/src/browser/react/filter-segment-order.ts +11 -0
  862. package/src/browser/react/index.ts +12 -12
  863. package/src/browser/react/location-state-shared.ts +95 -53
  864. package/src/browser/react/location-state.ts +60 -15
  865. package/src/browser/react/mount-context.ts +6 -1
  866. package/src/browser/react/nonce-context.ts +23 -0
  867. package/src/browser/react/shallow-equal.ts +27 -0
  868. package/src/browser/react/use-action.ts +29 -51
  869. package/src/browser/react/use-client-cache.ts +5 -3
  870. package/src/browser/react/use-handle.ts +30 -120
  871. package/src/browser/react/use-link-status.ts +6 -5
  872. package/src/browser/react/use-navigation.ts +22 -63
  873. package/src/browser/react/use-params.ts +65 -0
  874. package/src/browser/react/use-pathname.ts +47 -0
  875. package/src/browser/react/use-router.ts +76 -0
  876. package/src/browser/react/use-search-params.ts +56 -0
  877. package/src/browser/react/use-segments.ts +80 -97
  878. package/src/browser/response-adapter.ts +73 -0
  879. package/src/browser/rsc-router.tsx +214 -60
  880. package/src/browser/scroll-restoration.ts +127 -52
  881. package/src/browser/segment-reconciler.ts +221 -0
  882. package/src/browser/segment-structure-assert.ts +16 -0
  883. package/src/browser/server-action-bridge.ts +510 -603
  884. package/src/browser/shallow.ts +6 -1
  885. package/src/browser/types.ts +139 -48
  886. package/src/browser/validate-redirect-origin.ts +29 -0
  887. package/src/build/generate-manifest.ts +84 -23
  888. package/src/build/generate-route-types.ts +39 -752
  889. package/src/build/index.ts +6 -5
  890. package/src/build/route-trie.ts +39 -13
  891. package/src/build/route-types/ast-helpers.ts +25 -0
  892. package/src/build/route-types/ast-route-extraction.ts +98 -0
  893. package/src/build/route-types/codegen.ts +102 -0
  894. package/src/build/route-types/include-resolution.ts +418 -0
  895. package/src/build/route-types/param-extraction.ts +48 -0
  896. package/src/build/route-types/per-module-writer.ts +128 -0
  897. package/src/build/route-types/router-processing.ts +618 -0
  898. package/src/build/route-types/scan-filter.ts +85 -0
  899. package/src/build/runtime-discovery.ts +231 -0
  900. package/src/cache/background-task.ts +34 -0
  901. package/src/cache/cache-key-utils.ts +44 -0
  902. package/src/cache/cache-policy.ts +125 -0
  903. package/src/cache/cache-runtime.ts +342 -0
  904. package/src/cache/cache-scope.ts +167 -307
  905. package/src/cache/cf/cf-cache-store.ts +571 -17
  906. package/src/cache/cf/index.ts +13 -3
  907. package/src/cache/document-cache.ts +116 -77
  908. package/src/cache/handle-capture.ts +81 -0
  909. package/src/cache/handle-snapshot.ts +41 -0
  910. package/src/cache/index.ts +1 -15
  911. package/src/cache/memory-segment-store.ts +191 -13
  912. package/src/cache/profile-registry.ts +73 -0
  913. package/src/cache/read-through-swr.ts +134 -0
  914. package/src/cache/segment-codec.ts +256 -0
  915. package/src/cache/taint.ts +153 -0
  916. package/src/cache/types.ts +72 -122
  917. package/src/client.rsc.tsx +3 -1
  918. package/src/client.tsx +83 -179
  919. package/src/component-utils.ts +4 -4
  920. package/src/components/DefaultDocument.tsx +5 -1
  921. package/src/context-var.ts +156 -0
  922. package/src/debug.ts +19 -9
  923. package/src/errors.ts +77 -7
  924. package/src/handle.ts +55 -10
  925. package/src/handles/MetaTags.tsx +73 -20
  926. package/src/handles/breadcrumbs.ts +66 -0
  927. package/src/handles/index.ts +1 -0
  928. package/src/handles/meta.ts +30 -13
  929. package/src/host/cookie-handler.ts +21 -15
  930. package/src/host/errors.ts +8 -8
  931. package/src/host/index.ts +4 -7
  932. package/src/host/pattern-matcher.ts +27 -27
  933. package/src/host/router.ts +61 -39
  934. package/src/host/testing.ts +8 -8
  935. package/src/host/types.ts +15 -7
  936. package/src/host/utils.ts +1 -1
  937. package/src/href-client.ts +65 -45
  938. package/src/index.rsc.ts +135 -21
  939. package/src/index.ts +175 -51
  940. package/src/internal-debug.ts +11 -0
  941. package/src/loader.rsc.ts +25 -143
  942. package/src/loader.ts +27 -10
  943. package/src/network-error-thrower.tsx +3 -1
  944. package/src/outlet-provider.tsx +45 -0
  945. package/src/prerender/param-hash.ts +4 -2
  946. package/src/prerender/store.ts +159 -13
  947. package/src/prerender.ts +397 -29
  948. package/src/reverse.ts +205 -121
  949. package/src/root-error-boundary.tsx +41 -29
  950. package/src/route-content-wrapper.tsx +7 -4
  951. package/src/route-definition/dsl-helpers.ts +982 -0
  952. package/src/route-definition/helper-factories.ts +200 -0
  953. package/src/route-definition/helpers-types.ts +434 -0
  954. package/src/route-definition/index.ts +55 -0
  955. package/src/route-definition/redirect.ts +101 -0
  956. package/src/route-definition/resolve-handler-use.ts +149 -0
  957. package/src/route-definition.ts +1 -1431
  958. package/src/route-map-builder.ts +162 -123
  959. package/src/route-name.ts +53 -0
  960. package/src/route-types.ts +59 -9
  961. package/src/router/content-negotiation.ts +215 -0
  962. package/src/router/debug-manifest.ts +72 -0
  963. package/src/router/error-handling.ts +9 -9
  964. package/src/router/find-match.ts +160 -0
  965. package/src/router/handler-context.ts +435 -86
  966. package/src/router/intercept-resolution.ts +35 -20
  967. package/src/router/lazy-includes.ts +237 -0
  968. package/src/router/loader-resolution.ts +356 -128
  969. package/src/router/logging.ts +251 -0
  970. package/src/router/manifest.ts +89 -32
  971. package/src/router/match-api.ts +192 -258
  972. package/src/router/match-context.ts +4 -2
  973. package/src/router/match-handlers.ts +440 -0
  974. package/src/router/match-middleware/background-revalidation.ts +108 -93
  975. package/src/router/match-middleware/cache-lookup.ts +414 -86
  976. package/src/router/match-middleware/cache-store.ts +91 -29
  977. package/src/router/match-middleware/intercept-resolution.ts +48 -21
  978. package/src/router/match-middleware/segment-resolution.ts +73 -9
  979. package/src/router/match-pipelines.ts +10 -45
  980. package/src/router/match-result.ts +55 -33
  981. package/src/router/metrics.ts +240 -15
  982. package/src/router/middleware-cookies.ts +55 -0
  983. package/src/router/middleware-types.ts +220 -0
  984. package/src/router/middleware.ts +324 -369
  985. package/src/router/navigation-snapshot.ts +182 -0
  986. package/src/router/pattern-matching.ts +197 -41
  987. package/src/router/prerender-match.ts +502 -0
  988. package/src/router/preview-match.ts +98 -0
  989. package/src/router/request-classification.ts +310 -0
  990. package/src/router/revalidation.ts +137 -38
  991. package/src/router/route-snapshot.ts +245 -0
  992. package/src/router/router-context.ts +41 -21
  993. package/src/router/router-interfaces.ts +484 -0
  994. package/src/router/router-options.ts +618 -0
  995. package/src/router/router-registry.ts +24 -0
  996. package/src/router/segment-resolution/fresh.ts +743 -0
  997. package/src/router/segment-resolution/helpers.ts +268 -0
  998. package/src/router/segment-resolution/loader-cache.ts +199 -0
  999. package/src/router/segment-resolution/revalidation.ts +1373 -0
  1000. package/src/router/segment-resolution/static-store.ts +67 -0
  1001. package/src/router/segment-resolution.ts +21 -1315
  1002. package/src/router/segment-wrappers.ts +291 -0
  1003. package/src/router/telemetry-otel.ts +299 -0
  1004. package/src/router/telemetry.ts +300 -0
  1005. package/src/router/timeout.ts +148 -0
  1006. package/src/router/trie-matching.ts +96 -29
  1007. package/src/router/types.ts +17 -9
  1008. package/src/router.ts +646 -1986
  1009. package/src/rsc/handler-context.ts +45 -0
  1010. package/src/rsc/handler.ts +853 -1111
  1011. package/src/rsc/helpers.ts +140 -6
  1012. package/src/rsc/index.ts +0 -20
  1013. package/src/rsc/loader-fetch.ts +229 -0
  1014. package/src/rsc/manifest-init.ts +90 -0
  1015. package/src/rsc/nonce.ts +14 -0
  1016. package/src/rsc/origin-guard.ts +141 -0
  1017. package/src/rsc/progressive-enhancement.ts +391 -0
  1018. package/src/rsc/response-error.ts +37 -0
  1019. package/src/rsc/response-route-handler.ts +347 -0
  1020. package/src/rsc/rsc-rendering.ts +246 -0
  1021. package/src/rsc/runtime-warnings.ts +42 -0
  1022. package/src/rsc/server-action.ts +356 -0
  1023. package/src/rsc/ssr-setup.ts +128 -0
  1024. package/src/rsc/types.ts +46 -11
  1025. package/src/search-params.ts +230 -0
  1026. package/src/segment-system.tsx +165 -17
  1027. package/src/server/context.ts +307 -56
  1028. package/src/server/cookie-store.ts +190 -0
  1029. package/src/server/fetchable-loader-store.ts +37 -0
  1030. package/src/server/handle-store.ts +113 -15
  1031. package/src/server/loader-registry.ts +24 -64
  1032. package/src/server/request-context.ts +607 -81
  1033. package/src/server.ts +35 -155
  1034. package/src/ssr/index.tsx +103 -30
  1035. package/src/static-handler.ts +126 -0
  1036. package/src/theme/ThemeProvider.tsx +21 -15
  1037. package/src/theme/ThemeScript.tsx +5 -5
  1038. package/src/theme/constants.ts +5 -2
  1039. package/src/theme/index.ts +4 -14
  1040. package/src/theme/theme-context.ts +4 -30
  1041. package/src/theme/theme-script.ts +21 -18
  1042. package/src/types/boundaries.ts +158 -0
  1043. package/src/types/cache-types.ts +198 -0
  1044. package/src/types/error-types.ts +192 -0
  1045. package/src/types/global-namespace.ts +100 -0
  1046. package/src/types/handler-context.ts +791 -0
  1047. package/src/types/index.ts +88 -0
  1048. package/src/types/loader-types.ts +210 -0
  1049. package/src/types/route-config.ts +170 -0
  1050. package/src/types/route-entry.ts +109 -0
  1051. package/src/types/segments.ts +150 -0
  1052. package/src/types.ts +1 -1757
  1053. package/src/urls/include-helper.ts +197 -0
  1054. package/src/urls/index.ts +53 -0
  1055. package/src/urls/path-helper-types.ts +346 -0
  1056. package/src/urls/path-helper.ts +364 -0
  1057. package/src/urls/pattern-types.ts +107 -0
  1058. package/src/urls/response-types.ts +116 -0
  1059. package/src/urls/type-extraction.ts +372 -0
  1060. package/src/urls/urls-function.ts +98 -0
  1061. package/src/urls.ts +1 -1282
  1062. package/src/use-loader.tsx +158 -81
  1063. package/src/vite/discovery/bundle-postprocess.ts +181 -0
  1064. package/src/vite/discovery/discover-routers.ts +348 -0
  1065. package/src/vite/discovery/prerender-collection.ts +439 -0
  1066. package/src/vite/discovery/route-types-writer.ts +258 -0
  1067. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1068. package/src/vite/discovery/state.ts +117 -0
  1069. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1070. package/src/vite/index.ts +15 -1963
  1071. package/src/vite/plugin-types.ts +103 -0
  1072. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1073. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1074. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1075. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -53
  1076. package/src/vite/plugins/expose-id-utils.ts +299 -0
  1077. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1078. package/src/vite/plugins/expose-ids/handler-transform.ts +209 -0
  1079. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1080. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1081. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1082. package/src/vite/plugins/expose-internal-ids.ts +781 -0
  1083. package/src/vite/plugins/performance-tracks.ts +88 -0
  1084. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1085. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1086. package/src/vite/plugins/version-injector.ts +83 -0
  1087. package/src/vite/plugins/version-plugin.ts +266 -0
  1088. package/src/vite/plugins/virtual-entries.ts +123 -0
  1089. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1090. package/src/vite/rango.ts +462 -0
  1091. package/src/vite/router-discovery.ts +918 -0
  1092. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1093. package/src/vite/utils/banner.ts +36 -0
  1094. package/src/vite/utils/bundle-analysis.ts +137 -0
  1095. package/src/vite/utils/manifest-utils.ts +70 -0
  1096. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +25 -29
  1097. package/src/vite/utils/prerender-utils.ts +207 -0
  1098. package/src/vite/utils/shared-utils.ts +170 -0
  1099. package/CLAUDE.md +0 -43
  1100. package/src/browser/lru-cache.ts +0 -69
  1101. package/src/browser/request-controller.ts +0 -164
  1102. package/src/cache/memory-store.ts +0 -253
  1103. package/src/router.gen.ts +0 -6
  1104. package/src/urls.gen.ts +0 -8
  1105. package/src/vite/expose-handle-id.ts +0 -209
  1106. package/src/vite/expose-loader-id.ts +0 -426
  1107. package/src/vite/expose-location-state-id.ts +0 -177
  1108. package/src/vite/expose-prerender-handler-id.ts +0 -429
  1109. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -70,9 +70,11 @@
70
70
  * - No segments yielded from this middleware
71
71
  *
72
72
  * Loaders:
73
- * - NEVER cached by design
73
+ * - NEVER cached in the segment cache
74
74
  * - Always resolved fresh on every request
75
75
  * - Ensures data freshness even with cached UI components
76
+ * - Segment cache staleness does NOT propagate to loader revalidation;
77
+ * loaders use their own revalidation rules (actionId, user-defined)
76
78
  *
77
79
  *
78
80
  * REVALIDATION RULES
@@ -92,38 +94,198 @@
92
94
  import type { ResolvedSegment } from "../../types.js";
93
95
  import type { MatchContext, MatchPipelineState } from "../match-context.js";
94
96
  import { getRouterContext } from "../router-context.js";
95
- import type { PrerenderStore } from "../../prerender/store.js";
97
+ import { resolveSink, safeEmit } from "../telemetry.js";
98
+ import { pushRevalidationTraceEntry, isTraceActive } from "../logging.js";
99
+ import { treeHasStreaming } from "./segment-resolution.js";
100
+ import type { PrerenderStore, PrerenderEntry } from "../../prerender/store.js";
101
+ import type { HandleStore } from "../../server/handle-store.js";
102
+ import {
103
+ getRequestContext,
104
+ _getRequestContext,
105
+ } from "../../server/request-context.js";
96
106
 
97
107
  // Lazily initialized prerender store singleton and dynamically imported deps.
98
108
  // Dynamic imports prevent pulling in @vitejs/plugin-rsc/rsc virtual module at
99
109
  // top-level, which breaks vitest (only URLs with file:, data:, node: schemes).
100
110
  let prerenderStoreInstance: PrerenderStore | null | undefined;
101
- let _deserializeSegments: typeof import("../../cache/cache-scope.js").deserializeSegments | undefined;
102
- let _hashParams: typeof import("../../prerender/param-hash.js").hashParams | undefined;
103
- let _getRequestContext: typeof import("../../server/request-context.js").getRequestContext | undefined;
111
+ let _deserializeSegments:
112
+ | typeof import("../../cache/segment-codec.js").deserializeSegments
113
+ | undefined;
114
+ let _restoreHandles:
115
+ | typeof import("../../cache/handle-snapshot.js").restoreHandles
116
+ | undefined;
117
+ let _hashParams:
118
+ | typeof import("../../prerender/param-hash.js").hashParams
119
+ | undefined;
120
+ let _lazyGetRequestContext:
121
+ | typeof import("../../server/request-context.js").getRequestContext
122
+ | undefined;
123
+
124
+ function paramsEqual(
125
+ a: Record<string, string>,
126
+ b: Record<string, string>,
127
+ ): boolean {
128
+ if (a === b) return true;
129
+
130
+ const keysA = Object.keys(a);
131
+ if (keysA.length !== Object.keys(b).length) return false;
132
+
133
+ for (const key of keysA) {
134
+ if (a[key] !== b[key]) return false;
135
+ }
136
+
137
+ return true;
138
+ }
104
139
 
105
140
  async function ensurePrerenderDeps() {
106
141
  if (!_deserializeSegments) {
107
- const [cache, paramHash, reqCtx, store] = await Promise.all([
108
- import("../../cache/cache-scope.js"),
142
+ const [codec, snapshot, paramHash, reqCtx, store] = await Promise.all([
143
+ import("../../cache/segment-codec.js"),
144
+ import("../../cache/handle-snapshot.js"),
109
145
  import("../../prerender/param-hash.js"),
110
146
  import("../../server/request-context.js"),
111
147
  import("../../prerender/store.js"),
112
148
  ]);
113
- _deserializeSegments = cache.deserializeSegments;
149
+ _deserializeSegments = codec.deserializeSegments;
150
+ _restoreHandles = snapshot.restoreHandles;
114
151
  _hashParams = paramHash.hashParams;
115
- _getRequestContext = reqCtx.getRequestContext;
152
+ _lazyGetRequestContext = reqCtx.getRequestContext;
116
153
  if (prerenderStoreInstance === undefined) {
117
154
  prerenderStoreInstance = store.createPrerenderStore();
118
155
  }
119
156
  }
120
157
  }
121
158
 
159
+ /**
160
+ * Shared yield logic for prerender and static handler store entries.
161
+ * Deserializes segments, replays handle data, yields segments with partial
162
+ * navigation nullification, and resolves fresh loaders.
163
+ */
164
+ async function* yieldFromStore<TEnv>(
165
+ entry: PrerenderEntry,
166
+ ctx: MatchContext<TEnv>,
167
+ state: MatchPipelineState,
168
+ pipelineStart: number,
169
+ handleStoreRef?: HandleStore,
170
+ ): AsyncGenerator<ResolvedSegment> {
171
+ const { resolveLoadersOnlyWithRevalidation, resolveLoadersOnly } =
172
+ getRouterContext<TEnv>();
173
+
174
+ if (
175
+ !_deserializeSegments ||
176
+ !_restoreHandles ||
177
+ !_hashParams ||
178
+ !_lazyGetRequestContext
179
+ ) {
180
+ throw new Error("yieldFromStore called before ensurePrerenderDeps");
181
+ }
182
+
183
+ const segments = await _deserializeSegments(entry.segments);
184
+
185
+ // Replay handle data (same as runtime cache hit path).
186
+ // Prefer the eagerly-captured handleStoreRef to avoid ALS disruption in workerd.
187
+ const handleStore = handleStoreRef ?? _lazyGetRequestContext()?._handleStore;
188
+ if (handleStore) {
189
+ _restoreHandles(entry.handles, handleStore);
190
+ }
191
+
192
+ state.cacheHit = true;
193
+ state.cacheSource = "prerender";
194
+ state.cachedSegments = segments;
195
+ state.cachedMatchedIds = segments.map((s) => s.id);
196
+
197
+ // Set streaming flag (once) and resolve render barrier.
198
+ const reqCtx = handleStoreRef ? undefined : _lazyGetRequestContext?.();
199
+ const barrierReqCtx = reqCtx ?? _getRequestContext();
200
+ if (barrierReqCtx) {
201
+ if (barrierReqCtx._treeHasStreaming === undefined) {
202
+ barrierReqCtx._treeHasStreaming = treeHasStreaming(ctx.entries);
203
+ }
204
+ barrierReqCtx._resolveRenderBarrier(segments);
205
+ }
206
+
207
+ // For partial navigation, nullify components the client already has
208
+ // so parent layouts stay live (client keeps its existing versions).
209
+ // When params changed (e.g., different guide slug), the segments have
210
+ // different content, so we must NOT nullify.
211
+ const paramsChanged =
212
+ !ctx.isFullMatch && !paramsEqual(ctx.matched.params, ctx.prevParams);
213
+ for (const segment of segments) {
214
+ if (
215
+ !ctx.isFullMatch &&
216
+ !paramsChanged &&
217
+ ctx.clientSegmentSet.has(segment.id)
218
+ ) {
219
+ segment.component = null;
220
+ segment.loading = undefined;
221
+ }
222
+ yield segment;
223
+ }
224
+
225
+ // Resolve loaders fresh (loaders are never pre-rendered/cached)
226
+ const ms = ctx.metricsStore;
227
+ const loaderStart = performance.now();
228
+
229
+ if (ctx.isFullMatch) {
230
+ if (resolveLoadersOnly) {
231
+ const loaderSegments = await ctx.Store.run(() =>
232
+ resolveLoadersOnly(ctx.entries, ctx.handlerContext),
233
+ );
234
+ state.matchedIds = state.cachedMatchedIds!;
235
+ for (const segment of loaderSegments) {
236
+ yield segment;
237
+ }
238
+ } else {
239
+ state.matchedIds = state.cachedMatchedIds!;
240
+ }
241
+ } else {
242
+ if (resolveLoadersOnlyWithRevalidation) {
243
+ const loaderResult = await ctx.Store.run(() =>
244
+ resolveLoadersOnlyWithRevalidation(
245
+ ctx.entries,
246
+ ctx.handlerContext,
247
+ ctx.clientSegmentSet,
248
+ ctx.prevParams,
249
+ ctx.request,
250
+ ctx.prevUrl,
251
+ ctx.url,
252
+ ctx.routeKey,
253
+ ctx.actionContext,
254
+ ),
255
+ );
256
+ state.matchedIds = [
257
+ ...state.cachedMatchedIds!,
258
+ ...loaderResult.matchedIds,
259
+ ];
260
+ for (const segment of loaderResult.segments) {
261
+ yield segment;
262
+ }
263
+ } else {
264
+ state.matchedIds = state.cachedMatchedIds!;
265
+ }
266
+ }
267
+
268
+ if (ms) {
269
+ const loaderEnd = performance.now();
270
+ ms.metrics.push({
271
+ label: "pipeline:loader-resolve",
272
+ duration: loaderEnd - loaderStart,
273
+ startTime: loaderStart - ms.requestStart,
274
+ depth: 1,
275
+ });
276
+ ms.metrics.push({
277
+ label: "pipeline:cache-hit",
278
+ duration: loaderEnd - pipelineStart,
279
+ startTime: pipelineStart - ms.requestStart,
280
+ });
281
+ }
282
+ }
283
+
122
284
  /**
123
285
  * Async generator middleware type
124
286
  */
125
287
  export type GeneratorMiddleware<T> = (
126
- source: AsyncGenerator<T>
288
+ source: AsyncGenerator<T>,
127
289
  ) => AsyncGenerator<T>;
128
290
 
129
291
  /**
@@ -141,14 +303,21 @@ export type GeneratorMiddleware<T> = (
141
303
  */
142
304
  export function withCacheLookup<TEnv>(
143
305
  ctx: MatchContext<TEnv>,
144
- state: MatchPipelineState
306
+ state: MatchPipelineState,
145
307
  ): GeneratorMiddleware<ResolvedSegment> {
146
308
  return async function* (
147
- source: AsyncGenerator<ResolvedSegment>
309
+ source: AsyncGenerator<ResolvedSegment>,
148
310
  ): AsyncGenerator<ResolvedSegment> {
149
311
  const pipelineStart = performance.now();
150
312
  const ms = ctx.metricsStore;
151
313
 
314
+ // Eagerly capture the HandleStore before any async operations.
315
+ // In workerd/Cloudflare, dynamic imports and fetch() inside the pipeline
316
+ // can disrupt AsyncLocalStorage, causing getRequestContext() to return
317
+ // undefined afterward. Capturing the reference early ensures handle replay
318
+ // and handler handle-push work regardless of ALS state.
319
+ const handleStoreRef = _getRequestContext()?._handleStore;
320
+
152
321
  const {
153
322
  evaluateRevalidation,
154
323
  buildEntryRevalidateMap,
@@ -158,83 +327,127 @@ export function withCacheLookup<TEnv>(
158
327
 
159
328
  // Prerender lookup: check build-time cached data before runtime cache.
160
329
  // Prerender data is available regardless of runtime cache configuration.
161
- if (!ctx.isAction && ctx.matched.pr) {
330
+ // Skip for HMR requests — the dev prerender endpoint reads from a stale
331
+ // RouterRegistry snapshot; rendering fresh ensures edits are visible.
332
+ const isHmr = !!ctx.request.headers.get("X-RSC-HMR");
333
+ if (!ctx.isAction && !isHmr && ctx.matched.pr) {
162
334
  await ensurePrerenderDeps();
163
335
  if (prerenderStoreInstance) {
164
336
  const paramHash = _hashParams!(ctx.matched.params);
165
- const entry = prerenderStoreInstance.get(ctx.matched.routeKey, paramHash);
166
- if (entry) {
167
- const segments = await _deserializeSegments!(entry.segments);
168
-
169
- // Replay handle data (same as runtime cache hit path)
170
- const handleStore = _getRequestContext!()?._handleStore;
171
- if (handleStore) {
172
- for (const [segId, segHandles] of Object.entries(entry.handles)) {
173
- if (Object.keys(segHandles).length > 0) {
174
- handleStore.replaySegmentData(segId, segHandles);
175
- }
176
- }
177
- }
337
+ const isPassthroughPrerenderRoute = ctx.entries.some(
338
+ (entry) => entry.type === "route" && entry.isPassthrough === true,
339
+ );
178
340
 
179
- state.cacheHit = true;
180
- state.cachedSegments = segments;
181
- state.cachedMatchedIds = segments.map((s) => s.id);
182
-
183
- // Yield prerendered segments (same flow as cache hit)
184
- // For partial navigation, nullify components the client already has
185
- // so parent layouts stay live (client keeps its existing versions).
186
- for (const segment of segments) {
187
- if (!ctx.isFullMatch && ctx.clientSegmentSet.has(segment.id)) {
188
- segment.component = null;
189
- segment.loading = undefined;
190
- }
191
- yield segment;
341
+ if (ctx.isIntercept) {
342
+ // Intercept navigation: try intercept-specific prerender entry
343
+ const entry = await prerenderStoreInstance.get(
344
+ ctx.matched.routeKey,
345
+ paramHash + "/i",
346
+ {
347
+ pathname: ctx.pathname,
348
+ isPassthroughRoute: isPassthroughPrerenderRoute,
349
+ },
350
+ );
351
+ if (entry) {
352
+ yield* yieldFromStore(
353
+ entry,
354
+ ctx,
355
+ state,
356
+ pipelineStart,
357
+ handleStoreRef,
358
+ );
359
+ return;
192
360
  }
361
+ // No intercept prerender -- fall through to normal pipeline
362
+ // (skip non-intercept prerender to let intercept-resolution run)
363
+ } else {
364
+ // Normal navigation: existing behavior
365
+ const entry = await prerenderStoreInstance.get(
366
+ ctx.matched.routeKey,
367
+ paramHash,
368
+ {
369
+ pathname: ctx.pathname,
370
+ isPassthroughRoute: isPassthroughPrerenderRoute,
371
+ },
372
+ );
373
+ if (entry) {
374
+ yield* yieldFromStore(
375
+ entry,
376
+ ctx,
377
+ state,
378
+ pipelineStart,
379
+ handleStoreRef,
380
+ );
381
+ return;
382
+ }
383
+ }
384
+ }
385
+ }
193
386
 
194
- // Resolve loaders fresh (loaders are never pre-rendered)
195
- if (ctx.isFullMatch) {
196
- if (resolveLoadersOnly) {
197
- const loaderSegments = await ctx.Store.run(() =>
198
- resolveLoadersOnly(ctx.entries, ctx.handlerContext),
387
+ // Dev-mode static handler interception for non-Node.js runtimes.
388
+ // __PRERENDER_DEV_URL is set by the Vite plugin when the RSC environment
389
+ // lacks a Node.js module runner (e.g. workerd, Deno workers). In those
390
+ // runtimes, handlers that depend on Node APIs like node:fs can't run
391
+ // in-process. We redirect them to the /__rsc_prerender endpoint which
392
+ // resolves segments in a Node.js temp server, same as prerender routes.
393
+ // In Node.js dev mode this variable is undefined -- handlers run
394
+ // in-process where Node APIs work, so no interception is needed.
395
+ if (!ctx.isAction && !ctx.matched.pr && globalThis.__PRERENDER_DEV_URL) {
396
+ const hasStatic = ctx.entries.some(
397
+ (e) =>
398
+ (e.type === "layout" ||
399
+ e.type === "route" ||
400
+ e.type === "parallel") &&
401
+ e.isStaticPrerender,
402
+ );
403
+ if (hasStatic) {
404
+ await ensurePrerenderDeps();
405
+ if (prerenderStoreInstance) {
406
+ const paramHash = _hashParams!(ctx.matched.params);
407
+ const isPassthroughPrerenderRoute = ctx.entries.some(
408
+ (entry) => entry.type === "route" && entry.isPassthrough === true,
409
+ );
410
+
411
+ if (ctx.isIntercept) {
412
+ const entry = await prerenderStoreInstance.get(
413
+ ctx.matched.routeKey,
414
+ paramHash + "/i",
415
+ {
416
+ pathname: ctx.pathname,
417
+ isPassthroughRoute: isPassthroughPrerenderRoute,
418
+ },
419
+ );
420
+ if (entry) {
421
+ yield* yieldFromStore(
422
+ entry,
423
+ ctx,
424
+ state,
425
+ pipelineStart,
426
+ handleStoreRef,
199
427
  );
200
- state.matchedIds = state.cachedMatchedIds!;
201
- for (const segment of loaderSegments) {
202
- yield segment;
203
- }
204
- } else {
205
- state.matchedIds = state.cachedMatchedIds!;
428
+ return;
206
429
  }
430
+ // No intercept prerender -- fall through to normal pipeline
207
431
  } else {
208
- if (resolveLoadersOnlyWithRevalidation) {
209
- const loaderResult = await ctx.Store.run(() =>
210
- resolveLoadersOnlyWithRevalidation(
211
- ctx.entries,
212
- ctx.handlerContext,
213
- ctx.clientSegmentSet,
214
- ctx.prevParams,
215
- ctx.request,
216
- ctx.prevUrl,
217
- ctx.url,
218
- ctx.routeKey,
219
- ctx.actionContext,
220
- ),
432
+ const entry = await prerenderStoreInstance.get(
433
+ ctx.matched.routeKey,
434
+ paramHash,
435
+ {
436
+ pathname: ctx.pathname,
437
+ isPassthroughRoute: isPassthroughPrerenderRoute,
438
+ },
439
+ );
440
+ if (entry) {
441
+ yield* yieldFromStore(
442
+ entry,
443
+ ctx,
444
+ state,
445
+ pipelineStart,
446
+ handleStoreRef,
221
447
  );
222
- state.matchedIds = [
223
- ...state.cachedMatchedIds!,
224
- ...loaderResult.matchedIds,
225
- ];
226
- for (const segment of loaderResult.segments) {
227
- yield segment;
228
- }
229
- } else {
230
- state.matchedIds = state.cachedMatchedIds!;
448
+ return;
231
449
  }
232
450
  }
233
-
234
- if (ms) {
235
- ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
236
- }
237
- return;
238
451
  }
239
452
  }
240
453
  }
@@ -244,7 +457,11 @@ export function withCacheLookup<TEnv>(
244
457
  // Cache miss - pass through to segment resolution
245
458
  yield* source;
246
459
  if (ms) {
247
- ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
460
+ ms.metrics.push({
461
+ label: "pipeline:cache-miss",
462
+ duration: performance.now() - pipelineStart,
463
+ startTime: pipelineStart - ms.requestStart,
464
+ });
248
465
  }
249
466
  return;
250
467
  }
@@ -253,30 +470,54 @@ export function withCacheLookup<TEnv>(
253
470
  const cacheResult = await ctx.cacheScope.lookupRoute(
254
471
  ctx.pathname,
255
472
  ctx.matched.params,
256
- ctx.isIntercept
473
+ ctx.isIntercept,
257
474
  );
258
475
 
259
476
  if (!cacheResult) {
260
477
  // Cache miss - pass through to segment resolution
261
478
  yield* source;
262
479
  if (ms) {
263
- ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
480
+ ms.metrics.push({
481
+ label: "pipeline:cache-miss",
482
+ duration: performance.now() - pipelineStart,
483
+ startTime: pipelineStart - ms.requestStart,
484
+ });
264
485
  }
265
486
  return;
266
487
  }
267
488
 
268
489
  // Cache HIT
269
490
  state.cacheHit = true;
491
+ state.cacheSource = "runtime";
270
492
  state.shouldRevalidate = cacheResult.shouldRevalidate;
271
493
  state.cachedSegments = cacheResult.segments;
272
494
  state.cachedMatchedIds = cacheResult.segments.map((s) => s.id);
273
495
 
274
- // Apply revalidation to cached segments
275
- const entryRevalidateMap = buildEntryRevalidateMap?.(ctx.entries);
496
+ // Apply revalidation to cached segments.
497
+ // For full matches or empty client segment sets, this map is unnecessary:
498
+ // we never run segment-level revalidation and can stream segments directly.
499
+ const canCheckSegmentRevalidation =
500
+ !ctx.isFullMatch &&
501
+ ctx.clientSegmentSet.size > 0 &&
502
+ !!buildEntryRevalidateMap;
503
+ const entryRevalidateMap = canCheckSegmentRevalidation
504
+ ? buildEntryRevalidateMap(ctx.entries)
505
+ : undefined;
276
506
 
277
507
  for (const segment of cacheResult.segments) {
278
508
  // Skip segments client doesn't have - they need their component
279
509
  if (!ctx.clientSegmentSet.has(segment.id)) {
510
+ if (isTraceActive()) {
511
+ pushRevalidationTraceEntry({
512
+ segmentId: segment.id,
513
+ segmentType: segment.type,
514
+ belongsToRoute: segment.belongsToRoute ?? false,
515
+ source: "cache-hit",
516
+ defaultShouldRevalidate: true,
517
+ finalShouldRevalidate: true,
518
+ reason: "new-segment",
519
+ });
520
+ }
280
521
  yield segment;
281
522
  continue;
282
523
  }
@@ -289,8 +530,53 @@ export function withCacheLookup<TEnv>(
289
530
 
290
531
  // Look up revalidation rules for this segment
291
532
  const entryInfo = entryRevalidateMap?.get(segment.id);
533
+
534
+ // Even without explicit revalidation rules, route segments and their
535
+ // children must re-render when params or search params change — the
536
+ // handler reads ctx.params/ctx.searchParams so different values produce
537
+ // different content. Matches evaluateRevalidation's default logic.
538
+ const searchChanged = ctx.prevUrl.search !== ctx.url.search;
539
+ const routeParamsChanged = !paramsEqual(
540
+ ctx.matched.params,
541
+ ctx.prevParams,
542
+ );
543
+ const shouldDefaultRevalidate =
544
+ (searchChanged || routeParamsChanged) &&
545
+ (segment.type === "route" ||
546
+ (segment.belongsToRoute &&
547
+ (segment.type === "layout" || segment.type === "parallel")));
548
+
292
549
  if (!entryInfo || entryInfo.revalidate.length === 0) {
550
+ if (shouldDefaultRevalidate) {
551
+ // Params or search params changed — must re-render even without custom rules
552
+ if (isTraceActive()) {
553
+ pushRevalidationTraceEntry({
554
+ segmentId: segment.id,
555
+ segmentType: segment.type,
556
+ belongsToRoute: segment.belongsToRoute ?? false,
557
+ source: "cache-hit",
558
+ defaultShouldRevalidate: true,
559
+ finalShouldRevalidate: true,
560
+ reason: routeParamsChanged
561
+ ? "cached-params-changed"
562
+ : "cached-search-changed",
563
+ });
564
+ }
565
+ yield segment;
566
+ continue;
567
+ }
293
568
  // No revalidation rules, use default behavior (skip if client has)
569
+ if (isTraceActive()) {
570
+ pushRevalidationTraceEntry({
571
+ segmentId: segment.id,
572
+ segmentType: segment.type,
573
+ belongsToRoute: segment.belongsToRoute ?? false,
574
+ source: "cache-hit",
575
+ defaultShouldRevalidate: false,
576
+ finalShouldRevalidate: false,
577
+ reason: "cached-no-rules",
578
+ });
579
+ }
294
580
  segment.component = null;
295
581
  segment.loading = undefined;
296
582
  yield segment;
@@ -312,8 +598,24 @@ export function withCacheLookup<TEnv>(
312
598
  routeKey: ctx.routeKey,
313
599
  context: ctx.handlerContext,
314
600
  actionContext: ctx.actionContext,
601
+ stale: cacheResult.shouldRevalidate || undefined,
602
+ traceSource: "cache-hit",
315
603
  });
316
604
 
605
+ const routerCtx = getRouterContext<TEnv>();
606
+ if (routerCtx.telemetry) {
607
+ const tSink = resolveSink(routerCtx.telemetry);
608
+ safeEmit(tSink, {
609
+ type: "revalidation.decision",
610
+ timestamp: performance.now(),
611
+ requestId: routerCtx.requestId,
612
+ segmentId: segment.id,
613
+ pathname: ctx.pathname,
614
+ routeKey: ctx.routeKey,
615
+ shouldRevalidate,
616
+ });
617
+ }
618
+
317
619
  if (!shouldRevalidate) {
318
620
  // Client has it, no revalidation needed
319
621
  segment.component = null;
@@ -323,15 +625,25 @@ export function withCacheLookup<TEnv>(
323
625
  yield segment;
324
626
  }
325
627
 
628
+ // Set streaming flag (once) and resolve render barrier.
629
+ const barrierReqCtx = _getRequestContext();
630
+ if (barrierReqCtx) {
631
+ if (barrierReqCtx._treeHasStreaming === undefined) {
632
+ barrierReqCtx._treeHasStreaming = treeHasStreaming(ctx.entries);
633
+ }
634
+ barrierReqCtx._resolveRenderBarrier(cacheResult.segments);
635
+ }
636
+
326
637
  // Resolve loaders fresh (loaders are NOT cached by default)
327
638
  // This ensures fresh data even on cache hit
328
639
  const Store = ctx.Store;
640
+ const loaderStart = performance.now();
329
641
 
330
642
  if (ctx.isFullMatch) {
331
643
  // Full match (document request) - simple loader resolution without revalidation
332
644
  if (resolveLoadersOnly) {
333
645
  const loaderSegments = await Store.run(() =>
334
- resolveLoadersOnly(ctx.entries, ctx.handlerContext)
646
+ resolveLoadersOnly(ctx.entries, ctx.handlerContext),
335
647
  );
336
648
 
337
649
  // Update state - full match doesn't track matchedIds separately
@@ -357,8 +669,13 @@ export function withCacheLookup<TEnv>(
357
669
  ctx.prevUrl,
358
670
  ctx.url,
359
671
  ctx.routeKey,
360
- ctx.actionContext
361
- )
672
+ ctx.actionContext,
673
+ // Loaders are never cached in the segment cache, so segment
674
+ // staleness (cacheResult.shouldRevalidate) must not propagate.
675
+ // But browser-sent staleness (ctx.stale) — indicating an action
676
+ // happened in this or another tab — must still reach loaders.
677
+ ctx.stale || undefined,
678
+ ),
362
679
  );
363
680
 
364
681
  // Update state with fresh loader matchedIds
@@ -376,7 +693,18 @@ export function withCacheLookup<TEnv>(
376
693
  }
377
694
  }
378
695
  if (ms) {
379
- ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
696
+ const loaderEnd = performance.now();
697
+ ms.metrics.push({
698
+ label: "pipeline:loader-resolve",
699
+ duration: loaderEnd - loaderStart,
700
+ startTime: loaderStart - ms.requestStart,
701
+ depth: 1,
702
+ });
703
+ ms.metrics.push({
704
+ label: "pipeline:cache-hit",
705
+ duration: loaderEnd - pipelineStart,
706
+ startTime: pipelineStart - ms.requestStart,
707
+ });
380
708
  }
381
709
  };
382
710
  }