@rangojs/router 0.0.0-experimental.9 → 0.0.0-experimental.b9cb8739

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 (1101) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +884 -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 +1531 -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 +4440 -2170
  798. package/dist/vite/index.js.map +1 -0
  799. package/dist/vite/index.named-routes.gen.ts +103 -0
  800. package/dist/vite/package-resolution.d.ts +43 -0
  801. package/dist/vite/package-resolution.d.ts.map +1 -0
  802. package/dist/vite/package-resolution.js +112 -0
  803. package/dist/vite/package-resolution.js.map +1 -0
  804. package/dist/vite/virtual-entries.d.ts +25 -0
  805. package/dist/vite/virtual-entries.d.ts.map +1 -0
  806. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
  807. package/dist/vite/virtual-entries.js.map +1 -0
  808. package/package.json +69 -62
  809. package/skills/breadcrumbs/SKILL.md +250 -0
  810. package/skills/cache-guide/SKILL.md +262 -0
  811. package/skills/caching/SKILL.md +50 -21
  812. package/skills/composability/SKILL.md +172 -0
  813. package/skills/debug-manifest/SKILL.md +12 -8
  814. package/skills/document-cache/SKILL.md +18 -16
  815. package/skills/fonts/SKILL.md +6 -4
  816. package/skills/hooks/SKILL.md +333 -71
  817. package/skills/host-router/SKILL.md +218 -0
  818. package/skills/intercept/SKILL.md +131 -8
  819. package/skills/layout/SKILL.md +100 -3
  820. package/skills/links/SKILL.md +74 -15
  821. package/skills/loader/SKILL.md +388 -38
  822. package/skills/middleware/SKILL.md +171 -34
  823. package/skills/mime-routes/SKILL.md +15 -11
  824. package/skills/parallel/SKILL.md +78 -1
  825. package/skills/prerender/SKILL.md +405 -45
  826. package/skills/rango/SKILL.md +85 -21
  827. package/skills/response-routes/SKILL.md +144 -91
  828. package/skills/route/SKILL.md +226 -14
  829. package/skills/router-setup/SKILL.md +123 -30
  830. package/skills/theme/SKILL.md +9 -8
  831. package/skills/typesafety/SKILL.md +316 -87
  832. package/skills/use-cache/SKILL.md +324 -0
  833. package/src/__internal.ts +102 -4
  834. package/src/bin/rango.ts +312 -15
  835. package/src/browser/action-coordinator.ts +97 -0
  836. package/src/browser/action-response-classifier.ts +99 -0
  837. package/src/browser/event-controller.ts +87 -64
  838. package/src/browser/history-state.ts +80 -0
  839. package/src/browser/intercept-utils.ts +52 -0
  840. package/src/browser/link-interceptor.ts +24 -4
  841. package/src/browser/logging.ts +55 -0
  842. package/src/browser/merge-segment-loaders.ts +20 -12
  843. package/src/browser/navigation-bridge.ts +281 -554
  844. package/src/browser/navigation-client.ts +123 -73
  845. package/src/browser/navigation-store.ts +33 -50
  846. package/src/browser/navigation-transaction.ts +295 -0
  847. package/src/browser/network-error-handler.ts +61 -0
  848. package/src/browser/partial-update.ts +261 -309
  849. package/src/browser/prefetch/cache.ts +154 -0
  850. package/src/browser/prefetch/fetch.ts +135 -0
  851. package/src/browser/prefetch/observer.ts +65 -0
  852. package/src/browser/prefetch/policy.ts +48 -0
  853. package/src/browser/prefetch/queue.ts +88 -0
  854. package/src/browser/rango-state.ts +112 -0
  855. package/src/browser/react/Link.tsx +182 -70
  856. package/src/browser/react/NavigationProvider.tsx +51 -11
  857. package/src/browser/react/context.ts +6 -0
  858. package/src/browser/react/filter-segment-order.ts +11 -0
  859. package/src/browser/react/index.ts +12 -12
  860. package/src/browser/react/location-state-shared.ts +95 -53
  861. package/src/browser/react/location-state.ts +60 -15
  862. package/src/browser/react/mount-context.ts +6 -1
  863. package/src/browser/react/nonce-context.ts +23 -0
  864. package/src/browser/react/shallow-equal.ts +27 -0
  865. package/src/browser/react/use-action.ts +29 -51
  866. package/src/browser/react/use-client-cache.ts +5 -3
  867. package/src/browser/react/use-handle.ts +29 -70
  868. package/src/browser/react/use-link-status.ts +6 -5
  869. package/src/browser/react/use-navigation.ts +22 -63
  870. package/src/browser/react/use-params.ts +65 -0
  871. package/src/browser/react/use-pathname.ts +47 -0
  872. package/src/browser/react/use-router.ts +63 -0
  873. package/src/browser/react/use-search-params.ts +56 -0
  874. package/src/browser/react/use-segments.ts +80 -97
  875. package/src/browser/response-adapter.ts +73 -0
  876. package/src/browser/rsc-router.tsx +106 -27
  877. package/src/browser/scroll-restoration.ts +94 -38
  878. package/src/browser/segment-reconciler.ts +216 -0
  879. package/src/browser/segment-structure-assert.ts +16 -0
  880. package/src/browser/server-action-bridge.ts +504 -599
  881. package/src/browser/shallow.ts +6 -1
  882. package/src/browser/types.ts +107 -47
  883. package/src/browser/validate-redirect-origin.ts +29 -0
  884. package/src/build/generate-manifest.ts +82 -21
  885. package/src/build/generate-route-types.ts +36 -752
  886. package/src/build/index.ts +6 -5
  887. package/src/build/route-trie.ts +39 -13
  888. package/src/build/route-types/ast-helpers.ts +25 -0
  889. package/src/build/route-types/ast-route-extraction.ts +98 -0
  890. package/src/build/route-types/codegen.ts +102 -0
  891. package/src/build/route-types/include-resolution.ts +411 -0
  892. package/src/build/route-types/param-extraction.ts +48 -0
  893. package/src/build/route-types/per-module-writer.ts +128 -0
  894. package/src/build/route-types/router-processing.ts +469 -0
  895. package/src/build/route-types/scan-filter.ts +78 -0
  896. package/src/build/runtime-discovery.ts +231 -0
  897. package/src/cache/background-task.ts +34 -0
  898. package/src/cache/cache-key-utils.ts +44 -0
  899. package/src/cache/cache-policy.ts +125 -0
  900. package/src/cache/cache-runtime.ts +338 -0
  901. package/src/cache/cache-scope.ts +120 -301
  902. package/src/cache/cf/cf-cache-store.ts +119 -7
  903. package/src/cache/cf/index.ts +8 -2
  904. package/src/cache/document-cache.ts +101 -72
  905. package/src/cache/handle-capture.ts +81 -0
  906. package/src/cache/handle-snapshot.ts +41 -0
  907. package/src/cache/index.ts +0 -15
  908. package/src/cache/memory-segment-store.ts +191 -13
  909. package/src/cache/profile-registry.ts +73 -0
  910. package/src/cache/read-through-swr.ts +134 -0
  911. package/src/cache/segment-codec.ts +256 -0
  912. package/src/cache/taint.ts +98 -0
  913. package/src/cache/types.ts +72 -122
  914. package/src/client.rsc.tsx +3 -1
  915. package/src/client.tsx +84 -126
  916. package/src/component-utils.ts +4 -4
  917. package/src/components/DefaultDocument.tsx +5 -1
  918. package/src/context-var.ts +86 -0
  919. package/src/debug.ts +17 -7
  920. package/src/errors.ts +77 -7
  921. package/src/handle.ts +15 -10
  922. package/src/handles/MetaTags.tsx +73 -20
  923. package/src/handles/breadcrumbs.ts +66 -0
  924. package/src/handles/index.ts +1 -0
  925. package/src/handles/meta.ts +30 -13
  926. package/src/host/cookie-handler.ts +21 -15
  927. package/src/host/errors.ts +8 -8
  928. package/src/host/index.ts +4 -7
  929. package/src/host/pattern-matcher.ts +27 -27
  930. package/src/host/router.ts +61 -39
  931. package/src/host/testing.ts +8 -8
  932. package/src/host/types.ts +15 -7
  933. package/src/host/utils.ts +1 -1
  934. package/src/href-client.ts +65 -45
  935. package/src/index.rsc.ts +133 -21
  936. package/src/index.ts +164 -52
  937. package/src/internal-debug.ts +11 -0
  938. package/src/loader.rsc.ts +25 -143
  939. package/src/loader.ts +27 -10
  940. package/src/network-error-thrower.tsx +3 -1
  941. package/src/outlet-provider.tsx +45 -0
  942. package/src/prerender/param-hash.ts +4 -2
  943. package/src/prerender/store.ts +158 -13
  944. package/src/prerender.ts +333 -26
  945. package/src/reverse.ts +184 -121
  946. package/src/root-error-boundary.tsx +41 -29
  947. package/src/route-content-wrapper.tsx +7 -4
  948. package/src/route-definition/dsl-helpers.ts +934 -0
  949. package/src/route-definition/helper-factories.ts +200 -0
  950. package/src/route-definition/helpers-types.ts +430 -0
  951. package/src/route-definition/index.ts +52 -0
  952. package/src/route-definition/redirect.ts +93 -0
  953. package/src/route-definition.ts +1 -1431
  954. package/src/route-map-builder.ts +156 -123
  955. package/src/route-name.ts +53 -0
  956. package/src/route-types.ts +48 -9
  957. package/src/router/content-negotiation.ts +116 -0
  958. package/src/router/debug-manifest.ts +72 -0
  959. package/src/router/error-handling.ts +9 -9
  960. package/src/router/find-match.ts +158 -0
  961. package/src/router/handler-context.ts +374 -81
  962. package/src/router/intercept-resolution.ts +24 -16
  963. package/src/router/lazy-includes.ts +234 -0
  964. package/src/router/loader-resolution.ts +215 -122
  965. package/src/router/logging.ts +248 -0
  966. package/src/router/manifest.ts +83 -32
  967. package/src/router/match-api.ts +118 -119
  968. package/src/router/match-context.ts +4 -2
  969. package/src/router/match-handlers.ts +440 -0
  970. package/src/router/match-middleware/background-revalidation.ts +80 -93
  971. package/src/router/match-middleware/cache-lookup.ts +336 -84
  972. package/src/router/match-middleware/cache-store.ts +43 -24
  973. package/src/router/match-middleware/intercept-resolution.ts +45 -20
  974. package/src/router/match-middleware/segment-resolution.ts +16 -8
  975. package/src/router/match-pipelines.ts +10 -45
  976. package/src/router/match-result.ts +34 -28
  977. package/src/router/metrics.ts +235 -15
  978. package/src/router/middleware-cookies.ts +55 -0
  979. package/src/router/middleware-types.ts +222 -0
  980. package/src/router/middleware.ts +324 -367
  981. package/src/router/pattern-matching.ts +197 -41
  982. package/src/router/prerender-match.ts +402 -0
  983. package/src/router/preview-match.ts +170 -0
  984. package/src/router/revalidation.ts +137 -38
  985. package/src/router/router-context.ts +36 -21
  986. package/src/router/router-interfaces.ts +452 -0
  987. package/src/router/router-options.ts +592 -0
  988. package/src/router/router-registry.ts +24 -0
  989. package/src/router/segment-resolution/fresh.ts +570 -0
  990. package/src/router/segment-resolution/helpers.ts +263 -0
  991. package/src/router/segment-resolution/loader-cache.ts +198 -0
  992. package/src/router/segment-resolution/revalidation.ts +1239 -0
  993. package/src/router/segment-resolution/static-store.ts +67 -0
  994. package/src/router/segment-resolution.ts +21 -1315
  995. package/src/router/segment-wrappers.ts +289 -0
  996. package/src/router/telemetry-otel.ts +299 -0
  997. package/src/router/telemetry.ts +300 -0
  998. package/src/router/timeout.ts +148 -0
  999. package/src/router/trie-matching.ts +96 -29
  1000. package/src/router/types.ts +16 -9
  1001. package/src/router.ts +590 -1983
  1002. package/src/rsc/handler-context.ts +45 -0
  1003. package/src/rsc/handler.ts +661 -1015
  1004. package/src/rsc/helpers.ts +140 -6
  1005. package/src/rsc/index.ts +0 -20
  1006. package/src/rsc/loader-fetch.ts +209 -0
  1007. package/src/rsc/manifest-init.ts +86 -0
  1008. package/src/rsc/nonce.ts +14 -0
  1009. package/src/rsc/origin-guard.ts +141 -0
  1010. package/src/rsc/progressive-enhancement.ts +379 -0
  1011. package/src/rsc/response-error.ts +37 -0
  1012. package/src/rsc/response-route-handler.ts +347 -0
  1013. package/src/rsc/rsc-rendering.ts +237 -0
  1014. package/src/rsc/runtime-warnings.ts +42 -0
  1015. package/src/rsc/server-action.ts +348 -0
  1016. package/src/rsc/ssr-setup.ts +128 -0
  1017. package/src/rsc/types.ts +38 -11
  1018. package/src/search-params.ts +230 -0
  1019. package/src/segment-system.tsx +25 -13
  1020. package/src/server/context.ts +173 -48
  1021. package/src/server/cookie-store.ts +190 -0
  1022. package/src/server/fetchable-loader-store.ts +37 -0
  1023. package/src/server/handle-store.ts +94 -15
  1024. package/src/server/loader-registry.ts +15 -56
  1025. package/src/server/request-context.ts +430 -70
  1026. package/src/server.ts +35 -155
  1027. package/src/ssr/index.tsx +100 -31
  1028. package/src/static-handler.ts +114 -0
  1029. package/src/theme/ThemeProvider.tsx +21 -15
  1030. package/src/theme/ThemeScript.tsx +5 -5
  1031. package/src/theme/constants.ts +5 -2
  1032. package/src/theme/index.ts +4 -14
  1033. package/src/theme/theme-context.ts +4 -30
  1034. package/src/theme/theme-script.ts +21 -18
  1035. package/src/types/boundaries.ts +158 -0
  1036. package/src/types/cache-types.ts +198 -0
  1037. package/src/types/error-types.ts +192 -0
  1038. package/src/types/global-namespace.ts +100 -0
  1039. package/src/types/handler-context.ts +687 -0
  1040. package/src/types/index.ts +88 -0
  1041. package/src/types/loader-types.ts +183 -0
  1042. package/src/types/route-config.ts +170 -0
  1043. package/src/types/route-entry.ts +102 -0
  1044. package/src/types/segments.ts +148 -0
  1045. package/src/types.ts +1 -1757
  1046. package/src/urls/include-helper.ts +197 -0
  1047. package/src/urls/index.ts +53 -0
  1048. package/src/urls/path-helper-types.ts +339 -0
  1049. package/src/urls/path-helper.ts +329 -0
  1050. package/src/urls/pattern-types.ts +95 -0
  1051. package/src/urls/response-types.ts +106 -0
  1052. package/src/urls/type-extraction.ts +372 -0
  1053. package/src/urls/urls-function.ts +98 -0
  1054. package/src/urls.ts +1 -1282
  1055. package/src/use-loader.tsx +85 -77
  1056. package/src/vite/discovery/bundle-postprocess.ts +184 -0
  1057. package/src/vite/discovery/discover-routers.ts +344 -0
  1058. package/src/vite/discovery/prerender-collection.ts +385 -0
  1059. package/src/vite/discovery/route-types-writer.ts +258 -0
  1060. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1061. package/src/vite/discovery/state.ts +110 -0
  1062. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1063. package/src/vite/index.ts +11 -1963
  1064. package/src/vite/plugin-types.ts +131 -0
  1065. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1066. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1067. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1068. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -51
  1069. package/src/vite/plugins/expose-id-utils.ts +287 -0
  1070. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1071. package/src/vite/plugins/expose-ids/handler-transform.ts +179 -0
  1072. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1073. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1074. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1075. package/src/vite/plugins/expose-internal-ids.ts +569 -0
  1076. package/src/vite/plugins/refresh-cmd.ts +65 -0
  1077. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1078. package/src/vite/plugins/version-injector.ts +83 -0
  1079. package/src/vite/plugins/version-plugin.ts +254 -0
  1080. package/src/vite/plugins/virtual-entries.ts +123 -0
  1081. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1082. package/src/vite/rango.ts +510 -0
  1083. package/src/vite/router-discovery.ts +785 -0
  1084. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1085. package/src/vite/utils/banner.ts +36 -0
  1086. package/src/vite/utils/bundle-analysis.ts +137 -0
  1087. package/src/vite/utils/manifest-utils.ts +70 -0
  1088. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +25 -29
  1089. package/src/vite/utils/prerender-utils.ts +189 -0
  1090. package/src/vite/utils/shared-utils.ts +169 -0
  1091. package/CLAUDE.md +0 -43
  1092. package/src/browser/lru-cache.ts +0 -69
  1093. package/src/browser/request-controller.ts +0 -164
  1094. package/src/cache/memory-store.ts +0 -253
  1095. package/src/router.gen.ts +0 -6
  1096. package/src/urls.gen.ts +0 -8
  1097. package/src/vite/expose-handle-id.ts +0 -209
  1098. package/src/vite/expose-loader-id.ts +0 -426
  1099. package/src/vite/expose-location-state-id.ts +0 -177
  1100. package/src/vite/expose-prerender-handler-id.ts +0 -429
  1101. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -92,38 +92,178 @@
