@rangojs/router 0.0.0-experimental.2 → 0.0.0-experimental.20dbba0c

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 (1145) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +972 -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/{src/__mocks__/version.ts → dist/__mocks__/version.js} +1 -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 +1689 -0
  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 +5320 -834
  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/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  806. package/dist/vite/virtual-entries.d.ts +25 -0
  807. package/dist/vite/virtual-entries.d.ts.map +1 -0
  808. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +18 -17
  809. package/dist/vite/virtual-entries.js.map +1 -0
  810. package/package.json +92 -55
  811. package/skills/breadcrumbs/SKILL.md +252 -0
  812. package/skills/cache-guide/SKILL.md +294 -0
  813. package/skills/caching/SKILL.md +173 -231
  814. package/skills/composability/SKILL.md +172 -0
  815. package/skills/debug-manifest/SKILL.md +112 -0
  816. package/skills/document-cache/SKILL.md +88 -58
  817. package/skills/fonts/SKILL.md +167 -0
  818. package/skills/handler-use/SKILL.md +362 -0
  819. package/skills/hooks/SKILL.md +420 -67
  820. package/skills/host-router/SKILL.md +218 -0
  821. package/skills/intercept/SKILL.md +243 -202
  822. package/skills/layout/SKILL.md +262 -146
  823. package/skills/links/SKILL.md +313 -0
  824. package/skills/loader/SKILL.md +525 -251
  825. package/skills/middleware/SKILL.md +248 -320
  826. package/skills/migrate-nextjs/SKILL.md +560 -0
  827. package/skills/migrate-react-router/SKILL.md +765 -0
  828. package/skills/mime-routes/SKILL.md +128 -0
  829. package/skills/parallel/SKILL.md +393 -158
  830. package/skills/prerender/SKILL.md +685 -0
  831. package/skills/rango/SKILL.md +120 -0
  832. package/skills/response-routes/SKILL.md +419 -0
  833. package/skills/route/SKILL.md +388 -89
  834. package/skills/router-setup/SKILL.md +388 -267
  835. package/skills/streams-and-websockets/SKILL.md +283 -0
  836. package/skills/tailwind/SKILL.md +129 -0
  837. package/skills/theme/SKILL.md +36 -11
  838. package/skills/typesafety/SKILL.md +456 -173
  839. package/skills/use-cache/SKILL.md +324 -0
  840. package/src/__internal.ts +273 -0
  841. package/src/bin/rango.ts +321 -0
  842. package/src/browser/action-coordinator.ts +97 -0
  843. package/src/browser/action-response-classifier.ts +99 -0
  844. package/src/browser/app-shell.ts +52 -0
  845. package/src/browser/app-version.ts +14 -0
  846. package/src/browser/event-controller.ts +92 -64
  847. package/src/browser/history-state.ts +80 -0
  848. package/src/browser/intercept-utils.ts +52 -0
  849. package/src/browser/link-interceptor.ts +24 -4
  850. package/src/browser/logging.ts +55 -0
  851. package/src/browser/merge-segment-loaders.ts +20 -12
  852. package/src/browser/navigation-bridge.ts +383 -557
  853. package/src/browser/navigation-client.ts +229 -68
  854. package/src/browser/navigation-store.ts +97 -55
  855. package/src/browser/navigation-transaction.ts +297 -0
  856. package/src/browser/network-error-handler.ts +61 -0
  857. package/src/browser/partial-update.ts +391 -304
  858. package/src/browser/prefetch/cache.ts +314 -0
  859. package/src/browser/prefetch/fetch.ts +282 -0
  860. package/src/browser/prefetch/observer.ts +65 -0
  861. package/src/browser/prefetch/policy.ts +48 -0
  862. package/src/browser/prefetch/queue.ts +191 -0
  863. package/src/browser/prefetch/resource-ready.ts +77 -0
  864. package/src/browser/rango-state.ts +152 -0
  865. package/src/browser/react/Link.tsx +258 -74
  866. package/src/browser/react/NavigationProvider.tsx +219 -33
  867. package/src/browser/react/context.ts +11 -0
  868. package/src/browser/react/filter-segment-order.ts +11 -0
  869. package/src/browser/react/index.ts +12 -12
  870. package/src/browser/react/location-state-shared.ts +95 -53
  871. package/src/browser/react/location-state.ts +60 -15
  872. package/src/browser/react/mount-context.ts +37 -0
  873. package/src/browser/react/nonce-context.ts +23 -0
  874. package/src/browser/react/shallow-equal.ts +27 -0
  875. package/src/browser/react/use-action.ts +29 -51
  876. package/src/browser/react/use-client-cache.ts +5 -3
  877. package/src/browser/react/use-handle.ts +30 -95
  878. package/src/browser/react/use-href.tsx +20 -188
  879. package/src/browser/react/use-link-status.ts +6 -5
  880. package/src/browser/react/use-mount.ts +31 -0
  881. package/src/browser/react/use-navigation.ts +49 -80
  882. package/src/browser/react/use-params.ts +75 -0
  883. package/src/browser/react/use-pathname.ts +47 -0
  884. package/src/browser/react/use-router.ts +83 -0
  885. package/src/browser/react/use-search-params.ts +56 -0
  886. package/src/browser/react/use-segments.ts +80 -97
  887. package/src/browser/response-adapter.ts +73 -0
  888. package/src/browser/rsc-router.tsx +251 -70
  889. package/src/browser/scroll-restoration.ts +127 -52
  890. package/src/browser/segment-reconciler.ts +243 -0
  891. package/src/browser/segment-structure-assert.ts +83 -0
  892. package/src/browser/server-action-bridge.ts +510 -588
  893. package/src/browser/shallow.ts +6 -1
  894. package/src/browser/types.ts +176 -58
  895. package/src/browser/validate-redirect-origin.ts +29 -0
  896. package/src/build/generate-manifest.ts +438 -0
  897. package/src/build/generate-route-types.ts +39 -0
  898. package/src/build/index.ts +35 -0
  899. package/src/build/route-trie.ts +291 -0
  900. package/src/build/route-types/ast-helpers.ts +25 -0
  901. package/src/build/route-types/ast-route-extraction.ts +98 -0
  902. package/src/build/route-types/codegen.ts +102 -0
  903. package/src/build/route-types/include-resolution.ts +418 -0
  904. package/src/build/route-types/param-extraction.ts +48 -0
  905. package/src/build/route-types/per-module-writer.ts +128 -0
  906. package/src/build/route-types/router-processing.ts +618 -0
  907. package/src/build/route-types/scan-filter.ts +85 -0
  908. package/src/build/runtime-discovery.ts +231 -0
  909. package/src/cache/background-task.ts +34 -0
  910. package/src/cache/cache-key-utils.ts +44 -0
  911. package/src/cache/cache-policy.ts +125 -0
  912. package/src/cache/cache-runtime.ts +342 -0
  913. package/src/cache/cache-scope.ts +167 -309
  914. package/src/cache/cf/cf-cache-store.ts +573 -21
  915. package/src/cache/cf/index.ts +13 -3
  916. package/src/cache/document-cache.ts +116 -77
  917. package/src/cache/handle-capture.ts +81 -0
  918. package/src/cache/handle-snapshot.ts +41 -0
  919. package/src/cache/index.ts +1 -15
  920. package/src/cache/memory-segment-store.ts +191 -13
  921. package/src/cache/profile-registry.ts +73 -0
  922. package/src/cache/read-through-swr.ts +134 -0
  923. package/src/cache/segment-codec.ts +256 -0
  924. package/src/cache/taint.ts +153 -0
  925. package/src/cache/types.ts +76 -121
  926. package/src/client.rsc.tsx +12 -15
  927. package/src/client.tsx +142 -308
  928. package/src/component-utils.ts +4 -4
  929. package/src/components/DefaultDocument.tsx +6 -2
  930. package/src/context-var.ts +156 -0
  931. package/src/debug.ts +243 -0
  932. package/src/errors.ts +108 -2
  933. package/src/handle.ts +74 -19
  934. package/src/handles/MetaTags.tsx +76 -23
  935. package/src/handles/breadcrumbs.ts +66 -0
  936. package/src/handles/index.ts +1 -0
  937. package/src/handles/meta.ts +32 -15
  938. package/src/host/cookie-handler.ts +165 -0
  939. package/src/host/errors.ts +97 -0
  940. package/src/host/index.ts +53 -0
  941. package/src/host/pattern-matcher.ts +214 -0
  942. package/src/host/router.ts +352 -0
  943. package/src/host/testing.ts +79 -0
  944. package/src/host/types.ts +146 -0
  945. package/src/host/utils.ts +25 -0
  946. package/src/href-client.ts +141 -47
  947. package/src/index.rsc.ts +187 -28
  948. package/src/index.ts +271 -38
  949. package/src/internal-debug.ts +11 -0
  950. package/src/loader.rsc.ts +27 -142
  951. package/src/loader.ts +27 -10
  952. package/src/network-error-thrower.tsx +3 -1
  953. package/src/outlet-context.ts +1 -1
  954. package/src/outlet-provider.tsx +45 -0
  955. package/src/prerender/param-hash.ts +37 -0
  956. package/src/prerender/store.ts +186 -0
  957. package/src/prerender.ts +524 -0
  958. package/src/response-utils.ts +28 -0
  959. package/src/reverse.ts +355 -0
  960. package/src/root-error-boundary.tsx +41 -29
  961. package/src/route-content-wrapper.tsx +9 -11
  962. package/src/route-definition/dsl-helpers.ts +1134 -0
  963. package/src/route-definition/helper-factories.ts +200 -0
  964. package/src/route-definition/helpers-types.ts +478 -0
  965. package/src/route-definition/index.ts +55 -0
  966. package/src/route-definition/redirect.ts +101 -0
  967. package/src/route-definition/resolve-handler-use.ts +155 -0
  968. package/src/route-definition.ts +1 -1371
  969. package/src/route-map-builder.ts +247 -112
  970. package/src/route-name.ts +53 -0
  971. package/src/route-types.ts +88 -9
  972. package/src/router/content-negotiation.ts +215 -0
  973. package/src/router/debug-manifest.ts +72 -0
  974. package/src/router/error-handling.ts +9 -9
  975. package/src/router/find-match.ts +160 -0
  976. package/src/router/handler-context.ts +457 -88
  977. package/src/router/intercept-resolution.ts +402 -0
  978. package/src/router/lazy-includes.ts +237 -0
  979. package/src/router/loader-resolution.ts +360 -128
  980. package/src/router/logging.ts +251 -0
  981. package/src/router/manifest.ts +187 -43
  982. package/src/router/match-api.ts +555 -0
  983. package/src/router/match-context.ts +6 -4
  984. package/src/router/match-handlers.ts +440 -0
  985. package/src/router/match-middleware/background-revalidation.ts +108 -93
  986. package/src/router/match-middleware/cache-lookup.ts +460 -10
  987. package/src/router/match-middleware/cache-store.ts +98 -26
  988. package/src/router/match-middleware/intercept-resolution.ts +57 -17
  989. package/src/router/match-middleware/segment-resolution.ts +80 -6
  990. package/src/router/match-pipelines.ts +10 -45
  991. package/src/router/match-result.ts +135 -36
  992. package/src/router/metrics.ts +240 -15
  993. package/src/router/middleware-cookies.ts +55 -0
  994. package/src/router/middleware-types.ts +200 -0
  995. package/src/router/middleware.ts +359 -333
  996. package/src/router/navigation-snapshot.ts +182 -0
  997. package/src/router/pattern-matching.ts +375 -33
  998. package/src/router/prerender-match.ts +502 -0
  999. package/src/router/preview-match.ts +98 -0
  1000. package/src/router/request-classification.ts +310 -0
  1001. package/src/router/revalidation.ts +137 -38
  1002. package/src/router/route-snapshot.ts +245 -0
  1003. package/src/router/router-context.ts +45 -23
  1004. package/src/router/router-interfaces.ts +484 -0
  1005. package/src/router/router-options.ts +618 -0
  1006. package/src/router/router-registry.ts +24 -0
  1007. package/src/router/segment-resolution/fresh.ts +748 -0
  1008. package/src/router/segment-resolution/helpers.ts +268 -0
  1009. package/src/router/segment-resolution/loader-cache.ts +199 -0
  1010. package/src/router/segment-resolution/revalidation.ts +1379 -0
  1011. package/src/router/segment-resolution/static-store.ts +67 -0
  1012. package/src/router/segment-resolution.ts +21 -0
  1013. package/src/router/segment-wrappers.ts +291 -0
  1014. package/src/router/telemetry-otel.ts +299 -0
  1015. package/src/router/telemetry.ts +300 -0
  1016. package/src/router/timeout.ts +148 -0
  1017. package/src/router/trie-matching.ts +245 -0
  1018. package/src/router/types.ts +79 -4
  1019. package/src/router/url-params.ts +49 -0
  1020. package/src/router.ts +750 -3572
  1021. package/src/rsc/handler-context.ts +45 -0
  1022. package/src/rsc/handler.ts +934 -801
  1023. package/src/rsc/helpers.ts +181 -19
  1024. package/src/rsc/index.ts +5 -25
  1025. package/src/rsc/loader-fetch.ts +229 -0
  1026. package/src/rsc/manifest-init.ts +90 -0
  1027. package/src/rsc/nonce.ts +14 -0
  1028. package/src/rsc/origin-guard.ts +141 -0
  1029. package/src/rsc/progressive-enhancement.ts +393 -0
  1030. package/src/rsc/response-error.ts +37 -0
  1031. package/src/rsc/response-route-handler.ts +360 -0
  1032. package/src/rsc/rsc-rendering.ts +253 -0
  1033. package/src/rsc/runtime-warnings.ts +42 -0
  1034. package/src/rsc/server-action.ts +358 -0
  1035. package/src/rsc/ssr-setup.ts +128 -0
  1036. package/src/rsc/types.ts +48 -14
  1037. package/src/search-params.ts +230 -0
  1038. package/src/segment-content-promise.ts +67 -0
  1039. package/src/segment-loader-promise.ts +122 -0
  1040. package/src/segment-system.tsx +165 -81
  1041. package/src/server/context.ts +384 -61
  1042. package/src/server/cookie-store.ts +190 -0
  1043. package/src/server/fetchable-loader-store.ts +37 -0
  1044. package/src/server/handle-store.ts +117 -20
  1045. package/src/server/loader-registry.ts +24 -64
  1046. package/src/server/request-context.ts +603 -109
  1047. package/src/server.ts +36 -131
  1048. package/src/ssr/index.tsx +160 -25
  1049. package/src/static-handler.ts +126 -0
  1050. package/src/theme/ThemeProvider.tsx +21 -15
  1051. package/src/theme/ThemeScript.tsx +5 -5
  1052. package/src/theme/constants.ts +11 -4
  1053. package/src/theme/index.ts +4 -14
  1054. package/src/theme/theme-context.ts +5 -31
  1055. package/src/theme/theme-script.ts +21 -18
  1056. package/src/theme/types.ts +1 -1
  1057. package/src/types/boundaries.ts +158 -0
  1058. package/src/types/cache-types.ts +198 -0
  1059. package/src/types/error-types.ts +192 -0
  1060. package/src/types/global-namespace.ts +100 -0
  1061. package/src/types/handler-context.ts +759 -0
  1062. package/src/types/index.ts +88 -0
  1063. package/src/types/loader-types.ts +209 -0
  1064. package/src/types/request-scope.ts +126 -0
  1065. package/src/types/route-config.ts +170 -0
  1066. package/src/types/route-entry.ts +120 -0
  1067. package/src/types/segments.ts +150 -0
  1068. package/src/types.ts +1 -1561
  1069. package/src/urls/include-helper.ts +207 -0
  1070. package/src/urls/index.ts +53 -0
  1071. package/src/urls/path-helper-types.ts +372 -0
  1072. package/src/urls/path-helper.ts +364 -0
  1073. package/src/urls/pattern-types.ts +107 -0
  1074. package/src/urls/response-types.ts +108 -0
  1075. package/src/urls/type-extraction.ts +372 -0
  1076. package/src/urls/urls-function.ts +98 -0
  1077. package/src/urls.ts +1 -726
  1078. package/src/use-loader.tsx +161 -81
  1079. package/src/vite/discovery/bundle-postprocess.ts +181 -0
  1080. package/src/vite/discovery/discover-routers.ts +348 -0
  1081. package/src/vite/discovery/prerender-collection.ts +439 -0
  1082. package/src/vite/discovery/route-types-writer.ts +258 -0
  1083. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1084. package/src/vite/discovery/state.ts +117 -0
  1085. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1086. package/src/vite/index.ts +18 -785
  1087. package/src/vite/plugin-types.ts +103 -0
  1088. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1089. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1090. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1091. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1092. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1093. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  1094. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -53
  1095. package/src/vite/plugins/expose-id-utils.ts +299 -0
  1096. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1097. package/src/vite/plugins/expose-ids/handler-transform.ts +209 -0
  1098. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1099. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1100. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1101. package/src/vite/plugins/expose-internal-ids.ts +786 -0
  1102. package/src/vite/plugins/performance-tracks.ts +88 -0
  1103. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1104. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1105. package/src/vite/plugins/version-injector.ts +83 -0
  1106. package/src/vite/plugins/version-plugin.ts +266 -0
  1107. package/src/vite/plugins/virtual-entries.ts +123 -0
  1108. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1109. package/src/vite/rango.ts +483 -0
  1110. package/src/vite/router-discovery.ts +977 -0
  1111. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1112. package/src/vite/utils/banner.ts +36 -0
  1113. package/src/vite/utils/bundle-analysis.ts +137 -0
  1114. package/src/vite/utils/manifest-utils.ts +70 -0
  1115. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +58 -29
  1116. package/src/vite/utils/prerender-utils.ts +221 -0
  1117. package/src/vite/utils/shared-utils.ts +170 -0
  1118. package/CLAUDE.md +0 -7
  1119. package/src/__tests__/component-utils.test.ts +0 -76
  1120. package/src/__tests__/route-definition.test.ts +0 -63
  1121. package/src/__tests__/urls.test.tsx +0 -436
  1122. package/src/browser/lru-cache.ts +0 -69
  1123. package/src/browser/request-controller.ts +0 -164
  1124. package/src/cache/__tests__/document-cache.test.ts +0 -522
  1125. package/src/cache/__tests__/memory-segment-store.test.ts +0 -487
  1126. package/src/cache/__tests__/memory-store.test.ts +0 -484
  1127. package/src/cache/cf/__tests__/cf-cache-store.test.ts +0 -428
  1128. package/src/cache/memory-store.ts +0 -253
  1129. package/src/href.ts +0 -177
  1130. package/src/route-utils.ts +0 -89
  1131. package/src/router/__tests__/match-context.test.ts +0 -104
  1132. package/src/router/__tests__/match-pipelines.test.ts +0 -537
  1133. package/src/router/__tests__/match-result.test.ts +0 -566
  1134. package/src/router/__tests__/on-error.test.ts +0 -935
  1135. package/src/router/__tests__/pattern-matching.test.ts +0 -577
  1136. package/src/router/middleware.test.ts +0 -1355
  1137. package/src/rsc/__tests__/helpers.test.ts +0 -175
  1138. package/src/server/__tests__/request-context.test.ts +0 -171
  1139. package/src/ssr/__tests__/ssr-handler.test.tsx +0 -188
  1140. package/src/theme/__tests__/theme.test.ts +0 -120
  1141. package/src/vite/__tests__/expose-loader-id.test.ts +0 -117
  1142. package/src/vite/expose-handle-id.ts +0 -209
  1143. package/src/vite/expose-loader-id.ts +0 -357
  1144. package/src/vite/expose-location-state-id.ts +0 -177
  1145. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -3,8 +3,10 @@
