@rangojs/router 0.0.0-experimental.13 → 0.0.0-experimental.135c6902

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 (1098) 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 -212
  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 +3995 -2489
  798. package/dist/vite/index.js.map +1 -0
  799. package/dist/vite/package-resolution.d.ts +43 -0
  800. package/dist/vite/package-resolution.d.ts.map +1 -0
  801. package/dist/vite/package-resolution.js +112 -0
  802. package/dist/vite/package-resolution.js.map +1 -0
  803. package/dist/vite/virtual-entries.d.ts +25 -0
  804. package/dist/vite/virtual-entries.d.ts.map +1 -0
  805. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
  806. package/dist/vite/virtual-entries.js.map +1 -0
  807. package/package.json +57 -52
  808. package/skills/breadcrumbs/SKILL.md +250 -0
  809. package/skills/cache-guide/SKILL.md +262 -0
  810. package/skills/caching/SKILL.md +85 -23
  811. package/skills/composability/SKILL.md +172 -0
  812. package/skills/debug-manifest/SKILL.md +12 -8
  813. package/skills/document-cache/SKILL.md +18 -16
  814. package/skills/fonts/SKILL.md +6 -4
  815. package/skills/hooks/SKILL.md +328 -70
  816. package/skills/host-router/SKILL.md +218 -0
  817. package/skills/intercept/SKILL.md +131 -8
  818. package/skills/layout/SKILL.md +100 -3
  819. package/skills/links/SKILL.md +62 -15
  820. package/skills/loader/SKILL.md +368 -42
  821. package/skills/middleware/SKILL.md +171 -34
  822. package/skills/mime-routes/SKILL.md +14 -10
  823. package/skills/parallel/SKILL.md +137 -1
  824. package/skills/prerender/SKILL.md +366 -28
  825. package/skills/rango/SKILL.md +85 -21
  826. package/skills/response-routes/SKILL.md +136 -83
  827. package/skills/route/SKILL.md +195 -21
  828. package/skills/router-setup/SKILL.md +123 -30
  829. package/skills/theme/SKILL.md +9 -8
  830. package/skills/typesafety/SKILL.md +240 -102
  831. package/skills/use-cache/SKILL.md +324 -0
  832. package/src/__internal.ts +102 -4
  833. package/src/bin/rango.ts +312 -15
  834. package/src/browser/action-coordinator.ts +97 -0
  835. package/src/browser/action-response-classifier.ts +99 -0
  836. package/src/browser/event-controller.ts +92 -64
  837. package/src/browser/history-state.ts +80 -0
  838. package/src/browser/intercept-utils.ts +52 -0
  839. package/src/browser/link-interceptor.ts +24 -4
  840. package/src/browser/logging.ts +11 -0
  841. package/src/browser/merge-segment-loaders.ts +20 -12
  842. package/src/browser/navigation-bridge.ts +266 -558
  843. package/src/browser/navigation-client.ts +132 -75
  844. package/src/browser/navigation-store.ts +33 -50
  845. package/src/browser/navigation-transaction.ts +297 -0
  846. package/src/browser/network-error-handler.ts +61 -0
  847. package/src/browser/partial-update.ts +292 -309
  848. package/src/browser/prefetch/cache.ts +206 -0
  849. package/src/browser/prefetch/fetch.ts +144 -0
  850. package/src/browser/prefetch/observer.ts +65 -0
  851. package/src/browser/prefetch/policy.ts +48 -0
  852. package/src/browser/prefetch/queue.ts +128 -0
  853. package/src/browser/rango-state.ts +112 -0
  854. package/src/browser/react/Link.tsx +190 -70
  855. package/src/browser/react/NavigationProvider.tsx +78 -11
  856. package/src/browser/react/context.ts +6 -0
  857. package/src/browser/react/filter-segment-order.ts +11 -0
  858. package/src/browser/react/index.ts +12 -12
  859. package/src/browser/react/location-state-shared.ts +95 -53
  860. package/src/browser/react/location-state.ts +60 -15
  861. package/src/browser/react/mount-context.ts +6 -1
  862. package/src/browser/react/nonce-context.ts +23 -0
  863. package/src/browser/react/shallow-equal.ts +27 -0
  864. package/src/browser/react/use-action.ts +29 -51
  865. package/src/browser/react/use-client-cache.ts +5 -3
  866. package/src/browser/react/use-handle.ts +29 -70
  867. package/src/browser/react/use-link-status.ts +6 -5
  868. package/src/browser/react/use-navigation.ts +22 -63
  869. package/src/browser/react/use-params.ts +65 -0
  870. package/src/browser/react/use-pathname.ts +47 -0
  871. package/src/browser/react/use-router.ts +63 -0
  872. package/src/browser/react/use-search-params.ts +56 -0
  873. package/src/browser/react/use-segments.ts +80 -97
  874. package/src/browser/response-adapter.ts +73 -0
  875. package/src/browser/rsc-router.tsx +188 -57
  876. package/src/browser/scroll-restoration.ts +117 -44
  877. package/src/browser/segment-reconciler.ts +221 -0
  878. package/src/browser/segment-structure-assert.ts +16 -0
  879. package/src/browser/server-action-bridge.ts +488 -606
  880. package/src/browser/shallow.ts +6 -1
  881. package/src/browser/types.ts +116 -47
  882. package/src/browser/validate-redirect-origin.ts +29 -0
  883. package/src/build/generate-manifest.ts +63 -21
  884. package/src/build/generate-route-types.ts +36 -1038
  885. package/src/build/index.ts +2 -5
  886. package/src/build/route-trie.ts +38 -12
  887. package/src/build/route-types/ast-helpers.ts +25 -0
  888. package/src/build/route-types/ast-route-extraction.ts +98 -0
  889. package/src/build/route-types/codegen.ts +102 -0
  890. package/src/build/route-types/include-resolution.ts +411 -0
  891. package/src/build/route-types/param-extraction.ts +48 -0
  892. package/src/build/route-types/per-module-writer.ts +128 -0
  893. package/src/build/route-types/router-processing.ts +479 -0
  894. package/src/build/route-types/scan-filter.ts +78 -0
  895. package/src/build/runtime-discovery.ts +231 -0
  896. package/src/cache/background-task.ts +34 -0
  897. package/src/cache/cache-key-utils.ts +44 -0
  898. package/src/cache/cache-policy.ts +125 -0
  899. package/src/cache/cache-runtime.ts +338 -0
  900. package/src/cache/cache-scope.ts +122 -303
  901. package/src/cache/cf/cf-cache-store.ts +571 -17
  902. package/src/cache/cf/index.ts +13 -3
  903. package/src/cache/document-cache.ts +116 -77
  904. package/src/cache/handle-capture.ts +81 -0
  905. package/src/cache/handle-snapshot.ts +41 -0
  906. package/src/cache/index.ts +1 -15
  907. package/src/cache/memory-segment-store.ts +191 -13
  908. package/src/cache/profile-registry.ts +73 -0
  909. package/src/cache/read-through-swr.ts +134 -0
  910. package/src/cache/segment-codec.ts +256 -0
  911. package/src/cache/taint.ts +98 -0
  912. package/src/cache/types.ts +72 -122
  913. package/src/client.rsc.tsx +3 -1
  914. package/src/client.tsx +84 -126
  915. package/src/component-utils.ts +4 -4
  916. package/src/components/DefaultDocument.tsx +5 -1
  917. package/src/context-var.ts +86 -0
  918. package/src/debug.ts +19 -9
  919. package/src/errors.ts +77 -7
  920. package/src/handle.ts +12 -7
  921. package/src/handles/MetaTags.tsx +73 -20
  922. package/src/handles/breadcrumbs.ts +66 -0
  923. package/src/handles/index.ts +1 -0
  924. package/src/handles/meta.ts +30 -13
  925. package/src/host/cookie-handler.ts +21 -15
  926. package/src/host/errors.ts +8 -8
  927. package/src/host/index.ts +4 -7
  928. package/src/host/pattern-matcher.ts +27 -27
  929. package/src/host/router.ts +61 -39
  930. package/src/host/testing.ts +8 -8
  931. package/src/host/types.ts +15 -7
  932. package/src/host/utils.ts +1 -1
  933. package/src/href-client.ts +65 -45
  934. package/src/index.rsc.ts +104 -40
  935. package/src/index.ts +122 -67
  936. package/src/internal-debug.ts +9 -3
  937. package/src/loader.rsc.ts +18 -93
  938. package/src/loader.ts +26 -9
  939. package/src/network-error-thrower.tsx +3 -1
  940. package/src/outlet-provider.tsx +45 -0
  941. package/src/prerender/param-hash.ts +4 -2
  942. package/src/prerender/store.ts +121 -17
  943. package/src/prerender.ts +325 -20
  944. package/src/reverse.ts +144 -124
  945. package/src/root-error-boundary.tsx +41 -29
  946. package/src/route-content-wrapper.tsx +7 -4
  947. package/src/route-definition/dsl-helpers.ts +959 -0
  948. package/src/route-definition/helper-factories.ts +200 -0
  949. package/src/route-definition/helpers-types.ts +430 -0
  950. package/src/route-definition/index.ts +52 -0
  951. package/src/route-definition/redirect.ts +93 -0
  952. package/src/route-definition.ts +1 -1450
  953. package/src/route-map-builder.ts +87 -133
  954. package/src/route-name.ts +53 -0
  955. package/src/route-types.ts +41 -6
  956. package/src/router/content-negotiation.ts +116 -0
  957. package/src/router/debug-manifest.ts +72 -0
  958. package/src/router/error-handling.ts +9 -9
  959. package/src/router/find-match.ts +160 -0
  960. package/src/router/handler-context.ts +324 -116
  961. package/src/router/intercept-resolution.ts +11 -4
  962. package/src/router/lazy-includes.ts +237 -0
  963. package/src/router/loader-resolution.ts +179 -133
  964. package/src/router/logging.ts +112 -6
  965. package/src/router/manifest.ts +58 -19
  966. package/src/router/match-api.ts +89 -88
  967. package/src/router/match-context.ts +4 -2
  968. package/src/router/match-handlers.ts +440 -0
  969. package/src/router/match-middleware/background-revalidation.ts +84 -89
  970. package/src/router/match-middleware/cache-lookup.ts +261 -48
  971. package/src/router/match-middleware/cache-store.ts +54 -13
  972. package/src/router/match-middleware/intercept-resolution.ts +45 -22
  973. package/src/router/match-middleware/segment-resolution.ts +20 -9
  974. package/src/router/match-pipelines.ts +10 -45
  975. package/src/router/match-result.ts +34 -17
  976. package/src/router/metrics.ts +235 -15
  977. package/src/router/middleware-cookies.ts +55 -0
  978. package/src/router/middleware-types.ts +222 -0
  979. package/src/router/middleware.ts +327 -369
  980. package/src/router/pattern-matching.ts +169 -31
  981. package/src/router/prerender-match.ts +402 -0
  982. package/src/router/preview-match.ts +170 -0
  983. package/src/router/revalidation.ts +105 -14
  984. package/src/router/router-context.ts +40 -21
  985. package/src/router/router-interfaces.ts +452 -0
  986. package/src/router/router-options.ts +592 -0
  987. package/src/router/router-registry.ts +24 -0
  988. package/src/router/segment-resolution/fresh.ts +656 -0
  989. package/src/router/segment-resolution/helpers.ts +263 -0
  990. package/src/router/segment-resolution/loader-cache.ts +199 -0
  991. package/src/router/segment-resolution/revalidation.ts +1277 -0
  992. package/src/router/segment-resolution/static-store.ts +67 -0
  993. package/src/router/segment-resolution.ts +21 -1354
  994. package/src/router/segment-wrappers.ts +291 -0
  995. package/src/router/telemetry-otel.ts +299 -0
  996. package/src/router/telemetry.ts +300 -0
  997. package/src/router/timeout.ts +148 -0
  998. package/src/router/trie-matching.ts +96 -29
  999. package/src/router/types.ts +15 -9
  1000. package/src/router.ts +642 -2366
  1001. package/src/rsc/handler-context.ts +45 -0
  1002. package/src/rsc/handler.ts +646 -1027
  1003. package/src/rsc/helpers.ts +140 -6
  1004. package/src/rsc/index.ts +0 -20
  1005. package/src/rsc/loader-fetch.ts +209 -0
  1006. package/src/rsc/manifest-init.ts +86 -0
  1007. package/src/rsc/nonce.ts +14 -0
  1008. package/src/rsc/origin-guard.ts +141 -0
  1009. package/src/rsc/progressive-enhancement.ts +379 -0
  1010. package/src/rsc/response-error.ts +37 -0
  1011. package/src/rsc/response-route-handler.ts +347 -0
  1012. package/src/rsc/rsc-rendering.ts +237 -0
  1013. package/src/rsc/runtime-warnings.ts +42 -0
  1014. package/src/rsc/server-action.ts +348 -0
  1015. package/src/rsc/ssr-setup.ts +128 -0
  1016. package/src/rsc/types.ts +38 -11
  1017. package/src/search-params.ts +66 -54
  1018. package/src/segment-system.tsx +165 -17
  1019. package/src/server/context.ts +237 -54
  1020. package/src/server/cookie-store.ts +190 -0
  1021. package/src/server/fetchable-loader-store.ts +11 -6
  1022. package/src/server/handle-store.ts +94 -15
  1023. package/src/server/loader-registry.ts +15 -56
  1024. package/src/server/request-context.ts +438 -71
  1025. package/src/server.ts +26 -164
  1026. package/src/ssr/index.tsx +101 -31
  1027. package/src/static-handler.ts +22 -4
  1028. package/src/theme/ThemeProvider.tsx +21 -15
  1029. package/src/theme/ThemeScript.tsx +5 -5
  1030. package/src/theme/constants.ts +5 -2
  1031. package/src/theme/index.ts +4 -14
  1032. package/src/theme/theme-context.ts +4 -30
  1033. package/src/theme/theme-script.ts +21 -18
  1034. package/src/types/boundaries.ts +158 -0
  1035. package/src/types/cache-types.ts +198 -0
  1036. package/src/types/error-types.ts +192 -0
  1037. package/src/types/global-namespace.ts +100 -0
  1038. package/src/types/handler-context.ts +687 -0
  1039. package/src/types/index.ts +88 -0
  1040. package/src/types/loader-types.ts +183 -0
  1041. package/src/types/route-config.ts +170 -0
  1042. package/src/types/route-entry.ts +109 -0
  1043. package/src/types/segments.ts +150 -0
  1044. package/src/types.ts +1 -1795
  1045. package/src/urls/include-helper.ts +197 -0
  1046. package/src/urls/index.ts +53 -0
  1047. package/src/urls/path-helper-types.ts +339 -0
  1048. package/src/urls/path-helper.ts +329 -0
  1049. package/src/urls/pattern-types.ts +95 -0
  1050. package/src/urls/response-types.ts +106 -0
  1051. package/src/urls/type-extraction.ts +372 -0
  1052. package/src/urls/urls-function.ts +98 -0
  1053. package/src/urls.ts +1 -1323
  1054. package/src/use-loader.tsx +85 -77
  1055. package/src/vite/discovery/bundle-postprocess.ts +184 -0
  1056. package/src/vite/discovery/discover-routers.ts +344 -0
  1057. package/src/vite/discovery/prerender-collection.ts +385 -0
  1058. package/src/vite/discovery/route-types-writer.ts +258 -0
  1059. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1060. package/src/vite/discovery/state.ts +108 -0
  1061. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1062. package/src/vite/index.ts +11 -2259
  1063. package/src/vite/plugin-types.ts +48 -0
  1064. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1065. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1066. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1067. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -47
  1068. package/src/vite/{expose-id-utils.ts → plugins/expose-id-utils.ts} +8 -43
  1069. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1070. package/src/vite/plugins/expose-ids/handler-transform.ts +179 -0
  1071. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1072. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1073. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1074. package/src/vite/plugins/expose-internal-ids.ts +569 -0
  1075. package/src/vite/plugins/refresh-cmd.ts +65 -0
  1076. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1077. package/src/vite/plugins/version-injector.ts +83 -0
  1078. package/src/vite/plugins/version-plugin.ts +266 -0
  1079. package/src/vite/plugins/virtual-entries.ts +123 -0
  1080. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1081. package/src/vite/rango.ts +445 -0
  1082. package/src/vite/router-discovery.ts +777 -0
  1083. package/src/vite/{ast-handler-extract.ts → utils/ast-handler-extract.ts} +181 -9
  1084. package/src/vite/utils/banner.ts +36 -0
  1085. package/src/vite/utils/bundle-analysis.ts +137 -0
  1086. package/src/vite/utils/manifest-utils.ts +70 -0
  1087. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +25 -29
  1088. package/src/vite/utils/prerender-utils.ts +189 -0
  1089. package/src/vite/utils/shared-utils.ts +169 -0
  1090. package/CLAUDE.md +0 -43
  1091. package/src/browser/lru-cache.ts +0 -69
  1092. package/src/browser/request-controller.ts +0 -164
  1093. package/src/cache/memory-store.ts +0 -253
  1094. package/src/router.gen.ts +0 -6
  1095. package/src/static-handler.gen.ts +0 -5
  1096. package/src/urls.gen.ts +0 -8
  1097. package/src/vite/expose-internal-ids.ts +0 -1167
  1098. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
