@rangojs/router 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (884) hide show
  1. package/dist/__internal.d.ts +83 -0
  2. package/dist/__internal.d.ts.map +1 -0
  3. package/dist/__internal.js +19 -0
  4. package/dist/__internal.js.map +1 -0
  5. package/dist/__mocks__/version.d.ts +7 -0
  6. package/dist/__mocks__/version.d.ts.map +1 -0
  7. package/dist/__mocks__/version.js +7 -0
  8. package/dist/__mocks__/version.js.map +1 -0
  9. package/dist/__tests__/client-href.test.d.ts +2 -0
  10. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  11. package/dist/__tests__/client-href.test.js +74 -0
  12. package/dist/__tests__/client-href.test.js.map +1 -0
  13. package/dist/__tests__/component-utils.test.d.ts +2 -0
  14. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  15. package/dist/__tests__/component-utils.test.js +51 -0
  16. package/dist/__tests__/component-utils.test.js.map +1 -0
  17. package/dist/__tests__/event-controller.test.d.ts +2 -0
  18. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  19. package/dist/__tests__/event-controller.test.js +538 -0
  20. package/dist/__tests__/event-controller.test.js.map +1 -0
  21. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  22. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.js +374 -0
  24. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  25. package/dist/__tests__/match-result.test.d.ts +2 -0
  26. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  27. package/dist/__tests__/match-result.test.js +154 -0
  28. package/dist/__tests__/match-result.test.js.map +1 -0
  29. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  30. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  31. package/dist/__tests__/navigation-store.test.js +440 -0
  32. package/dist/__tests__/navigation-store.test.js.map +1 -0
  33. package/dist/__tests__/partial-update.test.d.ts +2 -0
  34. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  35. package/dist/__tests__/partial-update.test.js +1009 -0
  36. package/dist/__tests__/partial-update.test.js.map +1 -0
  37. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  38. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  39. package/dist/__tests__/reverse-types.test.js +656 -0
  40. package/dist/__tests__/reverse-types.test.js.map +1 -0
  41. package/dist/__tests__/route-definition.test.d.ts +2 -0
  42. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  43. package/dist/__tests__/route-definition.test.js +55 -0
  44. package/dist/__tests__/route-definition.test.js.map +1 -0
  45. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  46. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  47. package/dist/__tests__/router-helpers.test.js +377 -0
  48. package/dist/__tests__/router-helpers.test.js.map +1 -0
  49. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  50. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.js +426 -0
  52. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  53. package/dist/__tests__/router-integration.test.d.ts +2 -0
  54. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  55. package/dist/__tests__/router-integration.test.js +1051 -0
  56. package/dist/__tests__/router-integration.test.js.map +1 -0
  57. package/dist/__tests__/search-params.test.d.ts +5 -0
  58. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  59. package/dist/__tests__/search-params.test.js +306 -0
  60. package/dist/__tests__/search-params.test.js.map +1 -0
  61. package/dist/__tests__/segment-system.test.d.ts +2 -0
  62. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  63. package/dist/__tests__/segment-system.test.js +627 -0
  64. package/dist/__tests__/segment-system.test.js.map +1 -0
  65. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  66. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.js +63 -0
  68. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  69. package/dist/__tests__/urls.test.d.ts +2 -0
  70. package/dist/__tests__/urls.test.d.ts.map +1 -0
  71. package/dist/__tests__/urls.test.js +421 -0
  72. package/dist/__tests__/urls.test.js.map +1 -0
  73. package/dist/__tests__/use-mount.test.d.ts +2 -0
  74. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  75. package/dist/__tests__/use-mount.test.js +35 -0
  76. package/dist/__tests__/use-mount.test.js.map +1 -0
  77. package/dist/bin/rango.d.ts +2 -0
  78. package/dist/bin/rango.d.ts.map +1 -0
  79. package/dist/bin/rango.js.map +1 -0
  80. package/dist/browser/event-controller.d.ts +191 -0
  81. package/dist/browser/event-controller.d.ts.map +1 -0
  82. package/dist/browser/event-controller.js +559 -0
  83. package/dist/browser/event-controller.js.map +1 -0
  84. package/dist/browser/index.d.ts +2 -0
  85. package/dist/browser/index.d.ts.map +1 -0
  86. package/dist/browser/index.js +14 -0
  87. package/dist/browser/index.js.map +1 -0
  88. package/dist/browser/link-interceptor.d.ts +38 -0
  89. package/dist/browser/link-interceptor.d.ts.map +1 -0
  90. package/dist/browser/link-interceptor.js +99 -0
  91. package/dist/browser/link-interceptor.js.map +1 -0
  92. package/dist/browser/logging.d.ts +10 -0
  93. package/dist/browser/logging.d.ts.map +1 -0
  94. package/dist/browser/logging.js +29 -0
  95. package/dist/browser/logging.js.map +1 -0
  96. package/dist/browser/lru-cache.d.ts +17 -0
  97. package/dist/browser/lru-cache.d.ts.map +1 -0
  98. package/dist/browser/lru-cache.js +50 -0
  99. package/dist/browser/lru-cache.js.map +1 -0
  100. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  101. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  102. package/dist/browser/merge-segment-loaders.js +102 -0
  103. package/dist/browser/merge-segment-loaders.js.map +1 -0
  104. package/dist/browser/navigation-bridge.d.ts +102 -0
  105. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  106. package/dist/browser/navigation-bridge.js +708 -0
  107. package/dist/browser/navigation-bridge.js.map +1 -0
  108. package/dist/browser/navigation-client.d.ts +25 -0
  109. package/dist/browser/navigation-client.d.ts.map +1 -0
  110. package/dist/browser/navigation-client.js +157 -0
  111. package/dist/browser/navigation-client.js.map +1 -0
  112. package/dist/browser/navigation-store.d.ts +101 -0
  113. package/dist/browser/navigation-store.d.ts.map +1 -0
  114. package/dist/browser/navigation-store.js +625 -0
  115. package/dist/browser/navigation-store.js.map +1 -0
  116. package/dist/browser/partial-update.d.ts +75 -0
  117. package/dist/browser/partial-update.d.ts.map +1 -0
  118. package/dist/browser/partial-update.js +426 -0
  119. package/dist/browser/partial-update.js.map +1 -0
  120. package/dist/browser/react/Link.d.ts +86 -0
  121. package/dist/browser/react/Link.d.ts.map +1 -0
  122. package/dist/browser/react/Link.js +128 -0
  123. package/dist/browser/react/Link.js.map +1 -0
  124. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  125. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  126. package/dist/browser/react/NavigationProvider.js +216 -0
  127. package/dist/browser/react/NavigationProvider.js.map +1 -0
  128. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  129. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  130. package/dist/browser/react/ScrollRestoration.js +57 -0
  131. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  132. package/dist/browser/react/context.d.ts +46 -0
  133. package/dist/browser/react/context.d.ts.map +1 -0
  134. package/dist/browser/react/context.js +10 -0
  135. package/dist/browser/react/context.js.map +1 -0
  136. package/dist/browser/react/index.d.ts +11 -0
  137. package/dist/browser/react/index.d.ts.map +1 -0
  138. package/dist/browser/react/index.js +22 -0
  139. package/dist/browser/react/index.js.map +1 -0
  140. package/dist/browser/react/location-state-shared.d.ts +63 -0
  141. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  142. package/dist/browser/react/location-state-shared.js +81 -0
  143. package/dist/browser/react/location-state-shared.js.map +1 -0
  144. package/dist/browser/react/location-state.d.ts +23 -0
  145. package/dist/browser/react/location-state.d.ts.map +1 -0
  146. package/dist/browser/react/location-state.js +29 -0
  147. package/dist/browser/react/location-state.js.map +1 -0
  148. package/dist/browser/react/mount-context.d.ts +24 -0
  149. package/dist/browser/react/mount-context.d.ts.map +1 -0
  150. package/dist/browser/react/mount-context.js +24 -0
  151. package/dist/browser/react/mount-context.js.map +1 -0
  152. package/dist/browser/react/use-action.d.ts +64 -0
  153. package/dist/browser/react/use-action.d.ts.map +1 -0
  154. package/dist/browser/react/use-action.js +134 -0
  155. package/dist/browser/react/use-action.js.map +1 -0
  156. package/dist/browser/react/use-client-cache.d.ts +41 -0
  157. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  158. package/dist/browser/react/use-client-cache.js +39 -0
  159. package/dist/browser/react/use-client-cache.js.map +1 -0
  160. package/dist/browser/react/use-handle.d.ts +31 -0
  161. package/dist/browser/react/use-handle.d.ts.map +1 -0
  162. package/dist/browser/react/use-handle.js +144 -0
  163. package/dist/browser/react/use-handle.js.map +1 -0
  164. package/dist/browser/react/use-href.d.ts +33 -0
  165. package/dist/browser/react/use-href.d.ts.map +1 -0
  166. package/dist/browser/react/use-href.js +39 -0
  167. package/dist/browser/react/use-href.js.map +1 -0
  168. package/dist/browser/react/use-link-status.d.ts +37 -0
  169. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  170. package/dist/browser/react/use-link-status.js +99 -0
  171. package/dist/browser/react/use-link-status.js.map +1 -0
  172. package/dist/browser/react/use-mount.d.ts +25 -0
  173. package/dist/browser/react/use-mount.d.ts.map +1 -0
  174. package/dist/browser/react/use-mount.js +30 -0
  175. package/dist/browser/react/use-mount.js.map +1 -0
  176. package/dist/browser/react/use-navigation.d.ts +27 -0
  177. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  178. package/dist/browser/react/use-navigation.js +87 -0
  179. package/dist/browser/react/use-navigation.js.map +1 -0
  180. package/dist/browser/react/use-segments.d.ts +38 -0
  181. package/dist/browser/react/use-segments.d.ts.map +1 -0
  182. package/dist/browser/react/use-segments.js +130 -0
  183. package/dist/browser/react/use-segments.js.map +1 -0
  184. package/dist/browser/request-controller.d.ts +26 -0
  185. package/dist/browser/request-controller.d.ts.map +1 -0
  186. package/dist/browser/request-controller.js +147 -0
  187. package/dist/browser/request-controller.js.map +1 -0
  188. package/dist/browser/rsc-router.d.ts +129 -0
  189. package/dist/browser/rsc-router.d.ts.map +1 -0
  190. package/dist/browser/rsc-router.js +195 -0
  191. package/dist/browser/rsc-router.js.map +1 -0
  192. package/dist/browser/scroll-restoration.d.ts +93 -0
  193. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  194. package/dist/browser/scroll-restoration.js +321 -0
  195. package/dist/browser/scroll-restoration.js.map +1 -0
  196. package/dist/browser/segment-structure-assert.d.ts +17 -0
  197. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  198. package/dist/browser/segment-structure-assert.js +59 -0
  199. package/dist/browser/segment-structure-assert.js.map +1 -0
  200. package/dist/browser/server-action-bridge.d.ts +26 -0
  201. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  202. package/dist/browser/server-action-bridge.js +668 -0
  203. package/dist/browser/server-action-bridge.js.map +1 -0
  204. package/dist/browser/shallow.d.ts +12 -0
  205. package/dist/browser/shallow.d.ts.map +1 -0
  206. package/dist/browser/shallow.js +34 -0
  207. package/dist/browser/shallow.js.map +1 -0
  208. package/dist/browser/types.d.ts +369 -0
  209. package/dist/browser/types.d.ts.map +1 -0
  210. package/dist/browser/types.js +2 -0
  211. package/dist/browser/types.js.map +1 -0
  212. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  213. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  214. package/dist/build/__tests__/generate-cli.test.js +237 -0
  215. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  216. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  217. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  218. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  219. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  220. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  221. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  222. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  223. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  224. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  225. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  226. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  227. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  228. package/dist/build/generate-manifest.d.ts +81 -0
  229. package/dist/build/generate-manifest.d.ts.map +1 -0
  230. package/dist/build/generate-manifest.js +276 -0
  231. package/dist/build/generate-manifest.js.map +1 -0
  232. package/dist/build/generate-route-types.d.ts +115 -0
  233. package/dist/build/generate-route-types.d.ts.map +1 -0
  234. package/dist/build/generate-route-types.js +740 -0
  235. package/dist/build/generate-route-types.js.map +1 -0
  236. package/dist/build/index.d.ts +21 -0
  237. package/dist/build/index.d.ts.map +1 -0
  238. package/dist/build/index.js +21 -0
  239. package/dist/build/index.js.map +1 -0
  240. package/dist/build/route-trie.d.ts +71 -0
  241. package/dist/build/route-trie.d.ts.map +1 -0
  242. package/dist/build/route-trie.js +175 -0
  243. package/dist/build/route-trie.js.map +1 -0
  244. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  245. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  246. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  247. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  248. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  249. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  250. package/dist/cache/__tests__/document-cache.test.js +345 -0
  251. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  252. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  253. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  254. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  256. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  257. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  258. package/dist/cache/__tests__/memory-store.test.js +367 -0
  259. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  260. package/dist/cache/cache-scope.d.ts +102 -0
  261. package/dist/cache/cache-scope.d.ts.map +1 -0
  262. package/dist/cache/cache-scope.js +440 -0
  263. package/dist/cache/cache-scope.js.map +1 -0
  264. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  265. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  266. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  268. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  269. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  270. package/dist/cache/cf/cf-cache-store.js +242 -0
  271. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  272. package/dist/cache/cf/index.d.ts +14 -0
  273. package/dist/cache/cf/index.d.ts.map +1 -0
  274. package/dist/cache/cf/index.js +17 -0
  275. package/dist/cache/cf/index.js.map +1 -0
  276. package/dist/cache/document-cache.d.ts +64 -0
  277. package/dist/cache/document-cache.d.ts.map +1 -0
  278. package/dist/cache/document-cache.js +228 -0
  279. package/dist/cache/document-cache.js.map +1 -0
  280. package/dist/cache/index.d.ts +19 -0
  281. package/dist/cache/index.d.ts.map +1 -0
  282. package/dist/cache/index.js +21 -0
  283. package/dist/cache/index.js.map +1 -0
  284. package/dist/cache/memory-segment-store.d.ts +110 -0
  285. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  286. package/dist/cache/memory-segment-store.js +117 -0
  287. package/dist/cache/memory-segment-store.js.map +1 -0
  288. package/dist/cache/memory-store.d.ts +41 -0
  289. package/dist/cache/memory-store.d.ts.map +1 -0
  290. package/dist/cache/memory-store.js +191 -0
  291. package/dist/cache/memory-store.js.map +1 -0
  292. package/dist/cache/types.d.ts +317 -0
  293. package/dist/cache/types.d.ts.map +1 -0
  294. package/dist/cache/types.js +12 -0
  295. package/dist/cache/types.js.map +1 -0
  296. package/dist/client.d.ts +248 -0
  297. package/dist/client.d.ts.map +1 -0
  298. package/dist/client.js +367 -0
  299. package/dist/client.js.map +1 -0
  300. package/dist/client.rsc.d.ts +26 -0
  301. package/dist/client.rsc.d.ts.map +1 -0
  302. package/dist/client.rsc.js +46 -0
  303. package/dist/client.rsc.js.map +1 -0
  304. package/dist/component-utils.d.ts +36 -0
  305. package/dist/component-utils.d.ts.map +1 -0
  306. package/dist/component-utils.js +61 -0
  307. package/dist/component-utils.js.map +1 -0
  308. package/dist/components/DefaultDocument.d.ts +13 -0
  309. package/dist/components/DefaultDocument.d.ts.map +1 -0
  310. package/dist/components/DefaultDocument.js +15 -0
  311. package/dist/components/DefaultDocument.js.map +1 -0
  312. package/dist/debug.d.ts +58 -0
  313. package/dist/debug.d.ts.map +1 -0
  314. package/dist/debug.js +157 -0
  315. package/dist/debug.js.map +1 -0
  316. package/dist/default-error-boundary.d.ts +11 -0
  317. package/dist/default-error-boundary.d.ts.map +1 -0
  318. package/dist/default-error-boundary.js +45 -0
  319. package/dist/default-error-boundary.js.map +1 -0
  320. package/dist/deps/browser.d.ts +2 -0
  321. package/dist/deps/browser.d.ts.map +1 -0
  322. package/dist/deps/browser.js +3 -0
  323. package/dist/deps/browser.js.map +1 -0
  324. package/dist/deps/html-stream-client.d.ts +2 -0
  325. package/dist/deps/html-stream-client.d.ts.map +1 -0
  326. package/dist/deps/html-stream-client.js +3 -0
  327. package/dist/deps/html-stream-client.js.map +1 -0
  328. package/dist/deps/html-stream-server.d.ts +2 -0
  329. package/dist/deps/html-stream-server.d.ts.map +1 -0
  330. package/dist/deps/html-stream-server.js +3 -0
  331. package/dist/deps/html-stream-server.js.map +1 -0
  332. package/dist/deps/rsc.d.ts +2 -0
  333. package/dist/deps/rsc.d.ts.map +1 -0
  334. package/dist/deps/rsc.js +4 -0
  335. package/dist/deps/rsc.js.map +1 -0
  336. package/dist/deps/ssr.d.ts +2 -0
  337. package/dist/deps/ssr.d.ts.map +1 -0
  338. package/dist/deps/ssr.js +3 -0
  339. package/dist/deps/ssr.js.map +1 -0
  340. package/dist/errors.d.ts +174 -0
  341. package/dist/errors.d.ts.map +1 -0
  342. package/dist/errors.js +241 -0
  343. package/dist/errors.js.map +1 -0
  344. package/dist/handle.d.ts +78 -0
  345. package/dist/handle.d.ts.map +1 -0
  346. package/dist/handle.js +82 -0
  347. package/dist/handle.js.map +1 -0
  348. package/dist/handles/MetaTags.d.ts +14 -0
  349. package/dist/handles/MetaTags.d.ts.map +1 -0
  350. package/dist/handles/MetaTags.js +136 -0
  351. package/dist/handles/MetaTags.js.map +1 -0
  352. package/dist/handles/index.d.ts +6 -0
  353. package/dist/handles/index.d.ts.map +1 -0
  354. package/dist/handles/index.js +6 -0
  355. package/dist/handles/index.js.map +1 -0
  356. package/dist/handles/meta.d.ts +39 -0
  357. package/dist/handles/meta.d.ts.map +1 -0
  358. package/dist/handles/meta.js +202 -0
  359. package/dist/handles/meta.js.map +1 -0
  360. package/dist/host/__tests__/errors.test.d.ts +2 -0
  361. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  362. package/dist/host/__tests__/errors.test.js +76 -0
  363. package/dist/host/__tests__/errors.test.js.map +1 -0
  364. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  365. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  366. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  368. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  369. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  370. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  371. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  372. package/dist/host/__tests__/router.test.d.ts +2 -0
  373. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  374. package/dist/host/__tests__/router.test.js +241 -0
  375. package/dist/host/__tests__/router.test.js.map +1 -0
  376. package/dist/host/__tests__/testing.test.d.ts +2 -0
  377. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  378. package/dist/host/__tests__/testing.test.js +64 -0
  379. package/dist/host/__tests__/testing.test.js.map +1 -0
  380. package/dist/host/__tests__/utils.test.d.ts +2 -0
  381. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  382. package/dist/host/__tests__/utils.test.js +29 -0
  383. package/dist/host/__tests__/utils.test.js.map +1 -0
  384. package/dist/host/cookie-handler.d.ts +34 -0
  385. package/dist/host/cookie-handler.d.ts.map +1 -0
  386. package/dist/host/cookie-handler.js +124 -0
  387. package/dist/host/cookie-handler.js.map +1 -0
  388. package/dist/host/errors.d.ts +56 -0
  389. package/dist/host/errors.d.ts.map +1 -0
  390. package/dist/host/errors.js +79 -0
  391. package/dist/host/errors.js.map +1 -0
  392. package/dist/host/index.d.ts +29 -0
  393. package/dist/host/index.d.ts.map +1 -0
  394. package/dist/host/index.js +32 -0
  395. package/dist/host/index.js.map +1 -0
  396. package/dist/host/pattern-matcher.d.ts +36 -0
  397. package/dist/host/pattern-matcher.d.ts.map +1 -0
  398. package/dist/host/pattern-matcher.js +172 -0
  399. package/dist/host/pattern-matcher.js.map +1 -0
  400. package/dist/host/router.d.ts +26 -0
  401. package/dist/host/router.d.ts.map +1 -0
  402. package/dist/host/router.js +218 -0
  403. package/dist/host/router.js.map +1 -0
  404. package/dist/host/testing.d.ts +36 -0
  405. package/dist/host/testing.d.ts.map +1 -0
  406. package/dist/host/testing.js +55 -0
  407. package/dist/host/testing.js.map +1 -0
  408. package/dist/host/types.d.ts +115 -0
  409. package/dist/host/types.d.ts.map +1 -0
  410. package/dist/host/types.js +7 -0
  411. package/dist/host/types.js.map +1 -0
  412. package/dist/host/utils.d.ts +21 -0
  413. package/dist/host/utils.d.ts.map +1 -0
  414. package/dist/host/utils.js +23 -0
  415. package/dist/host/utils.js.map +1 -0
  416. package/dist/href-client.d.ts +131 -0
  417. package/dist/href-client.d.ts.map +1 -0
  418. package/dist/href-client.js +64 -0
  419. package/dist/href-client.js.map +1 -0
  420. package/dist/href-context.d.ts +29 -0
  421. package/dist/href-context.d.ts.map +1 -0
  422. package/dist/href-context.js +21 -0
  423. package/dist/href-context.js.map +1 -0
  424. package/dist/index.d.ts +73 -0
  425. package/dist/index.d.ts.map +1 -0
  426. package/dist/index.js +91 -0
  427. package/dist/index.js.map +1 -0
  428. package/dist/index.rsc.d.ts +32 -0
  429. package/dist/index.rsc.d.ts.map +1 -0
  430. package/dist/index.rsc.js +40 -0
  431. package/dist/index.rsc.js.map +1 -0
  432. package/dist/internal-debug.d.ts +2 -0
  433. package/dist/internal-debug.d.ts.map +1 -0
  434. package/dist/internal-debug.js +5 -0
  435. package/dist/internal-debug.js.map +1 -0
  436. package/dist/loader.d.ts +14 -0
  437. package/dist/loader.d.ts.map +1 -0
  438. package/dist/loader.js +20 -0
  439. package/dist/loader.js.map +1 -0
  440. package/dist/loader.rsc.d.ts +19 -0
  441. package/dist/loader.rsc.d.ts.map +1 -0
  442. package/dist/loader.rsc.js +99 -0
  443. package/dist/loader.rsc.js.map +1 -0
  444. package/dist/network-error-thrower.d.ts +17 -0
  445. package/dist/network-error-thrower.d.ts.map +1 -0
  446. package/dist/network-error-thrower.js +14 -0
  447. package/dist/network-error-thrower.js.map +1 -0
  448. package/dist/outlet-context.d.ts +13 -0
  449. package/dist/outlet-context.d.ts.map +1 -0
  450. package/dist/outlet-context.js +3 -0
  451. package/dist/outlet-context.js.map +1 -0
  452. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  453. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  454. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  455. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  456. package/dist/prerender/param-hash.d.ts +16 -0
  457. package/dist/prerender/param-hash.d.ts.map +1 -0
  458. package/dist/prerender/param-hash.js +36 -0
  459. package/dist/prerender/param-hash.js.map +1 -0
  460. package/dist/prerender/store.d.ts +38 -0
  461. package/dist/prerender/store.d.ts.map +1 -0
  462. package/dist/prerender/store.js +61 -0
  463. package/dist/prerender/store.js.map +1 -0
  464. package/dist/prerender.d.ts +66 -0
  465. package/dist/prerender.d.ts.map +1 -0
  466. package/dist/prerender.js +57 -0
  467. package/dist/prerender.js.map +1 -0
  468. package/dist/reverse.d.ts +196 -0
  469. package/dist/reverse.d.ts.map +1 -0
  470. package/dist/reverse.js +78 -0
  471. package/dist/reverse.js.map +1 -0
  472. package/dist/root-error-boundary.d.ts +33 -0
  473. package/dist/root-error-boundary.d.ts.map +1 -0
  474. package/dist/root-error-boundary.js +165 -0
  475. package/dist/root-error-boundary.js.map +1 -0
  476. package/dist/route-content-wrapper.d.ts +46 -0
  477. package/dist/route-content-wrapper.d.ts.map +1 -0
  478. package/dist/route-content-wrapper.js +77 -0
  479. package/dist/route-content-wrapper.js.map +1 -0
  480. package/dist/route-definition.d.ts +421 -0
  481. package/dist/route-definition.d.ts.map +1 -0
  482. package/dist/route-definition.js +868 -0
  483. package/dist/route-definition.js.map +1 -0
  484. package/dist/route-map-builder.d.ts +155 -0
  485. package/dist/route-map-builder.d.ts.map +1 -0
  486. package/dist/route-map-builder.js +237 -0
  487. package/dist/route-map-builder.js.map +1 -0
  488. package/dist/route-types.d.ts +165 -0
  489. package/dist/route-types.d.ts.map +1 -0
  490. package/dist/route-types.js +7 -0
  491. package/dist/route-types.js.map +1 -0
  492. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  493. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  494. package/dist/router/__tests__/handler-context.test.js +65 -0
  495. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  496. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  497. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  498. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  500. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  501. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  502. package/dist/router/__tests__/match-context.test.js +92 -0
  503. package/dist/router/__tests__/match-context.test.js.map +1 -0
  504. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  505. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  506. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  507. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  508. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  509. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  510. package/dist/router/__tests__/match-result.test.js +457 -0
  511. package/dist/router/__tests__/match-result.test.js.map +1 -0
  512. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  513. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  514. package/dist/router/__tests__/on-error.test.js +678 -0
  515. package/dist/router/__tests__/on-error.test.js.map +1 -0
  516. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  517. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  518. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  519. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  520. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  521. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  522. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  524. package/dist/router/error-handling.d.ts +77 -0
  525. package/dist/router/error-handling.d.ts.map +1 -0
  526. package/dist/router/error-handling.js +202 -0
  527. package/dist/router/error-handling.js.map +1 -0
  528. package/dist/router/handler-context.d.ts +20 -0
  529. package/dist/router/handler-context.d.ts.map +1 -0
  530. package/dist/router/handler-context.js +198 -0
  531. package/dist/router/handler-context.js.map +1 -0
  532. package/dist/router/intercept-resolution.d.ts +66 -0
  533. package/dist/router/intercept-resolution.d.ts.map +1 -0
  534. package/dist/router/intercept-resolution.js +246 -0
  535. package/dist/router/intercept-resolution.js.map +1 -0
  536. package/dist/router/loader-resolution.d.ts +64 -0
  537. package/dist/router/loader-resolution.d.ts.map +1 -0
  538. package/dist/router/loader-resolution.js +284 -0
  539. package/dist/router/loader-resolution.js.map +1 -0
  540. package/dist/router/logging.d.ts +15 -0
  541. package/dist/router/logging.d.ts.map +1 -0
  542. package/dist/router/logging.js +99 -0
  543. package/dist/router/logging.js.map +1 -0
  544. package/dist/router/manifest.d.ts +22 -0
  545. package/dist/router/manifest.d.ts.map +1 -0
  546. package/dist/router/manifest.js +181 -0
  547. package/dist/router/manifest.js.map +1 -0
  548. package/dist/router/match-api.d.ts +35 -0
  549. package/dist/router/match-api.d.ts.map +1 -0
  550. package/dist/router/match-api.js +406 -0
  551. package/dist/router/match-api.js.map +1 -0
  552. package/dist/router/match-context.d.ts +206 -0
  553. package/dist/router/match-context.d.ts.map +1 -0
  554. package/dist/router/match-context.js +17 -0
  555. package/dist/router/match-context.js.map +1 -0
  556. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  557. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  558. package/dist/router/match-middleware/background-revalidation.js +75 -0
  559. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  560. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  561. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  562. package/dist/router/match-middleware/cache-lookup.js +257 -0
  563. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  564. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  565. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  566. package/dist/router/match-middleware/cache-store.js +108 -0
  567. package/dist/router/match-middleware/cache-store.js.map +1 -0
  568. package/dist/router/match-middleware/index.d.ts +81 -0
  569. package/dist/router/match-middleware/index.d.ts.map +1 -0
  570. package/dist/router/match-middleware/index.js +80 -0
  571. package/dist/router/match-middleware/index.js.map +1 -0
  572. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  573. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  574. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  575. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  576. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  577. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  578. package/dist/router/match-middleware/segment-resolution.js +53 -0
  579. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  580. package/dist/router/match-pipelines.d.ts +147 -0
  581. package/dist/router/match-pipelines.d.ts.map +1 -0
  582. package/dist/router/match-pipelines.js +82 -0
  583. package/dist/router/match-pipelines.js.map +1 -0
  584. package/dist/router/match-result.d.ts +126 -0
  585. package/dist/router/match-result.d.ts.map +1 -0
  586. package/dist/router/match-result.js +93 -0
  587. package/dist/router/match-result.js.map +1 -0
  588. package/dist/router/metrics.d.ts +20 -0
  589. package/dist/router/metrics.d.ts.map +1 -0
  590. package/dist/router/metrics.js +47 -0
  591. package/dist/router/metrics.js.map +1 -0
  592. package/dist/router/middleware.d.ts +249 -0
  593. package/dist/router/middleware.d.ts.map +1 -0
  594. package/dist/router/middleware.js +434 -0
  595. package/dist/router/middleware.js.map +1 -0
  596. package/dist/router/middleware.test.d.ts +2 -0
  597. package/dist/router/middleware.test.d.ts.map +1 -0
  598. package/dist/router/middleware.test.js +816 -0
  599. package/dist/router/middleware.test.js.map +1 -0
  600. package/dist/router/pattern-matching.d.ts +149 -0
  601. package/dist/router/pattern-matching.d.ts.map +1 -0
  602. package/dist/router/pattern-matching.js +349 -0
  603. package/dist/router/pattern-matching.js.map +1 -0
  604. package/dist/router/revalidation.d.ts +44 -0
  605. package/dist/router/revalidation.d.ts.map +1 -0
  606. package/dist/router/revalidation.js +147 -0
  607. package/dist/router/revalidation.js.map +1 -0
  608. package/dist/router/router-context.d.ts +135 -0
  609. package/dist/router/router-context.d.ts.map +1 -0
  610. package/dist/router/router-context.js +36 -0
  611. package/dist/router/router-context.js.map +1 -0
  612. package/dist/router/segment-resolution.d.ts +127 -0
  613. package/dist/router/segment-resolution.d.ts.map +1 -0
  614. package/dist/router/segment-resolution.js +919 -0
  615. package/dist/router/segment-resolution.js.map +1 -0
  616. package/dist/router/trie-matching.d.ts +40 -0
  617. package/dist/router/trie-matching.d.ts.map +1 -0
  618. package/dist/router/trie-matching.js +127 -0
  619. package/dist/router/trie-matching.js.map +1 -0
  620. package/dist/router/types.d.ts +136 -0
  621. package/dist/router/types.d.ts.map +1 -0
  622. package/dist/router/types.js +7 -0
  623. package/dist/router/types.js.map +1 -0
  624. package/dist/router.d.ts +753 -0
  625. package/dist/router.d.ts.map +1 -0
  626. package/dist/router.gen.d.ts +6 -0
  627. package/dist/router.gen.d.ts.map +1 -0
  628. package/dist/router.gen.js +6 -0
  629. package/dist/router.gen.js.map +1 -0
  630. package/dist/router.js +1304 -0
  631. package/dist/router.js.map +1 -0
  632. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  633. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  634. package/dist/rsc/__tests__/helpers.test.js +140 -0
  635. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  636. package/dist/rsc/handler.d.ts +45 -0
  637. package/dist/rsc/handler.d.ts.map +1 -0
  638. package/dist/rsc/handler.js +1172 -0
  639. package/dist/rsc/handler.js.map +1 -0
  640. package/dist/rsc/helpers.d.ts +16 -0
  641. package/dist/rsc/helpers.d.ts.map +1 -0
  642. package/dist/rsc/helpers.js +55 -0
  643. package/dist/rsc/helpers.js.map +1 -0
  644. package/dist/rsc/index.d.ts +22 -0
  645. package/dist/rsc/index.d.ts.map +1 -0
  646. package/dist/rsc/index.js +23 -0
  647. package/dist/rsc/index.js.map +1 -0
  648. package/dist/rsc/nonce.d.ts +9 -0
  649. package/dist/rsc/nonce.d.ts.map +1 -0
  650. package/dist/rsc/nonce.js +18 -0
  651. package/dist/rsc/nonce.js.map +1 -0
  652. package/dist/rsc/types.d.ts +206 -0
  653. package/dist/rsc/types.d.ts.map +1 -0
  654. package/dist/rsc/types.js +8 -0
  655. package/dist/rsc/types.js.map +1 -0
  656. package/dist/search-params.d.ts +103 -0
  657. package/dist/search-params.d.ts.map +1 -0
  658. package/dist/search-params.js +74 -0
  659. package/dist/search-params.js.map +1 -0
  660. package/dist/segment-system.d.ts +75 -0
  661. package/dist/segment-system.d.ts.map +1 -0
  662. package/dist/segment-system.js +336 -0
  663. package/dist/segment-system.js.map +1 -0
  664. package/dist/server/context.d.ts +245 -0
  665. package/dist/server/context.d.ts.map +1 -0
  666. package/dist/server/context.js +197 -0
  667. package/dist/server/context.js.map +1 -0
  668. package/dist/server/fetchable-loader-store.d.ts +18 -0
  669. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  670. package/dist/server/fetchable-loader-store.js +18 -0
  671. package/dist/server/fetchable-loader-store.js.map +1 -0
  672. package/dist/server/handle-store.d.ts +85 -0
  673. package/dist/server/handle-store.d.ts.map +1 -0
  674. package/dist/server/handle-store.js +142 -0
  675. package/dist/server/handle-store.js.map +1 -0
  676. package/dist/server/loader-registry.d.ts +55 -0
  677. package/dist/server/loader-registry.d.ts.map +1 -0
  678. package/dist/server/loader-registry.js +132 -0
  679. package/dist/server/loader-registry.js.map +1 -0
  680. package/dist/server/request-context.d.ts +226 -0
  681. package/dist/server/request-context.d.ts.map +1 -0
  682. package/dist/server/request-context.js +290 -0
  683. package/dist/server/request-context.js.map +1 -0
  684. package/dist/server/root-layout.d.ts +4 -0
  685. package/dist/server/root-layout.d.ts.map +1 -0
  686. package/dist/server/root-layout.js +5 -0
  687. package/dist/server/root-layout.js.map +1 -0
  688. package/dist/server.d.ts +15 -0
  689. package/dist/server.d.ts.map +1 -0
  690. package/dist/server.js +20 -0
  691. package/dist/server.js.map +1 -0
  692. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  693. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  694. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  696. package/dist/ssr/index.d.ts +98 -0
  697. package/dist/ssr/index.d.ts.map +1 -0
  698. package/dist/ssr/index.js +158 -0
  699. package/dist/ssr/index.js.map +1 -0
  700. package/dist/static-handler.d.ts +50 -0
  701. package/dist/static-handler.d.ts.map +1 -0
  702. package/dist/static-handler.gen.d.ts +5 -0
  703. package/dist/static-handler.gen.d.ts.map +1 -0
  704. package/dist/static-handler.gen.js +5 -0
  705. package/dist/static-handler.gen.js.map +1 -0
  706. package/dist/static-handler.js +29 -0
  707. package/dist/static-handler.js.map +1 -0
  708. package/dist/theme/ThemeProvider.d.ts +20 -0
  709. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  710. package/dist/theme/ThemeProvider.js +240 -0
  711. package/dist/theme/ThemeProvider.js.map +1 -0
  712. package/dist/theme/ThemeScript.d.ts +48 -0
  713. package/dist/theme/ThemeScript.d.ts.map +1 -0
  714. package/dist/theme/ThemeScript.js +13 -0
  715. package/dist/theme/ThemeScript.js.map +1 -0
  716. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  717. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  718. package/dist/theme/__tests__/theme.test.js +103 -0
  719. package/dist/theme/__tests__/theme.test.js.map +1 -0
  720. package/dist/theme/constants.d.ts +29 -0
  721. package/dist/theme/constants.d.ts.map +1 -0
  722. package/dist/theme/constants.js +48 -0
  723. package/dist/theme/constants.js.map +1 -0
  724. package/dist/theme/index.d.ts +31 -0
  725. package/dist/theme/index.d.ts.map +1 -0
  726. package/dist/theme/index.js +36 -0
  727. package/dist/theme/index.js.map +1 -0
  728. package/dist/theme/theme-context.d.ts +40 -0
  729. package/dist/theme/theme-context.d.ts.map +1 -0
  730. package/dist/theme/theme-context.js +60 -0
  731. package/dist/theme/theme-context.js.map +1 -0
  732. package/dist/theme/theme-script.d.ts +27 -0
  733. package/dist/theme/theme-script.d.ts.map +1 -0
  734. package/dist/theme/theme-script.js +147 -0
  735. package/dist/theme/theme-script.js.map +1 -0
  736. package/dist/theme/types.d.ts +163 -0
  737. package/dist/theme/types.d.ts.map +1 -0
  738. package/dist/theme/types.js +11 -0
  739. package/dist/theme/types.js.map +1 -0
  740. package/dist/theme/use-theme.d.ts +12 -0
  741. package/dist/theme/use-theme.d.ts.map +1 -0
  742. package/dist/theme/use-theme.js +40 -0
  743. package/dist/theme/use-theme.js.map +1 -0
  744. package/dist/types/client-urls/server-projection.d.ts +4 -4
  745. package/dist/types/client-urls/types.d.ts +13 -12
  746. package/dist/types/outlet-context.d.ts +9 -0
  747. package/dist/types/outlet-provider.d.ts +2 -1
  748. package/dist/types/route-content-wrapper.d.ts +4 -1
  749. package/dist/types/route-definition/helpers-types.d.ts +6 -5
  750. package/dist/types/router/segment-resolution/loader-mask.d.ts +1 -1
  751. package/dist/types/rsc/nonce.d.ts +10 -0
  752. package/dist/types/rsc/shell-capture.d.ts +9 -0
  753. package/dist/types/rsc/types.d.ts +14 -2
  754. package/dist/types/server/context.d.ts +1 -1
  755. package/dist/types/server/request-context.d.ts +1 -1
  756. package/dist/types/ssr/index.d.ts +34 -0
  757. package/dist/types/ssr/ssr-root.d.ts +21 -0
  758. package/dist/types/ssr-suspension-warning.d.ts +20 -0
  759. package/dist/types/types/loader-types.d.ts +28 -22
  760. package/dist/types/types/segments.d.ts +17 -0
  761. package/dist/types/urls/path-helper-types.d.ts +8 -7
  762. package/dist/types/vite/discovery/state.d.ts +6 -0
  763. package/dist/types/vite/plugin-types.d.ts +27 -0
  764. package/dist/types/vite/plugins/virtual-entries.d.ts +1 -1
  765. package/dist/types/vite/utils/shared-utils.d.ts +1 -0
  766. package/dist/types.d.ts +1479 -0
  767. package/dist/types.d.ts.map +1 -0
  768. package/dist/types.js +10 -0
  769. package/dist/types.js.map +1 -0
  770. package/dist/urls.d.ts +441 -0
  771. package/dist/urls.d.ts.map +1 -0
  772. package/dist/urls.gen.d.ts +8 -0
  773. package/dist/urls.gen.d.ts.map +1 -0
  774. package/dist/urls.gen.js +8 -0
  775. package/dist/urls.gen.js.map +1 -0
  776. package/dist/urls.js +443 -0
  777. package/dist/urls.js.map +1 -0
  778. package/dist/use-loader.d.ts +127 -0
  779. package/dist/use-loader.d.ts.map +1 -0
  780. package/dist/use-loader.js +237 -0
  781. package/dist/use-loader.js.map +1 -0
  782. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  783. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  784. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  785. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  786. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  787. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  788. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  789. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  790. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  791. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  792. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  793. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  794. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  795. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  796. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  797. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  798. package/dist/vite/ast-handler-extract.d.ts +49 -0
  799. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  800. package/dist/vite/ast-handler-extract.js +249 -0
  801. package/dist/vite/ast-handler-extract.js.map +1 -0
  802. package/dist/vite/expose-action-id.d.ts +19 -0
  803. package/dist/vite/expose-action-id.d.ts.map +1 -0
  804. package/dist/vite/expose-action-id.js +250 -0
  805. package/dist/vite/expose-action-id.js.map +1 -0
  806. package/dist/vite/expose-id-utils.d.ts +69 -0
  807. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  808. package/dist/vite/expose-id-utils.js +289 -0
  809. package/dist/vite/expose-id-utils.js.map +1 -0
  810. package/dist/vite/expose-internal-ids.d.ts +22 -0
  811. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  812. package/dist/vite/expose-internal-ids.js +886 -0
  813. package/dist/vite/expose-internal-ids.js.map +1 -0
  814. package/dist/vite/index.d.ts +149 -0
  815. package/dist/vite/index.d.ts.map +1 -0
  816. package/dist/vite/index.js +58 -26
  817. package/dist/vite/index.js.bak +5448 -0
  818. package/dist/vite/index.js.map +1 -0
  819. package/dist/vite/index.named-routes.gen.ts +103 -0
  820. package/dist/vite/package-resolution.d.ts +43 -0
  821. package/dist/vite/package-resolution.d.ts.map +1 -0
  822. package/dist/vite/package-resolution.js +112 -0
  823. package/dist/vite/package-resolution.js.map +1 -0
  824. package/dist/vite/virtual-entries.d.ts +25 -0
  825. package/dist/vite/virtual-entries.d.ts.map +1 -0
  826. package/dist/vite/virtual-entries.js +110 -0
  827. package/dist/vite/virtual-entries.js.map +1 -0
  828. package/package.json +1 -1
  829. package/skills/breadcrumbs/SKILL.md +2 -2
  830. package/skills/catalog.json +2 -2
  831. package/skills/client-urls/SKILL.md +9 -8
  832. package/skills/comparison/references/framework-comparison.md +2 -2
  833. package/skills/hooks/data.md +1 -1
  834. package/skills/hooks/handle-and-actions.md +1 -1
  835. package/skills/loader/SKILL.md +46 -30
  836. package/skills/migrate-nextjs/SKILL.md +3 -3
  837. package/skills/migrate-react-router/component-migration.md +1 -1
  838. package/skills/migrate-react-router/data-and-actions.md +1 -1
  839. package/skills/migrate-react-router/route-mapping.md +1 -1
  840. package/skills/parallel/SKILL.md +1 -1
  841. package/skills/ppr/SKILL.md +1 -1
  842. package/skills/rango/SKILL.md +20 -20
  843. package/skills/router-setup/SKILL.md +1 -1
  844. package/skills/scripts/SKILL.md +1 -1
  845. package/skills/shell-manifest/SKILL.md +1 -1
  846. package/src/browser/merge-segment-loaders.ts +4 -0
  847. package/src/browser/react/Link.tsx +27 -4
  848. package/src/client-urls/client-urls.ts +12 -9
  849. package/src/client-urls/server-projection.ts +6 -6
  850. package/src/client-urls/types.ts +13 -12
  851. package/src/client.tsx +2 -0
  852. package/src/outlet-context.ts +9 -0
  853. package/src/outlet-provider.tsx +4 -0
  854. package/src/route-content-wrapper.tsx +7 -0
  855. package/src/route-definition/dsl-helpers.ts +7 -3
  856. package/src/route-definition/helpers-types.ts +6 -5
  857. package/src/router/loader-resolution.ts +3 -3
  858. package/src/router/segment-resolution/fresh.ts +50 -19
  859. package/src/router/segment-resolution/loader-cache.ts +1 -1
  860. package/src/router/segment-resolution/loader-mask.ts +1 -1
  861. package/src/router.ts +7 -2
  862. package/src/rsc/handler.ts +4 -4
  863. package/src/rsc/nonce.ts +16 -0
  864. package/src/rsc/rsc-rendering.ts +10 -0
  865. package/src/rsc/shell-capture.ts +49 -6
  866. package/src/rsc/ssr-setup.ts +4 -0
  867. package/src/rsc/types.ts +24 -4
  868. package/src/segment-system.tsx +57 -12
  869. package/src/server/context.ts +1 -1
  870. package/src/server/request-context.ts +1 -1
  871. package/src/ssr/index.tsx +75 -3
  872. package/src/ssr/ssr-root.tsx +67 -23
  873. package/src/ssr-suspension-warning.ts +68 -0
  874. package/src/types/loader-types.ts +25 -19
  875. package/src/types/segments.ts +17 -0
  876. package/src/urls/path-helper-types.ts +8 -7
  877. package/src/use-loader.tsx +24 -1
  878. package/src/vite/discovery/shell-prerender-phase.ts +5 -0
  879. package/src/vite/discovery/state.ts +6 -0
  880. package/src/vite/plugin-types.ts +28 -0
  881. package/src/vite/plugins/virtual-entries.ts +26 -3
  882. package/src/vite/rango.ts +3 -0
  883. package/src/vite/router-discovery.ts +31 -19
  884. package/src/vite/utils/shared-utils.ts +8 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: client-urls