3
3
  import React, {
4
4
  useState,
5
5
  useEffect,
6
+ useLayoutEffect,
6
7
  useCallback,
7
8
  useMemo,
9
+ useRef,
8
10
  use,
9
11
  type ReactNode,
10
12
  } from "react";
@@ -14,7 +16,7 @@ import {
14
16
  } from "./context.js";
15
17
  import type {
16
18
  NavigationStore,
17
- RscPayload,
19
+ NavigationUpdate,
18
20
  NavigateOptions,
19
21
  NavigationBridge,
20
22
  } from "../types.js";
@@ -22,8 +24,11 @@ import type { EventController } from "../event-controller.js";
22
24
  import { RootErrorBoundary } from "../../root-error-boundary.js";
23
25
  import type { HandleData } from "../types.js";
24
26
  import { ThemeProvider } from "../../theme/ThemeProvider.js";
27
+ import { NonceContext } from "./nonce-context.js";
25
28
  import type { ResolvedThemeConfig, Theme } from "../../theme/types.js";
26
- import { HrefContext, type HrefContextValue } from "./use-href.js";
29
+ import { cancelAllPrefetches } from "../prefetch/queue.js";
30
+ import { handleNavigationEnd } from "../scroll-restoration.js";
31
+ import type { AppShellRef } from "../app-shell.js";
27
32
 