package/src/reverse.ts CHANGED
@@ -10,92 +10,38 @@ export type SanitizePrefix<T extends string> = T extends `/${infer P}` ? P : T;
10
10
 
11
11
  /**
12
12
  * Helper type to merge multiple route definitions into a single accumulated type.
13
- * Note: When using createRouter, types accumulate automatically through the
14
- * builder chain, so this type is typically not needed.
15
13
  *
16
14
  * @example
17
15
  * ```typescript
18
- * // Manual type merging (rarely needed):
19
- * type AppRoutes = MergeRoutes<[
20
- * typeof homeRoutes,
21
- * PrefixRoutePatterns<typeof blogRoutes, "/blog">,
22
- * ]>;
23
- *
24
- * // Preferred: Let router accumulate types automatically
25
- * const router = createRouter<AppEnv>()
26
- * .routes(homeRoutes).map(...)
27
- * .routes("/blog", blogRoutes).map(...);
28
- * type AppRoutes = typeof router.routeMap;
16
+ * type AppRoutes = MergeRoutes<[typeof siteRoutes, typeof apiRoutes]>;
29
17
  * ```
30
18
  */
31
19
  export type MergeRoutes<T extends unknown[]> = T extends [
32
20
  infer First,
33
- ...infer Rest
21
+ ...infer Rest,
34
22
  ]
