@rangojs/router 0.0.0-experimental.760a71d9 → 0.0.0-experimental.77ed8945

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 (1060) hide show
  1. package/README.md +196 -43
  2. package/dist/bin/rango.js +269 -96
  3. package/dist/vite/index.js +2629 -908
  4. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  5. package/package.json +13 -8
  6. package/skills/api-client/SKILL.md +211 -0
  7. package/skills/breadcrumbs/SKILL.md +3 -1
  8. package/skills/bundle-analysis/SKILL.md +159 -0
  9. package/skills/cache-guide/SKILL.md +243 -21
  10. package/skills/caching/SKILL.md +118 -2
  11. package/skills/composability/SKILL.md +27 -2
  12. package/skills/css/SKILL.md +76 -0
  13. package/skills/document-cache/SKILL.md +78 -55
  14. package/skills/handler-use/SKILL.md +364 -0
  15. package/skills/hooks/SKILL.md +229 -20
  16. package/skills/host-router/SKILL.md +66 -20
  17. package/skills/i18n/SKILL.md +276 -0
  18. package/skills/intercept/SKILL.md +46 -4
  19. package/skills/layout/SKILL.md +28 -7
  20. package/skills/links/SKILL.md +249 -17
  21. package/skills/loader/SKILL.md +273 -53
  22. package/skills/middleware/SKILL.md +49 -12
  23. package/skills/migrate-nextjs/SKILL.md +562 -0
  24. package/skills/migrate-react-router/SKILL.md +769 -0
  25. package/skills/mime-routes/SKILL.md +27 -0
  26. package/skills/observability/SKILL.md +137 -0
  27. package/skills/parallel/SKILL.md +138 -6
  28. package/skills/prerender/SKILL.md +123 -100
  29. package/skills/rango/SKILL.md +238 -22
  30. package/skills/react-compiler/SKILL.md +168 -0
  31. package/skills/response-routes/SKILL.md +122 -47
  32. package/skills/route/SKILL.md +88 -4
  33. package/skills/router-setup/SKILL.md +90 -5
  34. package/skills/server-actions/SKILL.md +751 -0
  35. package/skills/streams-and-websockets/SKILL.md +283 -0
  36. package/skills/tailwind/SKILL.md +27 -3
  37. package/skills/typesafety/SKILL.md +329 -27
  38. package/skills/use-cache/SKILL.md +34 -5
  39. package/skills/view-transitions/SKILL.md +294 -0
  40. package/src/__augment-tests__/augment.ts +81 -0
  41. package/src/__augment-tests__/augmented.check.ts +116 -0
  42. package/src/__internal.ts +1 -1
  43. package/src/browser/action-coordinator.ts +53 -36
  44. package/src/browser/app-shell.ts +39 -0
  45. package/src/browser/app-version.ts +14 -0
  46. package/src/browser/event-controller.ts +86 -70
  47. package/src/browser/history-state.ts +21 -0
  48. package/src/browser/index.ts +3 -3
  49. package/src/browser/navigation-bridge.ts +52 -13
  50. package/src/browser/navigation-client.ts +159 -85
  51. package/src/browser/navigation-store.ts +50 -16
  52. package/src/browser/navigation-transaction.ts +10 -28
  53. package/src/browser/partial-update.ts +77 -30
  54. package/src/browser/prefetch/cache.ts +201 -44
  55. package/src/browser/prefetch/fetch.ts +245 -39
  56. package/src/browser/prefetch/queue.ts +92 -29
  57. package/src/browser/prefetch/resource-ready.ts +77 -0
  58. package/src/browser/rango-state.ts +37 -13
  59. package/src/browser/react/Link.tsx +72 -8
  60. package/src/browser/react/NavigationProvider.tsx +86 -33
  61. package/src/browser/react/context.ts +7 -2
  62. package/src/browser/react/filter-segment-order.ts +51 -7
  63. package/src/browser/react/index.ts +3 -0
  64. package/src/browser/react/location-state-shared.ts +175 -4
  65. package/src/browser/react/location-state.ts +39 -13
  66. package/src/browser/react/use-handle.ts +23 -64
  67. package/src/browser/react/use-navigation.ts +22 -2
  68. package/src/browser/react/use-params.ts +20 -8
  69. package/src/browser/react/use-reverse.ts +106 -0
  70. package/src/browser/react/use-router.ts +44 -10
  71. package/src/browser/react/use-segments.ts +11 -8
  72. package/src/browser/response-adapter.ts +52 -1
  73. package/src/browser/rsc-router.tsx +94 -22
  74. package/src/browser/scroll-restoration.ts +29 -19
  75. package/src/browser/segment-reconciler.ts +36 -14
  76. package/src/browser/segment-structure-assert.ts +2 -2
  77. package/src/browser/server-action-bridge.ts +52 -36
  78. package/src/browser/types.ts +37 -5
  79. package/src/build/collect-fallback-refs.ts +107 -0
  80. package/src/build/generate-manifest.ts +65 -40
  81. package/src/build/generate-route-types.ts +5 -0
  82. package/src/build/index.ts +8 -1
  83. package/src/build/prefix-tree-utils.ts +123 -0
  84. package/src/build/route-trie.ts +95 -25
  85. package/src/build/route-types/codegen.ts +4 -4
  86. package/src/build/route-types/include-resolution.ts +9 -2
  87. package/src/build/route-types/per-module-writer.ts +7 -4
  88. package/src/build/route-types/router-processing.ts +266 -86
  89. package/src/build/route-types/scan-filter.ts +9 -2
  90. package/src/build/route-types/source-scan.ts +118 -0
  91. package/src/build/runtime-discovery.ts +9 -20
  92. package/src/cache/cache-runtime.ts +17 -5
  93. package/src/cache/cache-scope.ts +97 -54
  94. package/src/cache/cf/cf-cache-store.ts +502 -32
  95. package/src/cache/cf/index.ts +3 -0
  96. package/src/cache/handle-snapshot.ts +103 -0
  97. package/src/cache/index.ts +3 -0
  98. package/src/cache/memory-segment-store.ts +3 -2
  99. package/src/cache/taint.ts +55 -0
  100. package/src/cache/types.ts +10 -6
  101. package/src/client.rsc.tsx +3 -0
  102. package/src/client.tsx +98 -261
  103. package/src/context-var.ts +72 -2
  104. package/src/decode-loader-results.ts +36 -0
  105. package/src/errors.ts +30 -4
  106. package/src/handle.ts +43 -5
  107. package/src/host/index.ts +2 -2
  108. package/src/host/router.ts +129 -57
  109. package/src/host/types.ts +31 -2
  110. package/src/host/utils.ts +1 -1
  111. package/src/href-client.ts +140 -21
  112. package/src/index.rsc.ts +13 -7
  113. package/src/index.ts +62 -13
  114. package/src/loader-store.ts +500 -0
  115. package/src/loader.rsc.ts +2 -5
  116. package/src/loader.ts +3 -10
  117. package/src/missing-id-error.ts +68 -0
  118. package/src/outlet-context.ts +1 -1
  119. package/src/prerender/store.ts +14 -11
  120. package/src/prerender.ts +141 -80
  121. package/src/response-utils.ts +37 -0
  122. package/src/reverse.ts +65 -15
  123. package/src/route-content-wrapper.tsx +6 -28
  124. package/src/route-definition/dsl-helpers.ts +411 -261
  125. package/src/route-definition/helper-factories.ts +29 -139
  126. package/src/route-definition/helpers-types.ts +110 -34
  127. package/src/route-definition/index.ts +3 -0
  128. package/src/route-definition/redirect.ts +9 -1
  129. package/src/route-definition/resolve-handler-use.ts +155 -0
  130. package/src/route-definition/use-item-types.ts +32 -0
  131. package/src/route-types.ts +37 -41
  132. package/src/router/content-negotiation.ts +113 -1
  133. package/src/router/error-handling.ts +1 -1
  134. package/src/router/find-match.ts +54 -6
  135. package/src/router/handler-context.ts +77 -38
  136. package/src/router/intercept-resolution.ts +13 -22
  137. package/src/router/lazy-includes.ts +41 -22
  138. package/src/router/loader-resolution.ts +203 -22
  139. package/src/router/manifest.ts +41 -19
  140. package/src/router/match-api.ts +128 -192
  141. package/src/router/match-handlers.ts +1 -0
  142. package/src/router/match-middleware/background-revalidation.ts +12 -1
  143. package/src/router/match-middleware/cache-lookup.ts +95 -106
  144. package/src/router/match-middleware/cache-store.ts +22 -4
  145. package/src/router/match-middleware/segment-resolution.ts +53 -0
  146. package/src/router/match-result.ts +103 -4
  147. package/src/router/metrics.ts +1 -1
  148. package/src/router/middleware-types.ts +21 -34
  149. package/src/router/middleware.ts +101 -89
  150. package/src/router/navigation-snapshot.ts +182 -0
  151. package/src/router/pattern-matching.ts +116 -19
  152. package/src/router/prerender-match.ts +147 -22
  153. package/src/router/preview-match.ts +32 -102
  154. package/src/router/request-classification.ts +313 -0
  155. package/src/router/revalidation.ts +58 -2
  156. package/src/router/route-snapshot.ts +245 -0
  157. package/src/router/router-context.ts +1 -0
  158. package/src/router/router-interfaces.ts +83 -35
  159. package/src/router/router-options.ts +61 -11
  160. package/src/router/router-registry.ts +2 -5
  161. package/src/router/segment-resolution/fresh.ts +105 -13
  162. package/src/router/segment-resolution/helpers.ts +29 -24
  163. package/src/router/segment-resolution/revalidation.ts +236 -112
  164. package/src/router/segment-resolution/static-store.ts +19 -5
  165. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  166. package/src/router/substitute-pattern-params.ts +56 -0
  167. package/src/router/trie-matching.ts +40 -16
  168. package/src/router/types.ts +9 -0
  169. package/src/router/url-params.ts +49 -0
  170. package/src/router.ts +90 -29
  171. package/src/rsc/handler-context.ts +2 -2
  172. package/src/rsc/handler.ts +461 -380
  173. package/src/rsc/helpers.ts +72 -43
  174. package/src/rsc/index.ts +1 -1
  175. package/src/rsc/loader-fetch.ts +23 -3
  176. package/src/rsc/manifest-init.ts +33 -42
  177. package/src/rsc/origin-guard.ts +30 -10
  178. package/src/rsc/progressive-enhancement.ts +18 -2
  179. package/src/rsc/response-error.ts +79 -12
  180. package/src/rsc/response-route-handler.ts +76 -61
  181. package/src/rsc/rsc-rendering.ts +51 -48
  182. package/src/rsc/runtime-warnings.ts +9 -10
  183. package/src/rsc/server-action.ts +41 -39
  184. package/src/rsc/ssr-setup.ts +18 -2
  185. package/src/rsc/types.ts +17 -3
  186. package/src/search-params.ts +4 -4
  187. package/src/segment-content-promise.ts +67 -0
  188. package/src/segment-loader-promise.ts +122 -0
  189. package/src/segment-system.tsx +132 -116
  190. package/src/serialize.ts +243 -0
  191. package/src/server/context.ts +222 -51
  192. package/src/server/cookie-store.ts +28 -4
  193. package/src/server/handle-store.ts +19 -0
  194. package/src/server/loader-registry.ts +9 -8
  195. package/src/server/request-context.ts +223 -57
  196. package/src/ssr/index.tsx +8 -1
  197. package/src/static-handler.ts +19 -7
  198. package/src/types/cache-types.ts +4 -4
  199. package/src/types/global-namespace.ts +39 -26
  200. package/src/types/handler-context.ts +103 -67
  201. package/src/types/index.ts +1 -0
  202. package/src/types/loader-types.ts +44 -15
  203. package/src/types/request-scope.ts +126 -0
  204. package/src/types/route-entry.ts +12 -1
  205. package/src/types/segments.ts +36 -2
  206. package/src/urls/include-helper.ts +34 -67
  207. package/src/urls/index.ts +1 -5
  208. package/src/urls/path-helper-types.ts +56 -9
  209. package/src/urls/path-helper.ts +63 -63
  210. package/src/urls/pattern-types.ts +48 -19
  211. package/src/urls/response-types.ts +25 -22
  212. package/src/urls/type-extraction.ts +58 -139
  213. package/src/urls/urls-function.ts +1 -5
  214. package/src/use-loader.tsx +487 -44
  215. package/src/vite/debug.ts +185 -0
  216. package/src/vite/discovery/bundle-postprocess.ts +34 -37
  217. package/src/vite/discovery/discover-routers.ts +110 -75
  218. package/src/vite/discovery/discovery-errors.ts +194 -0
  219. package/src/vite/discovery/gate-state.ts +171 -0
  220. package/src/vite/discovery/prerender-collection.ts +193 -98
  221. package/src/vite/discovery/route-types-writer.ts +40 -84
  222. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  223. package/src/vite/discovery/state.ts +46 -4
  224. package/src/vite/discovery/virtual-module-codegen.ts +13 -23
  225. package/src/vite/index.ts +6 -0
  226. package/src/vite/plugin-types.ts +126 -4
  227. package/src/vite/plugins/cjs-to-esm.ts +8 -7
  228. package/src/vite/plugins/client-ref-dedup.ts +16 -0
  229. package/src/vite/plugins/client-ref-hashing.ts +28 -5
  230. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  231. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  232. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  233. package/src/vite/plugins/expose-action-id.ts +54 -30
  234. package/src/vite/plugins/expose-id-utils.ts +24 -8
  235. package/src/vite/plugins/expose-ids/export-analysis.ts +100 -20
  236. package/src/vite/plugins/expose-ids/handler-transform.ts +12 -35
  237. package/src/vite/plugins/expose-ids/loader-transform.ts +3 -5
  238. package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
  239. package/src/vite/plugins/expose-internal-ids.ts +544 -317
  240. package/src/vite/plugins/performance-tracks.ts +92 -0
  241. package/src/vite/plugins/refresh-cmd.ts +88 -26
  242. package/src/vite/plugins/use-cache-transform.ts +65 -50
  243. package/src/vite/plugins/version-injector.ts +39 -23
  244. package/src/vite/plugins/version-plugin.ts +59 -2
  245. package/src/vite/plugins/virtual-entries.ts +2 -2
  246. package/src/vite/rango.ts +130 -26
  247. package/src/vite/router-discovery.ts +923 -133
  248. package/src/vite/utils/ast-handler-extract.ts +15 -15
  249. package/src/vite/utils/banner.ts +1 -1
  250. package/src/vite/utils/bundle-analysis.ts +4 -2
  251. package/src/vite/utils/client-chunks.ts +190 -0
  252. package/src/vite/utils/forward-user-plugins.ts +193 -0
  253. package/src/vite/utils/manifest-utils.ts +8 -59
  254. package/src/vite/utils/package-resolution.ts +41 -1
  255. package/src/vite/utils/prerender-utils.ts +38 -5
  256. package/src/vite/utils/shared-utils.ts +109 -27
  257. package/dist/__internal.d.ts +0 -83
  258. package/dist/__internal.d.ts.map +0 -1
  259. package/dist/__internal.js +0 -19
  260. package/dist/__internal.js.map +0 -1
  261. package/dist/__mocks__/version.d.ts +0 -7
  262. package/dist/__mocks__/version.d.ts.map +0 -1
  263. package/dist/__mocks__/version.js +0 -7
  264. package/dist/__mocks__/version.js.map +0 -1
  265. package/dist/__tests__/client-href.test.d.ts +0 -2
  266. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  267. package/dist/__tests__/client-href.test.js +0 -74
  268. package/dist/__tests__/client-href.test.js.map +0 -1
  269. package/dist/__tests__/component-utils.test.d.ts +0 -2
  270. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  271. package/dist/__tests__/component-utils.test.js +0 -51
  272. package/dist/__tests__/component-utils.test.js.map +0 -1
  273. package/dist/__tests__/event-controller.test.d.ts +0 -2
  274. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  275. package/dist/__tests__/event-controller.test.js +0 -538
  276. package/dist/__tests__/event-controller.test.js.map +0 -1
  277. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  278. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  279. package/dist/__tests__/helpers/route-tree.js +0 -374
  280. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  281. package/dist/__tests__/match-result.test.d.ts +0 -2
  282. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  283. package/dist/__tests__/match-result.test.js +0 -154
  284. package/dist/__tests__/match-result.test.js.map +0 -1
  285. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  286. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  287. package/dist/__tests__/navigation-store.test.js +0 -440
  288. package/dist/__tests__/navigation-store.test.js.map +0 -1
  289. package/dist/__tests__/partial-update.test.d.ts +0 -2
  290. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  291. package/dist/__tests__/partial-update.test.js +0 -1009
  292. package/dist/__tests__/partial-update.test.js.map +0 -1
  293. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  294. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  295. package/dist/__tests__/reverse-types.test.js +0 -656
  296. package/dist/__tests__/reverse-types.test.js.map +0 -1
  297. package/dist/__tests__/route-definition.test.d.ts +0 -2
  298. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  299. package/dist/__tests__/route-definition.test.js +0 -55
  300. package/dist/__tests__/route-definition.test.js.map +0 -1
  301. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  302. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  303. package/dist/__tests__/router-helpers.test.js +0 -377
  304. package/dist/__tests__/router-helpers.test.js.map +0 -1
  305. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  306. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  307. package/dist/__tests__/router-integration-2.test.js +0 -426
  308. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  309. package/dist/__tests__/router-integration.test.d.ts +0 -2
  310. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  311. package/dist/__tests__/router-integration.test.js +0 -1051
  312. package/dist/__tests__/router-integration.test.js.map +0 -1
  313. package/dist/__tests__/search-params.test.d.ts +0 -5
  314. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  315. package/dist/__tests__/search-params.test.js +0 -306
  316. package/dist/__tests__/search-params.test.js.map +0 -1
  317. package/dist/__tests__/segment-system.test.d.ts +0 -2
  318. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  319. package/dist/__tests__/segment-system.test.js +0 -627
  320. package/dist/__tests__/segment-system.test.js.map +0 -1
  321. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  322. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  323. package/dist/__tests__/static-handler-types.test.js +0 -63
  324. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  325. package/dist/__tests__/urls.test.d.ts +0 -2
  326. package/dist/__tests__/urls.test.d.ts.map +0 -1
  327. package/dist/__tests__/urls.test.js +0 -421
  328. package/dist/__tests__/urls.test.js.map +0 -1
  329. package/dist/__tests__/use-mount.test.d.ts +0 -2
  330. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  331. package/dist/__tests__/use-mount.test.js +0 -35
  332. package/dist/__tests__/use-mount.test.js.map +0 -1
  333. package/dist/bin/rango.d.ts +0 -2
  334. package/dist/bin/rango.d.ts.map +0 -1
  335. package/dist/bin/rango.js.map +0 -1
  336. package/dist/browser/event-controller.d.ts +0 -191
  337. package/dist/browser/event-controller.d.ts.map +0 -1
  338. package/dist/browser/event-controller.js +0 -559
  339. package/dist/browser/event-controller.js.map +0 -1
  340. package/dist/browser/index.d.ts +0 -2
  341. package/dist/browser/index.d.ts.map +0 -1
  342. package/dist/browser/index.js +0 -14
  343. package/dist/browser/index.js.map +0 -1
  344. package/dist/browser/link-interceptor.d.ts +0 -38
  345. package/dist/browser/link-interceptor.d.ts.map +0 -1
  346. package/dist/browser/link-interceptor.js +0 -99
  347. package/dist/browser/link-interceptor.js.map +0 -1
  348. package/dist/browser/logging.d.ts +0 -10
  349. package/dist/browser/logging.d.ts.map +0 -1
  350. package/dist/browser/logging.js +0 -29
  351. package/dist/browser/logging.js.map +0 -1
  352. package/dist/browser/lru-cache.d.ts +0 -17
  353. package/dist/browser/lru-cache.d.ts.map +0 -1
  354. package/dist/browser/lru-cache.js +0 -50
  355. package/dist/browser/lru-cache.js.map +0 -1
  356. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  357. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  358. package/dist/browser/merge-segment-loaders.js +0 -102
  359. package/dist/browser/merge-segment-loaders.js.map +0 -1
  360. package/dist/browser/navigation-bridge.d.ts +0 -102
  361. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  362. package/dist/browser/navigation-bridge.js +0 -708
  363. package/dist/browser/navigation-bridge.js.map +0 -1
  364. package/dist/browser/navigation-client.d.ts +0 -25
  365. package/dist/browser/navigation-client.d.ts.map +0 -1
  366. package/dist/browser/navigation-client.js +0 -157
  367. package/dist/browser/navigation-client.js.map +0 -1
  368. package/dist/browser/navigation-store.d.ts +0 -101
  369. package/dist/browser/navigation-store.d.ts.map +0 -1
  370. package/dist/browser/navigation-store.js +0 -625
  371. package/dist/browser/navigation-store.js.map +0 -1
  372. package/dist/browser/partial-update.d.ts +0 -75
  373. package/dist/browser/partial-update.d.ts.map +0 -1
  374. package/dist/browser/partial-update.js +0 -426
  375. package/dist/browser/partial-update.js.map +0 -1
  376. package/dist/browser/react/Link.d.ts +0 -86
  377. package/dist/browser/react/Link.d.ts.map +0 -1
  378. package/dist/browser/react/Link.js +0 -128
  379. package/dist/browser/react/Link.js.map +0 -1
  380. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  381. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  382. package/dist/browser/react/NavigationProvider.js +0 -216
  383. package/dist/browser/react/NavigationProvider.js.map +0 -1
  384. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  385. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  386. package/dist/browser/react/ScrollRestoration.js +0 -57
  387. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  388. package/dist/browser/react/context.d.ts +0 -46
  389. package/dist/browser/react/context.d.ts.map +0 -1
  390. package/dist/browser/react/context.js +0 -10
  391. package/dist/browser/react/context.js.map +0 -1
  392. package/dist/browser/react/index.d.ts +0 -11
  393. package/dist/browser/react/index.d.ts.map +0 -1
  394. package/dist/browser/react/index.js +0 -22
  395. package/dist/browser/react/index.js.map +0 -1
  396. package/dist/browser/react/location-state-shared.d.ts +0 -63
  397. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  398. package/dist/browser/react/location-state-shared.js +0 -81
  399. package/dist/browser/react/location-state-shared.js.map +0 -1
  400. package/dist/browser/react/location-state.d.ts +0 -23
  401. package/dist/browser/react/location-state.d.ts.map +0 -1
  402. package/dist/browser/react/location-state.js +0 -29
  403. package/dist/browser/react/location-state.js.map +0 -1
  404. package/dist/browser/react/mount-context.d.ts +0 -24
  405. package/dist/browser/react/mount-context.d.ts.map +0 -1
  406. package/dist/browser/react/mount-context.js +0 -24
  407. package/dist/browser/react/mount-context.js.map +0 -1
  408. package/dist/browser/react/use-action.d.ts +0 -64
  409. package/dist/browser/react/use-action.d.ts.map +0 -1
  410. package/dist/browser/react/use-action.js +0 -134
  411. package/dist/browser/react/use-action.js.map +0 -1
  412. package/dist/browser/react/use-client-cache.d.ts +0 -41
  413. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  414. package/dist/browser/react/use-client-cache.js +0 -39
  415. package/dist/browser/react/use-client-cache.js.map +0 -1
  416. package/dist/browser/react/use-handle.d.ts +0 -31
  417. package/dist/browser/react/use-handle.d.ts.map +0 -1
  418. package/dist/browser/react/use-handle.js +0 -144
  419. package/dist/browser/react/use-handle.js.map +0 -1
  420. package/dist/browser/react/use-href.d.ts +0 -33
  421. package/dist/browser/react/use-href.d.ts.map +0 -1
  422. package/dist/browser/react/use-href.js +0 -39
  423. package/dist/browser/react/use-href.js.map +0 -1
  424. package/dist/browser/react/use-link-status.d.ts +0 -37
  425. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  426. package/dist/browser/react/use-link-status.js +0 -99
  427. package/dist/browser/react/use-link-status.js.map +0 -1
  428. package/dist/browser/react/use-mount.d.ts +0 -25
  429. package/dist/browser/react/use-mount.d.ts.map +0 -1
  430. package/dist/browser/react/use-mount.js +0 -30
  431. package/dist/browser/react/use-mount.js.map +0 -1
  432. package/dist/browser/react/use-navigation.d.ts +0 -27
  433. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  434. package/dist/browser/react/use-navigation.js +0 -87
  435. package/dist/browser/react/use-navigation.js.map +0 -1
  436. package/dist/browser/react/use-segments.d.ts +0 -38
  437. package/dist/browser/react/use-segments.d.ts.map +0 -1
  438. package/dist/browser/react/use-segments.js +0 -130
  439. package/dist/browser/react/use-segments.js.map +0 -1
  440. package/dist/browser/request-controller.d.ts +0 -26
  441. package/dist/browser/request-controller.d.ts.map +0 -1
  442. package/dist/browser/request-controller.js +0 -147
  443. package/dist/browser/request-controller.js.map +0 -1
  444. package/dist/browser/rsc-router.d.ts +0 -129
  445. package/dist/browser/rsc-router.d.ts.map +0 -1
  446. package/dist/browser/rsc-router.js +0 -195
  447. package/dist/browser/rsc-router.js.map +0 -1
  448. package/dist/browser/scroll-restoration.d.ts +0 -93
  449. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  450. package/dist/browser/scroll-restoration.js +0 -321
  451. package/dist/browser/scroll-restoration.js.map +0 -1
  452. package/dist/browser/segment-structure-assert.d.ts +0 -17
  453. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  454. package/dist/browser/segment-structure-assert.js +0 -59
  455. package/dist/browser/segment-structure-assert.js.map +0 -1
  456. package/dist/browser/server-action-bridge.d.ts +0 -26
  457. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  458. package/dist/browser/server-action-bridge.js +0 -668
  459. package/dist/browser/server-action-bridge.js.map +0 -1
  460. package/dist/browser/shallow.d.ts +0 -12
  461. package/dist/browser/shallow.d.ts.map +0 -1
  462. package/dist/browser/shallow.js +0 -34
  463. package/dist/browser/shallow.js.map +0 -1
  464. package/dist/browser/types.d.ts +0 -369
  465. package/dist/browser/types.d.ts.map +0 -1
  466. package/dist/browser/types.js +0 -2
  467. package/dist/browser/types.js.map +0 -1
  468. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  469. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  470. package/dist/build/__tests__/generate-cli.test.js +0 -237
  471. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  472. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  473. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  474. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  475. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  476. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  477. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  478. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  479. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  480. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  481. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  482. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  483. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  484. package/dist/build/generate-manifest.d.ts +0 -81
  485. package/dist/build/generate-manifest.d.ts.map +0 -1
  486. package/dist/build/generate-manifest.js +0 -276
  487. package/dist/build/generate-manifest.js.map +0 -1
  488. package/dist/build/generate-route-types.d.ts +0 -115
  489. package/dist/build/generate-route-types.d.ts.map +0 -1
  490. package/dist/build/generate-route-types.js +0 -740
  491. package/dist/build/generate-route-types.js.map +0 -1
  492. package/dist/build/index.d.ts +0 -21
  493. package/dist/build/index.d.ts.map +0 -1
  494. package/dist/build/index.js +0 -21
  495. package/dist/build/index.js.map +0 -1
  496. package/dist/build/route-trie.d.ts +0 -71
  497. package/dist/build/route-trie.d.ts.map +0 -1
  498. package/dist/build/route-trie.js +0 -175
  499. package/dist/build/route-trie.js.map +0 -1
  500. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  501. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  502. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  503. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  504. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  505. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  506. package/dist/cache/__tests__/document-cache.test.js +0 -345
  507. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  508. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  509. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  510. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  511. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  512. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  513. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  514. package/dist/cache/__tests__/memory-store.test.js +0 -367
  515. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  516. package/dist/cache/cache-scope.d.ts +0 -102
  517. package/dist/cache/cache-scope.d.ts.map +0 -1
  518. package/dist/cache/cache-scope.js +0 -440
  519. package/dist/cache/cache-scope.js.map +0 -1
  520. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  521. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  522. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  523. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  524. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  525. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  526. package/dist/cache/cf/cf-cache-store.js +0 -242
  527. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  528. package/dist/cache/cf/index.d.ts +0 -14
  529. package/dist/cache/cf/index.d.ts.map +0 -1
  530. package/dist/cache/cf/index.js +0 -17
  531. package/dist/cache/cf/index.js.map +0 -1
  532. package/dist/cache/document-cache.d.ts +0 -64
  533. package/dist/cache/document-cache.d.ts.map +0 -1
  534. package/dist/cache/document-cache.js +0 -228
  535. package/dist/cache/document-cache.js.map +0 -1
  536. package/dist/cache/index.d.ts +0 -19
  537. package/dist/cache/index.d.ts.map +0 -1
  538. package/dist/cache/index.js +0 -21
  539. package/dist/cache/index.js.map +0 -1
  540. package/dist/cache/memory-segment-store.d.ts +0 -110
  541. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  542. package/dist/cache/memory-segment-store.js +0 -117
  543. package/dist/cache/memory-segment-store.js.map +0 -1
  544. package/dist/cache/memory-store.d.ts +0 -41
  545. package/dist/cache/memory-store.d.ts.map +0 -1
  546. package/dist/cache/memory-store.js +0 -191
  547. package/dist/cache/memory-store.js.map +0 -1
  548. package/dist/cache/types.d.ts +0 -317
  549. package/dist/cache/types.d.ts.map +0 -1
  550. package/dist/cache/types.js +0 -12
  551. package/dist/cache/types.js.map +0 -1
  552. package/dist/client.d.ts +0 -248
  553. package/dist/client.d.ts.map +0 -1
  554. package/dist/client.js +0 -367
  555. package/dist/client.js.map +0 -1
  556. package/dist/client.rsc.d.ts +0 -26
  557. package/dist/client.rsc.d.ts.map +0 -1
  558. package/dist/client.rsc.js +0 -46
  559. package/dist/client.rsc.js.map +0 -1
  560. package/dist/component-utils.d.ts +0 -36
  561. package/dist/component-utils.d.ts.map +0 -1
  562. package/dist/component-utils.js +0 -61
  563. package/dist/component-utils.js.map +0 -1
  564. package/dist/components/DefaultDocument.d.ts +0 -13
  565. package/dist/components/DefaultDocument.d.ts.map +0 -1
  566. package/dist/components/DefaultDocument.js +0 -15
  567. package/dist/components/DefaultDocument.js.map +0 -1
  568. package/dist/debug.d.ts +0 -58
  569. package/dist/debug.d.ts.map +0 -1
  570. package/dist/debug.js +0 -157
  571. package/dist/debug.js.map +0 -1
  572. package/dist/default-error-boundary.d.ts +0 -11
  573. package/dist/default-error-boundary.d.ts.map +0 -1
  574. package/dist/default-error-boundary.js +0 -45
  575. package/dist/default-error-boundary.js.map +0 -1
  576. package/dist/deps/browser.d.ts +0 -2
  577. package/dist/deps/browser.d.ts.map +0 -1
  578. package/dist/deps/browser.js +0 -3
  579. package/dist/deps/browser.js.map +0 -1
  580. package/dist/deps/html-stream-client.d.ts +0 -2
  581. package/dist/deps/html-stream-client.d.ts.map +0 -1
  582. package/dist/deps/html-stream-client.js +0 -3
  583. package/dist/deps/html-stream-client.js.map +0 -1
  584. package/dist/deps/html-stream-server.d.ts +0 -2
  585. package/dist/deps/html-stream-server.d.ts.map +0 -1
  586. package/dist/deps/html-stream-server.js +0 -3
  587. package/dist/deps/html-stream-server.js.map +0 -1
  588. package/dist/deps/rsc.d.ts +0 -2
  589. package/dist/deps/rsc.d.ts.map +0 -1
  590. package/dist/deps/rsc.js +0 -4
  591. package/dist/deps/rsc.js.map +0 -1
  592. package/dist/deps/ssr.d.ts +0 -2
  593. package/dist/deps/ssr.d.ts.map +0 -1
  594. package/dist/deps/ssr.js +0 -3
  595. package/dist/deps/ssr.js.map +0 -1
  596. package/dist/errors.d.ts +0 -174
  597. package/dist/errors.d.ts.map +0 -1
  598. package/dist/errors.js +0 -241
  599. package/dist/errors.js.map +0 -1
  600. package/dist/handle.d.ts +0 -78
  601. package/dist/handle.d.ts.map +0 -1
  602. package/dist/handle.js +0 -82
  603. package/dist/handle.js.map +0 -1
  604. package/dist/handles/MetaTags.d.ts +0 -14
  605. package/dist/handles/MetaTags.d.ts.map +0 -1
  606. package/dist/handles/MetaTags.js +0 -136
  607. package/dist/handles/MetaTags.js.map +0 -1
  608. package/dist/handles/index.d.ts +0 -6
  609. package/dist/handles/index.d.ts.map +0 -1
  610. package/dist/handles/index.js +0 -6
  611. package/dist/handles/index.js.map +0 -1
  612. package/dist/handles/meta.d.ts +0 -39
  613. package/dist/handles/meta.d.ts.map +0 -1
  614. package/dist/handles/meta.js +0 -202
  615. package/dist/handles/meta.js.map +0 -1
  616. package/dist/host/__tests__/errors.test.d.ts +0 -2
  617. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  618. package/dist/host/__tests__/errors.test.js +0 -76
  619. package/dist/host/__tests__/errors.test.js.map +0 -1
  620. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  621. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  622. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  623. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  624. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  625. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  626. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  627. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  628. package/dist/host/__tests__/router.test.d.ts +0 -2
  629. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  630. package/dist/host/__tests__/router.test.js +0 -241
  631. package/dist/host/__tests__/router.test.js.map +0 -1
  632. package/dist/host/__tests__/testing.test.d.ts +0 -2
  633. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  634. package/dist/host/__tests__/testing.test.js +0 -64
  635. package/dist/host/__tests__/testing.test.js.map +0 -1
  636. package/dist/host/__tests__/utils.test.d.ts +0 -2
  637. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  638. package/dist/host/__tests__/utils.test.js +0 -29
  639. package/dist/host/__tests__/utils.test.js.map +0 -1
  640. package/dist/host/cookie-handler.d.ts +0 -34
  641. package/dist/host/cookie-handler.d.ts.map +0 -1
  642. package/dist/host/cookie-handler.js +0 -124
  643. package/dist/host/cookie-handler.js.map +0 -1
  644. package/dist/host/errors.d.ts +0 -56
  645. package/dist/host/errors.d.ts.map +0 -1
  646. package/dist/host/errors.js +0 -79
  647. package/dist/host/errors.js.map +0 -1
  648. package/dist/host/index.d.ts +0 -29
  649. package/dist/host/index.d.ts.map +0 -1
  650. package/dist/host/index.js +0 -32
  651. package/dist/host/index.js.map +0 -1
  652. package/dist/host/pattern-matcher.d.ts +0 -36
  653. package/dist/host/pattern-matcher.d.ts.map +0 -1
  654. package/dist/host/pattern-matcher.js +0 -172
  655. package/dist/host/pattern-matcher.js.map +0 -1
  656. package/dist/host/router.d.ts +0 -26
  657. package/dist/host/router.d.ts.map +0 -1
  658. package/dist/host/router.js +0 -218
  659. package/dist/host/router.js.map +0 -1
  660. package/dist/host/testing.d.ts +0 -36
  661. package/dist/host/testing.d.ts.map +0 -1
  662. package/dist/host/testing.js +0 -55
  663. package/dist/host/testing.js.map +0 -1
  664. package/dist/host/types.d.ts +0 -115
  665. package/dist/host/types.d.ts.map +0 -1
  666. package/dist/host/types.js +0 -7
  667. package/dist/host/types.js.map +0 -1
  668. package/dist/host/utils.d.ts +0 -21
  669. package/dist/host/utils.d.ts.map +0 -1
  670. package/dist/host/utils.js +0 -23
  671. package/dist/host/utils.js.map +0 -1
  672. package/dist/href-client.d.ts +0 -131
  673. package/dist/href-client.d.ts.map +0 -1
  674. package/dist/href-client.js +0 -64
  675. package/dist/href-client.js.map +0 -1
  676. package/dist/href-context.d.ts +0 -29
  677. package/dist/href-context.d.ts.map +0 -1
  678. package/dist/href-context.js +0 -21
  679. package/dist/href-context.js.map +0 -1
  680. package/dist/index.d.ts +0 -73
  681. package/dist/index.d.ts.map +0 -1
  682. package/dist/index.js +0 -91
  683. package/dist/index.js.map +0 -1
  684. package/dist/index.rsc.d.ts +0 -32
  685. package/dist/index.rsc.d.ts.map +0 -1
  686. package/dist/index.rsc.js +0 -40
  687. package/dist/index.rsc.js.map +0 -1
  688. package/dist/internal-debug.d.ts +0 -2
  689. package/dist/internal-debug.d.ts.map +0 -1
  690. package/dist/internal-debug.js +0 -5
  691. package/dist/internal-debug.js.map +0 -1
  692. package/dist/loader.d.ts +0 -14
  693. package/dist/loader.d.ts.map +0 -1
  694. package/dist/loader.js +0 -20
  695. package/dist/loader.js.map +0 -1
  696. package/dist/loader.rsc.d.ts +0 -19
  697. package/dist/loader.rsc.d.ts.map +0 -1
  698. package/dist/loader.rsc.js +0 -99
  699. package/dist/loader.rsc.js.map +0 -1
  700. package/dist/network-error-thrower.d.ts +0 -17
  701. package/dist/network-error-thrower.d.ts.map +0 -1
  702. package/dist/network-error-thrower.js +0 -14
  703. package/dist/network-error-thrower.js.map +0 -1
  704. package/dist/outlet-context.d.ts +0 -13
  705. package/dist/outlet-context.d.ts.map +0 -1
  706. package/dist/outlet-context.js +0 -3
  707. package/dist/outlet-context.js.map +0 -1
  708. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  709. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  710. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  711. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  712. package/dist/prerender/param-hash.d.ts +0 -16
  713. package/dist/prerender/param-hash.d.ts.map +0 -1
  714. package/dist/prerender/param-hash.js +0 -36
  715. package/dist/prerender/param-hash.js.map +0 -1
  716. package/dist/prerender/store.d.ts +0 -38
  717. package/dist/prerender/store.d.ts.map +0 -1
  718. package/dist/prerender/store.js +0 -61
  719. package/dist/prerender/store.js.map +0 -1
  720. package/dist/prerender.d.ts +0 -66
  721. package/dist/prerender.d.ts.map +0 -1
  722. package/dist/prerender.js +0 -57
  723. package/dist/prerender.js.map +0 -1
  724. package/dist/reverse.d.ts +0 -196
  725. package/dist/reverse.d.ts.map +0 -1
  726. package/dist/reverse.js +0 -78
  727. package/dist/reverse.js.map +0 -1
  728. package/dist/root-error-boundary.d.ts +0 -33
  729. package/dist/root-error-boundary.d.ts.map +0 -1
  730. package/dist/root-error-boundary.js +0 -165
  731. package/dist/root-error-boundary.js.map +0 -1
  732. package/dist/route-content-wrapper.d.ts +0 -46
  733. package/dist/route-content-wrapper.d.ts.map +0 -1
  734. package/dist/route-content-wrapper.js +0 -77
  735. package/dist/route-content-wrapper.js.map +0 -1
  736. package/dist/route-definition.d.ts +0 -421
  737. package/dist/route-definition.d.ts.map +0 -1
  738. package/dist/route-definition.js +0 -868
  739. package/dist/route-definition.js.map +0 -1
  740. package/dist/route-map-builder.d.ts +0 -155
  741. package/dist/route-map-builder.d.ts.map +0 -1
  742. package/dist/route-map-builder.js +0 -237
  743. package/dist/route-map-builder.js.map +0 -1
  744. package/dist/route-types.d.ts +0 -165
  745. package/dist/route-types.d.ts.map +0 -1
  746. package/dist/route-types.js +0 -7
  747. package/dist/route-types.js.map +0 -1
  748. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  749. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  750. package/dist/router/__tests__/handler-context.test.js +0 -65
  751. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  752. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  753. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  754. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  755. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  756. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  757. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  758. package/dist/router/__tests__/match-context.test.js +0 -92
  759. package/dist/router/__tests__/match-context.test.js.map +0 -1
  760. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  761. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  762. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  763. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  764. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  765. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  766. package/dist/router/__tests__/match-result.test.js +0 -457
  767. package/dist/router/__tests__/match-result.test.js.map +0 -1
  768. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  769. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  770. package/dist/router/__tests__/on-error.test.js +0 -678
  771. package/dist/router/__tests__/on-error.test.js.map +0 -1
  772. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  773. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  774. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  775. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  776. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  777. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  778. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  779. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  780. package/dist/router/error-handling.d.ts +0 -77
  781. package/dist/router/error-handling.d.ts.map +0 -1
  782. package/dist/router/error-handling.js +0 -202
  783. package/dist/router/error-handling.js.map +0 -1
  784. package/dist/router/handler-context.d.ts +0 -20
  785. package/dist/router/handler-context.d.ts.map +0 -1
  786. package/dist/router/handler-context.js +0 -198
  787. package/dist/router/handler-context.js.map +0 -1
  788. package/dist/router/intercept-resolution.d.ts +0 -66
  789. package/dist/router/intercept-resolution.d.ts.map +0 -1
  790. package/dist/router/intercept-resolution.js +0 -246
  791. package/dist/router/intercept-resolution.js.map +0 -1
  792. package/dist/router/loader-resolution.d.ts +0 -64
  793. package/dist/router/loader-resolution.d.ts.map +0 -1
  794. package/dist/router/loader-resolution.js +0 -284
  795. package/dist/router/loader-resolution.js.map +0 -1
  796. package/dist/router/logging.d.ts +0 -15
  797. package/dist/router/logging.d.ts.map +0 -1
  798. package/dist/router/logging.js +0 -99
  799. package/dist/router/logging.js.map +0 -1
  800. package/dist/router/manifest.d.ts +0 -22
  801. package/dist/router/manifest.d.ts.map +0 -1
  802. package/dist/router/manifest.js +0 -181
  803. package/dist/router/manifest.js.map +0 -1
  804. package/dist/router/match-api.d.ts +0 -35
  805. package/dist/router/match-api.d.ts.map +0 -1
  806. package/dist/router/match-api.js +0 -406
  807. package/dist/router/match-api.js.map +0 -1
  808. package/dist/router/match-context.d.ts +0 -206
  809. package/dist/router/match-context.d.ts.map +0 -1
  810. package/dist/router/match-context.js +0 -17
  811. package/dist/router/match-context.js.map +0 -1
  812. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  813. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  814. package/dist/router/match-middleware/background-revalidation.js +0 -75
  815. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  816. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  817. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  818. package/dist/router/match-middleware/cache-lookup.js +0 -257
  819. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  820. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  821. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  822. package/dist/router/match-middleware/cache-store.js +0 -108
  823. package/dist/router/match-middleware/cache-store.js.map +0 -1
  824. package/dist/router/match-middleware/index.d.ts +0 -81
  825. package/dist/router/match-middleware/index.d.ts.map +0 -1
  826. package/dist/router/match-middleware/index.js +0 -80
  827. package/dist/router/match-middleware/index.js.map +0 -1
  828. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  829. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  830. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  831. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  832. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  833. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  834. package/dist/router/match-middleware/segment-resolution.js +0 -53
  835. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  836. package/dist/router/match-pipelines.d.ts +0 -147
  837. package/dist/router/match-pipelines.d.ts.map +0 -1
  838. package/dist/router/match-pipelines.js +0 -82
  839. package/dist/router/match-pipelines.js.map +0 -1
  840. package/dist/router/match-result.d.ts +0 -126
  841. package/dist/router/match-result.d.ts.map +0 -1
  842. package/dist/router/match-result.js +0 -93
  843. package/dist/router/match-result.js.map +0 -1
  844. package/dist/router/metrics.d.ts +0 -20
  845. package/dist/router/metrics.d.ts.map +0 -1
  846. package/dist/router/metrics.js +0 -47
  847. package/dist/router/metrics.js.map +0 -1
  848. package/dist/router/middleware.d.ts +0 -249
  849. package/dist/router/middleware.d.ts.map +0 -1
  850. package/dist/router/middleware.js +0 -434
  851. package/dist/router/middleware.js.map +0 -1
  852. package/dist/router/middleware.test.d.ts +0 -2
  853. package/dist/router/middleware.test.d.ts.map +0 -1
  854. package/dist/router/middleware.test.js +0 -816
  855. package/dist/router/middleware.test.js.map +0 -1
  856. package/dist/router/pattern-matching.d.ts +0 -149
  857. package/dist/router/pattern-matching.d.ts.map +0 -1
  858. package/dist/router/pattern-matching.js +0 -349
  859. package/dist/router/pattern-matching.js.map +0 -1
  860. package/dist/router/revalidation.d.ts +0 -44
  861. package/dist/router/revalidation.d.ts.map +0 -1
  862. package/dist/router/revalidation.js +0 -147
  863. package/dist/router/revalidation.js.map +0 -1
  864. package/dist/router/router-context.d.ts +0 -135
  865. package/dist/router/router-context.d.ts.map +0 -1
  866. package/dist/router/router-context.js +0 -36
  867. package/dist/router/router-context.js.map +0 -1
  868. package/dist/router/segment-resolution.d.ts +0 -127
  869. package/dist/router/segment-resolution.d.ts.map +0 -1
  870. package/dist/router/segment-resolution.js +0 -919
  871. package/dist/router/segment-resolution.js.map +0 -1
  872. package/dist/router/trie-matching.d.ts +0 -40
  873. package/dist/router/trie-matching.d.ts.map +0 -1
  874. package/dist/router/trie-matching.js +0 -127
  875. package/dist/router/trie-matching.js.map +0 -1
  876. package/dist/router/types.d.ts +0 -136
  877. package/dist/router/types.d.ts.map +0 -1
  878. package/dist/router/types.js +0 -7
  879. package/dist/router/types.js.map +0 -1
  880. package/dist/router.d.ts +0 -753
  881. package/dist/router.d.ts.map +0 -1
  882. package/dist/router.gen.d.ts +0 -6
  883. package/dist/router.gen.d.ts.map +0 -1
  884. package/dist/router.gen.js +0 -6
  885. package/dist/router.gen.js.map +0 -1
  886. package/dist/router.js +0 -1304
  887. package/dist/router.js.map +0 -1
  888. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  889. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  890. package/dist/rsc/__tests__/helpers.test.js +0 -140
  891. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  892. package/dist/rsc/handler.d.ts +0 -45
  893. package/dist/rsc/handler.d.ts.map +0 -1
  894. package/dist/rsc/handler.js +0 -1172
  895. package/dist/rsc/handler.js.map +0 -1
  896. package/dist/rsc/helpers.d.ts +0 -16
  897. package/dist/rsc/helpers.d.ts.map +0 -1
  898. package/dist/rsc/helpers.js +0 -55
  899. package/dist/rsc/helpers.js.map +0 -1
  900. package/dist/rsc/index.d.ts +0 -22
  901. package/dist/rsc/index.d.ts.map +0 -1
  902. package/dist/rsc/index.js +0 -23
  903. package/dist/rsc/index.js.map +0 -1
  904. package/dist/rsc/nonce.d.ts +0 -9
  905. package/dist/rsc/nonce.d.ts.map +0 -1
  906. package/dist/rsc/nonce.js +0 -18
  907. package/dist/rsc/nonce.js.map +0 -1
  908. package/dist/rsc/types.d.ts +0 -206
  909. package/dist/rsc/types.d.ts.map +0 -1
  910. package/dist/rsc/types.js +0 -8
  911. package/dist/rsc/types.js.map +0 -1
  912. package/dist/search-params.d.ts +0 -103
  913. package/dist/search-params.d.ts.map +0 -1
  914. package/dist/search-params.js +0 -74
  915. package/dist/search-params.js.map +0 -1
  916. package/dist/segment-system.d.ts +0 -75
  917. package/dist/segment-system.d.ts.map +0 -1
  918. package/dist/segment-system.js +0 -336
  919. package/dist/segment-system.js.map +0 -1
  920. package/dist/server/context.d.ts +0 -245
  921. package/dist/server/context.d.ts.map +0 -1
  922. package/dist/server/context.js +0 -197
  923. package/dist/server/context.js.map +0 -1
  924. package/dist/server/fetchable-loader-store.d.ts +0 -18
  925. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  926. package/dist/server/fetchable-loader-store.js +0 -18
  927. package/dist/server/fetchable-loader-store.js.map +0 -1
  928. package/dist/server/handle-store.d.ts +0 -85
  929. package/dist/server/handle-store.d.ts.map +0 -1
  930. package/dist/server/handle-store.js +0 -142
  931. package/dist/server/handle-store.js.map +0 -1
  932. package/dist/server/loader-registry.d.ts +0 -55
  933. package/dist/server/loader-registry.d.ts.map +0 -1
  934. package/dist/server/loader-registry.js +0 -132
  935. package/dist/server/loader-registry.js.map +0 -1
  936. package/dist/server/request-context.d.ts +0 -226
  937. package/dist/server/request-context.d.ts.map +0 -1
  938. package/dist/server/request-context.js +0 -290
  939. package/dist/server/request-context.js.map +0 -1
  940. package/dist/server/root-layout.d.ts +0 -4
  941. package/dist/server/root-layout.d.ts.map +0 -1
  942. package/dist/server/root-layout.js +0 -5
  943. package/dist/server/root-layout.js.map +0 -1
  944. package/dist/server.d.ts +0 -15
  945. package/dist/server.d.ts.map +0 -1
  946. package/dist/server.js +0 -20
  947. package/dist/server.js.map +0 -1
  948. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  949. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  950. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  951. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  952. package/dist/ssr/index.d.ts +0 -98
  953. package/dist/ssr/index.d.ts.map +0 -1
  954. package/dist/ssr/index.js +0 -158
  955. package/dist/ssr/index.js.map +0 -1
  956. package/dist/static-handler.d.ts +0 -50
  957. package/dist/static-handler.d.ts.map +0 -1
  958. package/dist/static-handler.gen.d.ts +0 -5
  959. package/dist/static-handler.gen.d.ts.map +0 -1
  960. package/dist/static-handler.gen.js +0 -5
  961. package/dist/static-handler.gen.js.map +0 -1
  962. package/dist/static-handler.js +0 -29
  963. package/dist/static-handler.js.map +0 -1
  964. package/dist/theme/ThemeProvider.d.ts +0 -20
  965. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  966. package/dist/theme/ThemeProvider.js +0 -240
  967. package/dist/theme/ThemeProvider.js.map +0 -1
  968. package/dist/theme/ThemeScript.d.ts +0 -48
  969. package/dist/theme/ThemeScript.d.ts.map +0 -1
  970. package/dist/theme/ThemeScript.js +0 -13
  971. package/dist/theme/ThemeScript.js.map +0 -1
  972. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  973. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  974. package/dist/theme/__tests__/theme.test.js +0 -103
  975. package/dist/theme/__tests__/theme.test.js.map +0 -1
  976. package/dist/theme/constants.d.ts +0 -29
  977. package/dist/theme/constants.d.ts.map +0 -1
  978. package/dist/theme/constants.js +0 -48
  979. package/dist/theme/constants.js.map +0 -1
  980. package/dist/theme/index.d.ts +0 -31
  981. package/dist/theme/index.d.ts.map +0 -1
  982. package/dist/theme/index.js +0 -36
  983. package/dist/theme/index.js.map +0 -1
  984. package/dist/theme/theme-context.d.ts +0 -40
  985. package/dist/theme/theme-context.d.ts.map +0 -1
  986. package/dist/theme/theme-context.js +0 -60
  987. package/dist/theme/theme-context.js.map +0 -1
  988. package/dist/theme/theme-script.d.ts +0 -27
  989. package/dist/theme/theme-script.d.ts.map +0 -1
  990. package/dist/theme/theme-script.js +0 -147
  991. package/dist/theme/theme-script.js.map +0 -1
  992. package/dist/theme/types.d.ts +0 -163
  993. package/dist/theme/types.d.ts.map +0 -1
  994. package/dist/theme/types.js +0 -11
  995. package/dist/theme/types.js.map +0 -1
  996. package/dist/theme/use-theme.d.ts +0 -12
  997. package/dist/theme/use-theme.d.ts.map +0 -1
  998. package/dist/theme/use-theme.js +0 -40
  999. package/dist/theme/use-theme.js.map +0 -1
  1000. package/dist/types.d.ts +0 -1479
  1001. package/dist/types.d.ts.map +0 -1
  1002. package/dist/types.js +0 -10
  1003. package/dist/types.js.map +0 -1
  1004. package/dist/urls.d.ts +0 -441
  1005. package/dist/urls.d.ts.map +0 -1
  1006. package/dist/urls.gen.d.ts +0 -8
  1007. package/dist/urls.gen.d.ts.map +0 -1
  1008. package/dist/urls.gen.js +0 -8
  1009. package/dist/urls.gen.js.map +0 -1
  1010. package/dist/urls.js +0 -443
  1011. package/dist/urls.js.map +0 -1
  1012. package/dist/use-loader.d.ts +0 -127
  1013. package/dist/use-loader.d.ts.map +0 -1
  1014. package/dist/use-loader.js +0 -237
  1015. package/dist/use-loader.js.map +0 -1
  1016. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  1017. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  1018. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  1019. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  1020. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  1021. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  1022. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  1023. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  1024. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  1025. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  1026. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  1027. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  1028. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  1029. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  1030. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  1031. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  1032. package/dist/vite/ast-handler-extract.d.ts +0 -49
  1033. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  1034. package/dist/vite/ast-handler-extract.js +0 -249
  1035. package/dist/vite/ast-handler-extract.js.map +0 -1
  1036. package/dist/vite/expose-action-id.d.ts +0 -19
  1037. package/dist/vite/expose-action-id.d.ts.map +0 -1
  1038. package/dist/vite/expose-action-id.js +0 -250
  1039. package/dist/vite/expose-action-id.js.map +0 -1
  1040. package/dist/vite/expose-id-utils.d.ts +0 -69
  1041. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  1042. package/dist/vite/expose-id-utils.js +0 -289
  1043. package/dist/vite/expose-id-utils.js.map +0 -1
  1044. package/dist/vite/expose-internal-ids.d.ts +0 -22
  1045. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  1046. package/dist/vite/expose-internal-ids.js +0 -886
  1047. package/dist/vite/expose-internal-ids.js.map +0 -1
  1048. package/dist/vite/index.d.ts +0 -149
  1049. package/dist/vite/index.d.ts.map +0 -1
  1050. package/dist/vite/index.js.map +0 -1
  1051. package/dist/vite/index.named-routes.gen.ts +0 -103
  1052. package/dist/vite/package-resolution.d.ts +0 -43
  1053. package/dist/vite/package-resolution.d.ts.map +0 -1
  1054. package/dist/vite/package-resolution.js +0 -112
  1055. package/dist/vite/package-resolution.js.map +0 -1
  1056. package/dist/vite/virtual-entries.d.ts +0 -25
  1057. package/dist/vite/virtual-entries.d.ts.map +0 -1
  1058. package/dist/vite/virtual-entries.js +0 -110
  1059. package/dist/vite/virtual-entries.js.map +0 -1
  1060. package/src/browser/action-response-classifier.ts +0 -99