3
- description: Define client-component route groups with clientUrls() in a "use client" module — no handlers, useLoader at read sites, client-run revalidate predicates, loader-thrown notFound/redirect, loader handle writes, and the stream:"navigation" SSR-completeness opt-in. Use when a route group's pages are client components, when building high-navigation-speed UIs (dashboards, admin panels, settings) where transitions must feel instant, when moving data reads from handler ctx.use() to useLoader at consumption sites, or when asking how routes defined in a "use client" file work.
3
+ description: Define client-component route groups with clientUrls() in a "use client" module — no handlers, useLoader at read sites, client-run revalidate predicates, loader-thrown notFound/redirect, loader handle writes, and the ssr:false SSR-completeness opt-in. Use when a route group's pages are client components, when building high-navigation-speed UIs (dashboards, admin panels, settings) where transitions must feel instant, when moving data reads from handler ctx.use() to useLoader at consumption sites, or when asking how routes defined in a "use client" file work.
4
4
  argument-hint: "[setup]"
5
5
  ---
6
6
 
@@ -122,7 +122,7 @@ typing work exactly as for server routes (`/typesafety`).
122
122
  | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
123
123
  | `path()` | Options are `name`, `search`, `trailingSlash`, `ppr` (shell caching — see /ppr skill; loader routes need `loading()` or capture refuses); no response variants |