35
23
  ? First & MergeRoutes<Rest>
36
24
  : {};
37
25
 
38
- /**
39
- * Add key prefix to all entries in a route map
40
- * { "cart": "/cart" } with prefix "shop" -> { "shop.cart": "/shop/cart" }
41
- */
42
- export type PrefixRouteKeys<
43
- T,
44
- Prefix extends string
45
- > = Prefix extends ""
46
- ? T
47
- : { [K in keyof T as `${Prefix}.${K & string}`]: T[K] };
48
-
49
- /**
50
- * Add path prefix to all patterns in a route map
51
- * { "cart": "/cart" } with prefix "/shop" -> { "cart": "/shop/cart" }
52
- */
53
- export type PrefixRoutePatterns<
54
- T,
55
- PathPrefix extends string
56
- > = {
57
- [K in keyof T]: PathPrefix extends "" | "/"
58
- ? T[K]
59
- : T[K] extends "/"
60
- ? PathPrefix
61
- : T[K] extends string
62
- ? `${PathPrefix}${T[K]}`
63
- : T[K];
64
- };
65
-
66
- /**
67
- * Combined: prefix both keys and patterns
68
- * Used for module augmentation registration
69
- *
70
- * @example
71
- * ```typescript
72
- * // Given shopRoutes = { "index": "/", "cart": "/cart", "products.detail": "/product/:slug" }
73
- * // PrefixedRoutes<typeof shopRoutes, "shop"> produces:
74
- * // { "shop.index": "/shop", "shop.cart": "/shop/cart", "shop.products.detail": "/shop/product/:slug" }
75
- * ```
76
- */
77
- export type PrefixedRoutes<
78
- T,
79
- KeyPrefix extends string,
80
- PathPrefix extends string = KeyPrefix extends "" ? "" : `/${KeyPrefix}`
81
- > = PrefixRouteKeys<PrefixRoutePatterns<T, PathPrefix>, KeyPrefix>;
82
-
83
26
  /**
84
27
  * Helper to safely extract route patterns from a routes object
85
28
  * Handles string values, { path, response } objects, and interface types (like RegisteredRoutes)
86
29
  */