92
92
  import type { ResolvedSegment } from "../../types.js";
93
93
  import type { MatchContext, MatchPipelineState } from "../match-context.js";
94
94
  import { getRouterContext } from "../router-context.js";
95
- import type { PrerenderStore } from "../../prerender/store.js";
95
+ import { resolveSink, safeEmit } from "../telemetry.js";
96
+ import { pushRevalidationTraceEntry, isTraceActive } from "../logging.js";
97
+ import type { PrerenderStore, PrerenderEntry } from "../../prerender/store.js";
98
+ import type { HandleStore } from "../../server/handle-store.js";
99
+ import {
100
+ getRequestContext,
101
+ _getRequestContext,
102
+ } from "../../server/request-context.js";
96
103
 
97
104
  // Lazily initialized prerender store singleton and dynamically imported deps.
98
105
  // Dynamic imports prevent pulling in @vitejs/plugin-rsc/rsc virtual module at
99
106
  // top-level, which breaks vitest (only URLs with file:, data:, node: schemes).
100
107
  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;
108
+ let _deserializeSegments:
109
+ | typeof import("../../cache/segment-codec.js").deserializeSegments
110
+ | undefined;
111
+ let _restoreHandles:
112
+ | typeof import("../../cache/handle-snapshot.js").restoreHandles
113
+ | undefined;
114
+ let _hashParams:
115
+ | typeof import("../../prerender/param-hash.js").hashParams
116
+ | undefined;
117
+ let _lazyGetRequestContext:
118
+ | typeof import("../../server/request-context.js").getRequestContext
119
+ | undefined;
120
+
121
+ function paramsEqual(
122
+ a: Record<string, string>,
123
+ b: Record<string, string>,
124
+ ): boolean {
125
+ if (a === b) return true;
126
+
127
+ const keysA = Object.keys(a);
128
+ if (keysA.length !== Object.keys(b).length) return false;
129
+
130
+ for (const key of keysA) {
131
+ if (a[key] !== b[key]) return false;
132
+ }
133
+
134
+ return true;
135
+ }
104
136
 