124
124
  | `layout()` | Must contain at least one `path()` |
125
- | `loader()` | `loader(Def, use?)` or `loader(Def, { stream: "navigation" }, use?)` — see below |
125
+ | `loader()` | `loader(Def, use?)` or `loader(Def, { ssr: false }, use?)` — see below |
126
126
  | `loading()` | Route/layout-level pending UI; inline `<Suspense>` at read sites is usually better |
127
127
  | `revalidate()` | Valid **inside a loader() use callback only**; runs in the browser |
128
128
  | `transition()` | Data-only ViewTransition config — no `when` (that is a server-executed predicate) |
@@ -214,7 +214,7 @@ export const ProductLoader = createLoader(async (ctx) => {
214
214
  On a document load, `notFound()` streams the resolved not-found UI in the
215
215
  envelope and _opportunistically_ sets a real 404 status — the status write only
216
216
  wins if the rejection settles before the document Response is constructed (a
217
- fast, pre-fetch existence check usually wins; see `stream: "navigation"` below
217
+ fast, pre-fetch existence check usually wins; see `ssr: false` below
218
218
  for the deterministic version). On navigations the 404 UI swaps in with the
219
219
  URL preserved. A loader `redirect()` is always a client-side navigate — there
220
220
  is no document-lane 302 from loaders; pre-stream redirect authority belongs to
@@ -228,7 +228,7 @@ ride the SSR handle snapshot; later ones stream and apply post-hydration
228
228
  (document loads) or progressively (navigations). See `/loader` for the full
229
229
  contract.
230
230
 
231
- ## `stream: "navigation"` — the SSR-completeness opt-in
231
+ ## `ssr: false` — the SSR-completeness opt-in
232
232
 
233
233
  By default every loader streams on every render, so nothing a slow loader
234
234
  produces is _guaranteed_ to be in the SSR'd HTML — data SSRs as the Suspense
@@ -238,12 +238,13 @@ document — `<head>` meta via a handle, or a real 404 status — flag it:
238
238
 
239
239
  ```ts
240
240
  path("/product/:slug", ProductPage, { name: "product" }, () => [
241
- loader(ProductLoader, { stream: "navigation" }, () => [revalidate(productData)]),
241
+ loader(ProductLoader, { ssr: false }, () => [revalidate(productData)]),
242
242
  loader(RelatedLoader), // untouched: still streams behind its boundary
243
243
  ]),
244
244
  ```
245
245
 
246
- The name says WHERE streaming still applies, not that it is disabled: document
246
+ The knob mirrors `loading(fallback, { ssr: false })` SSR delivery is off
247
+ for this loader, so nothing of it is left to stream in the document: document
247
248
  renders await this loader before first flush (data settled — no fallback
248
249
  paints; handle pushes beat the barrier snapshot; a thrown `notFound()` is a
249
250
  deterministic real 404, no warm-up race); client navigations stream exactly as
@@ -303,7 +304,7 @@ a hard load of the target URL renders the full route.
303
304
  `<Suspense>` above each `useLoader` read is still the finer-grained tool
304
305
  when different reads on one route should wait independently.
305
306
  - **Two parallel loaders with equal latency look "SSR'd" together.** Loaders
306
- kick off in parallel, so awaiting one (`stream: "navigation"`) gives
307
+ kick off in parallel, so awaiting one (`ssr: false`) gives
307
308
  same-or-faster siblings time to settle coincidentally. Do not read "it was
308
309
  in the HTML once" as a guarantee — only the flagged loader is guaranteed.
309
310
  - **Hook semantics shift inside a group.** `usePathname` is ABSOLUTE (mount
@@ -332,7 +333,7 @@ The router repository (not shipped in this package) carries a canonical
332
333
  consumer at `tests/vite-rsc-demo/src/urls/client-shop.client.tsx`: layout +
333
334
  index + product routes, param-sensitive predicates, action-scoped cart
334
335
  revalidation, loader-thrown `notFound()`/`redirect()`, loader-written
335
- Meta/Breadcrumbs, viewport prefetch on cards, and the `stream: "navigation"`
336
+ Meta/Breadcrumbs, viewport prefetch on cards, and the `ssr: false`
336
337
  fixtures — with e2e suites next to it pinning each contract in dev and
337
338
  production. The sections above are self-contained; the app is corroboration,
338
339
  not required reading.
@@ -621,7 +621,7 @@ boundaries, compose server-side via `ctx.use(OtherLoader)`, and carry
621
621
  route-level authority: they can throw `notFound()`/`redirect()`, WRITE handles
622
622
  (`ctx.use(Meta)({ title })` — data-derived page metadata pushed from the data's
623
623
  producer), read handle data after the render settles (`ctx.get(handle)` behind
624
- `await ctx.rendered()`), and opt into `loader(Def, { stream: "navigation" })`
624
+ `await ctx.rendered()`), and opt into `loader(Def, { ssr: false })`
625
625
  so a document render awaits them before first flush (deterministic SSR'd data,
626
626
  meta, and 404 status). Reads happen through `useLoader` in a client component
627
627
  (including its SSR pass) or `useFetchLoader` for standalone client fetches. "Fetchable" loaders are callable
@@ -691,7 +691,7 @@ that no loader-before-render has:
691
691
  read by many segments, composed via `ctx.use`, or exposed as a fetchable endpoint;
692
692
  - it **streams as a hole, not a gate** — concurrent, Suspense-resolved under
693
693
  `loading()`, so the shell never blocks on it (and gating is a deliberate
694
- per-loader opt-in — `{ stream: "navigation" }` awaits ONE loader on document
694
+ per-loader opt-in — `{ ssr: false }` awaits ONE loader on document
695
695
  renders while the rest keep streaming — not the model's default);
696
696
  - it is **client-addressable and refreshable** independent of navigation (`key`,
697
697
  `refreshGroup`, `useRefreshLoaders`), behaving like a built-in, server-defined
@@ -26,7 +26,7 @@ boundary (or the route's `loading()`) — it does NOT render with
26
26
  `isLoading: true`. Put a boundary above every read whose loader can be slow;
27
27
  `isLoading` covers later refetches (`load()`, key/group refreshes). Once the
28
28
  component renders, `data` is present. (On document loads a loader registered
29
- with `{ stream: "navigation" }` is already settled at first paint, so its
29
+ with `{ ssr: false }` is already settled at first paint, so its
30
30
  reads never suspend there — see `/loader`.)
31
31
 
32
32
  **Precondition**: Loader must be registered on route via `loader()` helper.
@@ -33,7 +33,7 @@ const lastCrumb = useHandle(Breadcrumbs, (data) => data.at(-1));
33
33
  Writers: handlers AND loader bodies — `ctx.use(Handle)` returns the push
34
34
  function in each (middleware has no handle APIs). Loader pushes follow a delivery race (settle before
35
35
  the handler barrier → in the SSR'd document; later → applied client-side), and
36
- `loader(Def, { stream: "navigation" })` makes them deterministic in the
36
+ `loader(Def, { ssr: false })` makes them deterministic in the
37
37
  document. See `/loader` → "Writing Handles from Loaders". `useHandle`
38
38
  re-renders on every handle update, late loader pushes included.
39
39
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: loader
3
- description: Define data loaders for fetching data in routes with createLoader. Use when pages need per-request data that stays fresh, data should stream while the page renders, client components need reactive server data, a loader should throw notFound()/redirect(), set page meta/breadcrumbs from loader data (handle writes), or loader data must be guaranteed in the SSR'd document (stream:"navigation").
3
+ description: Define data loaders for fetching data in routes with createLoader. Use when pages need per-request data that stays fresh, data should stream while the page renders, client components need reactive server data, a loader should throw notFound()/redirect(), set page meta/breadcrumbs from loader data (handle writes), or loader data must be guaranteed in the SSR'd document (ssr:false).
4
4
  argument-hint: "[loader]"
5
5
  ---
6
6
 
@@ -172,23 +172,23 @@ Loaders receive the same context shape as route handlers.
172
172
 
173
173
  ### Full field surface
174
174
 
175
- | Field | Type | Notes |
176
- | -------------- | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
177
- | `params` | `TParams` | Merged route + explicit loader params; overridable by fetchable `load({ params })`. |
178
- | `routeParams` | `Record<string, string>` | Server-trusted route params from URL pattern matching; cannot be overridden. |
179
- | `request` | `Request` | The incoming `Request` (headers, method, body, `signal` for abort). |
180
- | `url` | `URL` | Parsed request URL. |
181
- | `pathname` | `string` | URL pathname (shortcut for `ctx.url.pathname`). |
182
- | `searchParams` | `URLSearchParams` | Shortcut for `ctx.url.searchParams`. |
183
- | `search` | `ResolveSearchSchema<TSearch>` | Typed query params when a search schema is declared on the route; `{}` otherwise. |
184
- | `env` | `TEnv` | Plain bindings from `createRouter<TEnv>()` (DB, KV, secrets, etc.). |
185
- | `get` | `(key \| ContextVar \| handle)` | Reads middleware variables/context-vars — or READS a handle's collected data, after `await ctx.rendered()`. |
186
- | `use` | `(loader \| handle) => T` | Access another loader's data (Promise), or WRITE a handle: `ctx.use(Meta)({ title })` returns the push function — handler parity. Reads moved to `get`. |
187
- | `rendered` | `() => Promise<void>` | **Experimental.** DSL loaders only — waits for all non-loader segments (including `loading()` streaming handlers) to settle before reading handle data. Not with `stream: "navigation"` (cycle; throws). |
188
- | `method` | `string` | HTTP method. `"GET"` for SSR loader runs; reflects real method for fetchable loaders. |
189
- | `body` | `TBody \| undefined` | Parsed request body for fetchable POST/PUT/PATCH/DELETE calls. |
190
- | `formData` | `FormData \| undefined` | Present when a fetchable loader is invoked via form submission. |
191
- | `reverse` | `ScopedReverseFunction` | Generate type-checked URLs from route names (same scoped semantics as route handlers). |
175
+ | Field | Type | Notes |
176
+ | -------------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
177
+ | `params` | `TParams` | Merged route + explicit loader params; overridable by fetchable `load({ params })`. |
178
+ | `routeParams` | `Record<string, string>` | Server-trusted route params from URL pattern matching; cannot be overridden. |
179
+ | `request` | `Request` | The incoming `Request` (headers, method, body, `signal` for abort). |
180
+ | `url` | `URL` | Parsed request URL. |
181
+ | `pathname` | `string` | URL pathname (shortcut for `ctx.url.pathname`). |
182
+ | `searchParams` | `URLSearchParams` | Shortcut for `ctx.url.searchParams`. |
183
+ | `search` | `ResolveSearchSchema<TSearch>` | Typed query params when a search schema is declared on the route; `{}` otherwise. |
184
+ | `env` | `TEnv` | Plain bindings from `createRouter<TEnv>()` (DB, KV, secrets, etc.). |
185
+ | `get` | `(key \| ContextVar \| handle)` | Reads middleware variables/context-vars — or READS a handle's collected data, after `await ctx.rendered()`. |
186
+ | `use` | `(loader \| handle) => T` | Access another loader's data (Promise), or WRITE a handle: `ctx.use(Meta)({ title })` returns the push function — handler parity. Reads moved to `get`. |
187
+ | `rendered` | `() => Promise<void>` | **Experimental.** DSL loaders only — waits for all non-loader segments (including `loading()` streaming handlers) to settle before reading handle data. Not with `ssr: false` (cycle; throws). |
188
+ | `method` | `string` | HTTP method. `"GET"` for SSR loader runs; reflects real method for fetchable loaders. |
189
+ | `body` | `TBody \| undefined` | Parsed request body for fetchable POST/PUT/PATCH/DELETE calls. |
190
+ | `formData` | `FormData \| undefined` | Present when a fetchable loader is invoked via form submission. |
191
+ | `reverse` | `ScopedReverseFunction` | Generate type-checked URLs from route names (same scoped semantics as route handlers). |
192
192
 
193
193
  ### Example
194
194
 
@@ -443,8 +443,8 @@ boundary a parallel loader blocks its parent, so add one to keep the overlap.)
443
443
  If you come from a framework where the loader is a blocking step that runs
444
444
  before the response is built, this is the shift to internalize: here the
445
445
  response starts streaming first and loader data fills in. (The one deliberate
446
- exception is per-loader: `loader(Def, { stream: "navigation" })` awaits that
447
- loader before first flush on document renders — see "`stream: "navigation"`"
446
+ exception is per-loader: `loader(Def, { ssr: false })` awaits that
447
+ loader before first flush on document renders — see "`ssr: false`"
448
448
  below.)
449
449
 
450
450
  ### See it: `debugPerformance`
@@ -687,10 +687,10 @@ export const ProductLoader = createLoader(async (ctx) => {
687
687
 
688
688
  Semantics by lane:
689
689
 
690
- | Signal | Document load | Client navigation |
691
- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
692
- | `notFound()` | Not-found UI resolves server-side (nearest `notFoundBoundary` → router option → default) and rides the envelope; the 404 STATUS is **opportunistic** — real only if the rejection beats Response construction. `stream: "navigation"` (below) makes it deterministic. | 404 UI swaps in, URL preserved, payload stays 200 |
693
- | `redirect()` | 200 document, then a client-side replace to the target — **no document-lane 302 from loaders**; pre-stream redirect authority belongs to middleware | Redirect envelope navigates to the target |
690
+ | Signal | Document load | Client navigation |
691
+ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
692
+ | `notFound()` | Not-found UI resolves server-side (nearest `notFoundBoundary` → router option → default) and rides the envelope; the 404 STATUS is **opportunistic** — real only if the rejection beats Response construction. `ssr: false` (below) makes it deterministic. | 404 UI swaps in, URL preserved, payload stays 200 |
693
+ | `redirect()` | 200 document, then a client-side replace to the target — **no document-lane 302 from loaders**; pre-stream redirect authority belongs to middleware | Redirect envelope navigates to the target |
694
694
 
695
695
  Session/auth gates belong in middleware (they are request-shaped, not
696
696
  data-shaped, and middleware CAN emit a real pre-stream 302). Data-dependent
@@ -725,14 +725,14 @@ barrier ride the SSR handle snapshot (in the SSR'd document — `<MetaTags />`,
725
725
  on document loads (`metadata.handlesLate`) or progressively on navigations.
726
726
  A push before your slow fetch usually beats the barrier; a push derived from
727
727
  the fetched data usually does not. When it MUST be in the document, use
728
- `stream: "navigation"` below.
728
+ `ssr: false` below.
729
729
 
730
730
  Reads are the other direction and gated: `ctx.get(handle)` throws unless the
731
731
  loader first does `await ctx.rendered()` (DSL-registered loaders only —
732
732
  handler-invoked loaders cannot use `rendered()`, and a handler already
733
733
  awaiting the loader via `ctx.use()` makes it a detected deadlock).
734
734
 
735
- ## `stream: "navigation"` — Guarantee a Loader in the Document
735
+ ## `ssr: false` — Guarantee a Loader in the Document
736
736
 
737
737
  Streaming means nothing a slow loader produces is _guaranteed_ in the SSR'd
738
738
  HTML: its section SSRs as the fallback, a late handle push applies
@@ -743,12 +743,13 @@ use callback:
743
743
 
744
744
  ```typescript
745
745
  path("/product/:slug", ProductPage, { name: "product" }, () => [
746
- loader(ProductLoader, { stream: "navigation" }, () => [cache({ ttl: 60 })]),
746
+ loader(ProductLoader, { ssr: false }, () => [cache({ ttl: 60 })]),
747
747
  loader(RelatedLoader), // untouched: still streams behind its boundary
748
748
  ]),
749
749
  ```
750
750
 
751
- The name says WHERE streaming still applies, not that it is disabled:
751
+ The knob mirrors `loading(fallback, { ssr: false })` SSR delivery is off
752
+ for this loader, so nothing of it is left to stream in the document:
752
753
  document renders await this loader before first flush — data is settled
753
754
  (`useLoader` reads it synchronously, no fallback paints), handle pushes beat
754
755
  the barrier snapshot, and a thrown `notFound()` deterministically precedes
@@ -756,6 +757,18 @@ Response construction (real 404, no warm-up race). Client navigations stream
756
757
  exactly as before. Scoped per LOADER: the flagged loader awaits only itself;
757
758
  siblings keep streaming.
758
759
 
760
+ Delivery is in-place, not merely in-document. React's Fizz outlines any
761
+ COMPLETED Suspense boundary over ~500 bytes to an end-of-stream
762
+ `<div hidden>` + `$RC()` reveal once the shell saturates its 12800-byte
763
+ `progressiveChunkSize` budget — the bytes are in the HTML, but not at their
764
+ document position, and a consumer that doesn't execute scripts never sees
765
+ them revealed. When the matched chain has a flagged loader, the document
766
+ render raises the budget to `MAX_SAFE_INTEGER` automatically, so the awaited
767
+ content renders where it belongs. Pin the budget yourself (in either
768
+ direction) with `rango({ progressiveChunkSize })` in the Vite config — an
769
+ explicit value disables the auto-raise. Boundaries hoisting stylesheets
770
+ still outline; their reveal must wait for the CSS.
771
+
759
772
  The costs and constraints:
760
773
 
761
774
  - Every document load pays the flagged loader's latency before first byte.
@@ -765,8 +778,11 @@ The costs and constraints:
765
778
  document render awaits the loader before the render barrier resolves, so
766
779
  that wait is a cycle by construction; it throws a deadlock error naming the
767
780
  fix.
768
- - PPR capture renders mask loaders and skip the await the flag does not
769
- bake anything into a shell (`/ppr`).
781
+ - PPR capture is the BAKE lane for flagged loaders (`/ppr`): the capture
782
+ render awaits them too, and the settled result — handle pushes included —
783
+ freezes into the stored shell. Unflagged loaders stay masked as live
784
+ holes. The `progressiveChunkSize` auto-raise is live-document only;
785
+ captured shells outline per the explicit option or React's default.
770
786
 
771
787
  Also available in `clientUrls()` route groups (`/client-urls`), where the
772
788
  loader-heavy shape makes it most useful. `LoaderOptions` is exported from the
@@ -726,7 +726,7 @@ const HomePage: Handler<"home"> = (ctx) => {
726
726
 
727
727
  `generateMetadata({ params })` — DATA-derived, document-blocking metadata —
728
728
  maps to a Meta push from the LOADER that owns the data, plus
729
- `{ stream: "navigation" }` for the blocking-until-in-head part:
729
+ `{ ssr: false }` for the blocking-until-in-head part:
730
730
 
731
731
  ```typescript
732
732
  // Next.js: export async function generateMetadata({ params }) {
@@ -744,7 +744,7 @@ export const ProductLoader = createLoader(async (ctx) => {
744
744
  });
745
745
 
746
746
  path("/product/:slug", ProductPage, { name: "product" }, () => [
747
- loader(ProductLoader, { stream: "navigation" }),
747
+ loader(ProductLoader, { ssr: false }),
748
748
  ]);
749
749
  ```
750
750
 
@@ -843,7 +843,7 @@ See `/theme` for full API including system detection and cookie persistence.
843
843
  10. [ ] Convert loading/error files to `loading()` / `errorBoundary()`
844
844
  11. [ ] Migrate API routes to `path.json()` / `path.text()`
845
845
  12. [ ] Update metadata to use `Meta` handle + `<MetaTags />` in document head
846
- (`generateMetadata` → loader push + `{ stream: "navigation" }`)
846
+ (`generateMetadata` → loader push + `{ ssr: false }`)
847
847
  13. [ ] Replace `next-themes` with `theme: true` in createRouter (see `/theme`)
848
848
  14. [ ] Map rendering-mode segment config: `revalidate = N` → `cache({ ttl })`,
849
849
  `force-static` → `Static()`/`Prerender()`, `experimental_ppr` → the
@@ -134,7 +134,7 @@ const HomePage: Handler<"home"> = (ctx) => {
134
134
 
135
135
  RR's data-derived `meta({ data })` maps to the same push from the LOADER that
136
136
  owns the data — `ctx.use(Meta)({ title: data.name })` in the loader body, with
137
- `loader(Def, { stream: "navigation" })` when the title must be in the SSR'd
137
+ `loader(Def, { ssr: false })` when the title must be in the SSR'd
138
138
  head. See `/loader` → "Writing Handles from Loaders".
139
139
 
140
140
  Add `<MetaTags />` in the Document component's `<head>`:
@@ -46,7 +46,7 @@ Use it only when you need capabilities beyond what the handler provides:
46
46
  document loads, never an HTTP 302 — pre-stream 302s move to middleware)
47
47
  - **`meta({ data })` / `handle` exports** — data-derived page metadata becomes
48
48
  a handle push from the loader body (`ctx.use(Meta)({ title: data.name })`),
49
- with `loader(L, { stream: "navigation" })` when it must be in the SSR'd head
49
+ with `loader(L, { ssr: false })` when it must be in the SSR'd head
50
50
 
51
51
  If the React Router loader just fetches data for its page component AND the
52
52
  component can become a server component, merge it into the handler. If the
@@ -135,7 +135,7 @@ The loader-shaped variant is equally valid — and closer to the RR module when
135
135
  the loader carried authority. A `createLoader()` body can throw `notFound()`
136
136
  for the missing product AND push the data-derived meta itself
137
137
  (`ctx.use(Meta)({ title: product.name })`); register it with
138
- `loader(ProductLoader, { stream: "navigation" })` when the 404 status and
138
+ `loader(ProductLoader, { ssr: false })` when the 404 status and
139
139
  title must be in the document deterministically. See `/loader` → "Loader
140
140
  Authority" and "Writing Handles from Loaders". (One RR habit that does NOT
141
141
  carry over: a loader `throw redirect()` is a client-side navigate on document
@@ -136,7 +136,7 @@ naturally.
136
136
  > the baked lane under `cache()`/PPR — just to reach a `ctx.use(Meta)` call.
137
137
  > The loader can now push `Meta` itself (`/loader` → "Writing Handles from
138
138
  > Loaders"), keeping the data on the live lane; add
139
- > `loader(Def, { stream: "navigation" })` when the meta must be in the SSR'd
139
+ > `loader(Def, { ssr: false })` when the meta must be in the SSR'd
140
140
  > head. Keep the `@meta` slot for metadata that is NOT loader-derived
141
141
  > (templates, static descriptions, structured data with independent inputs).
142
142
 
@@ -669,7 +669,7 @@ LOADER-pushed Meta is different: loaders are masked at capture, so the push
669
669
  happens at request time and applies client-side (`metadata.handlesLate`) — it
670
670
  is never in the cached shell's head, by construction.
671
671
 
672
- One flag to know about here: `loader(Def, { stream: "navigation" })` (the
672
+ One flag to know about here: `loader(Def, { ssr: false })` (the
673
673
  document-render await, `/loader`) is **inert under PPR** — capture renders
674
674
  mask loaders and skip the await, and a shell HIT flushes the stored prelude
675
675
  before loaders resolve. Flagging a loader on a `ppr` route does not bake it
@@ -95,26 +95,26 @@ stated, greppable contract.
95
95
 
96
96
  ## Pick a primitive
97
97
 
98
- | I need to… | Use | Skill |
99
- | --------------------------------------- | ------------------------------------- | ----------------------- |
100
- | render data fresh every request | `loader()` + `useLoader()` | /loader |
101
- | cache a rendered subtree | `cache()` on a segment | /caching |
102
- | cache one function/component's result | `"use cache"` | /use-cache |
103
- | cache a loader's data | `loader(L, () => [cache()])` | /loader, /caching |
104
- | re-render a segment after an action | `revalidate()` | /loader |
105
- | mutate | `"use server"` action | /server-actions |
106
- | debug a slow request | `debugPerformance` / telemetry | /observability |
107
- | share config across routes | factory returning a helper array | /composability |
108
- | compose a sub-app / module | `include()` | /route |
109
- | modal / soft navigation | `intercept()` | /intercept |
110
- | route group of client components | `clientUrls()` in `"use client"` | /client-urls |
111
- | set meta/breadcrumbs from loader data | `ctx.use(Handle)` in the loader | /loader |
112
- | guarantee loader output in the SSR HTML | `loader(L, { stream: "navigation" })` | /loader |
113
- | pre-render a route at build time | `Prerender(...)` wrapper | /prerender |
114
- | feed live loaders from a cached shell | replayed handle + `ctx.rendered()` | /shell-manifest |
115
- | cache the HTML shell, keep loaders live | `ppr` path option | /ppr |
116
- | choose in-function vs CDN caching | deployment cache boundary | /deployment-caching |
117
- | stream SSE / upgrade a WebSocket | `path.stream()` / `path.any()` | /streams-and-websockets |
98
+ | I need to… | Use | Skill |
99
+ | --------------------------------------- | ---------------------------------- | ----------------------- |
100
+ | render data fresh every request | `loader()` + `useLoader()` | /loader |
101
+ | cache a rendered subtree | `cache()` on a segment | /caching |
102
+ | cache one function/component's result | `"use cache"` | /use-cache |
103
+ | cache a loader's data | `loader(L, () => [cache()])` | /loader, /caching |
104
+ | re-render a segment after an action | `revalidate()` | /loader |
105
+ | mutate | `"use server"` action | /server-actions |
106
+ | debug a slow request | `debugPerformance` / telemetry | /observability |
107
+ | share config across routes | factory returning a helper array | /composability |
108
+ | compose a sub-app / module | `include()` | /route |
109
+ | modal / soft navigation | `intercept()` | /intercept |
110
+ | route group of client components | `clientUrls()` in `"use client"` | /client-urls |
111
+ | set meta/breadcrumbs from loader data | `ctx.use(Handle)` in the loader | /loader |
112
+ | guarantee loader output in the SSR HTML | `loader(L, { ssr: false })` | /loader |
113
+ | pre-render a route at build time | `Prerender(...)` wrapper | /prerender |
114
+ | feed live loaders from a cached shell | replayed handle + `ctx.rendered()` | /shell-manifest |
115
+ | cache the HTML shell, keep loaders live | `ppr` path option | /ppr |
116
+ | choose in-function vs CDN caching | deployment cache boundary | /deployment-caching |
117
+ | stream SSE / upgrade a WebSocket | `path.stream()` / `path.any()` | /streams-and-websockets |
118
118
 
119
119
  ## Invariants
120
120
 
@@ -375,7 +375,7 @@ Handler and no-match cases set HTTP 404 status. A LOADER-thrown `notFound()`
375
375
  on a document load always streams the resolved not-found UI, but the 404
376
376
  STATUS is opportunistic — real only when the rejection settles before the
377
377
  document Response is constructed (loaders stream). Register the loader as
378
- `loader(Def, { stream: "navigation" })` to make the 404 status deterministic;
378
+ `loader(Def, { ssr: false })` to make the 404 status deterministic;
379
379
  on client navigations the 404 UI swaps in with the URL preserved (payload
380
380
  stays 200 — the client owns presentation there). See `/loader` → "Loader
381
381
  Authority".
@@ -106,7 +106,7 @@ during navigation.
106
106
  > settles before the handler barrier. A push that lands after a slow fetch
107
107
  > arrives post-hydration — and for an inline/ordered script the frozen set
108
108
  > means it is silently dropped. If a loader must contribute an inline script
109
- > to the document, register it `loader(Def, { stream: "navigation" })` so the
109
+ > to the document, register it `loader(Def, { ssr: false })` so the
110
110
  > document render awaits the push; otherwise push from a handler (or use an
111
111
  > `async` config, which stays reactive).
112
112
 
@@ -151,7 +151,7 @@ cache({ ttl: 600, tags: ["products"] }, () => [
151
151
  fetchable/standalone loader calls that run outside a route render, in
152
152
  handler-invoked loaders (a handler already awaiting the loader via
153
153
  `ctx.use()` is a detected deadlock), and in loaders registered with
154
- `{ stream: "navigation" }` (the document render awaits the loader before
154
+ `{ ssr: false }` (the document render awaits the loader before
155
155
  the barrier — a cycle by construction; see `/loader`).
156
156
  - **The reading loader serializes after the shell.** `await ctx.rendered()`
157
157
  deliberately gives up loader/render parallelism — on a miss the loader
@@ -45,6 +45,10 @@ export function mergeSegmentLoaders(
45
45
  }),
46
46
  // Keep all loader IDs from cache
47
47
  loaderIds: fromCache.loaderIds,
48
+ // The rebuilt aggregate is the source of truth. Cached per-loader
49
+ // streams would make LoaderResolver ignore loaderDataPromise.
50
+ loaderStreams: undefined,
51
+ awaitedLoaderIds: undefined,
48
52
  };
49
53
  }
50
54
 
@@ -167,17 +167,28 @@ export interface LinkProps extends Omit<
167
167
  }
168
168
 
169
169
  /**
170
- * Check if URL is external (different origin)
170
+ * Check if URL is external (different origin). `origin` is resolved by the
171
+ * component from the navigation store location so SSR and browser agree —
172
+ * reading window here made every absolute-URL Link a hydration mismatch:
173
+ * on the server the ReferenceError was swallowed by the malformed-URL catch
174
+ * and the SSR HTML never carried data-external, then the browser evaluated
175
+ * the same link as external.
171
176
  */
172
- function isExternalUrl(href: string): boolean {
177
+ function isExternalUrl(href: string, origin: string | undefined): boolean {
173
178
  // Protocol-relative URLs
174
179
  if (href.startsWith("//")) return true;
175
180
 
176
181
  // Absolute URLs
177
182
  if (href.startsWith("http://") || href.startsWith("https://")) {
183
+ // No known origin (no provider and no window): treat as internal — the
184
+ // pre-fix behavior for that configuration, and stable across hydration
185
+ // because both sides resolve the same store origin when a provider
186
+ // exists (the real-app case).
187
+ if (!origin) return false;
178
188
  try {
179
- return new URL(href).origin !== window.location.origin;
189
+ return new URL(href).origin !== origin;
180
190
  } catch {
191
+ // Genuinely malformed absolute URL.
181
192
  return false;
182
193
  }
183
194
  }
@@ -225,7 +236,19 @@ export const Link: ForwardRefExoticComponent<
225
236
  ref,
226
237
  ) {
227
238
  const ctx = useContext(NavigationStoreContext);
228
- const isExternal = isExternalUrl(to);
239
+ // Origin from the store location — the same both-sides source
240
+ // useSearchParams seeds from (SSR: the live request's URL; browser:
241
+ // window.location), so data-external agrees across hydration. Origin is
242
+ // immutable per document, so the inline getState() read cannot tear.
243
+ // window is the provider-less browser fallback (tests, portals outside
244
+ // the app root); provider-less SSR has no origin and keeps links internal.
245
+ const storeLocation = ctx?.eventController.getState().location as
246
+ | URL
247
+ | undefined;
248
+ const origin =
249
+ storeLocation?.origin ??
250
+ (typeof window !== "undefined" ? window.location.origin : undefined);
251
+ const isExternal = isExternalUrl(to, origin);
229
252
 
230
253
  // Auto-prefix with basename for app-local paths.
231
254
  // Skip if external, already prefixed, or not a root-relative path.
@@ -137,7 +137,7 @@ interface LoaderItem extends ItemBase {
137
137
  readonly type: "loader";
138
138
  readonly definition: LoaderDefinition<any, any>;
139
139
  readonly revalidate: readonly ClientRevalidateFn[];
140
- readonly stream?: "navigation";
140
+ readonly ssr?: false;
141
141
  }
142
142
 
143
143
  interface RevalidateItem extends ItemBase {
@@ -380,9 +380,14 @@ function createHelpers(): ClientUrlHelpers {
380
380
  const options =
381
381
  typeof optionsOrUse === "function" ? undefined : optionsOrUse;
382
382
  const use = typeof optionsOrUse === "function" ? optionsOrUse : maybeUse;
383
- if (options?.stream !== undefined && options.stream !== "navigation") {
383
+ if ((options as { stream?: unknown } | undefined)?.stream !== undefined) {
384
384
  throw new Error(
385
- `clientUrls() loader() stream must be "navigation" (got ${JSON.stringify(options.stream)}). Omit it to stream on every render.`,
385
+ "clientUrls() loader() stream was replaced: use loader(Def, { ssr: false }) — the same knob as loading(fallback, { ssr: false }) to await the loader before first flush on document requests.",
386
+ );
387
+ }
388
+ if (options?.ssr !== undefined && typeof options.ssr !== "boolean") {
389
+ throw new Error(
390
+ `clientUrls() loader() ssr must be a boolean (got ${JSON.stringify(options.ssr)}). Omit it (or pass true) to stream on every render.`,
386
391
  );
387
392
  }
388
393
  const items = use ? runUse(use, "loader use") : [];
@@ -397,9 +402,7 @@ function createHelpers(): ClientUrlHelpers {
397
402
  item.type === "revalidate",
398
403
  )
399
404
  .map((item) => item.fn),
400
- ...(options?.stream === "navigation"
401
- ? { stream: "navigation" as const }
402
- : {}),
405
+ ...(options?.ssr === false ? { ssr: false as const } : {}),
403
406
  });
404
407
  };
405
408
 
@@ -505,9 +508,9 @@ function createHelpers(): ClientUrlHelpers {
505
508
  for (const item of items) {
506
509
  // Intercept loaders run on soft navigations only — a document-render
507
510
  // await can never apply, so accepting the flag would be silently inert.
508
- if (item.type === "loader" && item.stream !== undefined) {
511
+ if (item.type === "loader" && item.ssr !== undefined) {
509
512
  throw new Error(
510
- 'clientUrls() intercept() loaders cannot use stream: "navigation" — intercepts render on client navigations only',
513
+ "clientUrls() intercept() loaders cannot use ssr: false — intercepts render on client navigations only",
511
514
  );
512
515
  }
513
516
  }
@@ -557,7 +560,7 @@ function applyConfig(
557
560
  Object.freeze({
558
561
  loader: item.definition,
559
562
  revalidate: Object.freeze([...item.revalidate]),
560
- ...(item.stream ? { stream: item.stream } : {}),
563
+ ...(item.ssr === false ? { ssr: false as const } : {}),
561
564
  }),
562
565
  );
563
566
  } else if (item.type === "loading") {
@@ -89,10 +89,10 @@ export interface ClientUrlProjectionRoute {
89
89
  readonly options: ClientUrlProjectionOptions;
90
90
  readonly loaderIds: readonly string[];
91
91
  readonly hasLoading: boolean;
92
- /** Indices into loaderIds of loaders declared loader(Def, { stream:
93
- * "navigation" }); materialization passes the option through to the server
94
- * loader() so document renders await them before first flush. Absent (=
95
- * none) in projections serialized before stream support. */
92
+ /** Indices into loaderIds of loaders declared loader(Def, { ssr: false });
93
+ * materialization passes the option through to the server loader() so
94
+ * document renders await them before first flush. Absent (= none) in
95
+ * projections serialized before the option existed. */
96
96
  readonly awaitedLoaderIndices?: readonly number[];
97
97
  /** Data-only transition config (no `when` — server-tree only); absent in
98
98
  * projections serialized before transition support. */
@@ -274,7 +274,7 @@ function serializeRoute(route: ClientUrlRouteRecord): ClientUrlProjectionRoute {
274
274
  });
275
275
 
276
276
  const awaitedLoaderIndices = route.loaders
277
- .map(({ stream }, index) => (stream === "navigation" ? index : -1))
277
+ .map(({ ssr }, index) => (ssr === false ? index : -1))
278
278
  .filter((index) => index >= 0);
279
279
 
280
280
  const transition = serializeTransition(route);
@@ -526,7 +526,7 @@ function materializeRouteItems(
526
526
  loader(
527
527
  createLoaderStub(id),
528
528
  route.awaitedLoaderIndices?.includes(loaderIndex)
529
- ? { stream: "navigation" }
529
+ ? { ssr: false }
530
530
  : undefined,
531
531
  () => [revalidate(makeClientDecisionRevalidate(id))],
532
532
  ),