@@ -190,6 +190,141 @@ function SearchResults() {
190
190
  }
191
191
  ```
192
192
 
193
+ **Shared refetch behavior**:
194
+
195
+ When the loader is registered on the route via `loader()`, a plain
196
+ `load()` call (no options, or a trivially-defaulted GET with no
197
+ `params` and no `body`) broadcasts its result to every component
198
+ reading the same loader id. Layout, page, and parallel-slot reads
199
+ all converge on the new value:
200
+
201
+ ```tsx
202
+ // Layout button calls load() — the page read below sees the update too.
203
+ function Layout() {
204
+ const { data, load } = useLoader(CartLoader);
205
+ return <button onClick={() => load()}>Refresh ({data.count})</button>;
206
+ }
207
+ function Page() {
208
+ const { data } = useLoader(CartLoader); // updates with the layout's load()
209
+ return <span>{data.count} items</span>;
210
+ }
211
+ ```
212
+
213
+ `isLoading` and `error` follow the same scope. `throwOnError: true`
214
+ render-throws are scoped to the **originating** hook — sibling readers
215
+ see the error in their `error` state but their boundaries are not
216
+ triggered by someone else's failure. A successful follow-up `load()`
217
+ clears the shared error.
218
+
219
+ **`load()` calls that stay local** (no broadcast, per-hook state, same
220
+ semantics as the old per-component `useState`):
221
+
222
+ - `load({ params: { ... } })` — explicit params.
223
+ - `load({ method: "POST", body })` — mutations.
224
+ - Any `load()` on a `useFetchLoader(loader)` whose loader is **not**
225
+ registered on the current route. Two unrelated components calling
226
+ `load()` on the same fetchable-but-unregistered loader keep
227
+ independent results.
228
+
229
+ So the search/list pattern still works — two components calling
230
+ `load({ params: { q } })` with different `q` values each keep their
231
+ own result; they do not collapse to last-write-wins through a shared
232
+ store.
233
+
234
+ **Scoping refetch with a `key`**:
235
+
236
+ Pass a `key` to partition the shared refresh store. Only hooks using the
237
+ **same** `key` refresh together when one of them calls `load()`. This is a
238
+ client-side refresh identity only — it never changes the request sent to the
239
+ server, and is unrelated to the server `cache({ key })` option and to
240
+ `revalidate()`.
241
+
242
+ ```tsx
243
+ // Two independent dashboards using the same loader. Without a key, one
244
+ // dashboard's load() would flip the other's spinner and value. With a key,
245
+ // they refresh independently.
246
+ function Dashboard({ id }: { id: string }) {
247
+ const { data, load } = useLoader(StatsLoader, { key: `dashboard:${id}` });
248
+ return <button onClick={() => load()}>Refresh {data.total}</button>;
249
+ }
250
+ ```
251
+
252
+ The `key` widens sharing in two ways the default cannot:
253
+
254
+ - **Parameterized GETs share.** `useFetchLoader(SearchLoader, { key: q })`
255
+ with the same `q` in two components share one result and refresh together —
256
+ a keyed `load({ params: { q } })` broadcasts to the group instead of staying
257
+ local. (Mutations — non-GET or `body` — stay local even with a key.)
258
+ - **Unregistered loaders share.** A `key` makes `useFetchLoader` of a loader
259
+ that is **not** registered on the route share too, letting unrelated
260
+ components opt into a common refresh group.
261
+
262
+ Lifecycle: a keyed read of an unregistered loader is reference-counted — its
263
+ shared value lives as long as at least one component using that key is mounted.
264
+ A persistent component (e.g. a header) keeps the value across navigations; a
265
+ route-scoped component's value is reclaimed when it unmounts. Registered-loader
266
+ reads (keyed or not) reset on navigation from fresh route data, as before.
267
+
268
+ **Refreshing multiple loaders together (`refreshGroup` + `useRefreshLoaders`)**:
269
+
270
+ `key` groups readers of one loader. To refresh **different** loaders together,
271
+ tag them with a shared `refreshGroup` name and trigger them with
272
+ `useRefreshLoaders()`. The hook takes no argument; you pass the group(s) to the
273
+ function it returns, so one `useRefreshLoaders()` can refresh different groups
274
+ depending on context. A read may carry **several** tags — pass an array — and is
275
+ refreshed when **any** of its groups is refreshed:
276
+
277
+ ```tsx
278
+ function Profile() {
279
+ const { data } = useLoader(ProfileLoader, {
280
+ key: userId,
281
+ refreshGroup: "account",
282
+ });
283
+ return <span>{data.name}</span>;
284
+ }
285
+ function Orders() {
286
+ // Tagged into two groups: refreshed by "account" (the whole set) or the
287
+ // finer "orders" tag.
288
+ const { data } = useLoader(OrdersLoader, {
289
+ key: userId,
290
+ refreshGroup: ["account", "orders"],
291
+ });
292
+ return <span>{data.count} orders</span>;
293
+ }
294
+ function RefreshButtons() {
295
+ const refresh = useRefreshLoaders();
296
+ return (
297
+ <>
298
+ <button onClick={() => refresh("account")}>Refresh account</button>
299
+ <button onClick={() => refresh("orders")}>Refresh orders only</button>
300
+ <button onClick={() => refresh(["account", "orders"])}>
301
+ Refresh both
302
+ </button>
303
+ </>
304
+ );
305
+ }
306
+ ```
307
+
308
+ `refresh(groups)` accepts one name or an array and re-runs every currently-mounted
309
+ member tagged with **any** of them, with a **plain GET** against the current route
310
+ URL — no params, no body, no mutation methods, because a group spans loaders with
311
+ different shapes. A member that sits in two of the requested groups is fetched
312
+ once (members are unioned and deduped by read). It returns a promise that resolves
313
+ when all members settle and **rejects with an `AggregateError`** if any fail;
314
+ group refresh never render-throws, so handle failures at the await site
315
+ (`await refresh("account").catch(...)`). Each failing member also exposes its
316
+ error via its own read's `error`.
317
+
318
+ Multiple tags give you granular vs. whole-set refresh from one place: a coarse
319
+ tag (`"account"`) covers everything, while a finer tag (`"orders"`) targets a
320
+ subset. Sharing within a group is opt-in via `key`: members that share a `key`
321
+ share one value (and one fetch); a grouped reader **without** a `key` gets its own
322
+ private bucket, so a group refresh updates only that read and never leaks into
323
+ unrelated unkeyed reads of the same loader. A bucket may belong to several groups
324
+ at once (one read tagged with multiple names, or different reads tagging the same
325
+ keyed bucket with different names). Keep parameterized loaders on the single-loader
326
+ `key` — a plain-GET group refresh sends no params.
327
+
193
328
  **Load options**:
194
329
 
195
330
  ```tsx
