@rangojs/router 0.0.0-experimental.9 → 0.0.0-experimental.a06372ef

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 (1101) 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 +1531 -155
  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 +4440 -2170
  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 -62
  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 +6 -4
  816. package/skills/hooks/SKILL.md +333 -71
  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 +74 -15
  821. package/skills/loader/SKILL.md +388 -38
  822. package/skills/middleware/SKILL.md +171 -34
  823. package/skills/mime-routes/SKILL.md +15 -11
  824. package/skills/parallel/SKILL.md +78 -1
  825. package/skills/prerender/SKILL.md +405 -45
  826. package/skills/rango/SKILL.md +85 -21
  827. package/skills/response-routes/SKILL.md +144 -91
  828. package/skills/route/SKILL.md +226 -14
  829. package/skills/router-setup/SKILL.md +123 -30
  830. package/skills/theme/SKILL.md +9 -8
  831. package/skills/typesafety/SKILL.md +316 -87
  832. package/skills/use-cache/SKILL.md +324 -0
  833. package/src/__internal.ts +102 -4
  834. package/src/bin/rango.ts +312 -15
  835. package/src/browser/action-coordinator.ts +97 -0
  836. package/src/browser/action-response-classifier.ts +99 -0
  837. package/src/browser/event-controller.ts +87 -64
  838. package/src/browser/history-state.ts +80 -0
  839. package/src/browser/intercept-utils.ts +52 -0
  840. package/src/browser/link-interceptor.ts +24 -4
  841. package/src/browser/logging.ts +55 -0
  842. package/src/browser/merge-segment-loaders.ts +20 -12
  843. package/src/browser/navigation-bridge.ts +281 -554
  844. package/src/browser/navigation-client.ts +123 -73
  845. package/src/browser/navigation-store.ts +33 -50
  846. package/src/browser/navigation-transaction.ts +295 -0
  847. package/src/browser/network-error-handler.ts +61 -0
  848. package/src/browser/partial-update.ts +261 -309
  849. package/src/browser/prefetch/cache.ts +154 -0
  850. package/src/browser/prefetch/fetch.ts +135 -0
  851. package/src/browser/prefetch/observer.ts +65 -0
  852. package/src/browser/prefetch/policy.ts +48 -0
  853. package/src/browser/prefetch/queue.ts +88 -0
  854. package/src/browser/rango-state.ts +112 -0
  855. package/src/browser/react/Link.tsx +182 -70
  856. package/src/browser/react/NavigationProvider.tsx +51 -11
  857. package/src/browser/react/context.ts +6 -0
  858. package/src/browser/react/filter-segment-order.ts +11 -0
  859. package/src/browser/react/index.ts +12 -12
  860. package/src/browser/react/location-state-shared.ts +95 -53
  861. package/src/browser/react/location-state.ts +60 -15
  862. package/src/browser/react/mount-context.ts +6 -1
  863. package/src/browser/react/nonce-context.ts +23 -0
  864. package/src/browser/react/shallow-equal.ts +27 -0
  865. package/src/browser/react/use-action.ts +29 -51
  866. package/src/browser/react/use-client-cache.ts +5 -3
  867. package/src/browser/react/use-handle.ts +29 -70
  868. package/src/browser/react/use-link-status.ts +6 -5
  869. package/src/browser/react/use-navigation.ts +22 -63
  870. package/src/browser/react/use-params.ts +65 -0
  871. package/src/browser/react/use-pathname.ts +47 -0
  872. package/src/browser/react/use-router.ts +63 -0
  873. package/src/browser/react/use-search-params.ts +56 -0
  874. package/src/browser/react/use-segments.ts +80 -97
  875. package/src/browser/response-adapter.ts +73 -0
  876. package/src/browser/rsc-router.tsx +106 -27
  877. package/src/browser/scroll-restoration.ts +98 -38
  878. package/src/browser/segment-reconciler.ts +216 -0
  879. package/src/browser/segment-structure-assert.ts +16 -0
  880. package/src/browser/server-action-bridge.ts +504 -599
  881. package/src/browser/shallow.ts +6 -1
  882. package/src/browser/types.ts +107 -47
  883. package/src/browser/validate-redirect-origin.ts +29 -0
  884. package/src/build/generate-manifest.ts +82 -21
  885. package/src/build/generate-route-types.ts +36 -752
  886. package/src/build/index.ts +6 -5
  887. package/src/build/route-trie.ts +39 -13
  888. package/src/build/route-types/ast-helpers.ts +25 -0
  889. package/src/build/route-types/ast-route-extraction.ts +98 -0
  890. package/src/build/route-types/codegen.ts +102 -0
  891. package/src/build/route-types/include-resolution.ts +411 -0
  892. package/src/build/route-types/param-extraction.ts +48 -0
  893. package/src/build/route-types/per-module-writer.ts +128 -0
  894. package/src/build/route-types/router-processing.ts +469 -0
  895. package/src/build/route-types/scan-filter.ts +78 -0
  896. package/src/build/runtime-discovery.ts +231 -0
  897. package/src/cache/background-task.ts +34 -0
  898. package/src/cache/cache-key-utils.ts +44 -0
  899. package/src/cache/cache-policy.ts +125 -0
  900. package/src/cache/cache-runtime.ts +338 -0
  901. package/src/cache/cache-scope.ts +120 -301
  902. package/src/cache/cf/cf-cache-store.ts +119 -7
  903. package/src/cache/cf/index.ts +8 -2
  904. package/src/cache/document-cache.ts +101 -72
  905. package/src/cache/handle-capture.ts +81 -0
  906. package/src/cache/handle-snapshot.ts +41 -0
  907. package/src/cache/index.ts +0 -15
  908. package/src/cache/memory-segment-store.ts +191 -13
  909. package/src/cache/profile-registry.ts +73 -0
  910. package/src/cache/read-through-swr.ts +134 -0
  911. package/src/cache/segment-codec.ts +256 -0
  912. package/src/cache/taint.ts +98 -0
  913. package/src/cache/types.ts +72 -122
  914. package/src/client.rsc.tsx +3 -1
  915. package/src/client.tsx +84 -126
  916. package/src/component-utils.ts +4 -4
  917. package/src/components/DefaultDocument.tsx +5 -1
  918. package/src/context-var.ts +86 -0
  919. package/src/debug.ts +17 -7
  920. package/src/errors.ts +77 -7
  921. package/src/handle.ts +15 -10
  922. package/src/handles/MetaTags.tsx +73 -20
  923. package/src/handles/breadcrumbs.ts +66 -0
  924. package/src/handles/index.ts +1 -0
  925. package/src/handles/meta.ts +30 -13
  926. package/src/host/cookie-handler.ts +21 -15
  927. package/src/host/errors.ts +8 -8
  928. package/src/host/index.ts +4 -7
  929. package/src/host/pattern-matcher.ts +27 -27
  930. package/src/host/router.ts +61 -39
  931. package/src/host/testing.ts +8 -8
  932. package/src/host/types.ts +15 -7
  933. package/src/host/utils.ts +1 -1
  934. package/src/href-client.ts +65 -45
  935. package/src/index.rsc.ts +133 -21
  936. package/src/index.ts +164 -52
  937. package/src/internal-debug.ts +11 -0
  938. package/src/loader.rsc.ts +25 -143
  939. package/src/loader.ts +27 -10
  940. package/src/network-error-thrower.tsx +3 -1
  941. package/src/outlet-provider.tsx +45 -0
  942. package/src/prerender/param-hash.ts +4 -2
  943. package/src/prerender/store.ts +158 -13
  944. package/src/prerender.ts +333 -26
  945. package/src/reverse.ts +184 -121
  946. package/src/root-error-boundary.tsx +41 -29
  947. package/src/route-content-wrapper.tsx +7 -4
  948. package/src/route-definition/dsl-helpers.ts +934 -0
  949. package/src/route-definition/helper-factories.ts +200 -0
  950. package/src/route-definition/helpers-types.ts +430 -0
  951. package/src/route-definition/index.ts +52 -0
  952. package/src/route-definition/redirect.ts +93 -0
  953. package/src/route-definition.ts +1 -1431
  954. package/src/route-map-builder.ts +156 -123
  955. package/src/route-name.ts +53 -0
  956. package/src/route-types.ts +48 -9
  957. package/src/router/content-negotiation.ts +116 -0
  958. package/src/router/debug-manifest.ts +72 -0
  959. package/src/router/error-handling.ts +9 -9
  960. package/src/router/find-match.ts +158 -0
  961. package/src/router/handler-context.ts +374 -81
  962. package/src/router/intercept-resolution.ts +26 -16
  963. package/src/router/lazy-includes.ts +234 -0
  964. package/src/router/loader-resolution.ts +215 -122
  965. package/src/router/logging.ts +251 -0
  966. package/src/router/manifest.ts +83 -32
  967. package/src/router/match-api.ts +118 -119
  968. package/src/router/match-context.ts +4 -2
  969. package/src/router/match-handlers.ts +440 -0
  970. package/src/router/match-middleware/background-revalidation.ts +80 -93
  971. package/src/router/match-middleware/cache-lookup.ts +336 -84
  972. package/src/router/match-middleware/cache-store.ts +43 -24
  973. package/src/router/match-middleware/intercept-resolution.ts +45 -20
  974. package/src/router/match-middleware/segment-resolution.ts +17 -8
  975. package/src/router/match-pipelines.ts +10 -45
  976. package/src/router/match-result.ts +34 -28
  977. package/src/router/metrics.ts +235 -15
  978. package/src/router/middleware-cookies.ts +55 -0
  979. package/src/router/middleware-types.ts +222 -0
  980. package/src/router/middleware.ts +324 -367
  981. package/src/router/pattern-matching.ts +197 -41
  982. package/src/router/prerender-match.ts +402 -0
  983. package/src/router/preview-match.ts +170 -0
  984. package/src/router/revalidation.ts +137 -38
  985. package/src/router/router-context.ts +40 -21
  986. package/src/router/router-interfaces.ts +452 -0
  987. package/src/router/router-options.ts +592 -0
  988. package/src/router/router-registry.ts +24 -0
  989. package/src/router/segment-resolution/fresh.ts +570 -0
  990. package/src/router/segment-resolution/helpers.ts +263 -0
  991. package/src/router/segment-resolution/loader-cache.ts +198 -0
  992. package/src/router/segment-resolution/revalidation.ts +1242 -0
  993. package/src/router/segment-resolution/static-store.ts +67 -0
  994. package/src/router/segment-resolution.ts +21 -1315
  995. package/src/router/segment-wrappers.ts +291 -0
  996. package/src/router/telemetry-otel.ts +299 -0
  997. package/src/router/telemetry.ts +300 -0
  998. package/src/router/timeout.ts +148 -0
  999. package/src/router/trie-matching.ts +96 -29
  1000. package/src/router/types.ts +16 -9
  1001. package/src/router.ts +590 -1983
  1002. package/src/rsc/handler-context.ts +45 -0
  1003. package/src/rsc/handler.ts +652 -1015
  1004. package/src/rsc/helpers.ts +140 -6
  1005. package/src/rsc/index.ts +0 -20
  1006. package/src/rsc/loader-fetch.ts +209 -0
  1007. package/src/rsc/manifest-init.ts +86 -0
  1008. package/src/rsc/nonce.ts +14 -0
  1009. package/src/rsc/origin-guard.ts +141 -0
  1010. package/src/rsc/progressive-enhancement.ts +379 -0
  1011. package/src/rsc/response-error.ts +37 -0
  1012. package/src/rsc/response-route-handler.ts +347 -0
  1013. package/src/rsc/rsc-rendering.ts +237 -0
  1014. package/src/rsc/runtime-warnings.ts +42 -0
  1015. package/src/rsc/server-action.ts +348 -0
  1016. package/src/rsc/ssr-setup.ts +128 -0
  1017. package/src/rsc/types.ts +38 -11
  1018. package/src/search-params.ts +230 -0
  1019. package/src/segment-system.tsx +25 -13
  1020. package/src/server/context.ts +173 -48
  1021. package/src/server/cookie-store.ts +190 -0
  1022. package/src/server/fetchable-loader-store.ts +37 -0
  1023. package/src/server/handle-store.ts +94 -15
  1024. package/src/server/loader-registry.ts +15 -56
  1025. package/src/server/request-context.ts +430 -70
  1026. package/src/server.ts +35 -155
  1027. package/src/ssr/index.tsx +100 -31
  1028. package/src/static-handler.ts +114 -0
  1029. package/src/theme/ThemeProvider.tsx +21 -15
  1030. package/src/theme/ThemeScript.tsx +5 -5
  1031. package/src/theme/constants.ts +5 -2
  1032. package/src/theme/index.ts +4 -14
  1033. package/src/theme/theme-context.ts +4 -30
  1034. package/src/theme/theme-script.ts +21 -18
  1035. package/src/types/boundaries.ts +158 -0
  1036. package/src/types/cache-types.ts +198 -0
  1037. package/src/types/error-types.ts +192 -0
  1038. package/src/types/global-namespace.ts +100 -0
  1039. package/src/types/handler-context.ts +687 -0
  1040. package/src/types/index.ts +88 -0
  1041. package/src/types/loader-types.ts +183 -0
  1042. package/src/types/route-config.ts +170 -0
  1043. package/src/types/route-entry.ts +102 -0
  1044. package/src/types/segments.ts +148 -0
  1045. package/src/types.ts +1 -1757
  1046. package/src/urls/include-helper.ts +197 -0
  1047. package/src/urls/index.ts +53 -0
  1048. package/src/urls/path-helper-types.ts +339 -0
  1049. package/src/urls/path-helper.ts +329 -0
  1050. package/src/urls/pattern-types.ts +95 -0
  1051. package/src/urls/response-types.ts +106 -0
  1052. package/src/urls/type-extraction.ts +372 -0
  1053. package/src/urls/urls-function.ts +98 -0
  1054. package/src/urls.ts +1 -1282
  1055. package/src/use-loader.tsx +85 -77
  1056. package/src/vite/discovery/bundle-postprocess.ts +184 -0
  1057. package/src/vite/discovery/discover-routers.ts +344 -0
  1058. package/src/vite/discovery/prerender-collection.ts +385 -0
  1059. package/src/vite/discovery/route-types-writer.ts +258 -0
  1060. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1061. package/src/vite/discovery/state.ts +110 -0
  1062. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1063. package/src/vite/index.ts +11 -1963
  1064. package/src/vite/plugin-types.ts +131 -0
  1065. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1066. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1067. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1068. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -51
  1069. package/src/vite/plugins/expose-id-utils.ts +287 -0
  1070. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1071. package/src/vite/plugins/expose-ids/handler-transform.ts +179 -0
  1072. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1073. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1074. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1075. package/src/vite/plugins/expose-internal-ids.ts +569 -0
  1076. package/src/vite/plugins/refresh-cmd.ts +65 -0
  1077. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1078. package/src/vite/plugins/version-injector.ts +83 -0
  1079. package/src/vite/plugins/version-plugin.ts +254 -0
  1080. package/src/vite/plugins/virtual-entries.ts +123 -0
  1081. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1082. package/src/vite/rango.ts +510 -0
  1083. package/src/vite/router-discovery.ts +785 -0
  1084. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1085. package/src/vite/utils/banner.ts +36 -0
  1086. package/src/vite/utils/bundle-analysis.ts +137 -0
  1087. package/src/vite/utils/manifest-utils.ts +70 -0
  1088. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +25 -29
  1089. package/src/vite/utils/prerender-utils.ts +189 -0
  1090. package/src/vite/utils/shared-utils.ts +169 -0
  1091. package/CLAUDE.md +0 -43
  1092. package/src/browser/lru-cache.ts +0 -69
  1093. package/src/browser/request-controller.ts +0 -164
  1094. package/src/cache/memory-store.ts +0 -253
  1095. package/src/router.gen.ts +0 -6
  1096. package/src/urls.gen.ts +0 -8
  1097. package/src/vite/expose-handle-id.ts +0 -209
  1098. package/src/vite/expose-loader-id.ts +0 -426
  1099. package/src/vite/expose-location-state-id.ts +0 -177
  1100. package/src/vite/expose-prerender-handler-id.ts +0 -429
  1101. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
