@rangojs/router 0.0.0-experimental.7 → 0.0.0-experimental.78a48627

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 (1102) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +884 -4
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/dist/__mocks__/version.js +7 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +1601 -0
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/dist/browser/react/use-client-cache.js +39 -0
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/dist/handles/index.d.ts +6 -0
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/{src/href-context.ts → dist/href-context.d.ts} +7 -11
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/dist/network-error-thrower.d.ts +17 -0
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/theme/ThemeProvider.d.ts +20 -0
  712. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  713. package/dist/theme/ThemeProvider.js +240 -0
  714. package/dist/theme/ThemeProvider.js.map +1 -0
  715. package/dist/theme/ThemeScript.d.ts +48 -0
  716. package/dist/theme/ThemeScript.d.ts.map +1 -0
  717. package/dist/theme/ThemeScript.js +13 -0
  718. package/dist/theme/ThemeScript.js.map +1 -0
  719. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  720. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  721. package/dist/theme/__tests__/theme.test.js +103 -0
  722. package/dist/theme/__tests__/theme.test.js.map +1 -0
  723. package/dist/theme/constants.d.ts +29 -0
  724. package/dist/theme/constants.d.ts.map +1 -0
  725. package/dist/theme/constants.js +48 -0
  726. package/dist/theme/constants.js.map +1 -0
  727. package/dist/theme/index.d.ts +31 -0
  728. package/dist/theme/index.d.ts.map +1 -0
  729. package/dist/theme/index.js +36 -0
  730. package/dist/theme/index.js.map +1 -0
  731. package/dist/theme/theme-context.d.ts +40 -0
  732. package/dist/theme/theme-context.d.ts.map +1 -0
  733. package/dist/theme/theme-context.js +60 -0
  734. package/dist/theme/theme-context.js.map +1 -0
  735. package/dist/theme/theme-script.d.ts +27 -0
  736. package/dist/theme/theme-script.d.ts.map +1 -0
  737. package/dist/theme/theme-script.js +147 -0
  738. package/dist/theme/theme-script.js.map +1 -0
  739. package/dist/theme/types.d.ts +163 -0
  740. package/dist/theme/types.d.ts.map +1 -0
  741. package/dist/theme/types.js +11 -0
  742. package/dist/theme/types.js.map +1 -0
  743. package/dist/theme/use-theme.d.ts +12 -0
  744. package/dist/theme/use-theme.d.ts.map +1 -0
  745. package/dist/theme/use-theme.js +40 -0
  746. package/dist/theme/use-theme.js.map +1 -0
  747. package/dist/types.d.ts +1479 -0
  748. package/dist/types.d.ts.map +1 -0
  749. package/dist/types.js +10 -0
  750. package/dist/types.js.map +1 -0
  751. package/dist/urls.d.ts +441 -0
  752. package/dist/urls.d.ts.map +1 -0
  753. package/dist/urls.gen.d.ts +8 -0
  754. package/dist/urls.gen.d.ts.map +1 -0
  755. package/dist/urls.gen.js +8 -0
  756. package/dist/urls.gen.js.map +1 -0
  757. package/dist/urls.js +443 -0
  758. package/dist/urls.js.map +1 -0
  759. package/dist/use-loader.d.ts +127 -0
  760. package/dist/use-loader.d.ts.map +1 -0
  761. package/dist/use-loader.js +237 -0
  762. package/dist/use-loader.js.map +1 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  779. package/dist/vite/ast-handler-extract.d.ts +49 -0
  780. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  781. package/dist/vite/ast-handler-extract.js +249 -0
  782. package/dist/vite/ast-handler-extract.js.map +1 -0
  783. package/dist/vite/expose-action-id.d.ts +19 -0
  784. package/dist/vite/expose-action-id.d.ts.map +1 -0
  785. package/dist/vite/expose-action-id.js +250 -0
  786. package/dist/vite/expose-action-id.js.map +1 -0
  787. package/dist/vite/expose-id-utils.d.ts +69 -0
  788. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  789. package/dist/vite/expose-id-utils.js +289 -0
  790. package/dist/vite/expose-id-utils.js.map +1 -0
  791. package/dist/vite/expose-internal-ids.d.ts +22 -0
  792. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  793. package/dist/vite/expose-internal-ids.js +886 -0
  794. package/dist/vite/expose-internal-ids.js.map +1 -0
  795. package/dist/vite/index.d.ts +149 -0
  796. package/dist/vite/index.d.ts.map +1 -0
  797. package/dist/vite/index.js +4474 -863
  798. package/dist/vite/index.js.map +1 -0
  799. package/dist/vite/index.named-routes.gen.ts +103 -0
  800. package/dist/vite/package-resolution.d.ts +43 -0
  801. package/dist/vite/package-resolution.d.ts.map +1 -0
  802. package/dist/vite/package-resolution.js +112 -0
  803. package/dist/vite/package-resolution.js.map +1 -0
  804. package/dist/vite/virtual-entries.d.ts +25 -0
  805. package/dist/vite/virtual-entries.d.ts.map +1 -0
  806. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
  807. package/dist/vite/virtual-entries.js.map +1 -0
  808. package/package.json +69 -59
  809. package/skills/breadcrumbs/SKILL.md +250 -0
  810. package/skills/cache-guide/SKILL.md +262 -0
  811. package/skills/caching/SKILL.md +50 -21
  812. package/skills/composability/SKILL.md +172 -0
  813. package/skills/debug-manifest/SKILL.md +12 -8
  814. package/skills/document-cache/SKILL.md +18 -16
  815. package/skills/fonts/SKILL.md +167 -0
  816. package/skills/hooks/SKILL.md +334 -72
  817. package/skills/host-router/SKILL.md +218 -0
  818. package/skills/intercept/SKILL.md +131 -8
  819. package/skills/layout/SKILL.md +100 -3
  820. package/skills/links/SKILL.md +89 -30
  821. package/skills/loader/SKILL.md +388 -38
  822. package/skills/middleware/SKILL.md +171 -34
  823. package/skills/mime-routes/SKILL.md +128 -0
  824. package/skills/parallel/SKILL.md +78 -1
  825. package/skills/prerender/SKILL.md +643 -0
  826. package/skills/rango/SKILL.md +85 -16
  827. package/skills/response-routes/SKILL.md +411 -0
  828. package/skills/route/SKILL.md +226 -14
  829. package/skills/router-setup/SKILL.md +123 -30
  830. package/skills/tailwind/SKILL.md +129 -0
  831. package/skills/theme/SKILL.md +9 -8
  832. package/skills/typesafety/SKILL.md +318 -89
  833. package/skills/use-cache/SKILL.md +324 -0
  834. package/src/__internal.ts +102 -4
  835. package/src/bin/rango.ts +321 -0
  836. package/src/browser/action-coordinator.ts +97 -0
  837. package/src/browser/action-response-classifier.ts +99 -0
  838. package/src/browser/event-controller.ts +87 -64
  839. package/src/browser/history-state.ts +80 -0
  840. package/src/browser/intercept-utils.ts +52 -0
  841. package/src/browser/link-interceptor.ts +24 -4
  842. package/src/browser/logging.ts +55 -0
  843. package/src/browser/merge-segment-loaders.ts +20 -12
  844. package/src/browser/navigation-bridge.ts +282 -557
  845. package/src/browser/navigation-client.ts +124 -71
  846. package/src/browser/navigation-store.ts +33 -50
  847. package/src/browser/navigation-transaction.ts +297 -0
  848. package/src/browser/network-error-handler.ts +61 -0
  849. package/src/browser/partial-update.ts +296 -310
  850. package/src/browser/prefetch/cache.ts +154 -0
  851. package/src/browser/prefetch/fetch.ts +135 -0
  852. package/src/browser/prefetch/observer.ts +65 -0
  853. package/src/browser/prefetch/policy.ts +48 -0
  854. package/src/browser/prefetch/queue.ts +88 -0
  855. package/src/browser/rango-state.ts +112 -0
  856. package/src/browser/react/Link.tsx +185 -73
  857. package/src/browser/react/NavigationProvider.tsx +78 -11
  858. package/src/browser/react/context.ts +6 -0
  859. package/src/browser/react/filter-segment-order.ts +11 -0
  860. package/src/browser/react/index.ts +12 -12
  861. package/src/browser/react/location-state-shared.ts +95 -53
  862. package/src/browser/react/location-state.ts +60 -15
  863. package/src/browser/react/mount-context.ts +6 -1
  864. package/src/browser/react/nonce-context.ts +23 -0
  865. package/src/browser/react/shallow-equal.ts +27 -0
  866. package/src/browser/react/use-action.ts +29 -51
  867. package/src/browser/react/use-client-cache.ts +5 -3
  868. package/src/browser/react/use-handle.ts +32 -79
  869. package/src/browser/react/use-href.tsx +2 -2
  870. package/src/browser/react/use-link-status.ts +6 -5
  871. package/src/browser/react/use-navigation.ts +22 -63
  872. package/src/browser/react/use-params.ts +65 -0
  873. package/src/browser/react/use-pathname.ts +47 -0
  874. package/src/browser/react/use-router.ts +63 -0
  875. package/src/browser/react/use-search-params.ts +56 -0
  876. package/src/browser/react/use-segments.ts +80 -97
  877. package/src/browser/response-adapter.ts +73 -0
  878. package/src/browser/rsc-router.tsx +107 -26
  879. package/src/browser/scroll-restoration.ts +116 -44
  880. package/src/browser/segment-reconciler.ts +216 -0
  881. package/src/browser/segment-structure-assert.ts +16 -0
  882. package/src/browser/server-action-bridge.ts +504 -599
  883. package/src/browser/shallow.ts +6 -1
  884. package/src/browser/types.ts +118 -47
  885. package/src/browser/validate-redirect-origin.ts +29 -0
  886. package/src/build/generate-manifest.ts +235 -24
  887. package/src/build/generate-route-types.ts +36 -0
  888. package/src/build/index.ts +13 -0
  889. package/src/build/route-trie.ts +265 -0
  890. package/src/build/route-types/ast-helpers.ts +25 -0
  891. package/src/build/route-types/ast-route-extraction.ts +98 -0
  892. package/src/build/route-types/codegen.ts +102 -0
  893. package/src/build/route-types/include-resolution.ts +411 -0
  894. package/src/build/route-types/param-extraction.ts +48 -0
  895. package/src/build/route-types/per-module-writer.ts +128 -0
  896. package/src/build/route-types/router-processing.ts +469 -0
  897. package/src/build/route-types/scan-filter.ts +78 -0
  898. package/src/build/runtime-discovery.ts +231 -0
  899. package/src/cache/background-task.ts +34 -0
  900. package/src/cache/cache-key-utils.ts +44 -0
  901. package/src/cache/cache-policy.ts +125 -0
  902. package/src/cache/cache-runtime.ts +338 -0
  903. package/src/cache/cache-scope.ts +120 -303
  904. package/src/cache/cf/cf-cache-store.ts +119 -7
  905. package/src/cache/cf/index.ts +8 -2
  906. package/src/cache/document-cache.ts +101 -72
  907. package/src/cache/handle-capture.ts +81 -0
  908. package/src/cache/handle-snapshot.ts +41 -0
  909. package/src/cache/index.ts +0 -15
  910. package/src/cache/memory-segment-store.ts +191 -13
  911. package/src/cache/profile-registry.ts +73 -0
  912. package/src/cache/read-through-swr.ts +134 -0
  913. package/src/cache/segment-codec.ts +256 -0
  914. package/src/cache/taint.ts +98 -0
  915. package/src/cache/types.ts +72 -122
  916. package/src/client.rsc.tsx +3 -1
  917. package/src/client.tsx +106 -126
  918. package/src/component-utils.ts +4 -4
  919. package/src/components/DefaultDocument.tsx +5 -1
  920. package/src/context-var.ts +86 -0
  921. package/src/debug.ts +17 -7
  922. package/src/errors.ts +108 -2
  923. package/src/handle.ts +15 -29
  924. package/src/handles/MetaTags.tsx +73 -20
  925. package/src/handles/breadcrumbs.ts +66 -0
  926. package/src/handles/index.ts +1 -0
  927. package/src/handles/meta.ts +30 -13
  928. package/src/host/cookie-handler.ts +21 -15
  929. package/src/host/errors.ts +8 -8
  930. package/src/host/index.ts +4 -7
  931. package/src/host/pattern-matcher.ts +27 -27
  932. package/src/host/router.ts +61 -39
  933. package/src/host/testing.ts +8 -8
  934. package/src/host/types.ts +15 -7
  935. package/src/host/utils.ts +1 -1
  936. package/src/href-client.ts +119 -29
  937. package/src/index.rsc.ts +153 -19
  938. package/src/index.ts +211 -30
  939. package/src/internal-debug.ts +11 -0
  940. package/src/loader.rsc.ts +26 -157
  941. package/src/loader.ts +27 -10
  942. package/src/network-error-thrower.tsx +3 -1
  943. package/src/outlet-provider.tsx +45 -0
  944. package/src/prerender/param-hash.ts +37 -0
  945. package/src/prerender/store.ts +185 -0
  946. package/src/prerender.ts +463 -0
  947. package/src/reverse.ts +330 -0
  948. package/src/root-error-boundary.tsx +41 -29
  949. package/src/route-content-wrapper.tsx +7 -4
  950. package/src/route-definition/dsl-helpers.ts +934 -0
  951. package/src/route-definition/helper-factories.ts +200 -0
  952. package/src/route-definition/helpers-types.ts +430 -0
  953. package/src/route-definition/index.ts +52 -0
  954. package/src/route-definition/redirect.ts +93 -0
  955. package/src/route-definition.ts +1 -1428
  956. package/src/route-map-builder.ts +217 -123
  957. package/src/route-name.ts +53 -0
  958. package/src/route-types.ts +59 -8
  959. package/src/router/content-negotiation.ts +116 -0
  960. package/src/router/debug-manifest.ts +72 -0
  961. package/src/router/error-handling.ts +9 -9
  962. package/src/router/find-match.ts +160 -0
  963. package/src/router/handler-context.ts +374 -81
  964. package/src/router/intercept-resolution.ts +397 -0
  965. package/src/router/lazy-includes.ts +236 -0
  966. package/src/router/loader-resolution.ts +215 -122
  967. package/src/router/logging.ts +251 -0
  968. package/src/router/manifest.ts +150 -35
  969. package/src/router/match-api.ts +620 -0
  970. package/src/router/match-context.ts +5 -3
  971. package/src/router/match-handlers.ts +440 -0
  972. package/src/router/match-middleware/background-revalidation.ts +80 -93
  973. package/src/router/match-middleware/cache-lookup.ts +382 -9
  974. package/src/router/match-middleware/cache-store.ts +51 -22
  975. package/src/router/match-middleware/intercept-resolution.ts +55 -17
  976. package/src/router/match-middleware/segment-resolution.ts +25 -6
  977. package/src/router/match-pipelines.ts +10 -45
  978. package/src/router/match-result.ts +34 -28
  979. package/src/router/metrics.ts +235 -15
  980. package/src/router/middleware-cookies.ts +55 -0
  981. package/src/router/middleware-types.ts +222 -0
  982. package/src/router/middleware.ts +324 -367
  983. package/src/router/pattern-matching.ts +211 -43
  984. package/src/router/prerender-match.ts +402 -0
  985. package/src/router/preview-match.ts +170 -0
  986. package/src/router/revalidation.ts +137 -38
  987. package/src/router/router-context.ts +40 -21
  988. package/src/router/router-interfaces.ts +452 -0
  989. package/src/router/router-options.ts +592 -0
  990. package/src/router/router-registry.ts +24 -0
  991. package/src/router/segment-resolution/fresh.ts +570 -0
  992. package/src/router/segment-resolution/helpers.ts +263 -0
  993. package/src/router/segment-resolution/loader-cache.ts +198 -0
  994. package/src/router/segment-resolution/revalidation.ts +1242 -0
  995. package/src/router/segment-resolution/static-store.ts +67 -0
  996. package/src/router/segment-resolution.ts +21 -0
  997. package/src/router/segment-wrappers.ts +291 -0
  998. package/src/router/telemetry-otel.ts +299 -0
  999. package/src/router/telemetry.ts +300 -0
  1000. package/src/router/timeout.ts +148 -0
  1001. package/src/router/trie-matching.ts +239 -0
  1002. package/src/router/types.ts +77 -3
  1003. package/src/router.ts +696 -4257
  1004. package/src/rsc/handler-context.ts +45 -0
  1005. package/src/rsc/handler.ts +764 -754
  1006. package/src/rsc/helpers.ts +140 -6
  1007. package/src/rsc/index.ts +0 -20
  1008. package/src/rsc/loader-fetch.ts +209 -0
  1009. package/src/rsc/manifest-init.ts +86 -0
  1010. package/src/rsc/nonce.ts +14 -0
  1011. package/src/rsc/origin-guard.ts +141 -0
  1012. package/src/rsc/progressive-enhancement.ts +379 -0
  1013. package/src/rsc/response-error.ts +37 -0
  1014. package/src/rsc/response-route-handler.ts +347 -0
  1015. package/src/rsc/rsc-rendering.ts +237 -0
  1016. package/src/rsc/runtime-warnings.ts +42 -0
  1017. package/src/rsc/server-action.ts +348 -0
  1018. package/src/rsc/ssr-setup.ts +128 -0
  1019. package/src/rsc/types.ts +38 -11
  1020. package/src/search-params.ts +230 -0
  1021. package/src/segment-system.tsx +25 -13
  1022. package/src/server/context.ts +182 -51
  1023. package/src/server/cookie-store.ts +190 -0
  1024. package/src/server/fetchable-loader-store.ts +37 -0
  1025. package/src/server/handle-store.ts +94 -15
  1026. package/src/server/loader-registry.ts +15 -56
  1027. package/src/server/request-context.ts +430 -70
  1028. package/src/server.ts +35 -130
  1029. package/src/ssr/index.tsx +100 -31
  1030. package/src/static-handler.ts +114 -0
  1031. package/src/theme/ThemeProvider.tsx +21 -15
  1032. package/src/theme/ThemeScript.tsx +5 -5
  1033. package/src/theme/constants.ts +5 -2
  1034. package/src/theme/index.ts +4 -14
  1035. package/src/theme/theme-context.ts +4 -30
  1036. package/src/theme/theme-script.ts +21 -18
  1037. package/src/types/boundaries.ts +158 -0
  1038. package/src/types/cache-types.ts +198 -0
  1039. package/src/types/error-types.ts +192 -0
  1040. package/src/types/global-namespace.ts +100 -0
  1041. package/src/types/handler-context.ts +687 -0
  1042. package/src/types/index.ts +88 -0
  1043. package/src/types/loader-types.ts +183 -0
  1044. package/src/types/route-config.ts +170 -0
  1045. package/src/types/route-entry.ts +109 -0
  1046. package/src/types/segments.ts +148 -0
  1047. package/src/types.ts +1 -1623
  1048. package/src/urls/include-helper.ts +197 -0
  1049. package/src/urls/index.ts +53 -0
  1050. package/src/urls/path-helper-types.ts +339 -0
  1051. package/src/urls/path-helper.ts +329 -0
  1052. package/src/urls/pattern-types.ts +95 -0
  1053. package/src/urls/response-types.ts +106 -0
  1054. package/src/urls/type-extraction.ts +372 -0
  1055. package/src/urls/urls-function.ts +98 -0
  1056. package/src/urls.ts +1 -802
  1057. package/src/use-loader.tsx +85 -77
  1058. package/src/vite/discovery/bundle-postprocess.ts +184 -0
  1059. package/src/vite/discovery/discover-routers.ts +344 -0
  1060. package/src/vite/discovery/prerender-collection.ts +385 -0
  1061. package/src/vite/discovery/route-types-writer.ts +258 -0
  1062. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1063. package/src/vite/discovery/state.ts +110 -0
  1064. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1065. package/src/vite/index.ts +11 -1129
  1066. package/src/vite/plugin-types.ts +131 -0
  1067. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1068. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1069. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1070. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -51
  1071. package/src/vite/plugins/expose-id-utils.ts +287 -0
  1072. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1073. package/src/vite/plugins/expose-ids/handler-transform.ts +179 -0
  1074. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1075. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1076. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1077. package/src/vite/plugins/expose-internal-ids.ts +569 -0
  1078. package/src/vite/plugins/refresh-cmd.ts +65 -0
  1079. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1080. package/src/vite/plugins/version-injector.ts +83 -0
  1081. package/src/vite/plugins/version-plugin.ts +254 -0
  1082. package/src/vite/plugins/virtual-entries.ts +123 -0
  1083. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1084. package/src/vite/rango.ts +510 -0
  1085. package/src/vite/router-discovery.ts +785 -0
  1086. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1087. package/src/vite/utils/banner.ts +36 -0
  1088. package/src/vite/utils/bundle-analysis.ts +137 -0
  1089. package/src/vite/utils/manifest-utils.ts +70 -0
  1090. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +25 -29
  1091. package/src/vite/utils/prerender-utils.ts +189 -0
  1092. package/src/vite/utils/shared-utils.ts +169 -0
  1093. package/CLAUDE.md +0 -43
  1094. package/src/browser/lru-cache.ts +0 -69
  1095. package/src/browser/request-controller.ts +0 -164
  1096. package/src/cache/memory-store.ts +0 -253
  1097. package/src/href.ts +0 -255
  1098. package/src/server/route-manifest-cache.ts +0 -173
  1099. package/src/vite/expose-handle-id.ts +0 -209
  1100. package/src/vite/expose-loader-id.ts +0 -426
  1101. package/src/vite/expose-location-state-id.ts +0 -177
  1102. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -15,17 +15,49 @@ argument-hint: [setup]