28
33
  /**
29
34
  * Process handles from an async generator, updating the event controller
@@ -43,7 +48,7 @@ async function processHandles(
43
48
  matched?: string[];
44
49
  isPartial?: boolean;
45
50
  historyKey: string;
46
- }
51
+ },
47
52
  ): Promise<void> {
48
53
  const { eventController, store, matched, isPartial, historyKey } = opts;
49
54
 
@@ -54,7 +59,7 @@ async function processHandles(
54
59
  // the current route's breadcrumbs (e.g., quick popstate after clicking a link).
55
60
  if (historyKey !== store.getHistoryKey()) {
56
61
  console.log(
57
- "[NavigationProvider] Stopping handle processing - user navigated away"
62
+ "[NavigationProvider] Stopping handle processing - user navigated away",
58
63
  );
59
64
  return;
60
65
  }
@@ -101,9 +106,9 @@ export interface NavigationProviderProps {
101
106
  eventController: EventController;
102
107
 
103
108
  /**
104
- * Initial RSC payload from server
109
+ * Initial rendered tree + metadata from server payload
105
110
  */
106
- initialPayload: RscPayload;
111
+ initialPayload: NavigationUpdate;
107
112
 
108
113
  /**
109
114
  * Navigation bridge for handling navigation
@@ -121,6 +126,31 @@ export interface NavigationProviderProps {
121
126
  * Only used when themeConfig is provided
122
127
  */
