@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
package/README.md CHANGED
@@ -10,6 +10,7 @@ Named-route RSC router with structural composability and type-safe partial rende
10
10
  - **Structural composability** — Attach routes, loaders, middleware, handles, caching, prerendering, and static generation without hiding the route tree
11
11
  - **Composable URL patterns** — Django-style `urls()` DSL with `path`, `layout`, `include`
12
12
  - **Data loaders** — `createLoader()` with automatic streaming and Suspense integration
13
+ - **Server actions** — `"use server"` mutations with `useActionState`, `useOptimistic`, and per-segment + per-loader `revalidate()` rules
13
14
  - **Live data layer** — Pre-render or cache the UI shell while loaders stay live by default at request time
14
15
  - **Layouts & nesting** — Nested layouts with `<Outlet />` and parallel routes
15
16
  - **Segment-level caching** — `cache()` DSL with TTL/SWR and pluggable cache stores
@@ -91,24 +92,29 @@ This file is a server/RSC module and should import router construction APIs from
91
92
 
92
93
  ```tsx
93
94
  // src/router.tsx
94
- import { createRouter, urls } from "@rangojs/router";
95
- import { Document } from "./document";
95
+ import { createRouter } from "@rangojs/router";
96
96
 
97
- const blogPatterns = urls(({ path }) => [
98
- path("/", BlogIndexPage, { name: "index" }),
99
- path("/:slug", BlogPostPage, { name: "post" }),
97
+ export const router = createRouter().routes(({ path }) => [
98
+ path("/", HomePage, { name: "home" }),
99
+ path("/about", AboutPage, { name: "about" }),
100
100
  ]);
101
101
 
102
+ export const reverse = router.reverse;
103
+ // reverse("home") -> "/"
104
+ ```
105
+
106
+ For larger apps, extract route modules with `urls()` and compose with `include()`:
107
+
108
+ ```tsx
109
+ import { createRouter, urls } from "@rangojs/router";
110
+ import { blogPatterns } from "./urls/blog";
111
+
102
112
  const urlpatterns = urls(({ path, include }) => [
103
113
  path("/", HomePage, { name: "home" }),
104
114
  include("/blog", blogPatterns, { name: "blog" }),
105
115
  ]);
106
116
 
107
- export const router = createRouter({ document: Document }).routes(urlpatterns);
108
-
109
- // Export typed reverse function for URL generation by route name
110
- export const reverse = router.reverse;
111
-
117
+ export const router = createRouter().routes(urlpatterns);
112
118
  // reverse("blog.post", { slug: "hello-world" }) -> "/blog/hello-world"
113
119
  ```
114
120
 
@@ -156,13 +162,18 @@ const urlpatterns = urls(({ path }) => [
156
162
  ]);
157
163
  ```
158
164
 
159
- Use `reverse()` as the default way to link to routes:
165
+ Use `ctx.reverse()` from handler context as the default way to link to routes from server code:
160
166
 
161
167
  ```tsx
162
- router.reverse("product", { slug: "widget" }); // "/product/widget"
163
- router.reverse("search", undefined, { q: "rsc" }); // "/search?q=rsc"
168
+ const ProductPage: Handler<"product"> = (ctx) => {
169
+ const url = ctx.reverse("product", { slug: "widget" }); // "/product/widget"
170
+ const searchUrl = ctx.reverse("search", undefined, { q: "rsc" }); // "/search?q=rsc"
171
+ return <Link to={url}>Widget</Link>;
172
+ };
164
173
  ```
165
174
 
175
+ `router.reverse()` (exported from the router module) is the same function without a handler context, useful in scripts or tests. In request code, prefer `ctx.reverse()` — it auto-fills mount params from the current match.
176
+
166
177
  ### Composable URL Modules
167
178
 
168
179
  Local route names compose cleanly with `include(..., { name })`:
@@ -472,41 +483,130 @@ const urlpatterns = urls(({ path, loader }) => [
472
483
  ]);
473
484
  ```
474
485
 
475
- ## Navigation & Links
486
+ ## Server Actions
487
+
488
+ Server actions are React's RSC mutation primitive. Define them with the
489
+ `"use server"` directive — Rango uses standard React 19 hooks
490
+ (`useActionState`, `useFormStatus`, `useOptimistic`) with no framework wrapper.
476
491
 
477
- ### Named Routes with `reverse()` (Server Components)
492
+ ```tsx
493
+ // app/actions/cart.ts
494
+ "use server";
495
+
496
+ import { getRequestContext } from "@rangojs/router";
478
497
 
479
- In server components, use `reverse()` to generate URLs by route name:
498
+ export async function addToCart(productId: string): Promise<void> {
499
+ const ctx = getRequestContext();
500
+ const userId = ctx.get("user").id;
501
+ await db.cart.insert({ userId, productId });
502
+ }
503
+ ```
480
504
 
