@rangojs/router 0.0.0-experimental.8ff1c5d → 0.0.0-experimental.90

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 (1126) 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/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 +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 +5643 -981
  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/{src/vite/package-resolution.ts → dist/vite/package-resolution.js} +53 -66
  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} +12 -16
  809. package/dist/vite/virtual-entries.js.map +1 -0
  810. package/package.json +72 -52
  811. package/skills/breadcrumbs/SKILL.md +252 -0
  812. package/skills/cache-guide/SKILL.md +294 -0
  813. package/skills/caching/SKILL.md +93 -23
  814. package/skills/composability/SKILL.md +172 -0
  815. package/skills/debug-manifest/SKILL.md +12 -8
  816. package/skills/document-cache/SKILL.md +18 -16
  817. package/skills/fonts/SKILL.md +167 -0
  818. package/skills/handler-use/SKILL.md +362 -0
  819. package/skills/hooks/SKILL.md +341 -71
  820. package/skills/host-router/SKILL.md +218 -0
  821. package/skills/intercept/SKILL.md +151 -8
  822. package/skills/layout/SKILL.md +122 -3
  823. package/skills/links/SKILL.md +166 -33
  824. package/skills/loader/SKILL.md +439 -46
  825. package/skills/middleware/SKILL.md +205 -37
  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 +263 -1
  830. package/skills/prerender/SKILL.md +685 -0
  831. package/skills/rango/SKILL.md +87 -16
  832. package/skills/response-routes/SKILL.md +419 -0
  833. package/skills/route/SKILL.md +281 -14
  834. package/skills/router-setup/SKILL.md +210 -32
  835. package/skills/streams-and-websockets/SKILL.md +283 -0
  836. package/skills/tailwind/SKILL.md +129 -0
  837. package/skills/theme/SKILL.md +9 -8
  838. package/skills/typesafety/SKILL.md +329 -88
  839. package/skills/use-cache/SKILL.md +324 -0
  840. package/src/__internal.ts +102 -4
  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 +367 -561
  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 +362 -316
  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 +132 -17
  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 +6 -1
  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 -126
  878. package/src/browser/react/use-href.tsx +2 -2
  879. package/src/browser/react/use-link-status.ts +6 -5
  880. package/src/browser/react/use-navigation.ts +44 -65
  881. package/src/browser/react/use-params.ts +75 -0
  882. package/src/browser/react/use-pathname.ts +47 -0
  883. package/src/browser/react/use-router.ts +83 -0
  884. package/src/browser/react/use-search-params.ts +56 -0
  885. package/src/browser/react/use-segments.ts +80 -97
  886. package/src/browser/response-adapter.ts +73 -0
  887. package/src/browser/rsc-router.tsx +246 -62
  888. package/src/browser/scroll-restoration.ts +127 -52
  889. package/src/browser/segment-reconciler.ts +243 -0
  890. package/src/browser/segment-structure-assert.ts +16 -0
  891. package/src/browser/server-action-bridge.ts +510 -603
  892. package/src/browser/shallow.ts +6 -1
  893. package/src/browser/types.ts +154 -48
  894. package/src/browser/validate-redirect-origin.ts +29 -0
  895. package/src/build/generate-manifest.ts +235 -24
  896. package/src/build/generate-route-types.ts +39 -0
  897. package/src/build/index.ts +13 -0
  898. package/src/build/route-trie.ts +291 -0
  899. package/src/build/route-types/ast-helpers.ts +25 -0
  900. package/src/build/route-types/ast-route-extraction.ts +98 -0
  901. package/src/build/route-types/codegen.ts +102 -0
  902. package/src/build/route-types/include-resolution.ts +418 -0
  903. package/src/build/route-types/param-extraction.ts +48 -0
  904. package/src/build/route-types/per-module-writer.ts +128 -0
  905. package/src/build/route-types/router-processing.ts +618 -0
  906. package/src/build/route-types/scan-filter.ts +85 -0
  907. package/src/build/runtime-discovery.ts +231 -0
  908. package/src/cache/background-task.ts +34 -0
  909. package/src/cache/cache-key-utils.ts +44 -0
  910. package/src/cache/cache-policy.ts +125 -0
  911. package/src/cache/cache-runtime.ts +342 -0
  912. package/src/cache/cache-scope.ts +167 -309
  913. package/src/cache/cf/cf-cache-store.ts +573 -21
  914. package/src/cache/cf/index.ts +13 -3
  915. package/src/cache/document-cache.ts +116 -77
  916. package/src/cache/handle-capture.ts +81 -0
  917. package/src/cache/handle-snapshot.ts +41 -0
  918. package/src/cache/index.ts +1 -15
  919. package/src/cache/memory-segment-store.ts +191 -13
  920. package/src/cache/profile-registry.ts +73 -0
  921. package/src/cache/read-through-swr.ts +134 -0
  922. package/src/cache/segment-codec.ts +256 -0
  923. package/src/cache/taint.ts +153 -0
  924. package/src/cache/types.ts +72 -122
  925. package/src/client.rsc.tsx +3 -1
  926. package/src/client.tsx +135 -301
  927. package/src/component-utils.ts +4 -4
  928. package/src/components/DefaultDocument.tsx +5 -1
  929. package/src/context-var.ts +156 -0
  930. package/src/debug.ts +19 -9
  931. package/src/errors.ts +108 -2
  932. package/src/handle.ts +55 -29
  933. package/src/handles/MetaTags.tsx +73 -20
  934. package/src/handles/breadcrumbs.ts +66 -0
  935. package/src/handles/index.ts +1 -0
  936. package/src/handles/meta.ts +30 -13
  937. package/src/host/cookie-handler.ts +165 -0
  938. package/src/host/errors.ts +97 -0
  939. package/src/host/index.ts +53 -0
  940. package/src/host/pattern-matcher.ts +214 -0
  941. package/src/host/router.ts +352 -0
  942. package/src/host/testing.ts +79 -0
  943. package/src/host/types.ts +146 -0
  944. package/src/host/utils.ts +25 -0
  945. package/src/href-client.ts +119 -29
  946. package/src/index.rsc.ts +158 -19
  947. package/src/index.ts +254 -30
  948. package/src/internal-debug.ts +11 -0
  949. package/src/loader.rsc.ts +26 -157
  950. package/src/loader.ts +27 -10
  951. package/src/network-error-thrower.tsx +3 -1
  952. package/src/outlet-context.ts +1 -1
  953. package/src/outlet-provider.tsx +45 -0
  954. package/src/prerender/param-hash.ts +37 -0
  955. package/src/prerender/store.ts +186 -0
  956. package/src/prerender.ts +524 -0
  957. package/src/response-utils.ts +28 -0
  958. package/src/reverse.ts +355 -0
  959. package/src/root-error-boundary.tsx +41 -29
  960. package/src/route-content-wrapper.tsx +7 -4
  961. package/src/route-definition/dsl-helpers.ts +1134 -0
  962. package/src/route-definition/helper-factories.ts +200 -0
  963. package/src/route-definition/helpers-types.ts +478 -0
  964. package/src/route-definition/index.ts +55 -0
  965. package/src/route-definition/redirect.ts +101 -0
  966. package/src/route-definition/resolve-handler-use.ts +155 -0
  967. package/src/route-definition.ts +1 -1428
  968. package/src/route-map-builder.ts +217 -123
  969. package/src/route-name.ts +53 -0
  970. package/src/route-types.ts +77 -8
  971. package/src/router/content-negotiation.ts +215 -0
  972. package/src/router/debug-manifest.ts +72 -0
  973. package/src/router/error-handling.ts +9 -9
  974. package/src/router/find-match.ts +160 -0
  975. package/src/router/handler-context.ts +455 -86
  976. package/src/router/intercept-resolution.ts +402 -0
  977. package/src/router/lazy-includes.ts +237 -0
  978. package/src/router/loader-resolution.ts +359 -128
  979. package/src/router/logging.ts +251 -0
  980. package/src/router/manifest.ts +163 -35
  981. package/src/router/match-api.ts +555 -0
  982. package/src/router/match-context.ts +5 -3
  983. package/src/router/match-handlers.ts +440 -0
  984. package/src/router/match-middleware/background-revalidation.ts +108 -93
  985. package/src/router/match-middleware/cache-lookup.ts +460 -10
  986. package/src/router/match-middleware/cache-store.ts +98 -26
  987. package/src/router/match-middleware/intercept-resolution.ts +57 -17
  988. package/src/router/match-middleware/segment-resolution.ts +80 -6
  989. package/src/router/match-pipelines.ts +10 -45
  990. package/src/router/match-result.ts +135 -35
  991. package/src/router/metrics.ts +240 -15
  992. package/src/router/middleware-cookies.ts +55 -0
  993. package/src/router/middleware-types.ts +200 -0
  994. package/src/router/middleware.ts +373 -371
  995. package/src/router/navigation-snapshot.ts +182 -0
  996. package/src/router/pattern-matching.ts +265 -46
  997. package/src/router/prerender-match.ts +502 -0
  998. package/src/router/preview-match.ts +98 -0
  999. package/src/router/request-classification.ts +310 -0
  1000. package/src/router/revalidation.ts +137 -38
  1001. package/src/router/route-snapshot.ts +245 -0
  1002. package/src/router/router-context.ts +41 -21
  1003. package/src/router/router-interfaces.ts +484 -0
  1004. package/src/router/router-options.ts +618 -0
  1005. package/src/router/router-registry.ts +24 -0
  1006. package/src/router/segment-resolution/fresh.ts +748 -0
  1007. package/src/router/segment-resolution/helpers.ts +268 -0
  1008. package/src/router/segment-resolution/loader-cache.ts +199 -0
  1009. package/src/router/segment-resolution/revalidation.ts +1379 -0
  1010. package/src/router/segment-resolution/static-store.ts +67 -0
  1011. package/src/router/segment-resolution.ts +21 -0
  1012. package/src/router/segment-wrappers.ts +291 -0
  1013. package/src/router/telemetry-otel.ts +299 -0
  1014. package/src/router/telemetry.ts +300 -0
  1015. package/src/router/timeout.ts +148 -0
  1016. package/src/router/trie-matching.ts +245 -0
  1017. package/src/router/types.ts +78 -3
  1018. package/src/router/url-params.ts +49 -0
  1019. package/src/router.ts +741 -4254
  1020. package/src/rsc/handler-context.ts +45 -0
  1021. package/src/rsc/handler.ts +912 -798
  1022. package/src/rsc/helpers.ts +181 -19
  1023. package/src/rsc/index.ts +0 -20
  1024. package/src/rsc/loader-fetch.ts +229 -0
  1025. package/src/rsc/manifest-init.ts +90 -0
  1026. package/src/rsc/nonce.ts +14 -0
  1027. package/src/rsc/origin-guard.ts +141 -0
  1028. package/src/rsc/progressive-enhancement.ts +393 -0
  1029. package/src/rsc/response-error.ts +37 -0
  1030. package/src/rsc/response-route-handler.ts +360 -0
  1031. package/src/rsc/rsc-rendering.ts +253 -0
  1032. package/src/rsc/runtime-warnings.ts +42 -0
  1033. package/src/rsc/server-action.ts +358 -0
  1034. package/src/rsc/ssr-setup.ts +128 -0
  1035. package/src/rsc/types.ts +46 -11
  1036. package/src/search-params.ts +230 -0
  1037. package/src/segment-content-promise.ts +67 -0
  1038. package/src/segment-loader-promise.ts +122 -0
  1039. package/src/segment-system.tsx +134 -36
  1040. package/src/server/context.ts +341 -61
  1041. package/src/server/cookie-store.ts +190 -0
  1042. package/src/server/fetchable-loader-store.ts +37 -0
  1043. package/src/server/handle-store.ts +113 -15
  1044. package/src/server/loader-registry.ts +24 -64
  1045. package/src/server/request-context.ts +603 -109
  1046. package/src/server.ts +35 -130
  1047. package/src/ssr/index.tsx +103 -30
  1048. package/src/static-handler.ts +126 -0
  1049. package/src/theme/ThemeProvider.tsx +21 -15
  1050. package/src/theme/ThemeScript.tsx +5 -5
  1051. package/src/theme/constants.ts +5 -2
  1052. package/src/theme/index.ts +4 -14
  1053. package/src/theme/theme-context.ts +4 -30
  1054. package/src/theme/theme-script.ts +21 -18
  1055. package/src/types/boundaries.ts +158 -0
  1056. package/src/types/cache-types.ts +198 -0
  1057. package/src/types/error-types.ts +192 -0
  1058. package/src/types/global-namespace.ts +100 -0
  1059. package/src/types/handler-context.ts +759 -0
  1060. package/src/types/index.ts +88 -0
  1061. package/src/types/loader-types.ts +209 -0
  1062. package/src/types/request-scope.ts +126 -0
  1063. package/src/types/route-config.ts +170 -0
  1064. package/src/types/route-entry.ts +120 -0
  1065. package/src/types/segments.ts +150 -0
  1066. package/src/types.ts +1 -1623
  1067. package/src/urls/include-helper.ts +207 -0
  1068. package/src/urls/index.ts +53 -0
  1069. package/src/urls/path-helper-types.ts +372 -0
  1070. package/src/urls/path-helper.ts +364 -0
  1071. package/src/urls/pattern-types.ts +107 -0
  1072. package/src/urls/response-types.ts +108 -0
  1073. package/src/urls/type-extraction.ts +372 -0
  1074. package/src/urls/urls-function.ts +98 -0
  1075. package/src/urls.ts +1 -802
  1076. package/src/use-loader.tsx +161 -81
  1077. package/src/vite/debug.ts +184 -0
  1078. package/src/vite/discovery/bundle-postprocess.ts +181 -0
  1079. package/src/vite/discovery/discover-routers.ts +376 -0
  1080. package/src/vite/discovery/prerender-collection.ts +486 -0
  1081. package/src/vite/discovery/route-types-writer.ts +258 -0
  1082. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1083. package/src/vite/discovery/state.ts +117 -0
  1084. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1085. package/src/vite/index.ts +15 -1076
  1086. package/src/vite/plugin-types.ts +103 -0
  1087. package/src/vite/plugins/cjs-to-esm.ts +98 -0
  1088. package/src/vite/plugins/client-ref-dedup.ts +131 -0
  1089. package/src/vite/plugins/client-ref-hashing.ts +117 -0
  1090. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1091. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1092. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  1093. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +107 -64
  1094. package/src/vite/plugins/expose-id-utils.ts +299 -0
  1095. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1096. package/src/vite/plugins/expose-ids/handler-transform.ts +209 -0
  1097. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1098. package/src/vite/plugins/expose-ids/router-transform.ts +127 -0
  1099. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1100. package/src/vite/plugins/expose-internal-ids.ts +816 -0
  1101. package/src/vite/plugins/performance-tracks.ts +96 -0
  1102. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1103. package/src/vite/plugins/use-cache-transform.ts +336 -0
  1104. package/src/vite/plugins/version-injector.ts +83 -0
  1105. package/src/vite/plugins/version-plugin.ts +266 -0
  1106. package/src/vite/plugins/virtual-entries.ts +123 -0
  1107. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1108. package/src/vite/rango.ts +497 -0
  1109. package/src/vite/router-discovery.ts +1111 -0
  1110. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1111. package/src/vite/utils/banner.ts +36 -0
  1112. package/src/vite/utils/bundle-analysis.ts +137 -0
  1113. package/src/vite/utils/manifest-utils.ts +70 -0
  1114. package/src/vite/utils/package-resolution.ts +161 -0
  1115. package/src/vite/utils/prerender-utils.ts +221 -0
  1116. package/src/vite/utils/shared-utils.ts +170 -0
  1117. package/CLAUDE.md +0 -43
  1118. package/src/browser/lru-cache.ts +0 -69
  1119. package/src/browser/request-controller.ts +0 -164
  1120. package/src/cache/memory-store.ts +0 -253
  1121. package/src/href.ts +0 -255
  1122. package/src/server/route-manifest-cache.ts +0 -173
  1123. package/src/vite/expose-handle-id.ts +0 -209
  1124. package/src/vite/expose-loader-id.ts +0 -426
  1125. package/src/vite/expose-location-state-id.ts +0 -177
  1126. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -26,7 +26,12 @@ export function shallow<T>(a: T, b: T): boolean {
26
26
 
27
27
  // Check each key's value with Object.is
28
28
  for (const key of keysA) {
29
- if (!Object.is((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key])) {
29
+ if (
30
+ !Object.is(
31
+ (a as Record<string, unknown>)[key],
32
+ (b as Record<string, unknown>)[key],
33
+ )
34
+ ) {
30
35
  return false;
31
36
  }
32
37
  }
@@ -8,10 +8,10 @@ import type { RenderSegmentsOptions } from "../segment-system.js";
8
8
  // ============================================================================
9
9
 
10
10
  /**
11
- * RSC payload received from server
11
+ * RSC payload received from server.
12
+ * The tree is reconstructed from metadata.segments by the browser bridges.
12
13
  */
13
14
  export interface RscPayload<TMetadata = RscMetadata> {
14
- root: ReactNode | Promise<ReactNode> | null;
15
15
  metadata?: TMetadata;
16
16
  returnValue?: ActionResult;
17
17
  formState?: unknown;
@@ -32,10 +32,15 @@ export type HandleData = Record<string, Record<string, unknown[]>>;
32
32
  export interface RscMetadata {
33
33
  pathname: string;
34
34
  segments: ResolvedSegment[];
35
+ /** Router instance ID. When this changes between navigations, the client
36
+ * forces a full tree replacement (app switch via host router). */
37
+ routerId?: string;
35
38
  isPartial?: boolean;
36
39
  isError?: boolean;
37
40
  matched?: string[];
38
41
  diff?: string[];
42
+ /** Merged route params from the matched route */
43
+ params?: Record<string, string>;
39
44
  /**
40
45
  * State of named slots for this route match
41
46
  * Key is slot name (e.g., "@modal"), value is slot state
@@ -53,6 +58,11 @@ export interface RscMetadata {
53
58
  * Used to detect version mismatches after HMR/deployment.
54
59
  */
55
60
  version?: string;
61
+ /**
62
+ * TTL in milliseconds for the client-side in-memory prefetch cache.
63
+ * Sent on initial render so the browser can configure its cache duration.
64
+ */
65
+ prefetchCacheTTL?: number;
56
66
  /**
57
67
  * Theme configuration from router.
58
68
  * Included when theme is enabled in router config.
@@ -63,8 +73,14 @@ export interface RscMetadata {
63
73
  * Included when theme is enabled in router config.
64
74
  */
65
75
  initialTheme?: Theme;
76
+ /** URL prefix for all routes (from createRouter({ basename })). */
77
+ basename?: string;
66
78
  /** Whether connection warmup is enabled */
67
79
  warmupEnabled?: boolean;
80
+ /** Server-side redirect with optional state (for partial requests) */
81
+ redirect?: { url: string };
82
+ /** Server-set location state to include in history.pushState */
83
+ locationState?: Record<string, unknown>;
68
84
  }
69
85
 
70
86
  /**
@@ -115,7 +131,7 @@ export interface NavigationState {
115
131
  /** Whether RSC data is currently streaming (initial load or navigation) */
116
132
  isStreaming: boolean;
117
133
 
118
- /** Current location (updated optimistically) */
134
+ /** Current location */
119
135
  location: NavigationLocation;
120
136
 
121
137
  /** URL being navigated to (null when idle) */
@@ -172,7 +188,7 @@ export type ActionStateListener = (state: TrackedActionState) => void;
172
188
 
173
189
  /**
174
190
  * Cache interface for storing segments
175
- * Compatible with both Map and LRUCache
191
+ * Compatible with Map
176
192
  *
177
193
  * @internal This type is an implementation detail and may change without notice.
178
194
  */
@@ -204,14 +220,25 @@ export interface SegmentState {
204
220
  export interface NavigationUpdate {
205
221
  root: ReactNode | Promise<ReactNode>;
206
222
  metadata: RscMetadata;
223
+ /** Scroll behavior to apply after React commits this update */
224
+ scroll?: {
225
+ /** For back/forward: restore saved position */
226
+ restore?: boolean;
227
+ /** Set to false to disable scrolling entirely */
228
+ enabled?: boolean;
229
+ /** Function to check if streaming is in progress */
230
+ isStreaming?: () => boolean;
231
+ };
207
232
  }
208
233
 
209
234
  /**
210
235
  * State value for navigate/Link
211
236
  * - LocationStateEntry[]: Type-safe state entries (recommended)
212
- * - unknown: Legacy format for backwards compatibility
237
+ * - unknown: Plain state format (object or getter function)
213
238
  */
214
- export type HistoryState = import("./react/location-state-shared.js").LocationStateEntry[] | unknown;
239
+ export type HistoryState =
240
+ | import("./react/location-state-shared.js").LocationStateEntry[]
241
+ | unknown;
215
242
 
216
243
  /**
217
244
  * Options for navigation operations
@@ -219,6 +246,25 @@ export type HistoryState = import("./react/location-state-shared.js").LocationSt
219
246
  export interface NavigateOptions {
220
247
  replace?: boolean;
221
248
  scroll?: boolean;
249
+ /**
250
+ * Whether to revalidate server data on navigation.
251
+ * Set to `false` to skip the RSC server fetch and only update the URL.
252
+ *
253
+ * Only takes effect when the pathname stays the same (search param / hash changes).
254
+ * If the pathname changes, this option is ignored and a full navigation occurs.
255
+ *
256
+ * All location-aware hooks (`useSearchParams`, `useNavigation`, etc.) still update.
257
+ * Server components do not re-render.
258
+ *
259
+ * @default true
260
+ *
261
+ * @example
262
+ * ```tsx
263
+ * router.push("/products?color=blue", { revalidate: false });
264
+ * router.replace("/products?page=3", { revalidate: false });
265
+ * ```
266
+ */
267
+ revalidate?: boolean;
222
268
  /**
223
269
  * State to pass to history.pushState/replaceState
224
270
  * Accessible via useLocationState() hook.
@@ -226,19 +272,67 @@ export interface NavigateOptions {
226
272
  * @example
227
273
  * ```tsx
228
274
  * // Type-safe state (recommended)
229
- * const ProductState = createLocationState<{ name: string }>("product");
275
+ * const ProductState = createLocationState<{ name: string }>();
230
276
  * navigate("/product/123", { state: [ProductState({ name: "Widget" })] });
231
277
  *
278
+ * // Type-safe just-in-time state (getter called at navigation time)
279
+ * navigate("/product/123", {
280
+ * state: [ProductState(() => ({ name: computeName() }))],
281
+ * });
282
+ *
232
283
  * // Multiple states
233
284
  * navigate("/checkout", { state: [ProductState(p), CartState(c)] });
234
285
  *
235
- * // Legacy format (backwards compatible)
286
+ * // Plain static state
236
287
  * navigate("/product", { state: { from: "list" } });
288
+ *
289
+ * // Plain just-in-time state
290
+ * navigate("/product", { state: () => ({ from: window.location.pathname }) });
237
291
  * ```
238
292
  */
239
293
  state?: HistoryState;
240
294
  }
241
295
 
296
+ /** @internal Extended options used only within the navigation bridge */
297
+ export interface NavigateOptionsInternal extends NavigateOptions {
298
+ /** Skip segment cache (used by redirect-with-state to force re-render) */
299
+ _skipCache?: boolean;
300
+ }
301
+
302
+ /**
303
+ * Options for useRouter push/replace methods.
304
+ * Same as NavigateOptions but without `replace` (implicit in push vs replace).
305
+ */
306
+ export type RouterNavigateOptions = Omit<NavigateOptions, "replace">;
307
+
308
+ /**
309
+ * Router instance returned by useRouter hook.
310
+ * Provides stable action methods that never cause re-renders.
311
+ */
312
+ export interface RouterInstance {
313
+ /** Navigate to a URL, pushing a new entry to the history stack */
314
+ push(url: string, options?: RouterNavigateOptions): Promise<void>;
315
+ /** Navigate to a URL, replacing the current history entry */
316
+ replace(url: string, options?: RouterNavigateOptions): Promise<void>;
317
+ /** Refresh the current route (re-fetch server data, preserve client state) */
318
+ refresh(): Promise<void>;
319
+ /** Prefetch a URL for faster client-side transition */
320
+ prefetch(url: string): void;
321
+ /** Go back in browser history */
322
+ back(): void;
323
+ /** Go forward in browser history */
324
+ forward(): void;
325
+ }
326
+
327
+ /**
328
+ * URLSearchParams without mutation methods.
329
+ * Matches Next.js convention for useSearchParams return type.
330
+ */
331
+ export type ReadonlyURLSearchParams = Omit<
332
+ URLSearchParams,
333
+ "append" | "delete" | "set" | "sort"
334
+ >;
335
+
242
336
  // ============================================================================
243
337
  // RSC Browser Dependencies
244
338
  // ============================================================================
@@ -252,15 +346,21 @@ export interface NavigateOptions {
252
346
  export interface RscBrowserDependencies {
253
347
  createFromFetch: <T>(
254
348
  response: Promise<Response>,
255
- options?: { temporaryReferences?: any }
349
+ options?: {
350
+ temporaryReferences?: any;
351
+ findSourceMapURL?: (
352
+ filename: string,
353
+ environmentName: string,
354
+ ) => string | null;
355
+ },
256
356
  ) => Promise<T>;
257
357
  createFromReadableStream: <T>(stream: ReadableStream) => Promise<T>;
258
358
  encodeReply: (
259
359
  args: any[],
260
- options?: { temporaryReferences?: any }
360
+ options?: { temporaryReferences?: any },
261
361
  ) => Promise<FormData | string>;
262
362
  setServerCallback: (
263
- callback: (id: string, args: any[]) => Promise<any>
363
+ callback: (id: string, args: any[]) => Promise<any>,
264
364
  ) => void;
265
365
  createTemporaryReferenceSet: () => any;
266
366
  }
@@ -312,16 +412,27 @@ export interface NavigationStore {
312
412
  cacheSegmentsForHistory(
313
413
  historyKey: string,
314
414
  segments: ResolvedSegment[],
315
- handleData?: HandleData
415
+ handleData?: HandleData,
316
416
  ): void;
317
- getCachedSegments(
318
- historyKey: string
319
- ): { segments: ResolvedSegment[]; stale: boolean; handleData?: HandleData } | undefined;
417
+ getCachedSegments(historyKey: string):
418
+ | {
419
+ segments: ResolvedSegment[];
420
+ stale: boolean;
421
+ handleData?: HandleData;
422
+ routerId?: string;
423
+ }
424
+ | undefined;
320
425
  hasHistoryCache(historyKey: string): boolean;
321
426
  updateCacheHandleData(historyKey: string, handleData: HandleData): void;
322
427
  markCacheAsStale(): void;
323
428
  markCacheAsStaleAndBroadcast(): void;
324
429
  clearHistoryCache(): void;
430
+ /**
431
+ * Clear this tab's nav + prefetch caches without broadcasting or rotating
432
+ * shared state. Intended for app-switch transitions that affect only this
433
+ * tab's session.
434
+ */
435
+ clearHistoryCacheLocal(): void;
325
436
  broadcastCacheInvalidation(): void;
326
437
 
327
438
  // Cross-tab refresh callback (set by navigation bridge)
@@ -331,6 +442,10 @@ export interface NavigationStore {
331
442
  getInterceptSourceUrl(): string | null;
332
443
  setInterceptSourceUrl(url: string | null): void;
333
444
 
445
+ // Router identity tracking (for cross-app navigation detection)
446
+ getRouterId?(): string | undefined;
447
+ setRouterId?(id: string): void;
448
+
334
449
  // UI update notifications
335
450
  onUpdate(callback: UpdateSubscriber): () => void;
336
451
  emitUpdate(update: NavigationUpdate): void;
@@ -340,39 +455,10 @@ export interface NavigationStore {
340
455
  setActionState(actionId: string, state: Partial<TrackedActionState>): void;
341
456
  subscribeToAction(
342
457
  actionId: string,
343
- listener: ActionStateListener
458
+ listener: ActionStateListener,
344
459
  ): () => void;
345
460
  }
346
461
 
347
- // ============================================================================
348
- // Request Controller Types
349
- // ============================================================================
350
-
351
- /**
352
- * Disposable abort controller with automatic cleanup
353
- */
354
- export interface DisposableAbortController extends Disposable {
355
- controller: AbortController;
356
- }
357
-
358
- /**
359
- * Request controller for managing concurrent requests
360
- *
361
- * Separates navigation requests (aborted on new navigation) from
362
- * action requests (complete independently of navigation).
363
- */
364
- export interface RequestController {
365
- create(): AbortController;
366
- createDisposable(): DisposableAbortController;
367
- /** Create a disposable controller for actions (not aborted by navigation) */
368
- createActionDisposable(): DisposableAbortController;
369
- /** Abort all navigation requests (not actions) */
370
- abortAll(): void;
371
- /** Abort all action requests (used for error handling) */
372
- abortAllActions(): void;
373
- remove(controller: AbortController): void;
374
- }
375
-
376
462
  // ============================================================================
377
463
  // Navigation Client Types
378
464
  // ============================================================================
@@ -390,6 +476,10 @@ export interface FetchPartialOptions {
390
476
  interceptSourceUrl?: string;
391
477
  /** RSC version for cache invalidation detection */
392
478
  version?: string;
479
+ /** Current router ID — server detects app switch and returns full response */
480
+ routerId?: string;
481
+ /** If true, this is an HMR refetch - server should invalidate manifest cache */
482
+ hmr?: boolean;
393
483
  }
394
484
 
395
485
  /**
@@ -428,7 +518,6 @@ export interface LinkInterceptorOptions {
428
518
  */
429
519
  export interface ServerActionBridge {
430
520
  register(): void;
431
- unregister(): void;
432
521
  }
433
522
 
434
523
  /**
@@ -441,7 +530,7 @@ export interface ServerActionBridgeConfig {
441
530
  onUpdate: UpdateSubscriber;
442
531
  renderSegments: (
443
532
  segments: ResolvedSegment[],
444
- options?: RenderSegmentsOptions
533
+ options?: RenderSegmentsOptions,
445
534
  ) => Promise<ReactNode> | ReactNode;
446
535
  }
447
536
 
@@ -457,6 +546,15 @@ export interface NavigationBridge {
457
546
  refresh(): Promise<void>;
458
547
  handlePopstate(): Promise<void>;
459
548
  registerLinkInterception(): () => void;
549
+ /** Update the RSC version (e.g. after HMR). Clears prefetch cache. */
550
+ updateVersion(newVersion: string): void;
551
+ /**
552
+ * Replace the active app-shell snapshot (rootLayout, basename, version)
553
+ * atomically. Used on cross-app navigations when the response's routerId
554
+ * indicates the user entered a different app. Theme, warmup, and prefetch
555
+ * TTL are document-lifetime and not part of the shell.
556
+ */
557
+ updateAppShell(next: import("./app-shell.js").AppShell): void;
460
558
  }
461
559
 
462
560
  /**
@@ -468,9 +566,17 @@ export interface NavigationBridgeConfig {
468
566
  onUpdate: UpdateSubscriber;
469
567
  renderSegments: (
470
568
  segments: ResolvedSegment[],
471
- options?: RenderSegmentsOptions
569
+ options?: RenderSegmentsOptions,
472
570
  ) => Promise<ReactNode> | ReactNode;
473
571
  }
474
572
 
475
573
  // Re-export ResolvedSegment for convenience
476
574
  export type { ResolvedSegment };
575
+
576
+ /**
577
+ * Token for tracking an active stream.
578
+ * Call end() when the stream completes.
579
+ */
580
+ export interface StreamingToken {
581
+ end(): void;
582
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Validate that a client-consumed redirect URL (from headers or Flight payload)
3
+ * targets the same origin as the current page. Prevents open-redirect attacks
4
+ * via crafted responses.
5
+ *
6
+ * @returns The canonical (normalized) URL string on success, or null if blocked.
7
+ */
8
+ export function validateRedirectOrigin(
9
+ url: string,
10
+ currentOrigin: string,
11
+ ): string | null {
12
+ try {
13
+ const target = new URL(url, currentOrigin);
14
+ if (target.origin !== currentOrigin) {
15
+ console.error(
16
+ `[rango] Redirect blocked: origin mismatch (${target.origin})`,
17
+ );
18
+ return null;
19
+ }
20
+ // Return pathname+search+hash for relative inputs, full href for absolute.
21
+ // This normalizes protocol-relative and other ambiguous forms.
22
+ return target.href.startsWith(currentOrigin)
23
+ ? target.href
24
+ : target.pathname + target.search + target.hash;
25
+ } catch {
26
+ console.error(`[rango] Redirect blocked: invalid URL "${url}"`);
27
+ return null;
28
+ }
29
+ }