15
15
  import { createRouter } from "@rangojs/router";
16
16
  import { urlpatterns } from "./urls";
17
17
 
18
- const router = createRouter<AppEnv>({
18
+ const router = createRouter<AppBindings>({
19
19
  document: Document,
20
- urls: urlpatterns,
21
- });
20
+ }).routes(urlpatterns);
22
21
 
23
- // Server-side named-route href (type-safe via routeMap)
24
- export const href = router.href;
22
+ // Server-side named-route reverse (type-safe via routeMap)
23
+ export const reverse = router.reverse;
25
24
 
26
25
  export default router;
27
26
  ```
28
27
 
28
+ ### Which global type should I use?
29
+
30
+ Use the generated route map by default. Manual `RegisteredRoutes` augmentation
31
+ is only needed when you want the richer `typeof router.routeMap` shape
32
+ available globally.
33
+
34
+ - `GeneratedRouteMap` — auto-registered by `router.named-routes.gen.ts`
35
+ Use for `Handler<"name">`, `Prerender<"name">`, server `ctx.reverse()`,
36
+ and named-route param/search inference.
37
+ - `typeof router.routeMap` — the real merged route map from your router
38
+ instance, including response-route metadata such as `{ path, response }`.
39
+ - `RegisteredRoutes` — manual global hook for exposing `typeof router.routeMap`
40
+ to utilities like `href()`, `ValidPaths`, and `PathResponse`.
41
+
42
+ Recommended setup:
43
+
44
+ ```typescript
45
+ // router.tsx
46
+ import { createRouter } from "@rangojs/router";
47
+ import { urlpatterns } from "./urls";
48
+ import type { AppBindings, AppVars } from "./env";
49
+
50
+ export const router = createRouter<AppBindings>({}).routes(urlpatterns);
51
+
52
+ declare global {
53
+ namespace RSCRouter {
54
+ interface Env extends AppBindings {}
55
+ interface Vars extends AppVars {}
56
+ interface RegisteredRoutes extends typeof router.routeMap {}
57
+ }
58
+ }
59
+ ```
60
+
29
61
  ## Route Definition with Type-Safe Names
30
62
 
31
63
  ```typescript