87
- type RoutePatternFor<TRoutes, TName extends keyof TRoutes> =
88
- TRoutes[TName] extends string ? TRoutes[TName]
89
- : TRoutes[TName] extends { readonly path: infer P extends string } ? P
90
- : string;
30
+ type RoutePatternFor<
31
+ TRoutes,
32
+ TName extends keyof TRoutes,
33
+ > = TRoutes[TName] extends string
34
+ ? TRoutes[TName]
35
+ : TRoutes[TName] extends { readonly path: infer P extends string }
36
+ ? P
37
+ : string;
91
38
 
92
39
  /**
93
40
  * Extract params type for a route
94
41
  */
95
- export type ParamsFor<
96
- TRoutes,
97
- TName extends keyof TRoutes
98
- > = ExtractParams<RoutePatternFor<TRoutes, TName>>;
42
+ export type ParamsFor<TRoutes, TName extends keyof TRoutes> = ExtractParams<
43
+ RoutePatternFor<TRoutes, TName>
44
+ >;
99
45
 
100
46
  /**
101
47
  * Check if an object type has any keys
@@ -106,10 +52,12 @@ type IsEmptyObject<T> = keyof T extends never ? true : false;
106
52
  * Extract search schema from a route entry.
107
53
  * Returns {} if no search schema is defined.
108
54
  */