481
505
  ```tsx
482
- import { Link } from "@rangojs/router/client";
483
- import { reverse } from "./router";
506
+ // Client form with progressive enhancement + pending state
507
+ "use client";
508
+ import { useActionState } from "react";
509
+ import { saveProfile } from "../actions/profile";
484
510
 
485
- function BlogIndex() {
511
+ export function ProfileForm() {
512
+ const [state, action, pending] = useActionState(saveProfile, null);
486
513
  return (
487
- <nav>
488
- <Link to={reverse("home")}>Home</Link>
489
- <Link to={reverse("blogPost", { slug: "my-post" })}>My Post</Link>
490
- <Link to={reverse("about")}>About</Link>
491
- </nav>
514
+ <form action={action}>
515
+ <input name="name" defaultValue={state?.values?.name} />
516
+ {state?.errors?.name && <p role="alert">{state.errors.name}</p>}
517
+ <button disabled={pending}>{pending ? "Saving…" : "Save"}</button>
518
+ </form>
492
519
  );
493
520
  }
494
521
  ```
495
522
 
496
- `reverse()` is type-safe route names and required params are checked at compile time. Included routes use dotted names: `reverse("api.health")`.
523
+ After an action runs, matched route segments (path/layout/parallel/intercept)
524
+ and loaders can re-render/re-resolve so the UI reflects the new state.
525
+ Attach a `revalidate(({ actionId }) => ...)` rule on any segment or loader
526
+ that owns data the action touched:
527
+
528
+ ```tsx
529
+ urls(({ path, loader, revalidate }) => [
530
+ // Segment-level: re-render the cart page handler after cart actions.
531
+ // Nest loaders that belong to this route inside the same path() so the
532
+ // segment owns its data dependencies.
533
+ path("/cart", CartPage, { name: "cart" }, () => [
534
+ revalidate(
535
+ ({ actionId }) => actionId?.startsWith("src/actions/cart.ts#") ?? false,
536
+ ),
537
+ loader(CartLoader, () => [
538
+ revalidate(
539
+ ({ actionId }) => actionId?.startsWith("src/actions/cart.ts#") ?? false,
540
+ ),
541
+ ]),
542
+ ]),
543
+ ]);
544
+ ```
545
+
546
+ For the full guide — validation with Zod, error handling, file uploads,
547
+ `useOptimistic`, redirects, and progressive enhancement — see the
548
+ `/server-actions` skill.
549
+
550
+ ## Navigation & Links
551
+
552
+ ### Named Routes with `ctx.reverse()` (Server)
497
553
 
498
- Handlers also have `ctx.reverse()` directly on the context:
554
+ In server components and handlers, use `ctx.reverse()` to generate URLs by route name. This is the default — it is typed, auto-fills mount params from the current match, and resolves both local (`.name`) and absolute (`name.sub`) names:
499
555
 
500
556
  ```tsx
557
+ import { Link } from "@rangojs/router/client";
558
+ import type { Handler } from "@rangojs/router";
559
+
501
560
  const BlogPostPage: Handler<"blogPost"> = (ctx) => {
502
561
  const backUrl = ctx.reverse("blog");
503
562
  return <Link to={backUrl}>Back to blog</Link>;
504
563
  };
505
564
  ```
506
565
 
566
+ `reverse()` is type-safe — route names and required params are checked at compile time. Included routes use dotted names: `ctx.reverse("api.health")`.
567
+
568
+ For scripts, tests, or other code without a handler context, import the router-level `reverse`:
569
+
570
+ ```tsx
571
+ import { reverse } from "./router";
572
+ reverse("blogPost", { slug: "my-post" });
573
+ ```
574
+
575
+ ### Client Components
576
+
577
+ **`reverse()` is server-only.** It depends on the route manifest and handler context — neither is available in the browser bundle. Client components receive URLs as props, loader data, or server-action return values:
578
+
579
+ ```tsx
580
+ // server
581
+ function BlogIndex(ctx: HandlerContext) {
582
+ return (
583
+ <Nav
584
+ home={ctx.reverse("home")}
585
+ post={ctx.reverse("blogPost", { slug: "my-post" })}
586
+ />
587
+ );
588
+ }
589
+ ```
590
+
591
+ ```tsx
592
+ "use client";
593
+ import { Link } from "@rangojs/router/client";
594
+
595
+ export function Nav({ home, post }: { home: string; post: string }) {
596
+ return (
597
+ <nav>
598
+ <Link to={home}>Home</Link>
599
+ <Link to={post}>My Post</Link>
600
+ </nav>
601
+ );
602
+ }
603
+ ```
604
+
605
+ For client-side navigation to static paths (no named-route lookup), use `href()` — see below. For URLs tied to named routes, you have two options: import the per-module generated `routes` map and use `useReverse(routes)` for in-module names (see [`/links` skill](./skills/links/SKILL.md)), or generate the URL on the server and pass the string in for cross-module URLs.
606
+
507
607
  ### `href()` for Path Validation (Client Components)