@@ -298,9 +433,11 @@ path("/dashboard", (ctx) => {
298
433
  push({ label: "Dashboard", href: "/dashboard" });
299
434
  return <DashboardNav handle={Breadcrumbs} />;
300
435
  });
436
+ ```
301
437
 
438
+ ```tsx
302
439
  // Client component — typeof infers the full Handle<T> type
303
- ("use client");
440
+ "use client";
304
441
  import { useHandle, type Breadcrumbs } from "@rangojs/router/client";
305
442
 
306
443
  function DashboardNav({ handle }: { handle: typeof Breadcrumbs }) {
@@ -321,6 +458,11 @@ RSC serialization strips the `collect` function via `toJSON()`. On the client,
321
458
 
322
459
  ## Action Hooks
323
460
 
461
+ For the full server-action guide (defining actions, `useActionState`,
462
+ `useOptimistic`, validation, revalidation, error handling, file uploads),
463
+ see `/server-actions`. `useAction()` below is a Rango-specific hook for
464
+ tracking actions called outside a `<form action={...}>` flow.
465
+
324
466
  ### useAction()
325
467
 
326
468
  Track state of server action invocations:
@@ -504,6 +646,43 @@ const flash = FlashMessage.read();
504
646
  const product = ProductState.read();
505
647
  ```
506
648
 
649
+ > **Hydration:** `.read()` returns `undefined` on the server but may return
650
+ > a real value on the first client render (history state survives reload).
651
+ > Do not call `.read()` directly during the initial render of a component;
652
+ > call it from an event handler or inside a `useEffect` post-mount. For
653
+ > reactive hydration-safe access, use `useLocationState()` instead.
654
+
655
+ ### .write() / .delete() (static, non-reactive)
656
+
657
+ Static counterparts to `.read()`. Both mutate the current history entry's
658
+ `history.state` via `replaceState`, preserving any other keys (router
659
+ bookkeeping, other location state slots). Both are client-only; they throw
660
+ when called on the server.
661
+
662
+ Neither dispatches an event, so components reading via `useLocationState`
663
+ will NOT re-render until the next navigation/popstate. Pair with `.read()`
664
+ (or a fresh mount via back/forward/reload) instead.
665
+
666
+ ```tsx
667
+ "use client";
668
+ import { ProductState } from "./state";
669
+
670
+ // Persisted across hard refresh and back/forward of this entry.
671
+ ProductState.write({ name: "Widget", price: 9.99 });
672
+
673
+ // Read later (or on next mount).
674
+ const current = ProductState.read();
675
+
676
+ // Manually clear the slot. Idempotent if it isn't set.
677
+ ProductState.delete();
678
+ ```
679
+
680
+ | Method | Updates `history.state` | Fires `useLocationState` rerender | SSR behavior |
681
+ | ----------- | ----------------------- | --------------------------------- | ------------------- |
682
+ | `.read()` | no | n/a (returns snapshot) | returns `undefined` |
683
+ | `.write()` | yes (replace this slot) | no | throws |
684
+ | `.delete()` | yes (remove this slot) | no | throws |
685
+
507
686
  ## Cache Hooks
508
687
 
509
688
  ### useClientCache()
@@ -593,6 +772,12 @@ function ProductPage() {
593
772
  return <h1>Product {params.productId}</h1>;
594
773
  }
595
774
 
775
+ // Annotate the expected shape via a generic
776
+ function ProductPageTyped() {
777
+ const { productId } = useParams<{ productId: string }>();
778
+ return <h1>Product {productId}</h1>;
779
+ }
780
+
596
781
  // With selector for performance (re-renders only when selected value changes)
597
782
  function ProductId() {
598
783
  const productId = useParams((p) => p.productId);
@@ -600,7 +785,7 @@ function ProductId() {
600
785
  }
601
786
  ```
602
787
 
603
- Returns merged params from all matched route segments. Updates on navigation commit (not during pending navigation).
788
+ Returns merged params from all matched route segments as a `Readonly<T>` map. Updates on navigation commit (not during pending navigation).
604
789
 
605
790
  ### usePathname()
606
791
 
@@ -681,24 +866,48 @@ function MountInfo() {
681
866
  }
682
867
  ```
683
868
 
684
- See `/links` for full URL generation guide including server-side `ctx.reverse`.
869
+ ### useReverse(routes)
870
+
871
+ Mount-aware local reverse for client components. Import the generated `routes` map from a `urls()` module's `.gen.ts` and call `reverse("name", params?)` — the leading dot is optional. Auto-fills params from `useParams()`; explicit params override.
872
+
873
+ > Per-module `*.gen.ts` files are **CLI opt-in and not Vite-watched** — run `rango generate <urls-file>` (or wire it into `predev`) and re-run it whenever the module's routes change. See `/links` for the full generated-file setup and exposure-boundary rules.
874
+
875
+ ```tsx
876
+ "use client";
877
+ import { Link, useReverse } from "@rangojs/router/client";
878
+ import { routes as blogRoutes } from "../urls/blog.gen.js";
879
+
880
+ function BlogNav() {
881
+ const reverse = useReverse(blogRoutes);
882
+ return (
883
+ <nav>
884
+ <Link to={reverse("index")}>Blog</Link>
885
+ <Link to={reverse("post", { postId: "hello" })}>Post</Link>
886
+ </nav>
887
+ );
888
+ }
889
+ ```
890
+
891
+ See `/links` for the full URL generation guide. `ctx.reverse()` is server-only; on the client, prefer `useReverse(routes)` for in-module names and pass URLs as props for cross-module ones.
685
892
 
686
893
  ## Hook Summary
687
894
 
688
- | Hook | Purpose | Returns |
689
- | -------------------- | --------------------------------- | ----------------------------------------------- |
690
- | `useParams()` | Route params | `Record<string, string>` or selected value |
691
- | `usePathname()` | Current pathname | `string` |
692
- | `useSearchParams()` | URL search params | `ReadonlyURLSearchParams` |
693
- | `useHref()` | Mount-aware href | `(path) => string` |
694
- | `useMount()` | Current include() mount path | `string` |
695
- | `useNavigation()` | Reactive navigation state | state, location, isStreaming |
696
- | `useRouter()` | Stable router actions | push, replace, refresh, prefetch, back, forward |
697
- | `useSegments()` | URL path & segment IDs | path, segmentIds, location |
698
- | `useLinkStatus()` | Link pending state | { pending } |
699
- | `useLoader()` | Loader data (strict) | data, isLoading, error |
700
- | `useFetchLoader()` | Loader with on-demand fetch | data, load, isLoading |
701
- | `useHandle()` | Accumulated handle data | T (handle type) |
702
- | `useAction()` | Server action state | state, error, result |
703
- | `useLocationState()` | History state (persists or flash) | T \| undefined |
704
- | `useClientCache()` | Cache control | { clear } |
895
+ | Hook | Purpose | Returns |
896
+ | --------------------- | --------------------------------- | ------------------------------------------------------------------ |
897
+ | `useParams()` | Route params | `Readonly<T>` (default `Record<string, string>`) or selected value |
898
+ | `usePathname()` | Current pathname | `string` |
899
+ | `useSearchParams()` | URL search params | `ReadonlyURLSearchParams` |
900
+ | `useHref()` | Mount-aware href | `(path) => string` |
901
+ | `useMount()` | Current include() mount path | `string` |
902
+ | `useReverse()` | Local reverse for imported routes | `(name, params?, search?) => string` |
903
+ | `useNavigation()` | Reactive navigation state | state, location, isStreaming |
904
+ | `useRouter()` | Stable router actions | push, replace, refresh, prefetch, back, forward |
905
+ | `useSegments()` | URL path & segment IDs | path, segmentIds, location |
906
+ | `useLinkStatus()` | Link pending state | { pending } |
907
+ | `useLoader()` | Loader data (strict) | data, isLoading, error |
908
+ | `useFetchLoader()` | Loader with on-demand fetch | data, load, isLoading |
909
+ | `useRefreshLoaders()` | Refresh cross-loader group(s) | `() => (groups: string \| string[]) => Promise<void>` |
910
+ | `useHandle()` | Accumulated handle data | T (handle type) |
911
+ | `useAction()` | Server action state | state, error, result |
912
+ | `useLocationState()` | History state (persists or flash) | T \| undefined |
913
+ | `useClientCache()` | Cache control | { clear } |
@@ -22,9 +22,9 @@ import { createHostRouter } from "@rangojs/router/host";
22
22
 
23
23
  const router = createHostRouter();
24
24
 
25
- router.host(["."]).map(() => import("./apps/main"));
26
- router.host(["admin.*"]).map(() => import("./apps/admin"));
27
- router.host(["api.*"]).map(() => import("./apps/api"));
25
+ router.host(["."]).lazy(() => import("./apps/main"));
26
+ router.host(["admin.*"]).lazy(() => import("./apps/admin"));
27
+ router.host(["api.*"]).lazy(() => import("./apps/api"));
28
28
 
29
29
  export default {
30
30
  fetch(request: Request, env: Env, ctx: ExecutionContext) {
@@ -33,7 +33,31 @@ export default {
33
33
  };
34
34
  ```
35
35
 
36
- Each `.map()` receives either a direct handler `(request, input) => Response` or a lazy import `() => import(...)`. Lazy imports resolve a module with a `default` export that is either a handler function or another `HostRouter` (for nesting).
36
+ ## Inline handlers (`.map`) vs lazy mounts (`.lazy`)
37
+
38
+ A host pattern maps to one of two things, and you pick the method by intent:
39
+
40
+ | Method | Argument | Use for |
41
+ | ------- | ------------------------------ | ------------------------------------------------------------ |
42
+ | `.map` | `(request, input) => Response` | An inline request handler that produces a response directly. |
43
+ | `.lazy` | `() => import("./sub-app")` | A lazily-imported handler or nested host router (a sub-app). |
44
+
45
+ ```typescript
46
+ // Lazy mount: the module's default export is a handler or a HostRouter.
47
+ router.host(["admin.*"]).lazy(() => import("./apps/admin"));
48
+
49
+ // Inline handler: returns a Response itself (sync or async).
50
+ router.host(["health.*"]).map(() => new Response("ok"));
51
+ router
52
+ .host(["echo.*"])
53
+ .map((request) => new Response(new URL(request.url).pathname));
54
+ ```
55
+
56
+ Why two methods instead of one overloaded `.map()`:
57
+
58
+ - **Build-time discovery** invokes only `.lazy()` mounts (to trigger each sub-app's `createRouter()` registration). Inline `.map()` handlers are never invoked during discovery, so they can't crash it or pollute its errors.
59
+ - `.map(() => import("./sub-app"))` is a **type error** — a lazy import resolves to a module, not a `Response`. Use `.lazy()` for imports. (If the types are bypassed, e.g. from JS, a `.map()` handler that resolves to a module throws a clear `HostRouterError` at request time instead of returning the module.)
60
+ - A lazy loader may declare an ignored parameter (`.lazy((_request?) => import("./x"))`); `.lazy()` accepts it because intent is explicit, not inferred from the signature.
37
61
 
38
62
  ## Pattern Syntax
39
63
 
@@ -65,8 +89,8 @@ const hosts = defineHosts({
65
89
  app: [".", "www.*"],
66
90
  });
67
91
 
68
- router.host(hosts.admin).map(() => import("./apps/admin"));
69
- router.host(hosts.app).map(() => import("./apps/main"));
92
+ router.host(hosts.admin).lazy(() => import("./apps/admin"));
93
+ router.host(hosts.app).lazy(() => import("./apps/main"));
70
94
  ```
71
95
 
72
96
  Returns a frozen object — keys are autocompleted by TypeScript.
@@ -88,7 +112,7 @@ router.use(async (request, input, next) => {
88
112
  router
89
113
  .host(["admin.*"])
90
114
  .use(requireAuth)
91
- .map(() => import("./apps/admin"));
115
+ .lazy(() => import("./apps/admin"));
92
116
  ```
93
117
 
94
118
  Middleware signature: `(request: Request, input: RouterRequestInput, next: () => Promise<Response>) => Promise<Response>`
@@ -179,40 +203,62 @@ const request = createTestRequest({
179
203
  });
180
204
 
181
205
  // Test which route would match (without executing)
182
- router.test("admin.example.com"); // { pattern, handler } | null
206
+ router.test("admin.example.com"); // { pattern, handler, kind } | null
183
207
  ```
184
208
 
185
209
  ## Error Types
186
210
 
187
211
  All errors extend `HostRouterError`:
188
212
 
189
- | Error | When |
190
- | ----------------------------- | ------------------------------------------- |
191
- | `InvalidPatternError` | Pattern is empty, non-string, or has spaces |
192
- | `HostOverrideNotAllowedError` | Cookie override from disallowed host |
193
- | `InvalidHostnameError` | Cookie value isn't a valid hostname |
194
- | `HostValidationError` | Custom `validate` function threw |
195
- | `NoRouteMatchError` | No host pattern matched the request |
196
- | `InvalidHandlerError` | Handler is not a function |
213
+ | Error | When |
214
+ | ----------------------------- | ------------------------------------------------------------------------------------------------- |
215
+ | `InvalidPatternError` | Pattern is empty, non-string, or has spaces |
216
+ | `HostOverrideNotAllowedError` | Cookie override from disallowed host |
217
+ | `InvalidHostnameError` | Cookie value isn't a valid hostname |
218
+ | `HostValidationError` | Custom `validate` function threw |
219
+ | `NoRouteMatchError` | No host pattern matched the request |
220
+ | `InvalidHandlerError` | Handler is not a function, or a lazy mount resolved to a module without a usable `default` export |
221
+ | `HostRouterError` | A `.map()` inline handler resolved to a module namespace (a misused lazy import — use `.lazy()`) |
197
222
 
198
223
  See the fallback section above for a `NoRouteMatchError` catch example.
199
224
 
200
225
  ## Nesting Host Routers
201
226
 
202
- A lazy handler can resolve to another `HostRouter`:
227
+ A lazy mount can resolve to another `HostRouter`:
203
228
 
204
229
  ```typescript
205
230
  // apps/regional.ts
206
231
  import { createHostRouter } from "@rangojs/router/host";
207
232
 
208
233
  const regional = createHostRouter();
209
- regional.host(["us.*"]).map(() => import("./regions/us"));
210
- regional.host(["eu.*"]).map(() => import("./regions/eu"));
234
+ regional.host(["us.*"]).lazy(() => import("./regions/us"));
235
+ regional.host(["eu.*"]).lazy(() => import("./regions/eu"));
211
236
 
212
237
  export default regional;
213
238
  ```
214
239
 
215
240
  ```typescript
216
241
  // host-router.ts
217
- router.host(["**.regional.example.com"]).map(() => import("./apps/regional"));
242
+ router.host(["**.regional.example.com"]).lazy(() => import("./apps/regional"));
218
243
  ```
244
+
245
+ ## Cross-app navigation is a full document load
246
+
247
+ A client-side navigation that crosses an app boundary (e.g. a `<Link>` or
248
+ intercepted `<a>` from the app at `/` into an app mounted at `/shop`) is a **hard
249
+ document navigation**, not a soft in-tree swap. When the server sees a partial
250
+ (SPA) request whose router id doesn't match the matched app, it returns
251
+ `X-RSC-Reload` and the client does a real document navigation to the target.
252
+
253
+ Why a reload rather than a soft swap: a soft swap can't faithfully re-establish
254
+ the target app's **document-level** state. Stylesheets shared across apps are
255
+ dropped by React 19's by-`href` resource dedup; and theme, warmup, and
256
+ prefetch-TTL are document-lifetime (captured once at load — see
257
+ `browser/app-shell.ts`), so the target app's config would never take effect. A
258
+ full document load re-establishes the target app's entire document — CSS, theme,
259
+ meta, everything — by construction. So you do **not** need to coordinate
260
+ stylesheet `href`s, `precedence`, theme config, etc. across independently-authored
261
+ apps; each app owns its own document.
262
+
263
+ **Within-app** navigation is unchanged — a normal soft SPA update (the document
264
+ stays mounted). Only crossing an app boundary triggers the reload.