109
- type ExtractSearchSchema<TRoutes, TName extends keyof TRoutes> =
110
- TRoutes[TName] extends { readonly search: infer S extends SearchSchema }
111
- ? S
112
- : {};
55
+ type ExtractSearchSchema<
56
+ TRoutes,
57
+ TName extends keyof TRoutes,
58
+ > = TRoutes[TName] extends { readonly search: infer S extends SearchSchema }
59
+ ? S
60
+ : {};
113
61
 
114
62
  /**
115
63
  * Type-safe reverse function signature (Django-style URL reversal)
@@ -128,7 +76,11 @@ export type ReverseFunction<TRoutes> = {
128
76
  * Route without params - validates route name exists
129
77
  */
130
78
  <TName extends keyof TRoutes & string>(
131
- name: IsEmptyObject<ExtractParams<RoutePatternFor<TRoutes, TName>>> extends true ? TName : never
79
+ name: IsEmptyObject<
80
+ ExtractParams<RoutePatternFor<TRoutes, TName>>
81
+ > extends true
82
+ ? TName
83
+ : never,
132
84
  ): string;
133
85
 
134
86
  /**
@@ -136,7 +88,7 @@ export type ReverseFunction<TRoutes> = {
136
88
  */
137
89
  <TName extends keyof TRoutes & string>(
138
90
  name: TName,
139
- params: ExtractParams<RoutePatternFor<TRoutes, TName>>
91
+ params: ExtractParams<RoutePatternFor<TRoutes, TName>>,
140
92
  ): string;
141
93
 
142
94
  /**
@@ -145,48 +97,112 @@ export type ReverseFunction<TRoutes> = {
145
97
  <TName extends keyof TRoutes & string>(
146
98
  name: TName,
147
99
  params: ExtractParams<RoutePatternFor<TRoutes, TName>>,
148
- search: ResolveSearchSchema<ExtractSearchSchema<TRoutes, TName>>
100
+ search: ResolveSearchSchema<ExtractSearchSchema<TRoutes, TName>>,
101
+ ): string;
102
+
103
+ /**
104
+ * Dot-prefixed route without params - strictly local resolution
105
+ */
106
+ <TName extends keyof TRoutes & string>(
107
+ name: IsEmptyObject<
108
+ ExtractParams<RoutePatternFor<TRoutes, TName>>
109
+ > extends true
110
+ ? `.${TName}`
111
+ : never,
112
+ ): string;
113
+
114
+ /**
115
+ * Dot-prefixed route with params - strictly local resolution
116
+ */
117
+ <TName extends keyof TRoutes & string>(
118
+ name: `.${TName}`,
119
+ params: ExtractParams<RoutePatternFor<TRoutes, TName>>,
120
+ ): string;
121
+
122
+ /**
123
+ * Dot-prefixed route with params and search - strictly local resolution
124
+ */
125
+ <TName extends keyof TRoutes & string>(
126
+ name: `.${TName}`,
127
+ params: ExtractParams<RoutePatternFor<TRoutes, TName>>,
128
+ search: ResolveSearchSchema<ExtractSearchSchema<TRoutes, TName>>,
149
129
  ): string;