508
608
 
509
- In client components, use `href()` for compile-time path validation:
609
+ In client components, use `href()` for compile-time path validation on static path strings:
510
610
 
511
611
  ```tsx
512
612
  "use client";
@@ -711,10 +811,12 @@ export const BlogPost = Prerender(
711
811
 
712
812
  ### Passthrough for Unknown Params
713
813
 
814
+ Wrap a `Prerender` definition with `Passthrough()` to add a live handler for unknown params at runtime. The build handler runs at build time, the live handler runs at request time for params not in the prerender cache.
815
+
714
816
  ```tsx
715
- import { Prerender } from "@rangojs/router";
817
+ import { Prerender, Passthrough } from "@rangojs/router";
716
818
 
717
- export const ProductPage = Prerender(
819
+ export const ProductPageDef = Prerender(
718
820
  async () => {
719
821
  const featured = await db.getFeaturedProducts();
720
822
  return featured.map((p) => ({ id: p.id }));
@@ -723,16 +825,22 @@ export const ProductPage = Prerender(
723
825
  const product = await db.getProduct(ctx.params.id);
724
826
  return <Product data={product} />;
725
827
  },
726
- { passthrough: true },
727
828
  );
728
- ```
729
829
 
730
- With `passthrough: true`, known params are served from the build-time cache and unknown params fall through to live rendering.
830
+ // In route definition:
831
+ path(
832
+ "/products/:id",
833
+ Passthrough(ProductPageDef, async (ctx) => {
834
+ const product = await ctx.env.DB.getProduct(ctx.params.id);
835
+ return <Product data={product} />;
836
+ }),
837
+ );
838
+ ```
731
839
 
732
- Handlers can also skip individual param sets with `ctx.passthrough()`, deferring them to the live handler at runtime:
840
+ Build handlers can also skip individual param sets with `ctx.passthrough()`, deferring them to the live handler:
733
841
 
734
842
  ```tsx
735
- export const ProductPage = Prerender(
843
+ export const ProductPageDef = Prerender(
736
844
  async () => {
737
845
  const all = await db.getAllProducts();
738
846
  return all.map((p) => ({ id: p.id }));
@@ -742,10 +850,55 @@ export const ProductPage = Prerender(
742
850
  if (!product.published) return ctx.passthrough();
743
851
  return <Product data={product} />;
744
852
  },
745
- { passthrough: true },
746
853
  );
747
854
  ```
748
855
 
856
+ ### Build-Time Environment Bindings
857
+
858
+ Prerender handlers can access platform bindings (KV, D1, R2) at build time when `buildEnv` is configured in the Vite plugin:
859
+
860
+ ```ts
861
+ // vite.config.ts
862
+ import { rango } from "@rangojs/router/vite";
863
+
864
+ rango({ preset: "cloudflare", buildEnv: "auto" });
865
+ ```
866
+
867
+ With `buildEnv: "auto"`, the plugin calls `wrangler.getPlatformProxy()` to provide local bindings. Handlers then access `ctx.env` during build:
868
+
869
+ ```tsx
870
+ export const BlogPosts = Prerender<{ slug: string }>(
871
+ async (ctx) => {
872
+ const rows = await ctx.env.DB.prepare("SELECT slug FROM posts").all();
873
+ return rows.map((r) => ({ slug: r.slug }));
874
+ },
875
+ async (ctx) => {
876
+ const post = await ctx.env.DB.prepare("SELECT * FROM posts WHERE slug = ?")
877
+ .bind(ctx.params.slug)
878
+ .first();
879
+ return <BlogPost post={post} />;
880
+ },
881
+ );
882
+ ```
883
+
884
+ `buildEnv` also accepts a factory function or plain object:
885
+
886
+ ```ts
887
+ // Custom factory
888
+ rango({
889
+ buildEnv: async (ctx) => {
890
+ const { getPlatformProxy } = await import("wrangler");
891
+ const proxy = await getPlatformProxy();
892
+ return { env: proxy.env, dispose: proxy.dispose };
893
+ },
894
+ });
895
+
896
+ // Plain object (Node.js)
897
+ rango({ buildEnv: { DATABASE_URL: process.env.DATABASE_URL } });
898
+ ```
899
+
900
+ Build-time env applies to both production builds and dev on-demand prerender. Without `buildEnv`, accessing `ctx.env` in a Prerender handler throws with a clear error.
901
+
749
902
  ## Theme
750
903
 
751
904
  ### Router Configuration
@@ -790,9 +943,9 @@ import { createHostRouter } from "@rangojs/router/host";
790
943
 
791
944
  const hostRouter = createHostRouter();
792
945
 
793
- hostRouter.host(["*.localhost"]).map(() => import("./apps/admin/handler.js"));
794
- hostRouter.host(["localhost"]).map(() => import("./apps/site/handler.js"));
795
- hostRouter.fallback().map(() => import("./apps/site/handler.js"));
946
+ hostRouter.host(["*.localhost"]).lazy(() => import("./apps/admin/handler.js"));
947
+ hostRouter.host(["localhost"]).lazy(() => import("./apps/site/handler.js"));
948
+ hostRouter.fallback().lazy(() => import("./apps/site/handler.js"));
796
949
 
797
950
  export default {
798
951
  async fetch(request, env, ctx) {
@@ -801,7 +954,7 @@ export default {
801
954
  };
802
955
  ```
803
956
 
804
- Each sub-app has its own `createRouter()` and `urls()`. The host router lazily imports the matched app's handler. Patterns are matched in registration order — register more specific patterns (subdomains) before catch-alls.
957
+ Use `.lazy(() => import("./sub-app"))` to mount a lazily-imported sub-app (a module whose `default` export is a handler or nested host router), and `.map((request) => Response)` for an inline request handler. Only `.lazy()` mounts are imported during build-time discovery; `.map(() => import(...))` is a type error. Each sub-app has its own `createRouter()` and `urls()`. Patterns are matched in registration order — register more specific patterns (subdomains) before catch-alls.
805
958
 
806
959
  ## Meta Tags
807
960
 
@@ -840,16 +993,16 @@ Auto-detects file type:
840
993
 
841
994
  ## Type Safety
842
995
 
843
- The Vite plugin automatically generates a `router.named-routes.gen.ts` file that globally registers route names, patterns, and search schemas via `RSCRouter.GeneratedRouteMap`. This powers server-side named-route typing such as `Handler<"name">`, `ctx.reverse()`, `getRequestContext().reverse()`, and `RouteParams<"name">` without any manual route registration. The gen file is updated on dev server startup, HMR, and production builds.
996
+ The Vite plugin automatically generates a `router.named-routes.gen.ts` file that globally registers route names, patterns, and search schemas via `Rango.GeneratedRouteMap`. This powers server-side named-route typing such as `Handler<"name">`, `ctx.reverse()`, `getRequestContext().reverse()`, and `RouteParams<"name">` without any manual route registration. The gen file is updated on dev server startup, HMR, and production builds.
844
997
 
845
- Use the generated map by default. Augment `RSCRouter.RegisteredRoutes` only when you need the richer `typeof router.routeMap` shape globally, especially for response-aware and path-based utilities.
998
+ Use the generated map by default. Augment `Rango.RegisteredRoutes` only when you need the richer `typeof router.routeMap` shape globally, especially for response-aware and path-based utilities.
846
999
 
847
1000
  ```typescript
848
1001
  // router.tsx
849
1002
  const router = createRouter<AppBindings>({}).routes(urlpatterns);
850
1003
 
851
1004
  declare global {
852
- namespace RSCRouter {
1005
+ namespace Rango {
853
1006
  interface Env extends AppEnv {}
854
1007
  interface Vars extends AppVars {}
855
1008
  interface RegisteredRoutes extends typeof router.routeMap {}
@@ -861,7 +1014,7 @@ Quick rule of thumb:
861
1014
 
862
1015
  - `GeneratedRouteMap` (auto-generated) — use for server-side named-route typing: `Handler<"name">`, `ctx.reverse()`, `Prerender<"name">`
863
1016
  - `typeof router.routeMap` — use when you need route entries with response metadata
864
- - `RegisteredRoutes` (manual augmentation) — use to expose `typeof router.routeMap` globally for `href()`, `PathResponse`, `ValidPaths`, and other path/response-aware utilities
1017
+ - `RegisteredRoutes` (manual augmentation) — use to expose `typeof router.routeMap` globally for `href()`, `Rango.Path`, `Rango.PathResponse`, and other path/response-aware utilities
865
1018
 
866
1019
  For extracted reusable loaders or middleware, prefer global dotted names on
867
1020
  `ctx.reverse()` by default. If you want type-safe local names for a specific