123
128
  initialTheme?: Theme;
129
+
130
+ /**
131
+ * Whether connection warmup is enabled.
132
+ * When true, keeps TLS alive by sending HEAD requests after idle periods.
133
+ */
134
+ warmupEnabled?: boolean;
135
+
136
+ /**
137
+ * App version from server payload.
138
+ * Used only as a fallback when `appShellRef` is not supplied.
139
+ */
140
+ version?: string;
141
+
142
+ /**
143
+ * URL prefix for all routes (from createRouter({ basename })).
144
+ * Used only as a fallback when `appShellRef` is not supplied.
145
+ */
146
+ basename?: string;
147
+
148
+ /**
149
+ * Live app-shell ref. When provided, the context's `basename` and `version`
150
+ * properties become live getters that track app-switch updates without
151
+ * invalidating the memoized context value.
152
+ */
153
+ appShellRef?: AppShellRef;
124
154
  }
125
155
 
126
156
  /**
@@ -151,6 +181,10 @@ export function NavigationProvider({
151
181
  bridge,
152
182
  themeConfig,
153
183
  initialTheme,
184
+ warmupEnabled,
185
+ version,
186
+ basename,
187
+ appShellRef,
154
188
  }: NavigationProviderProps): ReactNode {
155
189
  // Track current payload for rendering (this triggers re-renders)
156
190
  const [payload, setPayload] = useState(initialPayload);
@@ -162,7 +196,7 @@ export function NavigationProvider({
162
196
  async (url: string, options?: NavigateOptions): Promise<void> => {
163
197
  await bridge.navigate(url, options);
164
198
  },
165
- []
199
+ [],
166
200
  );
167
201
 
168
202
  /**
@@ -172,25 +206,183 @@ export function NavigationProvider({
172
206
  await bridge.refresh();
173
207
  }, []);
174
208
 
175
- // Context value is stable (store, eventController, navigate, refresh never change)
176
- const contextValue = useMemo<NavigationStoreContextValue>(
177
- () => ({
209
+ // Context value is stable (store, eventController, navigate, refresh never
210
+ // change). When an appShellRef is supplied, `basename` and `version` are
211
+ // installed as live getters so app-switch transitions (which update the ref)
212
+ // propagate to consumers without forcing a tree-wide rerender.
213
+ const contextValue = useMemo<NavigationStoreContextValue>(() => {
214
+ if (appShellRef) {
215
+ const value = {
216
+ store,
217
+ eventController,
218
+ navigate,
219
+ refresh,
220
+ } as NavigationStoreContextValue;
221
+ Object.defineProperty(value, "basename", {
222
+ configurable: true,
223
+ enumerable: true,
224
+ get: () => appShellRef.get().basename,
225
+ });
226
+ Object.defineProperty(value, "version", {
227
+ configurable: true,
228
+ enumerable: true,
229
+ get: () => appShellRef.get().version,
230
+ });
231
+ return value;
232
+ }
233
+ return {
178
234
  store,
179
235
  eventController,
180
236
  navigate,
181
237
  refresh,
182
- }),
183
- []
184
- );
238
+ version,
239
+ basename,
240
+ };
241
+ }, []);
242
+
243
+ // Connection warmup: keep TLS alive after idle periods.
244
+ // After 60s of no user interaction, marks connection as "cold".
245
+ // On next interaction or visibility change, sends a HEAD request to warm TLS
246
+ // before the user actually clicks a link.
247
+ useEffect(() => {
248
+ if (!warmupEnabled) return;
249
+
250
+ const IDLE_TIMEOUT = 60_000;
251
+ const DEBOUNCE_DELAY = 150;
252
+
253
+ let idleTimer: ReturnType<typeof setTimeout> | undefined;
254
+ let debounceTimer: ReturnType<typeof setTimeout> | undefined;
255
+ let isCold = false;
256
+ let warmupListenersAttached = false;
257
+
258
+ function sendWarmup() {
259
+ isCold = false;
260
+ fetch("/?_rsc_warmup", { method: "HEAD" }).catch(() => {});
261
+ }
262
+
263
+ function triggerWarmup() {
264
+ if (!isCold) return;
265
+ clearTimeout(debounceTimer);
266
+ debounceTimer = setTimeout(() => {
267
+ sendWarmup();
268
+ detachWarmupListeners();
269
+ resetIdleTimer();
270
+ }, DEBOUNCE_DELAY);
271
+ }
272
+
273
+ function onVisibilityChange() {
274
+ if (document.visibilityState === "visible" && isCold) {
275
+ triggerWarmup();
276
+ }
277
+ }
278
+
279
+ function attachWarmupListeners() {
280
+ if (warmupListenersAttached) return;
281
+ warmupListenersAttached = true;
282
+ document.addEventListener("visibilitychange", onVisibilityChange);
283
+ document.addEventListener("mousemove", triggerWarmup, { once: true });
284
+ document.addEventListener("touchstart", triggerWarmup, { once: true });
285
+ }
286
+
287
+ function detachWarmupListeners() {
288
+ warmupListenersAttached = false;
289
+ document.removeEventListener("visibilitychange", onVisibilityChange);
290
+ document.removeEventListener("mousemove", triggerWarmup);
291
+ document.removeEventListener("touchstart", triggerWarmup);
292
+ }
293
+
294
+ function markCold() {
295
+ isCold = true;
296
+ attachWarmupListeners();
297
+ }
298
+
299
+ function resetIdleTimer() {
300
+ clearTimeout(idleTimer);
301
+ isCold = false;
302
+ idleTimer = setTimeout(markCold, IDLE_TIMEOUT);
303
+ }
304
+
305
+ // Activity events that reset the idle timer
306
+ const activityEvents = [
307
+ "mousemove",
308
+ "keydown",
309
+ "touchstart",
310
+ "scroll",
311
+ ] as const;
312
+ const activityOptions: AddEventListenerOptions = { passive: true };
313
+
314
+ for (const event of activityEvents) {
315
+ document.addEventListener(event, resetIdleTimer, activityOptions);
316
+ }
317
+
318
+ resetIdleTimer();
319
+
320
+ return () => {
321
+ clearTimeout(idleTimer);
322
+ clearTimeout(debounceTimer);
323
+ detachWarmupListeners();
324
+ for (const event of activityEvents) {
325
+ document.removeEventListener(event, resetIdleTimer);
326
+ }
327
+ };
328
+ }, [warmupEnabled]);
329
+
330
+ // Cancel non-matching prefetches when navigation starts.
331
+ // Frees connections so the navigation fetch isn't competing with
332
+ // speculative prefetches. The prefetch matching the navigation target
333
+ // is kept alive so it can be reused via consumeInflightPrefetch.
334
+ useEffect(() => {
335
+ let wasIdle = true;
336
+ const unsub = eventController.subscribe(() => {
337
+ const state = eventController.getState();
338
+ const isIdle = state.state === "idle" && !state.isStreaming;
339
+ if (wasIdle && !isIdle) {
340
+ cancelAllPrefetches(state.pendingUrl);
341
+ }
342
+ wasIdle = isIdle;
343
+ });
344
+ return unsub;
345
+ }, [eventController]);
346
+
347
+ // Pending scroll action to apply after React commits
348
+ const pendingScrollRef = useRef<NavigationUpdate["scroll"]>(undefined);
349
+
350
+ // Apply scroll after React commits the new content to the DOM
351
+ useLayoutEffect(() => {
352
+ const scrollAction = pendingScrollRef.current;
353
+ if (!scrollAction) return;
354
+ pendingScrollRef.current = undefined;
355
+
356
+ if (scrollAction.enabled === false) return;
357
+
358
+ handleNavigationEnd({
359
+ restore: scrollAction.restore,
360
+ scroll: scrollAction.enabled,
361
+ isStreaming: scrollAction.isStreaming,
362
+ });
363
+ });
185
364
 
186
365
  // Subscribe to UI updates (for re-rendering the tree)
187
366
  useEffect(() => {
188
367
  const unsubscribe = store.onUpdate((update) => {
368
+ // Capture scroll intent — it will be applied in useLayoutEffect
369
+ // after React commits this state update to the DOM.
370
+ // Always assign (even undefined) to clear stale scroll from prior navigations,
371
+ // so server actions or error updates don't accidentally replay old scroll.
372
+ pendingScrollRef.current = update.scroll;
373
+
189
374
  setPayload({
190
375
  root: update.root,
191
376
  metadata: update.metadata,
192
377
  });
193
378
 
379
+ // Update route params. Only reset when the server actually sends a params
380
+ // map — an absent `params` field means "no change" (e.g., legacy action
381
+ // responses that omitted params). Explicit `{}` still clears correctly.
382
+ if (update.metadata.params !== undefined) {
383
+ eventController.setParams(update.metadata.params);
384
+ }
385
+
194
386
  // Update handle data progressively as it streams in
195
387
  if (update.metadata.handles) {
196
388
  // Capture historyKey now - by the time async processing completes,
@@ -204,7 +396,7 @@ export function NavigationProvider({
204
396
  isPartial: update.metadata.isPartial,
205
397
  historyKey,
206
398
  }).catch((err) =>
207
- console.error("[NavigationProvider] Error consuming handles:", err)
399
+ console.error("[NavigationProvider] Error consuming handles:", err),
208
400
  );
209
401
  } else if (update.metadata.cachedHandleData) {
210
402
  // For back/forward navigation from cache, restore the cached handleData
@@ -212,14 +404,14 @@ export function NavigationProvider({
212
404
  eventController.setHandleData(
213
405
  update.metadata.cachedHandleData,
214
406
  update.metadata.matched,
215
- false // full replace - restore entire cached state
407
+ false, // full replace - restore entire cached state
216
408
  );
217
409
  } else if (update.metadata.matched) {
218
410
  // For cached navigations without handleData, update segmentOrder to clean up stale data
219
411
  eventController.setHandleData(
220
412
  {}, // Empty data - all existing data not in matched will be cleaned up
221
413
  update.metadata.matched,
222
- true // partial update - will clean up segments not in matched
414
+ true, // partial update - will clean up segments not in matched
223
415
  );
224
416
  }
225
417
  });
@@ -241,7 +433,11 @@ export function NavigationProvider({
241
433
  // Build the content tree
242
434
  let content = <RootErrorBoundary>{root}</RootErrorBoundary>;
243
435
 
244
- // Wrap with ThemeProvider when theme is enabled
436
+ // Wrap with ThemeProvider when theme is enabled. The ThemeProvider is
437
+ // document-lifetime: its config comes from the initial load and does NOT
438
+ // swap on cross-app transitions, because the ThemeProvider sits above the
439
+ // segment tree and a smooth (no-reload) app switch cannot safely remount
440
+ // it. A new theme config only takes effect on a full document load.
245
441
  if (themeConfig) {
246
442
  content = (
247
443
  <ThemeProvider config={themeConfig} initialTheme={initialTheme}>
@@ -250,22 +446,12 @@ export function NavigationProvider({
250
446
  );
251
447
  }
252
448
 
253
- // Build href context value from metadata (routeMap and routeName)
254
- // This enables useHref() to resolve local route names with the current prefix
255
- const hrefContextValue = useMemo<HrefContextValue | null>(() => {
256
- const { routeMap, routeName } = payload.metadata || {};
257
- if (!routeMap) return null;
258
- return { routeMap, routeName };
259
- }, [payload.metadata?.routeMap, payload.metadata?.routeName]);
260
-
261
- // Wrap with HrefContext when routeMap is available
262
- if (hrefContextValue) {
263
- content = (
264
- <HrefContext.Provider value={hrefContextValue}>
265
- {content}
266
- </HrefContext.Provider>
267
- );
268
- }
449
+ // Match SSR tree shape: NonceContext.Provider is always present so
450
+ // hydration sees the same component tree. Value is undefined on the
451
+ // client CSP nonces are a server-side HTML concern.
452
+ content = (
453
+ <NonceContext.Provider value={undefined}>{content}</NonceContext.Provider>
454
+ );
269
455
 
270
456
  return (
271
457
  <NavigationStoreContext.Provider value={contextValue}>
@@ -41,6 +41,17 @@ export interface NavigationStoreContextValue {
41
41
  * @returns Promise that resolves when refresh is complete
42
42
  */