150
130
  };
151
131
 
152
132
  /**
153
- * Type-safe scoped reverse function that validates all route names and params.
133
+ * Type-safe scoped reverse function with separate local and global namespaces.
154
134
  *
155
- * When used via HandlerContext or scopedReverse(), local routes are merged with
156
- * global RegisteredRoutes so all names are fully type-checked.
135
+ * - `.name` local resolution within the current include() scope
136
+ * - `name` global resolution against the named-routes definition
157
137
  *
158
138
  * @example
159
139
  * ```typescript
160
- * reverse("cart") // ✓ Validates local route
161
- * reverse("blog.post", { slug: "hello" }) // ✓ Validates global route + params
162
- * reverse("typo") // Compile error
140
+ * reverse(".article", { slug: "hello" }) // ✓ Local route (resolves with mount prefix)
141
+ * reverse(".index") // ✓ Local route (no params)
142
+ * reverse("magazine.index") // Global route (fully qualified)
143
+ * reverse("blog.post", { slug: "hello" }) // ✓ Global route + params
144
+ * reverse(".typo") // ✗ Compile error (not in local routes)
145
+ * reverse("typo") // ✗ Compile error (not in global routes)
163
146
  * ```
164
147
  */
165
- export type ScopedReverseFunction<TLocalRoutes> = {
148
+ export type ScopedReverseFunction<
149
+ TLocalRoutes,
150
+ TGlobalRoutes = TLocalRoutes,
151
+ > = {
166
152
  /**
167
- * Route without params - validates route name exists
168
- * @recommended Use this for type-safe URL generation
153
+ * Global route without params
154
+ */
155
+ <TName extends keyof TGlobalRoutes & string>(
156
+ name: IsEmptyObject<
157
+ ExtractParams<RoutePatternFor<TGlobalRoutes, TName>>
158
+ > extends true
159
+ ? TName
160
+ : never,
161
+ ): string;
162
+
163
+ /**
164
+ * Global route with params
165
+ */
166
+ <TName extends keyof TGlobalRoutes & string>(
167
+ name: TName,
168
+ params: ExtractParams<RoutePatternFor<TGlobalRoutes, TName>>,
169
+ ): string;
170
+
171
+ /**
172
+ * Global route with params and search
173
+ */
174
+ <TName extends keyof TGlobalRoutes & string>(
175
+ name: TName,
176
+ params: ExtractParams<RoutePatternFor<TGlobalRoutes, TName>>,
177
+ search: ResolveSearchSchema<ExtractSearchSchema<TGlobalRoutes, TName>>,
178
+ ): string;
179
+
180
+ /**
181
+ * Dot-prefixed local route without params
169
182
  */
170
183
  <TName extends keyof TLocalRoutes & string>(
171
- name: IsEmptyObject<ExtractParams<RoutePatternFor<TLocalRoutes, TName>>> extends true ? TName : never
184
+ name: IsEmptyObject<
185
+ ExtractParams<RoutePatternFor<TLocalRoutes, TName>>
186
+ > extends true
187
+ ? `.${TName}`
188
+ : never,
172
189
  ): string;
173
190
 
174
191
  /**
175
- * Route with params - validates both route name and params
176
- * @recommended Use this for type-safe URL generation with parameters
192
+ * Dot-prefixed local route with params
177
193
  */
178
194
  <TName extends keyof TLocalRoutes & string>(
179
- name: TName,
180
- params: ExtractParams<RoutePatternFor<TLocalRoutes, TName>>
195
+ name: `.${TName}`,
196
+ params: ExtractParams<RoutePatternFor<TLocalRoutes, TName>>,
181
197
  ): string;
182
198
 
183
199
  /**
184
- * Route with params and search - validates route name, params, and search
200
+ * Dot-prefixed local route with params and search
185
201
  */
186
202
  <TName extends keyof TLocalRoutes & string>(
187
- name: TName,
203
+ name: `.${TName}`,
188
204
  params: ExtractParams<RoutePatternFor<TLocalRoutes, TName>>,
189
- search: ResolveSearchSchema<ExtractSearchSchema<TLocalRoutes, TName>>
205
+ search: ResolveSearchSchema<ExtractSearchSchema<TLocalRoutes, TName>>,
190
206
  ): string;
191
207
  };
192
208
 
@@ -194,12 +210,13 @@ export type ScopedReverseFunction<TLocalRoutes> = {
194
210
  * Extract local routes type from UrlPatterns
195
211
  * Used with scopedReverse() to get the routes type from patterns
196
212
  */
197
- export type ExtractLocalRoutes<TPatterns> =
198
- TPatterns extends { readonly _routes?: infer TRoutes }
199
- ? TRoutes
200
- : TPatterns extends Record<string, string>
201
- ? TPatterns
202
- : Record<string, string>;
213
+ export type ExtractLocalRoutes<TPatterns> = TPatterns extends {
214
+ readonly _routes?: infer TRoutes;
215
+ }
216
+ ? TRoutes
217
+ : TPatterns extends Record<string, string>
218
+ ? TPatterns
219
+ : Record<string, string>;
203
220
 
204
221
  /**
205
222
  * Extract the response data type for a named route from a UrlPatterns instance.
@@ -210,24 +227,23 @@ export type { RouteResponse } from "./urls.js";
210
227
  /**
211
228
  * Get a locally-typed reverse function from ctx.reverse for composable modules.
212
229
  *
213
- * This is a type-only cast - ctx.reverse already resolves local names at runtime
214
- * based on the current route prefix. This helper just provides type safety
215
- * for local route names within a url module.
230
+ * This is a type-only cast - ctx.reverse already resolves names at runtime.
231
+ * Provides type safety: `.name` validates against local routes,
232
+ * `name` validates against global named-routes.
216
233
  *
217
234
  * @param reverse - The ctx.reverse function from HandlerContext
218
- * @returns The same reverse function, but typed for local routes
235
+ * @returns The same reverse function, typed with local + global routes
219
236
  *
220
237
  * @example
221
238
  * ```typescript
222
239
  * // urls/blog.tsx
223
240
  * export const blogPatterns = urls(({ path }) => [
224
241
  * path("/", (ctx) => {
225
- * // Get locally-typed reverse for this module's routes
226
242
  * const reverse = scopedReverse<typeof blogPatterns>(ctx.reverse);
227
243
  *
228
- * reverse("index"); // ✓ Type-safe local route
229
- * reverse("post", { slug: "x" }); // ✓ Type-safe with params
230
- * reverse("shop.cart"); // ✓ Type-safe global route
244
+ * reverse(".index"); // ✓ Local route
245
+ * reverse(".post", { slug: "x" }); // ✓ Local with params
246
+ * reverse("shop.cart"); // ✓ Global route
231
247
  *
232
248
  * return <BlogIndex />;
233
249
  * }, { name: "index" }),
@@ -237,7 +253,7 @@ export type { RouteResponse } from "./urls.js";
237
253
  * ```
238
254
  */
239
255
  export function scopedReverse<TPatterns>(
240
- reverse: ((...args: any[]) => string)
256
+ reverse: (...args: any[]) => string,
241
257
  ): ScopedReverseFunction<ExtractLocalRoutes<TPatterns>> {
242
258
  return reverse as ScopedReverseFunction<ExtractLocalRoutes<TPatterns>>;
243
259
  }
@@ -258,24 +274,24 @@ export function scopedReverse<TPatterns>(
258
274
  */
259
275
  type RouteMapEntry = string | { path: string; search?: Record<string, string> };
260
276
 
261
- function resolveRoutePattern(entry: RouteMapEntry | undefined): string | undefined {
277
+ function resolveRoutePattern(
278
+ entry: RouteMapEntry | undefined,
279
+ ): string | undefined {
262
280
  if (!entry) return undefined;
263
281
  return typeof entry === "string" ? entry : entry.path;
264
282
  }
265
283
 
266
284
  export function createReverse<TRoutes extends Record<string, string>>(
267
285
  routeMap: TRoutes,
268
- getFallbackMap?: () => Record<string, RouteMapEntry> | undefined,
269
286
  ): ReverseFunction<TRoutes & Record<string, string>> {
270
- return ((name: string, params?: Record<string, string>, search?: Record<string, unknown>) => {
271
- let pattern = resolveRoutePattern(routeMap[name] as unknown as RouteMapEntry);
272
- if (!pattern) {
273
- // Try the static route names from the generated file (O(1) fallback)
274
- const fallback = getFallbackMap?.();
275
- if (fallback) {
276
- pattern = resolveRoutePattern(fallback[name]);
277
- }
278
- }
287
+ return ((
288
+ name: string,
289
+ params?: Record<string, string>,
290
+ search?: Record<string, unknown>,
291
+ ) => {
292
+ const pattern = resolveRoutePattern(
293
+ routeMap[name] as unknown as RouteMapEntry,
294
+ );
279
295
  if (!pattern) {
280
296
  // During build-time discovery, lazy includes haven't resolved yet.
281
297
  // Return a placeholder instead of crashing the build.
@@ -288,13 +304,17 @@ export function createReverse<TRoutes extends Record<string, string>>(
288
304
  let result = pattern;
289
305
  if (params) {
290
306
  // Replace :param placeholders with actual values
291
- result = result.replace(/:([^/]+)/g, (_: string, key: string) => {
292
- const value = params[key];
293
- if (value === undefined) {
294
- throw new Error(`Missing param "${key}" for route "${name}"`);
295
- }
296
- return encodeURIComponent(value);
297
- });
307
+ // Strip constraint syntax: :param(a|b) -> use "param" as key
308
+ result = result.replace(
309
+ /:([a-zA-Z_][a-zA-Z0-9_]*)(\([^)]*\))?\??/g,
310
+ (_, key) => {
311
+ const value = params[key];
312
+ if (value === undefined) {
313
+ throw new Error(`Missing param "${key}" for route "${name}"`);
314
+ }
315
+ return encodeURIComponent(value);
316
+ },
317
+ );
298
318
  }
299
319
 
300
320
  // Append search params as query string
@@ -60,7 +60,8 @@ function NetworkErrorFallback({
60
60
  marginBottom: "1.5rem",
61
61
  }}
62
62
  >
63
- {error.message || "Unable to connect to the server. Please check your internet connection."}
63
+ {error.message ||
64
+ "Unable to connect to the server. Please check your internet connection."}
64
65
  </p>
65
66
  <div style={{ display: "flex", gap: "1rem", justifyContent: "center" }}>
66
67
  <button
@@ -104,7 +105,12 @@ function NetworkErrorFallback({
104
105
  * Default fallback UI for root error boundary
105
106
  * This is shown when an unhandled error bubbles up to the root
106
107
  */
107
- function RootErrorFallback({ error, reset }: ClientErrorBoundaryFallbackProps): ReactNode {
108
+ function RootErrorFallback({
109
+ error,
110
+ reset,
111
+ }: ClientErrorBoundaryFallbackProps): ReactNode {
112
+ const isDev = process.env.NODE_ENV !== "production";
113
+
108
114
  return (
109
115
  <div
110
116
  style={{
@@ -131,38 +137,40 @@ function RootErrorFallback({ error, reset }: ClientErrorBoundaryFallbackProps):
131
137
  >
132
138
  An unexpected error occurred while processing your request.
133
139
  </p>
134
- <div
135
- style={{
136
- background: "#fef2f2",
137
- border: "1px solid #fecaca",
138
- borderRadius: "0.5rem",
139
- padding: "1rem",
140
- marginBottom: "1rem",
141
- }}
142
- >
143
- <p
140
+ {isDev && (
141
+ <div
144
142
  style={{
145
- fontWeight: 600,
146
- color: "#991b1b",
147
- marginBottom: "0.5rem",
143
+ background: "#fef2f2",
144
+ border: "1px solid #fecaca",
145
+ borderRadius: "0.5rem",
146
+ padding: "1rem",
147
+ marginBottom: "1rem",
148
148
  }}
149
149
  >
150
- {error.name}: {error.message}
151
- </p>
152
- {error.stack && (
153
- <pre
150
+ <p
154
151
  style={{
155
- fontSize: "0.75rem",
156
- color: "#6b7280",
157
- overflow: "auto",
158
- whiteSpace: "pre-wrap",
159
- wordBreak: "break-word",
152
+ fontWeight: 600,
153
+ color: "#991b1b",
154
+ marginBottom: "0.5rem",
160
155
  }}
161
156
  >
162
- {error.stack}
163
- </pre>
164
- )}
165
- </div>
157
+ {error.name}: {error.message}
158
+ </p>
159
+ {error.stack && (
160
+ <pre
161
+ style={{
162
+ fontSize: "0.75rem",
163
+ color: "#6b7280",
164
+ overflow: "auto",
165
+ whiteSpace: "pre-wrap",
166
+ wordBreak: "break-word",
167
+ }}
168
+ >
169
+ {error.stack}
170
+ </pre>
171
+ )}
172
+ </div>
173
+ )}
166
174
  <div style={{ display: "flex", gap: "1rem" }}>
167
175
  <button
168
176
  type="button"
@@ -231,7 +239,11 @@ export class RootErrorBoundary extends Component<
231
239
  }
232
240
 
233
241
  componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {
234
- console.error("[RootErrorBoundary] Unhandled error caught:", error, errorInfo);
242
+ console.error(
243
+ "[RootErrorBoundary] Unhandled error caught:",
244
+ error,
245
+ errorInfo,
246
+ );
235
247
  }
236
248
 
237
249
  componentDidUpdate(prevProps: { children: ReactNode }): void {
@@ -2,7 +2,7 @@
2
2
  import type { ReactNode } from "react";
3
3
  import { Suspense, use, useId } from "react";
4
4
  import { invariant } from "./errors";
5
- import { OutletProvider } from "./client.js";
5
+ import { OutletProvider } from "./outlet-provider.js";
6
6
  import type { ResolvedSegment } from "./types.js";
7
7
  import { isLoaderDataResult } from "./types.js";
8
8
 
@@ -31,7 +31,10 @@ export function RouteContentWrapper({
31
31
  return content as ReactNode;
32
32
  }
33
33
  return (
34
- <Suspense fallback={fallback ?? null} key={segmentId ? "route-content-suspense-" + segmentId : undefined}>
34
+ <Suspense
35
+ fallback={fallback ?? null}
36
+ key={segmentId ? "route-content-suspense-" + segmentId : undefined}
37
+ >
35
38
  <Suspender content={content} key={segmentId} />
36
39
  </Suspense>
37
40
  );
@@ -50,11 +53,11 @@ export function RouteContentWrapperCallback<T>({
50
53
  invariant(children, "RouteContentWrapperCallback requires children");
51
54
  invariant(
52
55
  typeof children === "function",
53
- "RouteContentWrapperCallback requires children to be a function"
56
+ "RouteContentWrapperCallback requires children to be a function",
54
57
  );
55
58
  invariant(
56
59
  resolve !== undefined,
57
- "RouteContentWrapperCallback requires resolve"
60
+ "RouteContentWrapperCallback requires resolve",
58
61
  );
59
62
  return (
60
63
  <Suspense