package/src/index.ts CHANGED
@@ -1,18 +1,15 @@
1
1
  /**
2
- * rsc-router
2
+ * @rangojs/router
3
3
  *
4
- * Universal exports - types and utilities safe for both server and client
4
+ * Single user-facing entrypoint for all router APIs.
5
5
  *
6
- * For server-only exports (urls, createRouter, createLoader, etc.):
7
- * import from "rsc-router/server"
6
+ * The "react-server" export condition selects index.rsc.ts (real implementations)
7
+ * vs this file (client stubs for server-only functions).
8
8
  *
9
- * For client-only exports (Outlet, useOutlet, etc.):
10
- * import from "rsc-router/client"
9
+ * For client-only exports (Outlet, useOutlet, hooks, components):
10
+ * import from "@rangojs/router/client"
11
11
  */
12
12
 
13
- // Universal rendering utilities (work on both server and client)
14
- export { renderSegments } from "./segment-system.js";
15
-
16
13
  // Error classes (can be used on both server and client)
17
14
  export {
18
15
  RouteNotFoundError,
@@ -22,22 +19,22 @@ export {
22
19
  HandlerError,
23
20
  BuildError,
24
21
  InvalidHandlerError,
25
- NetworkError,
26
- isNetworkError,
27
- sanitizeError,
28
22
  RouterError,
23
+ Skip,
24
+ isSkip,
29
25
  } from "./errors.js";
30
26
 
31
27
  // Types (safe to import anywhere - no runtime code)
32
28
  export type {
33
29
  // Configuration types
34
30
  DocumentProps,
35
- RouterEnv,
36
31
  DefaultEnv,
37
32
  RouteDefinition,
33
+ RouteConfig,
34
+ RouteDefinitionOptions,
35
+ TrailingSlashMode,
38
36
  // Handler types
39
- Handler, // Supports params object, path pattern, or route name
40
- ScopedRouteMap, // Scoped view of GeneratedRouteMap for Handler<"localName", ScopedRouteMap<"prefix">>
37
+ Handler, // Supports params object, path pattern, or route name
41
38
  HandlerContext,
42
39
  ExtractParams,
43
40
  GenericParams,
@@ -53,9 +50,6 @@ export type {
53
50
  LoaderContext,
54
51
  FetchableLoaderOptions,
55
52
  LoadOptions,
56
- LoaderActionContext,
57
- LoaderAction,
58
- LoaderMiddlewareFn,
59
53
  // Error boundary types
60
54
  ErrorInfo,
61
55
  ErrorBoundaryFallbackProps,
@@ -65,12 +59,37 @@ export type {
65
59
  NotFoundInfo,
66
60
  NotFoundBoundaryFallbackProps,
67
61
  NotFoundBoundaryHandler,
62
+ // Error handling callback types
63
+ ErrorPhase,
64
+ OnErrorContext,
65
+ OnErrorCallback,
68
66
  } from "./types.js";
69
67
 
68
+ // Search params schema types
69
+ export type {
70
+ SearchSchema,
71
+ SearchSchemaValue,
72
+ ResolveSearchSchema,
73
+ RouteSearchParams,
74
+ RouteParams,
75
+ } from "./search-params.js";
76
+
70
77
  // Client-safe createLoader - only stores the $$id, function is not included
71
78
  // Use this when defining loaders that will be imported by client components
72
79
  export { createLoader } from "./loader.js";
73
80
 
81
+ // Route definition types (safe to import anywhere)
82
+ export type { RouteHelpers, RouteHandlers } from "./route-definition.js";
83
+ export type { TransitionConfig, ViewTransitionClass } from "./types.js";
84
+
85
+ // Composition types for reusable callback factories
86
+ export type {
87
+ RouteUseItem,
88
+ LayoutUseItem,
89
+ AllUseItems,
90
+ UseItems,
91
+ } from "./route-types.js";
92
+
74
93
  // Response route types (usable in both server and client contexts)
75
94
  export type {
76
95
  ResponseHandler,
@@ -86,80 +105,173 @@ export type {
86
105
  ResponseEnvelope,
87
106
  } from "./urls.js";
88
107
 
108
+ // Middleware context types
109
+ export type { MiddlewareContext, CookieOptions } from "./router/middleware.js";
110
+
111
+ function serverOnlyStubError(name: string): Error {
112
+ return new Error(
113
+ `${name}() is only available from "@rangojs/router" in a react-server/RSC environment. ` +
114
+ `For client hooks and components, import from "@rangojs/router/client".`,
115
+ );
116
+ }
117
+
89
118
  /**
90
119
  * Error-throwing stub for server-only `urls` function.
91
- * Import from "@rangojs/router/server" or use within RSC context instead.
92
120
  */
93
121
  export function urls(): never {
94
- throw new Error(
95
- 'urls() is server-only. Import from "@rangojs/router/server" instead, or ensure you\'re using it in a server component.'
96
- );
122
+ throw serverOnlyStubError("urls");
97
123
  }
98
124
 
99
125
  /**
100
126
  * Error-throwing stub for server-only `createRouter` function.
101
- * Import from "@rangojs/router/server" instead.
102
127
  */
103
128
  export function createRouter(): never {
104
- throw new Error(
105
- 'createRouter() is server-only. Import from "@rangojs/router/server" instead.'
106
- );
129
+ throw serverOnlyStubError("createRouter");
107
130
  }
108
131
 
109
132
  /**
110
133
  * Error-throwing stub for server-only `redirect` function.
111
- * Import from "@rangojs/router/server" or use within RSC context instead.
112
134
  */
113
135
  export function redirect(): never {
114
- throw new Error(
115
- 'redirect() is server-only. Import from "@rangojs/router/server" instead.'
116
- );
136
+ throw serverOnlyStubError("redirect");
117
137
  }
118
138
 
139
+ // Handle API (universal - works on both server and client)
140
+ export { createHandle, isHandle, type Handle } from "./handle.js";
141
+
142
+ // Context variable API (typed ctx.set/ctx.get tokens)
143
+ export { createVar, type ContextVar } from "./context-var.js";
144
+
145
+ // CSP nonce token (use with ctx.get(nonce) in middleware/handlers)
146
+ export { nonce } from "./rsc/nonce.js";
147
+
119
148
  /**
120
- * Error-throwing stub for server-only `createHandle` function.
121
- * Import from "@rangojs/router/server" or use within RSC context instead.
149
+ * Error-throwing stub for server-only `Prerender` function.
122
150
  */
123
- export function createHandle(): never {
124
- throw new Error(
125
- 'createHandle() is server-only. Import from "@rangojs/router/server" instead.'
126
- );
151
+ export function Prerender(): never {
152
+ throw serverOnlyStubError("Prerender");
127
153
  }
128
154
 
129
155
  /**
130
- * Error-throwing stub for server-only `createPrerenderHandler` function.
131
- * Import from "@rangojs/router/server" or use within RSC context instead.
156
+ * Error-throwing stub for server-only `Static` function.
132
157
  */
133
- export function createPrerenderHandler(): never {
134
- throw new Error(
135
- 'createPrerenderHandler() is server-only. Import from "@rangojs/router/server" instead.'
136
- );
158
+ export function Static(): never {
159
+ throw serverOnlyStubError("Static");
137
160
  }
138
161
 
139
- // Handle API (type-only exports safe for client)
140
- export { isHandle, type Handle } from "./handle.js";
141
-
142
162
  /**
143
163
  * Error-throwing stub for server-only `getRequestContext` function.
144
- * Import from "@rangojs/router/server" or use within RSC context instead.
145
164
  */
146
165
  export function getRequestContext(): never {
147
- throw new Error(
148
- 'getRequestContext() is server-only. Import from "@rangojs/router/server" instead.'
149
- );
166
+ throw serverOnlyStubError("getRequestContext");
167
+ }
168
+
169
+ /**
170
+ * Error-throwing stub for server-only `cookies` function.
171
+ */
172
+ export function cookies(): never {
173
+ throw serverOnlyStubError("cookies");
174
+ }
175
+
176
+ /**
177
+ * Error-throwing stub for server-only `headers` function.
178
+ */
179
+ export function headers(): never {
180
+ throw serverOnlyStubError("headers");
181
+ }
182
+
183
+ /**
184
+ * Error-throwing stub for server-only `createReverse` function.
185
+ */
186
+ export function createReverse(): never {
187
+ throw serverOnlyStubError("createReverse");
188
+ }
189
+
190
+ // Error-throwing stubs for server-only route helpers
191
+ export function layout(): never {
192
+ throw serverOnlyStubError("layout");
193
+ }
194
+ export function cache(): never {
195
+ throw serverOnlyStubError("cache");
196
+ }
197
+ export function middleware(): never {
198
+ throw serverOnlyStubError("middleware");
199
+ }
200
+ export function revalidate(): never {
201
+ throw serverOnlyStubError("revalidate");
202
+ }
203
+ export function loader(): never {
204
+ throw serverOnlyStubError("loader");
205
+ }
206
+ export function loading(): never {
207
+ throw serverOnlyStubError("loading");
208
+ }
209
+ export function parallel(): never {
210
+ throw serverOnlyStubError("parallel");
211
+ }
212
+ export function intercept(): never {
213
+ throw serverOnlyStubError("intercept");
214
+ }
215
+ export function when(): never {
216
+ throw serverOnlyStubError("when");
217
+ }
218
+ export function errorBoundary(): never {
219
+ throw serverOnlyStubError("errorBoundary");
220
+ }
221
+ export function notFoundBoundary(): never {
222
+ throw serverOnlyStubError("notFoundBoundary");
223
+ }
224
+ export function transition(): never {
225
+ throw serverOnlyStubError("transition");
150
226
  }
151
227
 
152
228
  // Request context type (safe for client)
153
- export type { RequestContext } from "./server/request-context.js";
229
+ export type { PublicRequestContext as RequestContext } from "./server/request-context.js";
230
+
231
+ // Cookie store types (safe for client)
232
+ export type {
233
+ CookieStore,
234
+ Cookie,
235
+ ReadonlyHeaders,
236
+ } from "./server/cookie-store.js";
154
237
 
155
238
  // Meta types
156
239
  export type { MetaDescriptor, MetaDescriptorBase } from "./router/types.js";
157
240
 
241
+ // Breadcrumb types
242
+ export type { BreadcrumbItem } from "./handles/breadcrumbs.js";
243
+
158
244
  // Reverse type utilities for type-safe URL generation (Django-style URL reversal)
159
- // ScopedReverseFunction is used with scopedReverse<typeof patterns>() for composable modules
160
- export type { ScopedReverseFunction, ReverseFunction, ExtractLocalRoutes } from "./reverse.js";
245
+ export type {
246
+ ScopedReverseFunction,
247
+ ReverseFunction,
248
+ ExtractLocalRoutes,
249
+ ParamsFor,
250
+ } from "./reverse.js";
161
251
  // scopedReverse() helper for handlers to get locally-typed reverse
162
252
  export { scopedReverse } from "./reverse.js";
163
253
 
254
+ // Location state (universal - works on both server and client)
255
+ export {
256
+ createLocationState,
257
+ type LocationStateDefinition,
258
+ type LocationStateEntry,
259
+ type LocationStateOptions,
260
+ } from "./browser/react/location-state-shared.js";
261
+
164
262
  // Path-based response type lookup from RegisteredRoutes
165
263
  export type { PathResponse } from "./href-client.js";
264
+
265
+ // Telemetry sink
266
+ export { createConsoleSink } from "./router/telemetry.js";
267
+ export { createOTelSink } from "./router/telemetry-otel.js";
268
+ export type { OTelTracer, OTelSpan } from "./router/telemetry-otel.js";
269
+ export type { TelemetrySink, TelemetryEvent } from "./router/telemetry.js";
270
+
271
+ // Timeout types and error class
272
+ export { RouterTimeoutError } from "./router/timeout.js";
273
+ export type {
274
+ RouterTimeouts,
275
+ TimeoutPhase,
276
+ TimeoutContext,
277
+ } from "./router/timeout.js";
@@ -0,0 +1,11 @@
1
+ // Internal debug gate. Enable with INTERNAL_RANGO_DEBUG=1 in the environment.
2
+ // Uses a Vite define (__RANGO_DEBUG__) for compile-time injection so it works
3
+ // in all runtimes including Cloudflare Workers where process.env is unavailable.
4
+ // Falls back to process.env for non-Vite contexts (tests, direct Node usage).
5
+ export const INTERNAL_RANGO_DEBUG: boolean =
6
+ typeof __RANGO_DEBUG__ !== "undefined"
7
+ ? __RANGO_DEBUG__
8
+ : typeof process !== "undefined" &&
9
+ Boolean((process as any).env?.INTERNAL_RANGO_DEBUG);
10
+
11
+ declare const __RANGO_DEBUG__: boolean;
package/src/loader.rsc.ts CHANGED
@@ -5,9 +5,9 @@
5
5
  * Only used in react-server context via export conditions.
6
6
  *
7
7
  * For non-fetchable loaders: returns a loader definition with fn included
8
- * For fetchable loaders: stores fn in registry and returns a serializable loader with action
8
+ * For fetchable loaders: stores fn in registry and returns a serializable loader
9
9
  *
10
- * The $$id is injected by the Vite exposeLoaderId plugin as a hidden parameter.
10
+ * The $$id is injected by the Vite exposeInternalIds plugin as a hidden parameter.
11
11
  * Users don't need to pass any name - IDs are auto-generated from file path.
12
12
  */
13
13
 
@@ -17,90 +17,54 @@ import type {
17
17
  LoaderFn,
18
18
  } from "./types.js";
19
19
  import type { MiddlewareFn } from "./router/middleware.js";
20
- import { getRequestContext } from "./server/request-context.js";
20
+ import {
21
+ registerFetchableLoader,
22
+ getFetchableLoader,
23
+ } from "./server/fetchable-loader-store.js";
21
24
 
22
- // Internal registry for fetchable loaders (server-side only)
23
- // Maps loader $$id to its function and middleware
24
- //
25
- // WHY TWO REGISTRIES?
26
- // This registry (fetchableLoaderRegistry) is populated immediately when createLoader() runs.
27
- // The other registry in loader-registry.ts (loaderRegistry) is a cache used by the RSC handler
28
- // for GET-based fetching. The RSC handler calls getFetchableLoader() from here to populate
29
- // its cache. This separation allows:
30
- // 1. Server actions to look up loaders directly without going through lazy loading
31
- // 2. The RSC handler to use lazy loading for production builds
32
- // 3. Both to share the same source of truth (this registry)
33
- const fetchableLoaderRegistry = new Map<
34
- string,
35
- { fn: LoaderFn<any, any, any>; middleware: MiddlewareFn[] }
36
- >();
37
-
38
- /**
39
- * Register a fetchable loader's function internally
40
- * Called during module initialization with the $$id
41
- */
42
- function registerFetchableLoader(
43
- id: string,
44
- fn: LoaderFn<any, any, any>,
45
- middleware: MiddlewareFn[]
46
- ): void {
47
- fetchableLoaderRegistry.set(id, { fn, middleware });
48
- }
49
-
50
- /**
51
- * Get a fetchable loader's function from the internal registry by $$id
52
- *
53
- * This is used internally by:
54
- * - Server actions (loaderAction) to execute loader functions
55
- * - loader-registry.ts to populate the main registry for GET-based fetching
56
- *
57
- * Loaders are registered here when createLoader() is called with fetchable: true.
58
- * The $$id is injected by the Vite exposeLoaderId plugin.
59
- *
60
- * @param id - The loader's $$id (auto-generated from file path + export name)
61
- * @returns The loader function and middleware, or undefined if not found
62
- *
63
- * @internal This is primarily for internal use by the router infrastructure
64
- */
65
- export function getFetchableLoader(
66
- id: string
67
- ): { fn: LoaderFn<any, any, any>; middleware: MiddlewareFn[] } | undefined {
68
- return fetchableLoaderRegistry.get(id);
69
- }
25
+ export { getFetchableLoader };
70
26
 
71
27
  // Overload 1: With function only (not fetchable)
72
28
  export function createLoader<T>(
73
- fn: LoaderFn<T, Record<string, string | undefined>, any>
29
+ fn: LoaderFn<T, Record<string, string | undefined>, any>,
74
30
  ): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
75
31
 
76
32
  // Overload 2: Fetchable with `true` (no middleware)
77
33
  export function createLoader<T>(
78
34
  fn: LoaderFn<T, Record<string, string | undefined>, any>,
79
- fetchable: true
35
+ fetchable: true,
80
36
  ): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
81
37
 
82
38
  // Overload 3: Fetchable with middleware options
83
39
  export function createLoader<T>(
84
40
  fn: LoaderFn<T, Record<string, string | undefined>, any>,
85
- options: FetchableLoaderOptions
41
+ options: FetchableLoaderOptions,
86
42
  ): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
87
43
 
88
44
  // Implementation - the $$id parameter is injected by Vite plugin, not user-provided
89
45
  export function createLoader<T>(
90
46
  fn: LoaderFn<T, Record<string, string | undefined>, any>,
91
47
  fetchable?: true | FetchableLoaderOptions,
92
- // Hidden parameter injected by Vite exposeLoaderId plugin
93
- __injectedId?: string
48
+ // Hidden parameter injected by Vite exposeInternalIds plugin
49
+ __injectedId?: string,
94
50
  ): LoaderDefinition<Awaited<T>, Record<string, string | undefined>> {
95
51
  // The $$id will be set on the returned object by Vite plugin
96
52
  // For fetchable loaders, __injectedId is also passed as a parameter
97
53
  const loaderId = __injectedId || "";
98
54
 
99
- // If not fetchable, store fn in registry and return a plain object.
100
- // Server-side code looks up fn via getFetchableLoader($$id).
55
+ if (!loaderId && process.env.NODE_ENV === "development") {
56
+ throw new Error(
57
+ "[rsc-router] Loader is missing $$id. " +
58
+ "Make sure the exposeInternalIds Vite plugin is enabled and " +
59
+ "the loader is exported with: export const MyLoader = createLoader(...)",
60
+ );
61
+ }
62
+
63
+ // If not fetchable, store fn in registry (for SSR ctx.use() resolution)
64
+ // but mark fetchable=false so the _rsc_loader endpoint rejects it.
101
65
  if (fetchable === undefined) {
102
66
  if (fn && loaderId) {
103
- registerFetchableLoader(loaderId, fn, []);
67
+ registerFetchableLoader(loaderId, fn, [], false);
104
68
  }
105
69
  return {
106
70
  __brand: "loader",
@@ -113,95 +77,13 @@ export function createLoader<T>(
113
77
  fetchable === true ? [] : fetchable?.middleware || [];
114
78
 
115
79
  // Register the function in the internal registry by $$id (server-side only)
116
- // The server action will look it up by $$id when executed
80
+ // The loader fetch handler looks it up by $$id when load() is called from the client.
117
81
  if (fn && loaderId) {
118
- registerFetchableLoader(loaderId, fn, middleware);
119
- }
120
-
121
- // Create server action for form-based fetching
122
- // This action is serializable and can be passed to client components
123
- // The loaderId is captured in closure (it's a primitive string)
124
- //
125
- // IMPORTANT: The signature must be (prevState, formData) for useActionState compatibility.
126
- // When used with useActionState, React passes the previous state as the first argument.
127
- // The prevState is ignored here since loaders are stateless data fetchers.
128
- async function loaderAction(
129
- _prevState: Awaited<T> | null,
130
- formData: FormData
131
- ): Promise<Awaited<T>> {
132
- "use server";
133
-
134
- // Look up the loader from registry by $$id
135
- const registered = fetchableLoaderRegistry.get(loaderId);
136
- if (!registered) {
137
- throw new Error(`Loader "${loaderId}" not found in registry`);
138
- }
139
-
140
- // Get request context (env, request, url, variables) from the RSC handler
141
- // This is set by runWithRequestContext in rsc/index.ts when executing actions
142
- const requestCtx = getRequestContext();
143
-
144
- // Convert FormData to params object
145
- const params: Record<string, string> = {};
146
- formData.forEach((value, key) => {
147
- if (typeof value === "string") {
148
- params[key] = value;
149
- }
150
- });
151
-
152
- // Use real request/url from context, or fall back to synthetic for edge cases
153
- const actionUrl = requestCtx?.url ?? new URL("http://localhost/");
154
- const actionRequest = requestCtx?.request ?? new Request(actionUrl, { method: "POST" });
155
- const env = requestCtx?.env ?? {};
156
-
157
- // Merge variables from request context (app-level middleware) with loader-specific variables
158
- // requestCtx.var is the shared variables object from the handler
159
- const variables: Record<string, any> = { ...requestCtx?.var };
160
-
161
- // Execute middleware for auth checks, headers, cookies
162
- // Headers/cookies set on ctx.res will be merged into the final response
163
- if (registered.middleware.length > 0 && requestCtx?.res) {
164
- const { executeServerActionMiddleware } = await import(
165
- "./router/middleware.js"
166
- );
167
- await executeServerActionMiddleware(
168
- registered.middleware,
169
- actionRequest,
170
- env,
171
- params,
172
- variables,
173
- requestCtx.res
174
- );
175
- }
176
-
177
- // Build context using createHandlerContext for consistency with route handlers
178
- // Variables are now accessed from request context via getRequestContext()
179
- const { createHandlerContext } = await import("./router/handler-context.js");
180
- const baseCtx = createHandlerContext(
181
- params,
182
- actionRequest,
183
- actionUrl.searchParams,
184
- actionUrl.pathname,
185
- actionUrl,
186
- env
187
- );
188
-
189
- // Extend with server action specific properties
190
- const ctx: any = {
191
- ...baseCtx,
192
- method: "POST",
193
- formData,
194
- };
195
-
196
- // Execute and return result
197
- return registered.fn(ctx);
82
+ registerFetchableLoader(loaderId, fn, middleware, true);
198
83
  }
199
84
 
200
- // Return a plain object with action for form-based fetching.
201
- // loaderAction has "use server" so RSC Flight serializes it natively as a server action reference.
202
85
  return {
203
86
  __brand: "loader",
204
87
  $$id: loaderId,
205
- action: loaderAction,
206
88
  };
207
89
  }
package/src/loader.ts CHANGED
@@ -2,10 +2,15 @@
2
2
  * rsc-router/loader (client version)
3
3
  *
4
4
  * Client-only stub for createLoader. Returns a minimal loader definition
5
- * that can be passed to hooks like useLoader. The actual loader function
6
- * is not included - it only exists on the server.
5
+ * ({ __brand, $$id }) that can be passed to hooks like useLoader.
6
+ * The actual loader function is not included -- it only exists on the server.
7
7
  *
8
- * The $$id is injected by the Vite exposeLoaderId plugin.
8
+ * For export-only loader files, the Vite plugin replaces the entire file with
9
+ * object literals (bypassing this function). Those stubs only contain
10
+ * { __brand, $$id }.
11
+ * This function only runs when loaders are in mixed files (not export-only).
12
+ *
13
+ * The $$id is injected by the Vite exposeInternalIds plugin.
9
14
  */
10
15
 
11
16
  import type {
@@ -16,32 +21,44 @@ import type {
16
21
 
17
22
  // Overload 1: With function only (not fetchable)
18
23
  export function createLoader<T>(
19
- fn: LoaderFn<T, Record<string, string | undefined>, any>
24
+ fn: LoaderFn<T, Record<string, string | undefined>, any>,
20
25
  ): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
21
26
 
22
27
  // Overload 2: Fetchable with `true` (no middleware)
23
28
  export function createLoader<T>(
24
29
  fn: LoaderFn<T, Record<string, string | undefined>, any>,
25
- fetchable: true
30
+ fetchable: true,
26
31
  ): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
27
32
 
28
33
  // Overload 3: Fetchable with middleware options
29
34
  export function createLoader<T>(
30
35
  fn: LoaderFn<T, Record<string, string | undefined>, any>,
31
- options: FetchableLoaderOptions
36
+ options: FetchableLoaderOptions,
32
37
  ): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
33
38
 
34
39
  // Implementation - client stub that just returns the loader definition
35
40
  // The $$id parameter is injected by Vite plugin, not user-provided
41
+ //
42
+ // NOTE: For export-only loader files, the Vite plugin replaces the entire
43
+ // file with object literals (bypassing this function). This function only
44
+ // runs when loaders are in mixed files (not export-only).
36
45
  export function createLoader<T>(
37
46
  _fn: LoaderFn<T, Record<string, string | undefined>, any>,
38
47
  _fetchable?: true | FetchableLoaderOptions,
39
- __injectedId?: string
48
+ __injectedId?: string,
40
49
  ): LoaderDefinition<Awaited<T>, Record<string, string | undefined>> {
41
- // Client only needs the $$id for identification
42
- // The actual loader function is only used on the server
50
+ const loaderId = __injectedId || "";
51
+
52
+ if (!loaderId && process.env.NODE_ENV === "development") {
53
+ throw new Error(
54
+ "[rsc-router] Loader is missing $$id. " +
55
+ "Make sure the exposeInternalIds Vite plugin is enabled and " +
56
+ "the loader is exported with: export const MyLoader = createLoader(...)",
57
+ );
58
+ }
59
+
43
60
  return {
44
61
  __brand: "loader",
45
- $$id: __injectedId || "",
62
+ $$id: loaderId,
46
63
  };
47
64
  }
@@ -16,6 +16,8 @@ interface NetworkErrorThrowerProps {
16
16
  * 1. Errors must be thrown during React's render phase to be caught by error boundaries
17
17
  * 2. The error occurs in async code (fetch), so we need to propagate it to React's render
18
18
  */
19
- export function NetworkErrorThrower({ error }: NetworkErrorThrowerProps): ReactNode {
19
+ export function NetworkErrorThrower({
20
+ error,
21
+ }: NetworkErrorThrowerProps): ReactNode {
20
22
  throw error;
21
23
  }
@@ -0,0 +1,45 @@
1
+ "use client";
2
+
3
+ import { useContext, useMemo, type ReactNode } from "react";
4
+ import { OutletContext, type OutletContextValue } from "./outlet-context.js";
5
+ import type { ResolvedSegment } from "./types.js";
6
+
7
+ /**
8
+ * Provider for outlet content - used internally by renderSegments
9
+ *
10
+ * Stores a reference to parent context so useLoader can walk up the chain
11
+ * to find loader data from parent layouts. If this segment defines a loading
12
+ * component, Outlet will wrap content with Suspense using that as fallback.
13
+ */
14
+ export function OutletProvider({
15
+ content,
16
+ parallel,
17
+ segment,
18
+ loaderData,
19
+ children,
20
+ }: {
21
+ content: ReactNode;
22
+ parallel?: ResolvedSegment[];
23
+ segment?: ResolvedSegment;
24
+ loaderData?: Record<string, any>;
25
+ children: ReactNode;
26
+ }): ReactNode {
27
+ // Get parent context to enable walking up the chain for loader lookups
28
+ const parentContext = useContext(OutletContext);
29
+
30
+ const value = useMemo(
31
+ () => ({
32
+ content,
33
+ parallel,
34
+ segment,
35
+ loaderData,
36
+ parent: parentContext,
37
+ loading: segment?.loading,
38
+ }),
39
+ [content, parallel, segment, loaderData, parentContext],
40
+ );
41
+
42
+ return (
43
+ <OutletContext.Provider value={value}>{children}</OutletContext.Provider>
44
+ );
45
+ }
@@ -17,8 +17,10 @@ export function hashParams(params: Record<string, string>): string {
17
17
  const entries = Object.entries(params);
18
18
  if (entries.length === 0) return "_";
19
19
 
20
- const sorted = entries.sort(([a], [b]) => a.localeCompare(b));
21
- const str = sorted.map(([k, v]) => `${k}=${v}`).join("&");
20
+ const sorted = entries.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
21
+ const str = sorted
22
+ .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
23
+ .join("&");
22
24
  return djb2Hex(str);
23
25
  }
24
26