105
137
  async function ensurePrerenderDeps() {
106
138
  if (!_deserializeSegments) {
107
- const [cache, paramHash, reqCtx, store] = await Promise.all([
108
- import("../../cache/cache-scope.js"),
139
+ const [codec, snapshot, paramHash, reqCtx, store] = await Promise.all([
140
+ import("../../cache/segment-codec.js"),
141
+ import("../../cache/handle-snapshot.js"),
109
142
  import("../../prerender/param-hash.js"),
110
143
  import("../../server/request-context.js"),
111
144
  import("../../prerender/store.js"),
112
145
  ]);
113
- _deserializeSegments = cache.deserializeSegments;
146
+ _deserializeSegments = codec.deserializeSegments;
147
+ _restoreHandles = snapshot.restoreHandles;
114
148
  _hashParams = paramHash.hashParams;
115
- _getRequestContext = reqCtx.getRequestContext;
149
+ _lazyGetRequestContext = reqCtx.getRequestContext;
116
150
  if (prerenderStoreInstance === undefined) {
117
151
  prerenderStoreInstance = store.createPrerenderStore();
118
152
  }
119
153
  }
120
154
  }
121
155
 
156
+ /**
157
+ * Shared yield logic for prerender and static handler store entries.
158
+ * Deserializes segments, replays handle data, yields segments with partial
159
+ * navigation nullification, and resolves fresh loaders.
160
+ */
161
+ async function* yieldFromStore<TEnv>(
162
+ entry: PrerenderEntry,
163
+ ctx: MatchContext<TEnv>,
164
+ state: MatchPipelineState,
165
+ pipelineStart: number,
166
+ handleStoreRef?: HandleStore,
167
+ ): AsyncGenerator<ResolvedSegment> {
168
+ const { resolveLoadersOnlyWithRevalidation, resolveLoadersOnly } =
169
+ getRouterContext<TEnv>();
170
+
171
+ if (
172
+ !_deserializeSegments ||
173
+ !_restoreHandles ||
174
+ !_hashParams ||
175
+ !_lazyGetRequestContext
176
+ ) {
177
+ throw new Error("yieldFromStore called before ensurePrerenderDeps");
178
+ }
179
+
180
+ const segments = await _deserializeSegments(entry.segments);
181
+
182
+ // Replay handle data (same as runtime cache hit path).
183
+ // Prefer the eagerly-captured handleStoreRef to avoid ALS disruption in workerd.
184
+ const handleStore = handleStoreRef ?? _lazyGetRequestContext()?._handleStore;
185
+ if (handleStore) {
186
+ _restoreHandles(entry.handles, handleStore);
187
+ }
188
+
189
+ state.cacheHit = true;
190
+ state.cacheSource = "prerender";
191
+ state.cachedSegments = segments;
192
+ state.cachedMatchedIds = segments.map((s) => s.id);
193
+
194
+ // For partial navigation, nullify components the client already has
195
+ // so parent layouts stay live (client keeps its existing versions).
196
+ // When params changed (e.g., different guide slug), the segments have
197
+ // different content, so we must NOT nullify.
198
+ const paramsChanged =
199
+ !ctx.isFullMatch && !paramsEqual(ctx.matched.params, ctx.prevParams);
200
+ for (const segment of segments) {
201
+ if (
202
+ !ctx.isFullMatch &&
203
+ !paramsChanged &&
204
+ ctx.clientSegmentSet.has(segment.id)
205
+ ) {
206
+ segment.component = null;
207
+ segment.loading = undefined;
208
+ }
209
+ yield segment;
210
+ }
211
+
212
+ // Resolve loaders fresh (loaders are never pre-rendered/cached)
213
+ if (ctx.isFullMatch) {
214
+ if (resolveLoadersOnly) {
215
+ const loaderSegments = await ctx.Store.run(() =>
216
+ resolveLoadersOnly(ctx.entries, ctx.handlerContext),
217
+ );
218
+ state.matchedIds = state.cachedMatchedIds!;
219
+ for (const segment of loaderSegments) {
220
+ yield segment;
221
+ }
222
+ } else {
223
+ state.matchedIds = state.cachedMatchedIds!;
224
+ }
225
+ } else {
226
+ if (resolveLoadersOnlyWithRevalidation) {
227
+ const loaderResult = await ctx.Store.run(() =>
228
+ resolveLoadersOnlyWithRevalidation(
229
+ ctx.entries,
230
+ ctx.handlerContext,
231
+ ctx.clientSegmentSet,
232
+ ctx.prevParams,
233
+ ctx.request,
234
+ ctx.prevUrl,
235
+ ctx.url,
236
+ ctx.routeKey,
237
+ ctx.actionContext,
238
+ ),
239
+ );
240
+ state.matchedIds = [
241
+ ...state.cachedMatchedIds!,
242
+ ...loaderResult.matchedIds,
243
+ ];
244
+ for (const segment of loaderResult.segments) {
245
+ yield segment;
246
+ }
247
+ } else {
248
+ state.matchedIds = state.cachedMatchedIds!;
249
+ }
250
+ }
251
+
252
+ const ms = ctx.metricsStore;
253
+ if (ms) {
254
+ ms.metrics.push({
255
+ label: "pipeline:cache-lookup",
256
+ duration: performance.now() - pipelineStart,
257
+ startTime: pipelineStart - ms.requestStart,
258
+ });
259
+ }
260
+ }
261
+
122
262
  /**
123
263
  * Async generator middleware type
124
264
  */
125
265
  export type GeneratorMiddleware<T> = (
126
- source: AsyncGenerator<T>
266
+ source: AsyncGenerator<T>,
127
267
  ) => AsyncGenerator<T>;
128
268
 
129
269
  /**
@@ -141,14 +281,21 @@ export type GeneratorMiddleware<T> = (
141
281
  */
142
282
  export function withCacheLookup<TEnv>(
143
283
  ctx: MatchContext<TEnv>,
144
- state: MatchPipelineState
284
+ state: MatchPipelineState,
145
285
  ): GeneratorMiddleware<ResolvedSegment> {
146
286
  return async function* (
147
- source: AsyncGenerator<ResolvedSegment>
287
+ source: AsyncGenerator<ResolvedSegment>,
148
288
  ): AsyncGenerator<ResolvedSegment> {
149
289
  const pipelineStart = performance.now();
150
290
  const ms = ctx.metricsStore;
151
291
 
292
+ // Eagerly capture the HandleStore before any async operations.
293
+ // In workerd/Cloudflare, dynamic imports and fetch() inside the pipeline
294
+ // can disrupt AsyncLocalStorage, causing getRequestContext() to return
295
+ // undefined afterward. Capturing the reference early ensures handle replay
296
+ // and handler handle-push work regardless of ALS state.
297
+ const handleStoreRef = _getRequestContext()?._handleStore;
298
+
152
299
  const {
153
300
  evaluateRevalidation,
154
301
  buildEntryRevalidateMap,
@@ -162,79 +309,124 @@ export function withCacheLookup<TEnv>(
162
309
  await ensurePrerenderDeps();
163
310
  if (prerenderStoreInstance) {
164
311
  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
- }
312
+ const isPassthroughPrerenderRoute = ctx.entries.some(
313
+ (entry) =>
314
+ entry.type === "route" &&
315
+ entry.prerenderDef?.options?.passthrough === true,
316
+ );
178
317
 
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;
318
+ if (ctx.isIntercept) {
319
+ // Intercept navigation: try intercept-specific prerender entry
320
+ const entry = await prerenderStoreInstance.get(
321
+ ctx.matched.routeKey,
322
+ paramHash + "/i",
323
+ {
324
+ pathname: ctx.pathname,
325
+ isPassthroughRoute: isPassthroughPrerenderRoute,
326
+ },
327
+ );
328
+ if (entry) {
329
+ yield* yieldFromStore(
330
+ entry,
331
+ ctx,
332
+ state,
333
+ pipelineStart,
334
+ handleStoreRef,
335
+ );
336
+ return;
192
337
  }
338
+ // No intercept prerender -- fall through to normal pipeline
339
+ // (skip non-intercept prerender to let intercept-resolution run)
340
+ } else {
341
+ // Normal navigation: existing behavior
342
+ const entry = await prerenderStoreInstance.get(
343
+ ctx.matched.routeKey,
344
+ paramHash,
345
+ {
346
+ pathname: ctx.pathname,
347
+ isPassthroughRoute: isPassthroughPrerenderRoute,
348
+ },
349
+ );
350
+ if (entry) {
351
+ yield* yieldFromStore(
352
+ entry,
353
+ ctx,
354
+ state,
355
+ pipelineStart,
356
+ handleStoreRef,
357
+ );
358
+ return;
359
+ }
360
+ }
361
+ }
362
+ }
363
+
364
+ // Dev-mode static handler interception for non-Node.js runtimes.
365
+ // __PRERENDER_DEV_URL is set by the Vite plugin when the RSC environment
366
+ // lacks a Node.js module runner (e.g. workerd, Deno workers). In those
367
+ // runtimes, handlers that depend on Node APIs like node:fs can't run
368
+ // in-process. We redirect them to the /__rsc_prerender endpoint which
369
+ // resolves segments in a Node.js temp server, same as prerender routes.
370
+ // In Node.js dev mode this variable is undefined -- handlers run
371
+ // in-process where Node APIs work, so no interception is needed.
372
+ if (!ctx.isAction && !ctx.matched.pr && globalThis.__PRERENDER_DEV_URL) {
373
+ const hasStatic = ctx.entries.some(
374
+ (e) =>
375
+ (e.type === "layout" ||
376
+ e.type === "route" ||
377
+ e.type === "parallel") &&
378
+ e.isStaticPrerender,
379
+ );
380
+ if (hasStatic) {
381
+ await ensurePrerenderDeps();
382
+ if (prerenderStoreInstance) {
383
+ const paramHash = _hashParams!(ctx.matched.params);
384
+ const isPassthroughPrerenderRoute = ctx.entries.some(
385
+ (entry) =>
386
+ entry.type === "route" &&
387
+ entry.prerenderDef?.options?.passthrough === true,
388
+ );
193
389
 
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),
390
+ if (ctx.isIntercept) {
391
+ const entry = await prerenderStoreInstance.get(
392
+ ctx.matched.routeKey,
393
+ paramHash + "/i",
394
+ {
395
+ pathname: ctx.pathname,
396
+ isPassthroughRoute: isPassthroughPrerenderRoute,
397
+ },
398
+ );
399
+ if (entry) {
400
+ yield* yieldFromStore(
401
+ entry,
402
+ ctx,
403
+ state,
404
+ pipelineStart,
405
+ handleStoreRef,
199
406
  );
200
- state.matchedIds = state.cachedMatchedIds!;
201
- for (const segment of loaderSegments) {
202
- yield segment;
203
- }
204
- } else {
205
- state.matchedIds = state.cachedMatchedIds!;
407
+ return;
206
408
  }
409
+ // No intercept prerender -- fall through to normal pipeline
207
410
  } 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
- ),
411
+ const entry = await prerenderStoreInstance.get(
412
+ ctx.matched.routeKey,
413
+ paramHash,
414
+ {
415
+ pathname: ctx.pathname,
416
+ isPassthroughRoute: isPassthroughPrerenderRoute,
417
+ },
418
+ );
419
+ if (entry) {
420
+ yield* yieldFromStore(
421
+ entry,
422
+ ctx,
423
+ state,
424
+ pipelineStart,
425
+ handleStoreRef,
221
426
  );
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!;
427
+ return;
231
428
  }
232
429
  }
233
-
234
- if (ms) {
235
- ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
236
- }
237
- return;
238
430
  }
239
431
  }
240
432
  }
@@ -244,7 +436,11 @@ export function withCacheLookup<TEnv>(
244
436
  // Cache miss - pass through to segment resolution
245
437
  yield* source;
246
438
  if (ms) {
247
- ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
439
+ ms.metrics.push({
440
+ label: "pipeline:cache-lookup",
441
+ duration: performance.now() - pipelineStart,
442
+ startTime: pipelineStart - ms.requestStart,
443
+ });
248
444
  }
249
445
  return;
250
446
  }
@@ -253,30 +449,54 @@ export function withCacheLookup<TEnv>(
253
449
  const cacheResult = await ctx.cacheScope.lookupRoute(
254
450
  ctx.pathname,
255
451
  ctx.matched.params,
256
- ctx.isIntercept
452
+ ctx.isIntercept,
257
453
  );
258
454
 
259
455
  if (!cacheResult) {
260
456
  // Cache miss - pass through to segment resolution
261
457
  yield* source;
262
458
  if (ms) {
263
- ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
459
+ ms.metrics.push({
460
+ label: "pipeline:cache-lookup",
461
+ duration: performance.now() - pipelineStart,
462
+ startTime: pipelineStart - ms.requestStart,
463
+ });
264
464
  }
265
465
  return;
266
466
  }
267
467
 
268
468
  // Cache HIT
269
469
  state.cacheHit = true;
470
+ state.cacheSource = "runtime";
270
471
  state.shouldRevalidate = cacheResult.shouldRevalidate;
271
472
  state.cachedSegments = cacheResult.segments;
272
473
  state.cachedMatchedIds = cacheResult.segments.map((s) => s.id);
273
474
 
274
- // Apply revalidation to cached segments
275
- const entryRevalidateMap = buildEntryRevalidateMap?.(ctx.entries);
475
+ // Apply revalidation to cached segments.
476
+ // For full matches or empty client segment sets, this map is unnecessary:
477
+ // we never run segment-level revalidation and can stream segments directly.
478
+ const canCheckSegmentRevalidation =
479
+ !ctx.isFullMatch &&
480
+ ctx.clientSegmentSet.size > 0 &&
481
+ !!buildEntryRevalidateMap;
482
+ const entryRevalidateMap = canCheckSegmentRevalidation
483
+ ? buildEntryRevalidateMap(ctx.entries)
484
+ : undefined;
276
485
 
277
486
  for (const segment of cacheResult.segments) {
278
487
  // Skip segments client doesn't have - they need their component
279
488
  if (!ctx.clientSegmentSet.has(segment.id)) {
489
+ if (isTraceActive()) {
490
+ pushRevalidationTraceEntry({
491
+ segmentId: segment.id,
492
+ segmentType: segment.type,
493
+ belongsToRoute: segment.belongsToRoute ?? false,
494
+ source: "cache-hit",
495
+ defaultShouldRevalidate: true,
496
+ finalShouldRevalidate: true,
497
+ reason: "new-segment",
498
+ });
499
+ }
280
500
  yield segment;
281
501
  continue;
282
502
  }
@@ -291,6 +511,17 @@ export function withCacheLookup<TEnv>(
291
511
  const entryInfo = entryRevalidateMap?.get(segment.id);
292
512
  if (!entryInfo || entryInfo.revalidate.length === 0) {
293
513
  // No revalidation rules, use default behavior (skip if client has)
514
+ if (isTraceActive()) {
515
+ pushRevalidationTraceEntry({
516
+ segmentId: segment.id,
517
+ segmentType: segment.type,
518
+ belongsToRoute: segment.belongsToRoute ?? false,
519
+ source: "cache-hit",
520
+ defaultShouldRevalidate: false,
521
+ finalShouldRevalidate: false,
522
+ reason: "cached-no-rules",
523
+ });
524
+ }
294
525
  segment.component = null;
295
526
  segment.loading = undefined;
296
527
  yield segment;
@@ -312,8 +543,24 @@ export function withCacheLookup<TEnv>(
312
543
  routeKey: ctx.routeKey,
313
544
  context: ctx.handlerContext,
314
545
  actionContext: ctx.actionContext,
546
+ stale: cacheResult.shouldRevalidate || undefined,
547
+ traceSource: "cache-hit",
315
548
  });
316
549
 
550
+ const routerCtx = getRouterContext<TEnv>();
551
+ if (routerCtx.telemetry) {
552
+ const tSink = resolveSink(routerCtx.telemetry);
553
+ safeEmit(tSink, {
554
+ type: "revalidation.decision",
555
+ timestamp: performance.now(),
556
+ requestId: routerCtx.requestId,
557
+ segmentId: segment.id,
558
+ pathname: ctx.pathname,
559
+ routeKey: ctx.routeKey,
560
+ shouldRevalidate,
561
+ });
562
+ }
563
+
317
564
  if (!shouldRevalidate) {
318
565
  // Client has it, no revalidation needed
319
566
  segment.component = null;
@@ -331,7 +578,7 @@ export function withCacheLookup<TEnv>(
331
578
  // Full match (document request) - simple loader resolution without revalidation
332
579
  if (resolveLoadersOnly) {
333
580
  const loaderSegments = await Store.run(() =>
334
- resolveLoadersOnly(ctx.entries, ctx.handlerContext)
581
+ resolveLoadersOnly(ctx.entries, ctx.handlerContext),
335
582
  );
336
583
 
337
584
  // Update state - full match doesn't track matchedIds separately
@@ -357,8 +604,9 @@ export function withCacheLookup<TEnv>(
357
604
  ctx.prevUrl,
358
605
  ctx.url,
359
606
  ctx.routeKey,
360
- ctx.actionContext
361
- )
607
+ ctx.actionContext,
608
+ cacheResult.shouldRevalidate || undefined,
609
+ ),
362
610
  );
363
611
 
364
612
  // Update state with fresh loader matchedIds
@@ -376,7 +624,11 @@ export function withCacheLookup<TEnv>(
376
624
  }
377
625
  }
378
626
  if (ms) {
379
- ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
627
+ ms.metrics.push({
628
+ label: "pipeline:cache-lookup",
629
+ duration: performance.now() - pipelineStart,
630
+ startTime: pipelineStart - ms.requestStart,
631
+ });
380
632
  }
381
633
  };
382
634
  }
@@ -104,6 +104,7 @@ import type { ResolvedSegment } from "../../types.js";
104
104
  import { getRequestContext } from "../../server/request-context.js";
105
105
  import type { MatchContext, MatchPipelineState } from "../match-context.js";
106
106
  import { getRouterContext } from "../router-context.js";
107
+ import { debugLog, debugWarn } from "../logging.js";
107
108
  import type { GeneratorMiddleware } from "./cache-lookup.js";
108
109
 
109
110
  /**
@@ -141,16 +142,21 @@ export function withCacheStore<TEnv>(
141
142
  ctx.request.method !== "GET"
142
143
  ) {
143
144
  if (ms) {
144
- ms.metrics.push({ label: "pipeline:cache-store", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
145
+ ms.metrics.push({
146
+ label: "pipeline:cache-store",
147
+ duration: performance.now() - pipelineStart,
148
+ startTime: pipelineStart - ms.requestStart,
149
+ });
145
150
  }
146
151
  return;
147
152
  }
148
153
 
149
154
  const {
150
155
  createHandlerContext,
151
- setupLoaderAccessSilent,
156
+ setupLoaderAccess,
152
157
  resolveAllSegments,
153
158
  resolveInterceptEntry,
159
+ createHandleStore,
154
160
  } = getRouterContext<TEnv>();
155
161
 
156
162
  // Combine main segments with intercept segments
@@ -172,9 +178,10 @@ export function withCacheStore<TEnv>(
172
178
  requestCtx.onResponse((response) => {
173
179
  // Only cache successful responses
174
180
  if (response.status !== 200) {
175
- console.log(
176
- `[CacheStore] Skipping cache: non-200 status ${response.status} for ${ctx.pathname}`,
177
- );
181
+ debugLog("cacheStore", "skipping cache for non-200 response", {
182
+ status: response.status,
183
+ pathname: ctx.pathname,
184
+ });
178
185
  return response;
179
186
  }
180
187
 
@@ -182,29 +189,34 @@ export function withCacheStore<TEnv>(
182
189
  // Proactive caching: render all segments fresh in background
183
190
  // This ensures cache has complete components for future requests
184
191
  requestCtx.waitUntil(async () => {
185
- console.log(
186
- `[Router.matchPartial] Proactive caching: ${ctx.pathname} (rendering null-component segments)`,
187
- );
192
+ debugLog("cacheStore", "proactive caching started", {
193
+ pathname: ctx.pathname,
194
+ });
195
+ // Swap to a fresh HandleStore so handle.push() calls from
196
+ // proactive resolution are captured (not silenced). The original
197
+ // store's stream is already sent by waitUntil time.
198
+ // cacheRoute reads from requestCtx._handleStore, so this ensures
199
+ // complete handle data (e.g. breadcrumbs) is cached.
200
+ const originalHandleStore = requestCtx._handleStore;
201
+ requestCtx._handleStore = createHandleStore();
188
202
  try {
189
203
  // Create fresh context for proactive caching
190
- // This prevents handle data from polluting the response stream
191
204
  const proactiveHandlerContext = createHandlerContext(
192
205
  ctx.matched.params,
193
206
  ctx.request,
194
207
  ctx.url.searchParams,
195
208
  ctx.pathname,
196
209
  ctx.url,
197
- ctx.bindings,
210
+ ctx.env,
198
211
  ctx.routeMap,
199
- ctx.matched.routeKey
212
+ ctx.matched.routeKey,
213
+ ctx.matched.responseType,
214
+ ctx.matched.pt === true,
200
215
  );
201
216
  const proactiveLoaderPromises = new Map<string, Promise<any>>();
202
217
 
203
- // Set up loader access that ignores handle pushes
204
- setupLoaderAccessSilent(
205
- proactiveHandlerContext,
206
- proactiveLoaderPromises,
207
- );
218
+ // Use normal loader access so handle data is captured
219
+ setupLoaderAccess(proactiveHandlerContext, proactiveLoaderPromises);
208
220
 
209
221
  // Re-resolve ALL segments without revalidation
210
222
  const Store = ctx.Store;
@@ -237,20 +249,23 @@ export function withCacheStore<TEnv>(
237
249
  ...freshSegments,
238
250
  ...freshInterceptSegments,
239
251
  ];
252
+ requestCtx._handleStore.seal();
240
253
  await cacheScope.cacheRoute(
241
254
  ctx.pathname,
242
255
  ctx.matched.params,
243
256
  completeSegments,
244
257
  ctx.isIntercept,
245
258
  );
246
- console.log(
247
- `[Router.matchPartial] Proactive caching complete: ${ctx.pathname}`,
248
- );
259
+ debugLog("cacheStore", "proactive caching complete", {
260
+ pathname: ctx.pathname,
261
+ });
249
262
  } catch (error) {
250
- console.error(
251
- `[Router.matchPartial] Proactive caching failed:`,
252
- error,
253
- );
263
+ debugWarn("cacheStore", "proactive caching failed", {
264
+ pathname: ctx.pathname,
265
+ error: String(error),
266
+ });
267
+ } finally {
268
+ requestCtx._handleStore = originalHandleStore;
254
269
  }
255
270
  });
256
271
  } else {
@@ -270,7 +285,11 @@ export function withCacheStore<TEnv>(
270
285
  });
271
286
 
272
287
  if (ms) {
273
- ms.metrics.push({ label: "pipeline:cache-store", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
288
+ ms.metrics.push({
289
+ label: "pipeline:cache-store",
290
+ duration: performance.now() - pipelineStart,
291
+ startTime: pipelineStart - ms.requestStart,
292
+ });
274
293
  }
275
294
  };
276
295
  }