@@ -45,22 +77,35 @@ export const urlpatterns = urls(({ path, layout }) => [
45
77
 
46
78
  ## Type-Safe href()
47
79
 
48
- ### Server: ctx.href + scopedHref
80
+ ### Server: ctx.reverse with route names
49
81
 
50
- In route handlers, use `scopedHref()` for local route name autocomplete:
82
+ In route handlers, `ctx.reverse()` uses two namespaces:
83
+
84
+ - **`.name`** — local route, resolved within the current `include()` scope
85
+ - **`name`** — global route, from the named-routes definition
51
86
 
52
87
  ```typescript
53
- import { scopedHref } from "@rangojs/router";
88
+ import type { Handler } from "@rangojs/router";
54
89
 
55
- path("/product/:slug", (ctx) => {
56
- const href = scopedHref<typeof shopPatterns>(ctx.href);
90
+ export const ProductHandler: Handler<"shop.product"> = (ctx) => {
91
+ ctx.reverse(".cart"); // Local: /shop/cart
92
+ ctx.reverse(".product", { slug: "widget" }); // Local: /shop/product/widget
93
+ ctx.reverse("blog.post", { slug: "1" }); // Global: /blog/1
94
+ };
95
+ ```
57
96
 
58
- href("cart"); // Type-safe local name
59
- href("product", { slug: "widget" }); // Type-safe with params
60
- href("blog.post"); // Absolute names always allowed
97
+ For type-safe local names, generate a route types file with `npx rango generate urls/shop.tsx`
98
+ and pass it as the second generic to `Handler` or `Prerender`:
61
99
 
62
- return <ProductPage slug={ctx.params.slug} />;
63
- }, { name: "product" })
100
+ ```typescript
101
+ import type { Handler } from "@rangojs/router";
102
+ import type { routes } from "./shop.gen.js";
103
+
104
+ export const ProductHandler: Handler<"shop.product", routes> = (ctx) => {
105
+ ctx.reverse(".cart"); // Type-safe local name
106
+ ctx.reverse(".product", { slug: "widget" }); // Type-safe local with params
107
+ ctx.reverse("blog.post", { slug: "hi" }); // Type-safe global name
108
+ };
64
109
  ```