43
43
  refresh: () => Promise<void>;
44
+
45
+ /**
46
+ * App version from the initial server payload.
47
+ */
48
+ version: string | undefined;
49
+
50
+ /**
51
+ * URL prefix for all routes (from createRouter({ basename })).
52
+ * Used by Link and useRouter() to auto-prefix app-local paths.
53
+ */
54
+ basename: string | undefined;
44
55
  }
45
56
 
46
57
  /**
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Filter segment IDs to only include routes and layouts.
3
+ * Excludes parallels (contain .@) and loaders (contain D followed by digit).
4
+ */
5
+ export function filterSegmentOrder(matched: string[]): string[] {
6
+ return matched.filter((id) => {
7
+ if (id.includes(".@")) return false;
8
+ if (/D\d+\./.test(id)) return false;
9
+ return true;
10
+ });
11
+ }
@@ -1,20 +1,24 @@
1
1
  // React exports for browser navigation
2
2
 
3
3
  // Hook with Zustand-style selectors
4
- export {
5
- useNavigation,
6
- type NavigationMethods,
7
- type NavigationValue,
8
- } from "./use-navigation.js";
4
+ export { useNavigation } from "./use-navigation.js";
5
+
6
+ // Router actions hook (stable reference, no re-renders)
7
+ export { useRouter } from "./use-router.js";
8
+
9
+ // URL hooks
10
+ export { usePathname } from "./use-pathname.js";
11
+ export { useSearchParams } from "./use-search-params.js";
12
+ export { useParams } from "./use-params.js";
9
13
 