65
110
 
66
111
  ### Client: href + useHref
@@ -82,6 +127,17 @@ function ShopNav() {
82
127
  }
83
128
  ```
84
129
 
130
+ `href()` and path-based response utilities read from `RegisteredRoutes`, so if
131
+ you want them typed globally you should augment:
132
+
133
+ ```typescript
134
+ declare global {
135
+ namespace RSCRouter {
136
+ interface RegisteredRoutes extends typeof router.routeMap {}
137
+ }
138
+ }
139
+ ```
140
+
85
141
  See `/links` for full URL generation guide.
86
142
 
87
143
  ## Environment Type Setup
@@ -90,50 +146,57 @@ Define your app's environment for type-safe bindings and variables:
90
146
 
91
147
  ```typescript
92
148
  // env.ts
93
- import type { RouterEnv } from "@rangojs/router";
94
149
 
95
- // Cloudflare bindings
96
- interface AppBindings {
150
+ // Cloudflare bindings — passed as TEnv to createRouter<TEnv>()
151
+ export interface AppBindings {
97
152
  DB: D1Database;
98
153
  KV: KVNamespace;
99
154
  CACHE: KVNamespace;
100
155
  AI: Ai;
101
156
  }
102
157
 
103
- // Variables set by middleware
104
- interface AppVariables {
158
+ // Variables set by middleware — declared via module augmentation
159
+ export interface AppVariables {
105
160
  user?: { id: string; email: string; role: string };
106
161
  requestId?: string;
107
162
  permissions?: string[];
108
163
  }
109
-
110
- // Combined environment type
111
- export type AppEnv = RouterEnv<AppBindings, AppVariables>;
112
164
  ```
113
165
 
114
166
  ### Using Environment Types
115
167
 
116
168
  ```typescript
117
169
  // router.tsx
118
- import type { AppEnv } from "./env";
170
+ import type { AppBindings, AppVariables } from "./env";
119
171
 
120
- const router = createRouter<AppEnv>({
172
+ const router = createRouter<AppBindings>({
121
173
  document: Document,
122
- urls: urlpatterns,
123
- });
174
+ }).routes(urlpatterns);
175
+
176
+ // Register bindings and variables globally for implicit typing
177
+ declare global {
178
+ namespace RSCRouter {
179
+ interface Env extends AppBindings {}
180
+ interface Vars extends AppVariables {}
181
+ }
182
+ }
124
183
 
125
- // middleware - typed ctx.env.Variables
126
- import { createMiddleware } from "@rangojs/router";
184
+ // middleware - typed via ctx.set / ctx.get
185
+ import type { Middleware } from "@rangojs/router";
127
186
 
128
- export const authMiddleware = createMiddleware(async (ctx, next) => {
129
- ctx.env.Variables.user = { id: "123", email: "user@example.com", role: "admin" };
187
+ export const authMiddleware: Middleware = async (ctx, next) => {
188
+ ctx.set("user", {
189
+ id: "123",
190
+ email: "user@example.com",
191
+ role: "admin",
192
+ });
130
193
  await next();
131
- });
194
+ };
132
195
 
133
196
  // loaders - typed context
134
- export const UserLoader = createLoader("user", async (ctx) => {
135
- const db = ctx.env.Bindings.DB; // D1Database
136
- const userId = ctx.env.Variables.user?.id;
197
+ export const UserLoader = createLoader(async (ctx) => {
198
+ const db = ctx.env.DB; // D1Database (plain bindings)
199
+ const userId = ctx.get("user")?.id; // from RSCRouter.Vars
137
200
  return db.prepare("SELECT * FROM users WHERE id = ?").bind(userId).first();
138
201
  });
139
202
  ```
@@ -146,7 +209,8 @@ Register environment types globally for implicit typing:
146
209
  // router.tsx
147
210
  declare global {
148
211
  namespace RSCRouter {
149
- interface Env extends AppEnv {}
212
+ interface Env extends AppBindings {}
213
+ interface Vars extends AppVariables {}
150
214
  }
151
215
  }
152
216
  ```
@@ -155,21 +219,113 @@ Now handlers have typed context without explicit imports:
155
219
 
156
220
  ```typescript
157
221
  // In loaders
158
- export const DashboardLoader = createLoader("dashboard", async (ctx) => {
159
- // ctx.env.Variables.user is typed from global Env
160
- // ctx.params is typed from route pattern
161
- const user = ctx.env.Variables.user;
222
+ export const DashboardLoader = createLoader(async (ctx) => {
223
+ // ctx.env.DB is typed from global RSCRouter.Env
224
+ // ctx.get("user") is typed from global RSCRouter.Vars
225
+ const user = ctx.get("user");
162
226
  return { user };
163
227
  });
164
228
  ```
165
229
 
230
+ ## Typed Search Params
231
+
232
+ Add a `search` schema to `path()` options for type-safe query parameters:
233
+
234
+ ```typescript
235
+ // Route definition with search schema
236
+ path("/search", SearchPage, {
237
+ name: "search",
238
+ search: { q: "string", page: "number?", sort: "string?" },
239
+ });
240
+ ```
241
+
242
+ ### Handler with typed search params
243
+
244
+ `Handler<"name">` automatically resolves route params and search params from the
245
+ global `GeneratedRouteMap` (the gen file). No explicit route map import needed:
246
+
247
+ ```typescript
248
+ // pages/search.tsx
249
+ import type { Handler } from "@rangojs/router";
250
+
251
+ export const SearchPage: Handler<"search"> = (ctx) => {
252
+ // ctx.search is typed: { q: string; page?: number; sort?: string }
253
+ const { q, page, sort } = ctx.search;
254
+ return <SearchResults q={q} page={page} sort={sort} />;
255
+ };
256
+ ```
257
+
258
+ This avoids circular references because `Handler` defaults to `GeneratedRouteMap`
259
+ (from `router.named-routes.gen.ts`) instead of `RegisteredRoutes` (which depends on `router.tsx`).
260
+
261
+ You can also pass an explicit route map for per-module isolation (opt-in,
262
+ after running `npx rango generate`):
263
+
264
+ ```typescript
265
+ import type { Handler } from "@rangojs/router";
266
+ import type { routes } from "./urls.gen.js";
267
+
268
+ export const SearchPage: Handler<"search", routes> = (ctx) => { ... };
269
+ ```
270
+
271
+ Supported types: `"string"`, `"number"`, `"boolean"`, with `?` suffix for optional.
272
+ Values are automatically coerced from query string (e.g., `"2"` becomes `2` for numbers).
273
+ Routes without a `search` schema keep the standard `URLSearchParams` behavior.
274
+
275
+ ### RouteSearchParams and RouteParams utility types
276
+
277
+ Extract typed params by route name for use in component props, return types, or anywhere:
278
+
279
+ ```typescript
280
+ import type { RouteSearchParams, RouteParams } from "@rangojs/router";
281
+
282
+ // RouteSearchParams<"name"> resolves the search schema to a typed object
283
+ type SP = RouteSearchParams<"search">;
284
+ // { q: string | undefined; page?: number; sort?: string }
285
+
286
+ // RouteParams<"name"> resolves URL params from the route pattern
287
+ type P = RouteParams<"blogPost">;
288
+ // { slug: string }
289
+
290
+ // Use in component props
291
+ interface SearchResultsProps {
292
+ params: RouteSearchParams<"search">;
293
+ }
294
+ ```
295
+
296
+ Both default to the global route map (`RegisteredRoutes` or `GeneratedRouteMap`).
297
+ Pass an explicit route map as the second type argument when needed:
298
+
299
+ ```typescript
300
+ import type { routes } from "./urls.gen.js";
301
+
302
+ type SP = RouteSearchParams<"search", routes>;
303
+ type P = RouteParams<"blogPost", routes>;
304
+ ```
305
+
306
+ ### Generated route types
307
+
308
+ In the generated `router.named-routes.gen.ts`, routes with search schemas
309
+ use `{ path, search }` objects:
310
+
311
+ ```typescript
312
+ // router.named-routes.gen.ts (auto-generated)
313
+ export const NamedRoutes = {
314
+ "search.index": {
315
+ path: "/search",
316
+ search: { q: "string", page: "number?", sort: "string?" },
317
+ },
318
+ "home.index": "/", // No search schema -> plain string
319
+ } as const;
320
+ ```
321
+
166
322
  ## Loader Type Safety
167
323
 
168
324
  Loaders have typed return values:
169
325
 
170
326
  ```typescript
171
327
  // loaders/product.ts
172
- export const ProductLoader = createLoader("product", async (ctx) => {
328
+ export const ProductLoader = createLoader(async (ctx) => {
173
329
  return {
174
330
  id: ctx.params.slug,
175
331
  name: "Widget",
@@ -178,7 +334,7 @@ export const ProductLoader = createLoader("product", async (ctx) => {
178
334
  });
179
335
 
180
336
  // In server component - type is inferred
181
- import { useLoader } from "@rangojs/router";
337
+ import { useLoader } from "@rangojs/router/client";
182
338
 
183
339
  async function ProductPage() {
184
340
  const product = await useLoader(ProductLoader);
@@ -188,39 +344,100 @@ async function ProductPage() {
188
344
 
189
345
  // In client component - same type
190
346
  "use client";
191
- import { useLoaderData } from "@rangojs/router/client";
347
+ import { useLoader } from "@rangojs/router/client";
192
348
 
193
349
  function ProductPrice() {
194
- const { product } = useLoaderData(ProductLoader);
195
- // product: { id: string; name: string; price: number }
350
+ const { data } = useLoader(ProductLoader);
351
+ // data: { id: string; name: string; price: number }
352
+ const product = data;
196
353
  return <span>${product.price}</span>;
197
354
  }
198
355
  ```
199
356
 
200
- ## Handle Type Safety
357
+ ## Typed Context Variables
201
358
 
202
- Handles have typed data:
359
+ `createVar<T>()` creates a typed token for `ctx.set()`/`ctx.get()`, making
360
+ handler-to-layout data contracts explicit and compile-time verified:
203
361
 
204
362
  ```typescript
205
- // handles/breadcrumbs.ts
206
- import { createHandle } from "@rangojs/router";
363
+ import { createVar } from "@rangojs/router";
207
364
 
208
- export const Breadcrumbs = createHandle<{ label: string; href: string }>();
365
+ // Define a typed token (shared between producer and consumer)
366
+ interface PaginationData {
367
+ current: number;
368
+ total: number;
369
+ perPage: number;
370
+ }
371
+ export const Pagination = createVar<PaginationData>();
372
+ ```
209
373
 
210
- // In route definition - use handle() DSL
211
- import { urls } from "@rangojs/router";
374
+ ### Producer (handler or middleware)
212
375
 
213
- export const urlpatterns = urls(({ path, handle }) => [
214
- path("/shop/product/:slug", ProductPage, { name: "product" }, () => [
215
- handle(Breadcrumbs, { label: "Products", href: "/shop/products" }),
216
- ]),
217
- ]);
376
+ ```typescript
377
+ import { Pagination } from "../vars/pagination.js";
378
+
379
+ const ArticleList: Handler<"articles.list"> = async (ctx) => {
380
+ ctx.set(Pagination, { // type-checked
381
+ current: 1,
382
+ total: 10,
383
+ perPage: 5,
384
+ });
385
+ return <Articles />;
386
+ };
387
+ ```
388
+
389
+ ### Consumer (layout, parallel, or any context with get)
390
+
391
+ ```typescript
392
+ import { Pagination } from "../vars/pagination.js";
393
+
394
+ export function PaginationLayout(ctx: any) {
395
+ const pagination = ctx.get(Pagination); // typed as PaginationData | undefined
396
+ if (!pagination) return <Outlet />;
397
+ return <nav>Page {pagination.current} of {pagination.total}</nav>;
398
+ }
399
+ ```
400
+
401
+ ### Why not just use RSCRouter.Vars?
402
+
403
+ `RSCRouter.Vars` (via module augmentation) provides app-global typing for
404
+ `ctx.get("key")` / `ctx.set("key", value)`. It works for middleware state
405
+ shared app-wide. `createVar<T>()` is for route-local or feature-scoped
406
+ context -- the producer and consumer import the same token, creating a
407
+ scoped contract without polluting global types.
408
+
409
+ Both approaches coexist: `ctx.get("user")` (global via Vars) and
410
+ `ctx.get(Pagination)` (scoped via createVar) work side by side.
411
+
412
+ ## Handle Type Safety
413
+
414
+ Handles have typed data:
218
415
 
219
- // In client - typed array
416
+ ```typescript
417
+ // Built-in Breadcrumbs handle — import from "@rangojs/router"
418
+ import { Breadcrumbs } from "@rangojs/router";
419
+ // Type: Handle<BreadcrumbItem, BreadcrumbItem[]>
420
+ // BreadcrumbItem: { label: string; href: string; content?: ReactNode | Promise<ReactNode> }
421
+
422
+ // In route handler — push is fully typed
423
+ path("/shop/product/:slug", (ctx) => {
424
+ const breadcrumb = ctx.use(Breadcrumbs);
425
+ breadcrumb({ label: "Products", href: "/shop/products" });
426
+ return <ProductPage />;
427
+ }, { name: "product" });
428
+
429
+ // In client — typed array
430
+ import { useHandle, Breadcrumbs } from "@rangojs/router/client";
220
431
  function BreadcrumbNav() {
221
432
  const crumbs = useHandle(Breadcrumbs);
222
- // crumbs: Array<{ label: string; href: string }>
433
+ // crumbs: BreadcrumbItem[]
223
434
  }
435
+
436
+ // Custom handles also work the same way
437
+ import { createHandle } from "@rangojs/router";
438
+ export const PageTitle = createHandle<string, string>(
439
+ (segments) => segments.flat().at(-1) ?? "Default Title"
440
+ );
224
441
  ```
225
442
 
226
443
  ## Ref Prop Type Safety (Loaders & Handles)
@@ -234,24 +451,22 @@ export const ProductLoader = createLoader(async (ctx) => {
234
451
  return { product: await fetchProduct(ctx.params.slug) };
235
452
  });
236
453
 
237
- // handles.ts
238
- export const Breadcrumbs = createHandle<{ label: string; href: string }>();
454
+ // Built-in Breadcrumbs — or any custom handle created with createHandle()
239
455
 
240
456
  // Client component — typeof infers all generics
241
- "use client";
242
- import { useLoader, useHandle } from "@rangojs/router/client";
457
+ ("use client");
458
+ import { useLoader, useHandle, type Breadcrumbs } from "@rangojs/router/client";
243
459
  import type { ProductLoader } from "../loaders";
244
- import type { Breadcrumbs } from "../handles";
245
460
 
246
461
  function MyComponent({
247
462
  loader,
248
463
  handle,
249
464
  }: {
250
- loader: typeof ProductLoader; // LoaderDefinition<{ product: Product }>
251
- handle: typeof Breadcrumbs; // Handle<{ label: string; href: string }>
465
+ loader: typeof ProductLoader; // LoaderDefinition<{ product: Product }>
466
+ handle: typeof Breadcrumbs; // Handle<{ label: string; href: string }>
252
467
  }) {
253
- const { data } = useLoader(loader); // data is typed
254
- const crumbs = useHandle(handle); // crumbs is typed array
468
+ const { data } = useLoader(loader); // data is typed
469
+ const crumbs = useHandle(handle); // crumbs is typed array
255
470
  // ...
256
471
  }
257
472
  ```
@@ -266,6 +481,7 @@ full functionality from module-level registries.
266
481
  // location-states.ts
267
482
  import { createLocationState } from "@rangojs/router";
268
483
 
484
+ // All export patterns work: export const, const + export { X }, export { X as Y }
269
485
  export const ProductPreview = createLocationState<{
270
486
  name: string;
271
487
  price: number;
@@ -312,8 +528,8 @@ global type declarations (like `RSCRouter.Env`).
312
528
  "skipLibCheck": true,
313
529
  "isolatedModules": true,
314
530
  "esModuleInterop": true,
315
- "resolveJsonModule": true
316
- }
531
+ "resolveJsonModule": true,
532
+ },
317
533
  }
318
534
  ```
319
535
 
@@ -322,7 +538,7 @@ global type declarations (like `RSCRouter.Env`).
322
538
  {
323
539
  "extends": "../../tsconfig.base.json",
324
540
  "include": ["src"],
325
- "files": ["src/router.tsx"]
541
+ "files": ["src/router.tsx"],
326
542
  }
327
543
  ```
328
544
 
@@ -331,19 +547,27 @@ global type declarations (like `RSCRouter.Env`).
331
547
  {
332
548
  "extends": "../../tsconfig.base.json",
333
549
  "include": ["src"],
334
- "files": ["src/router.tsx"]
550
+ "files": ["src/router.tsx"],
335
551
  }
336
552
  ```
337
553
 
338
- The `files` array ensures `router.tsx` (which contains `declare global { namespace RSCRouter { ... } }`)
339
- is always included in the compilation even if nothing directly imports it. Each app gets its own
340
- typed environment without interfering with other apps.
554
+ The `files` array ensures `router.tsx` (which contains `declare global { namespace RSCRouter { interface Env; interface Vars } }`)
555
+ is always included in the compilation even if nothing directly imports it. Route types come from the
556
+ auto-generated `*.named-routes.gen.ts` file (via `rango generate`), not from manual declaration.
557
+ Each app gets its own typed environment without interfering with other apps.
341
558
 
342
559
  ## Complete Type-Safe Setup
343
560
 
344
561
  ```typescript
345
562
  // 1. env.ts - Environment types
346
- export type AppEnv = RouterEnv<AppBindings, AppVariables>;
563
+ export interface AppBindings {
564
+ DB: D1Database;
565
+ KV: KVNamespace;
566
+ }
567
+
568
+ export interface AppVariables {
569
+ user?: { id: string; email: string; role: string };
570
+ }
347
571
 
348
572
  // 2. urls.tsx - Route definitions with names
349
573
  import { urls } from "@rangojs/router";
@@ -359,35 +583,40 @@ export const urlpatterns = urls(({ path, layout, loader }) => [
359
583
  ]),
360
584
  ]);
361
585
 
362
- // 3. router.tsx - Registration
363
- const router = createRouter<AppEnv>({
586
+ // 3. router.tsx - Create router and export reverse
587
+ const router = createRouter<AppBindings>({
364
588
  document: Document,
365
- urls: urlpatterns,
366
- });
589
+ }).routes(urlpatterns);
367
590
 
591
+ // Register bindings and variables globally for implicit typing
368
592
  declare global {
369
593
  namespace RSCRouter {
370
- interface Env extends AppEnv {}
594
+ interface Env extends AppBindings {}
595
+ interface Vars extends AppVariables {}
371
596
  }
372
597
  }
373
598
 
599
+ export const reverse = router.reverse;
374
600
  export default router;
375
601
 
376
- // 4. loaders/*.ts - Type-safe loaders
377
- export const ProductLoader = createLoader("product", async (ctx) => {
602
+ // 4. Run `npx rango generate src/router.tsx` to generate
603
+ // router.named-routes.gen.ts (auto-registers GeneratedRouteMap globally).
604
+ // No manual RegisteredRoutes declaration needed.
605
+
606
+ // 5. loaders/*.ts - Type-safe loaders
607
+ export const ProductLoader = createLoader(async (ctx) => {
378
608
  // ctx.params: { slug: string }
379
- // ctx.env.Variables.user: User | undefined
380
- // ctx.env.Bindings.DB: D1Database
609
+ // ctx.get("user"): User | undefined (from RSCRouter.Vars)
610
+ // ctx.env.DB: D1Database (plain bindings from RSCRouter.Env)
381
611
  return { product: await fetchProduct(ctx.params.slug) };
382
612
  });
383
613
 
384
- // 5. Server: ctx.href for named routes
614
+ // 6. Server: ctx.reverse for named routes
385
615
  path("/product/:slug", (ctx) => {
386
- const href = scopedHref<typeof urlpatterns>(ctx.href);
387
- return <Link to={href("shop")}>Back to Shop</Link>;
616
+ return <Link to={ctx.reverse("shop")}>Back to Shop</Link>;
388
617
  }, { name: "product" })
389
618
 
390
- // 6. Client: useHref for mounted paths, href for absolute
619
+ // 7. Client: useHref for mounted paths, href for absolute
391
620
  "use client";
392
621
  import { useHref, href, Link } from "@rangojs/router/client";
393
622
  <Link to={href("/shop/product/widget")}>Widget</Link>