10
14
  // Action state tracking hook
11
15
  export { useAction, type TrackedActionState } from "./use-action.js";
12
16
 
13
17
  // Segments state hook
14
- export { useSegments, initSegmentsSync, type SegmentsState } from "./use-segments.js";
18
+ export { useSegments, type SegmentsState } from "./use-segments.js";
15
19
 
16
20
  // Handle data hook
17
- export { useHandle, initHandleDataSync } from "./use-handle.js";
21
+ export { useHandle } from "./use-handle.js";
18
22
 
19
23
  // Client cache controls hook
20
24
  export {
@@ -35,11 +39,7 @@ export {
35
39
  } from "./context.js";
36
40
 
37
41
  // Link component
38
- export {
39
- Link,
40
- type LinkProps,
41
- type PrefetchStrategy,
42
- } from "./Link.js";
42
+ export { Link, type LinkProps, type PrefetchStrategy } from "./Link.js";
43
43
 
44
44
  // Link status hook
45
45
  export { useLinkStatus, type LinkStatus } from "./use-link-status.js";
@@ -4,11 +4,22 @@
4
4
  */
5
5
 
6
6
  /**
7
- * Internal entry representing a state value with its unique key
7
+ * Internal entry representing a state value with its unique key.
8
+ * When __rsc_ls_lazy is true, __rsc_ls_value holds a getter function
9
+ * that is called at navigation time (not at entry creation time).
8
10
  */
9
11
  export interface LocationStateEntry {
10
12
  readonly __rsc_ls_key: string;
11
13
  readonly __rsc_ls_value: unknown;
14
+ readonly __rsc_ls_lazy?: boolean;
15
+ }
16
+
17
+ /**
18
+ * Options for createLocationState
19
+ */
20
+ export interface LocationStateOptions {
21
+ /** When true, the state is cleared from history after first read (flash message pattern) */
22
+ flash?: boolean;
12
23
  }
13
24
 
14
25
  /**
@@ -19,84 +30,113 @@ export interface LocationStateEntry {
19
30
  */
20
31
  export interface LocationStateDefinition<TArgs extends unknown[], TState> {
21
32
  (...args: TArgs): LocationStateEntry;
22
- readonly __rsc_ls_key: string;
33
+ /** Injected by Vite plugin - do not set manually */
34
+ __rsc_ls_key: string;
35
+ /** Whether this state auto-clears after first read */
36
+ readonly __rsc_ls_flash: boolean;
37
+ /** Read the current value from history.state (client-side only, undefined during SSR) */
38
+ read(): TState | undefined;
23
39
  }
24
40
 
25
- // Track used keys to detect duplicates in development
26
- const usedKeys = new Set<string>();
27
-
28
41
  /**
29
42
  * Create a type-safe location state definition
30
43
  *
31
- * The key is auto-generated by the Vite exposeLocationStateId plugin based on
32
- * file path and export name. No manual key required.
44
+ * The key is auto-injected by the Vite exposeInternalIds plugin as a property
45
+ * based on file path and export name. No manual key required.
33
46
  *
34
- * @param key Auto-injected by Vite plugin, do not provide manually
47
+ * @param options Optional configuration
35
48
  * @returns A typed state definition for use with Link and useLocationState
36
49
  *
37
50
  * @example
38
51
  * ```typescript
39
- * // Define typed state (key auto-generated from file + export)
52
+ * // Persistent state (survives back/forward)
40
53
  * export const ProductState = createLocationState<{ name: string; price: number }>();
41
54
  *
42
- * // Use in Link - state is captured at click time
43
- * <Link to="/product/123" state={[ProductState({ name: product.name, price: product.price })]}>
44
- * View Product
45
- * </Link>
55
+ * // Flash state (cleared after first read)
56
+ * export const FlashMessage = createLocationState<{ text: string }>({ flash: true });
46
57
  *
47
- * // Multiple states
48
- * <Link to="/checkout" state={[ProductState(productData), CartState(cartData)]}>
49
- * Checkout
50
- * </Link>
58
+ * // Use in Link
59
+ * <Link to="/product/123" state={[ProductState({ name: "Widget", price: 9.99 })]}>
51
60
  *
52
- * // For lazy evaluation (click-time), pass a getter
53
- * <Link to="/product" state={[ProductState(() => ({ name: product.name }))]}>
61
+ * // Just-in-time typed state (getter called at click time, not render time).
62
+ * // Must be in a client component — the getter function can't cross the RSC boundary.
63
+ * <Link
64
+ * to="/product/123"
65
+ * state={[ProductState(() => ({ name: product.name, price: product.price }))]}
66
+ * >
54
67
  *
55
- * // Read with type safety
56
- * const productState = useLocationState(ProductState);
57
- * // productState: { name: string; price: number } | undefined
68
+ * // Read with hook (reactive)
69
+ * const product = useLocationState(ProductState);
70
+ *
71
+ * // Read without hook (snapshot, client-side only)
72
+ * const snap = ProductState.read();
58
73
  * ```
59
74
  */
60
75
  export function createLocationState<TState>(
61
- key?: string
76
+ options?: LocationStateOptions,
62
77
  ): LocationStateDefinition<[TState | (() => TState)], TState> {
63
- if (!key && process.env.NODE_ENV !== "production") {
64
- console.warn(
65
- "[rsc-router] createLocationState is missing a key. " +
66
- "Make sure the exposeLocationStateId Vite plugin is enabled and " +
67
- "the state is exported with: export const MyState = createLocationState(...)"
68
- );
69
- }
70
- const fullKey = `__rsc_ls_${key}`;
78
+ const flash = options?.flash ?? false;
79
+ let _key: string | undefined;
71
80
 
72
- // Warn about duplicate keys in development
73
- if (process.env.NODE_ENV !== "production" && usedKeys.has(fullKey)) {
74
- console.warn(
75
- `[rsc-router] Duplicate location state key "${key}". ` +
76
- `Each createLocationState call should have a unique key.`
77
- );
81
+ function getKey(): string {
82
+ if (!_key && process.env.NODE_ENV === "development") {
83
+ throw new Error(
84
+ "[rsc-router] createLocationState key not set. " +
85
+ "Make sure the exposeInternalIds Vite plugin is enabled and " +
86
+ "the state is exported with: export const MyState = createLocationState(...)",
87
+ );
88
+ }
89
+ return _key!;
78
90
  }
79
- usedKeys.add(fullKey);
80
91
 
81
- const definition = Object.assign(
82
- (stateOrGetter: TState | (() => TState)): LocationStateEntry => ({
83
- __rsc_ls_key: fullKey,
84
- // Resolve getter immediately - lazy evaluation happens via Link's stateRef pattern
85
- __rsc_ls_value:
86
- typeof stateOrGetter === "function"
87
- ? (stateOrGetter as () => TState)()
88
- : stateOrGetter,
89
- }),
90
- { __rsc_ls_key: fullKey }
91
- );
92
+ const fn = (stateOrGetter: TState | (() => TState)): LocationStateEntry => {
93
+ if (typeof stateOrGetter === "function") {
94
+ // Store getter as-is; resolved at navigation time by resolveLocationStateEntries()
95
+ return {
96
+ __rsc_ls_key: getKey(),
97
+ __rsc_ls_value: stateOrGetter,
98
+ __rsc_ls_lazy: true,
99
+ };
100
+ }
101
+ return {
102
+ __rsc_ls_key: getKey(),
103
+ __rsc_ls_value: stateOrGetter,
104
+ };
105
+ };
106
+
107
+ // Use defineProperty for __rsc_ls_key to avoid Object.assign evaluating
108
+ // the getter during construction (before the Vite plugin sets the key).
109
+ Object.defineProperty(fn, "__rsc_ls_key", {
110
+ get: () => getKey(),
111
+ set: (k: string) => {
112
+ _key = k;
113
+ },
114
+ enumerable: true,
115
+ configurable: true,
116
+ });
117
+
118
+ Object.defineProperty(fn, "__rsc_ls_flash", {
119
+ value: flash,
120
+ enumerable: true,
121
+ });
122
+
123
+ Object.defineProperty(fn, "read", {
124
+ value: (): TState | undefined => {
125
+ if (typeof window === "undefined") return undefined;
126
+ return window.history.state?.[getKey()] as TState | undefined;
127
+ },
128
+ enumerable: true,
129
+ });
92
130
 
93
- return definition as LocationStateDefinition<[TState | (() => TState)], TState>;
131
+ return fn as LocationStateDefinition<[TState | (() => TState)], TState>;
94
132
  }
95
133
 
96
134
  /**
97
135
  * Check if a value is a LocationStateEntry
98
136
  */
99
- export function isLocationStateEntry(value: unknown): value is LocationStateEntry {
137
+ export function isLocationStateEntry(
138
+ value: unknown,
139
+ ): value is LocationStateEntry {
100
140
  return (
101
141
  value !== null &&
102
142
  typeof value === "object" &&
@@ -110,11 +150,13 @@ export function isLocationStateEntry(value: unknown): value is LocationStateEntr
110
150
  * Resolve state entries into a flat object for history.state
111
151
  */
112
152
  export function resolveLocationStateEntries(
113
- entries: LocationStateEntry[]
153
+ entries: LocationStateEntry[],
114
154
  ): Record<string, unknown> {
115
155
  const result: Record<string, unknown> = {};
116
156
  for (const entry of entries) {
117
- result[entry.__rsc_ls_key] = entry.__rsc_ls_value;
157
+ result[entry.__rsc_ls_key] = entry.__rsc_ls_lazy
158
+ ? (entry.__rsc_ls_value as () => unknown)()
159
+ : entry.__rsc_ls_value;
118
160
  }
119
161
  return result;
120
162
  }