@rangojs/router 0.0.0-experimental.8ff1c5d → 0.0.0-experimental.90

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 (1126) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +972 -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 +1689 -0
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/dist/browser/react/use-client-cache.js +39 -0
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/dist/handles/index.d.ts +6 -0
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/{src/href-context.ts → dist/href-context.d.ts} +7 -11
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/dist/network-error-thrower.d.ts +17 -0
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/theme/ThemeProvider.d.ts +20 -0
  712. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  713. package/dist/theme/ThemeProvider.js +240 -0
  714. package/dist/theme/ThemeProvider.js.map +1 -0
  715. package/dist/theme/ThemeScript.d.ts +48 -0
  716. package/dist/theme/ThemeScript.d.ts.map +1 -0
  717. package/dist/theme/ThemeScript.js +13 -0
  718. package/dist/theme/ThemeScript.js.map +1 -0
  719. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  720. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  721. package/dist/theme/__tests__/theme.test.js +103 -0
  722. package/dist/theme/__tests__/theme.test.js.map +1 -0
  723. package/dist/theme/constants.d.ts +29 -0
  724. package/dist/theme/constants.d.ts.map +1 -0
  725. package/dist/theme/constants.js +48 -0
  726. package/dist/theme/constants.js.map +1 -0
  727. package/dist/theme/index.d.ts +31 -0
  728. package/dist/theme/index.d.ts.map +1 -0
  729. package/dist/theme/index.js +36 -0
  730. package/dist/theme/index.js.map +1 -0
  731. package/dist/theme/theme-context.d.ts +40 -0
  732. package/dist/theme/theme-context.d.ts.map +1 -0
  733. package/dist/theme/theme-context.js +60 -0
  734. package/dist/theme/theme-context.js.map +1 -0
  735. package/dist/theme/theme-script.d.ts +27 -0
  736. package/dist/theme/theme-script.d.ts.map +1 -0
  737. package/dist/theme/theme-script.js +147 -0
  738. package/dist/theme/theme-script.js.map +1 -0
  739. package/dist/theme/types.d.ts +163 -0
  740. package/dist/theme/types.d.ts.map +1 -0
  741. package/dist/theme/types.js +11 -0
  742. package/dist/theme/types.js.map +1 -0
  743. package/dist/theme/use-theme.d.ts +12 -0
  744. package/dist/theme/use-theme.d.ts.map +1 -0
  745. package/dist/theme/use-theme.js +40 -0
  746. package/dist/theme/use-theme.js.map +1 -0
  747. package/dist/types.d.ts +1479 -0
  748. package/dist/types.d.ts.map +1 -0
  749. package/dist/types.js +10 -0
  750. package/dist/types.js.map +1 -0
  751. package/dist/urls.d.ts +441 -0
  752. package/dist/urls.d.ts.map +1 -0
  753. package/dist/urls.gen.d.ts +8 -0
  754. package/dist/urls.gen.d.ts.map +1 -0
  755. package/dist/urls.gen.js +8 -0
  756. package/dist/urls.gen.js.map +1 -0
  757. package/dist/urls.js +443 -0
  758. package/dist/urls.js.map +1 -0
  759. package/dist/use-loader.d.ts +127 -0
  760. package/dist/use-loader.d.ts.map +1 -0
  761. package/dist/use-loader.js +237 -0
  762. package/dist/use-loader.js.map +1 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  779. package/dist/vite/ast-handler-extract.d.ts +49 -0
  780. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  781. package/dist/vite/ast-handler-extract.js +249 -0
  782. package/dist/vite/ast-handler-extract.js.map +1 -0
  783. package/dist/vite/expose-action-id.d.ts +19 -0
  784. package/dist/vite/expose-action-id.d.ts.map +1 -0
  785. package/dist/vite/expose-action-id.js +250 -0
  786. package/dist/vite/expose-action-id.js.map +1 -0
  787. package/dist/vite/expose-id-utils.d.ts +69 -0
  788. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  789. package/dist/vite/expose-id-utils.js +289 -0
  790. package/dist/vite/expose-id-utils.js.map +1 -0
  791. package/dist/vite/expose-internal-ids.d.ts +22 -0
  792. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  793. package/dist/vite/expose-internal-ids.js +886 -0
  794. package/dist/vite/expose-internal-ids.js.map +1 -0
  795. package/dist/vite/index.d.ts +149 -0
  796. package/dist/vite/index.d.ts.map +1 -0
  797. package/dist/vite/index.js +5643 -981
  798. package/dist/vite/index.js.bak +5448 -0
  799. package/dist/vite/index.js.map +1 -0
  800. package/dist/vite/index.named-routes.gen.ts +103 -0
  801. package/dist/vite/package-resolution.d.ts +43 -0
  802. package/dist/vite/package-resolution.d.ts.map +1 -0
  803. package/{src/vite/package-resolution.ts → dist/vite/package-resolution.js} +53 -66
  804. package/dist/vite/package-resolution.js.map +1 -0
  805. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  806. package/dist/vite/virtual-entries.d.ts +25 -0
  807. package/dist/vite/virtual-entries.d.ts.map +1 -0
  808. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
  809. package/dist/vite/virtual-entries.js.map +1 -0
  810. package/package.json +72 -52
  811. package/skills/breadcrumbs/SKILL.md +252 -0
  812. package/skills/cache-guide/SKILL.md +294 -0
  813. package/skills/caching/SKILL.md +93 -23
  814. package/skills/composability/SKILL.md +172 -0
  815. package/skills/debug-manifest/SKILL.md +12 -8
  816. package/skills/document-cache/SKILL.md +18 -16
  817. package/skills/fonts/SKILL.md +167 -0
  818. package/skills/handler-use/SKILL.md +362 -0
  819. package/skills/hooks/SKILL.md +341 -71
  820. package/skills/host-router/SKILL.md +218 -0
  821. package/skills/intercept/SKILL.md +151 -8
  822. package/skills/layout/SKILL.md +122 -3
  823. package/skills/links/SKILL.md +166 -33
  824. package/skills/loader/SKILL.md +439 -46
  825. package/skills/middleware/SKILL.md +205 -37
  826. package/skills/migrate-nextjs/SKILL.md +560 -0
  827. package/skills/migrate-react-router/SKILL.md +765 -0
  828. package/skills/mime-routes/SKILL.md +128 -0
  829. package/skills/parallel/SKILL.md +263 -1
  830. package/skills/prerender/SKILL.md +685 -0
  831. package/skills/rango/SKILL.md +87 -16
  832. package/skills/response-routes/SKILL.md +419 -0
  833. package/skills/route/SKILL.md +281 -14
  834. package/skills/router-setup/SKILL.md +210 -32
  835. package/skills/streams-and-websockets/SKILL.md +283 -0
  836. package/skills/tailwind/SKILL.md +129 -0
  837. package/skills/theme/SKILL.md +9 -8
  838. package/skills/typesafety/SKILL.md +329 -88
  839. package/skills/use-cache/SKILL.md +324 -0
  840. package/src/__internal.ts +102 -4
  841. package/src/bin/rango.ts +321 -0
  842. package/src/browser/action-coordinator.ts +97 -0
  843. package/src/browser/action-response-classifier.ts +99 -0
  844. package/src/browser/app-shell.ts +52 -0
  845. package/src/browser/app-version.ts +14 -0
  846. package/src/browser/event-controller.ts +92 -64
  847. package/src/browser/history-state.ts +80 -0
  848. package/src/browser/intercept-utils.ts +52 -0
  849. package/src/browser/link-interceptor.ts +24 -4
  850. package/src/browser/logging.ts +55 -0
  851. package/src/browser/merge-segment-loaders.ts +20 -12
  852. package/src/browser/navigation-bridge.ts +367 -561
  853. package/src/browser/navigation-client.ts +229 -68
  854. package/src/browser/navigation-store.ts +97 -55
  855. package/src/browser/navigation-transaction.ts +297 -0
  856. package/src/browser/network-error-handler.ts +61 -0
  857. package/src/browser/partial-update.ts +362 -316
  858. package/src/browser/prefetch/cache.ts +314 -0
  859. package/src/browser/prefetch/fetch.ts +282 -0
  860. package/src/browser/prefetch/observer.ts +65 -0
  861. package/src/browser/prefetch/policy.ts +48 -0
  862. package/src/browser/prefetch/queue.ts +191 -0
  863. package/src/browser/prefetch/resource-ready.ts +77 -0
  864. package/src/browser/rango-state.ts +152 -0
  865. package/src/browser/react/Link.tsx +258 -74
  866. package/src/browser/react/NavigationProvider.tsx +132 -17
  867. package/src/browser/react/context.ts +11 -0
  868. package/src/browser/react/filter-segment-order.ts +11 -0
  869. package/src/browser/react/index.ts +12 -12
  870. package/src/browser/react/location-state-shared.ts +95 -53
  871. package/src/browser/react/location-state.ts +60 -15
  872. package/src/browser/react/mount-context.ts +6 -1
  873. package/src/browser/react/nonce-context.ts +23 -0
  874. package/src/browser/react/shallow-equal.ts +27 -0
  875. package/src/browser/react/use-action.ts +29 -51
  876. package/src/browser/react/use-client-cache.ts +5 -3
  877. package/src/browser/react/use-handle.ts +30 -126
  878. package/src/browser/react/use-href.tsx +2 -2
  879. package/src/browser/react/use-link-status.ts +6 -5
  880. package/src/browser/react/use-navigation.ts +44 -65
  881. package/src/browser/react/use-params.ts +75 -0
  882. package/src/browser/react/use-pathname.ts +47 -0
  883. package/src/browser/react/use-router.ts +83 -0
  884. package/src/browser/react/use-search-params.ts +56 -0
  885. package/src/browser/react/use-segments.ts +80 -97
  886. package/src/browser/response-adapter.ts +73 -0
  887. package/src/browser/rsc-router.tsx +246 -62
  888. package/src/browser/scroll-restoration.ts +127 -52
  889. package/src/browser/segment-reconciler.ts +243 -0
  890. package/src/browser/segment-structure-assert.ts +16 -0
  891. package/src/browser/server-action-bridge.ts +510 -603
  892. package/src/browser/shallow.ts +6 -1
  893. package/src/browser/types.ts +154 -48
  894. package/src/browser/validate-redirect-origin.ts +29 -0
  895. package/src/build/generate-manifest.ts +235 -24
  896. package/src/build/generate-route-types.ts +39 -0
  897. package/src/build/index.ts +13 -0
  898. package/src/build/route-trie.ts +291 -0
  899. package/src/build/route-types/ast-helpers.ts +25 -0
  900. package/src/build/route-types/ast-route-extraction.ts +98 -0
  901. package/src/build/route-types/codegen.ts +102 -0
  902. package/src/build/route-types/include-resolution.ts +418 -0
  903. package/src/build/route-types/param-extraction.ts +48 -0
  904. package/src/build/route-types/per-module-writer.ts +128 -0
  905. package/src/build/route-types/router-processing.ts +618 -0
  906. package/src/build/route-types/scan-filter.ts +85 -0
  907. package/src/build/runtime-discovery.ts +231 -0
  908. package/src/cache/background-task.ts +34 -0
  909. package/src/cache/cache-key-utils.ts +44 -0
  910. package/src/cache/cache-policy.ts +125 -0
  911. package/src/cache/cache-runtime.ts +342 -0
  912. package/src/cache/cache-scope.ts +167 -309
  913. package/src/cache/cf/cf-cache-store.ts +573 -21
  914. package/src/cache/cf/index.ts +13 -3
  915. package/src/cache/document-cache.ts +116 -77
  916. package/src/cache/handle-capture.ts +81 -0
  917. package/src/cache/handle-snapshot.ts +41 -0
  918. package/src/cache/index.ts +1 -15
  919. package/src/cache/memory-segment-store.ts +191 -13
  920. package/src/cache/profile-registry.ts +73 -0
  921. package/src/cache/read-through-swr.ts +134 -0
  922. package/src/cache/segment-codec.ts +256 -0
  923. package/src/cache/taint.ts +153 -0
  924. package/src/cache/types.ts +72 -122
  925. package/src/client.rsc.tsx +3 -1
  926. package/src/client.tsx +135 -301
  927. package/src/component-utils.ts +4 -4
  928. package/src/components/DefaultDocument.tsx +5 -1
  929. package/src/context-var.ts +156 -0
  930. package/src/debug.ts +19 -9
  931. package/src/errors.ts +108 -2
  932. package/src/handle.ts +55 -29
  933. package/src/handles/MetaTags.tsx +73 -20
  934. package/src/handles/breadcrumbs.ts +66 -0
  935. package/src/handles/index.ts +1 -0
  936. package/src/handles/meta.ts +30 -13
  937. package/src/host/cookie-handler.ts +165 -0
  938. package/src/host/errors.ts +97 -0
  939. package/src/host/index.ts +53 -0
  940. package/src/host/pattern-matcher.ts +214 -0
  941. package/src/host/router.ts +352 -0
  942. package/src/host/testing.ts +79 -0
  943. package/src/host/types.ts +146 -0
  944. package/src/host/utils.ts +25 -0
  945. package/src/href-client.ts +119 -29
  946. package/src/index.rsc.ts +158 -19
  947. package/src/index.ts +254 -30
  948. package/src/internal-debug.ts +11 -0
  949. package/src/loader.rsc.ts +26 -157
  950. package/src/loader.ts +27 -10
  951. package/src/network-error-thrower.tsx +3 -1
  952. package/src/outlet-context.ts +1 -1
  953. package/src/outlet-provider.tsx +45 -0
  954. package/src/prerender/param-hash.ts +37 -0
  955. package/src/prerender/store.ts +186 -0
  956. package/src/prerender.ts +524 -0
  957. package/src/response-utils.ts +28 -0
  958. package/src/reverse.ts +355 -0
  959. package/src/root-error-boundary.tsx +41 -29
  960. package/src/route-content-wrapper.tsx +7 -4
  961. package/src/route-definition/dsl-helpers.ts +1134 -0
  962. package/src/route-definition/helper-factories.ts +200 -0
  963. package/src/route-definition/helpers-types.ts +478 -0
  964. package/src/route-definition/index.ts +55 -0
  965. package/src/route-definition/redirect.ts +101 -0
  966. package/src/route-definition/resolve-handler-use.ts +155 -0
  967. package/src/route-definition.ts +1 -1428
  968. package/src/route-map-builder.ts +217 -123
  969. package/src/route-name.ts +53 -0
  970. package/src/route-types.ts +77 -8
  971. package/src/router/content-negotiation.ts +215 -0
  972. package/src/router/debug-manifest.ts +72 -0
  973. package/src/router/error-handling.ts +9 -9
  974. package/src/router/find-match.ts +160 -0
  975. package/src/router/handler-context.ts +455 -86
  976. package/src/router/intercept-resolution.ts +402 -0
  977. package/src/router/lazy-includes.ts +237 -0
  978. package/src/router/loader-resolution.ts +359 -128
  979. package/src/router/logging.ts +251 -0
  980. package/src/router/manifest.ts +163 -35
  981. package/src/router/match-api.ts +555 -0
  982. package/src/router/match-context.ts +5 -3
  983. package/src/router/match-handlers.ts +440 -0
  984. package/src/router/match-middleware/background-revalidation.ts +108 -93
  985. package/src/router/match-middleware/cache-lookup.ts +460 -10
  986. package/src/router/match-middleware/cache-store.ts +98 -26
  987. package/src/router/match-middleware/intercept-resolution.ts +57 -17
  988. package/src/router/match-middleware/segment-resolution.ts +80 -6
  989. package/src/router/match-pipelines.ts +10 -45
  990. package/src/router/match-result.ts +135 -35
  991. package/src/router/metrics.ts +240 -15
  992. package/src/router/middleware-cookies.ts +55 -0
  993. package/src/router/middleware-types.ts +200 -0
  994. package/src/router/middleware.ts +373 -371
  995. package/src/router/navigation-snapshot.ts +182 -0
  996. package/src/router/pattern-matching.ts +265 -46
  997. package/src/router/prerender-match.ts +502 -0
  998. package/src/router/preview-match.ts +98 -0
  999. package/src/router/request-classification.ts +310 -0
  1000. package/src/router/revalidation.ts +137 -38
  1001. package/src/router/route-snapshot.ts +245 -0
  1002. package/src/router/router-context.ts +41 -21
  1003. package/src/router/router-interfaces.ts +484 -0
  1004. package/src/router/router-options.ts +618 -0
  1005. package/src/router/router-registry.ts +24 -0
  1006. package/src/router/segment-resolution/fresh.ts +748 -0
  1007. package/src/router/segment-resolution/helpers.ts +268 -0
  1008. package/src/router/segment-resolution/loader-cache.ts +199 -0
  1009. package/src/router/segment-resolution/revalidation.ts +1379 -0
  1010. package/src/router/segment-resolution/static-store.ts +67 -0
  1011. package/src/router/segment-resolution.ts +21 -0
  1012. package/src/router/segment-wrappers.ts +291 -0
  1013. package/src/router/telemetry-otel.ts +299 -0
  1014. package/src/router/telemetry.ts +300 -0
  1015. package/src/router/timeout.ts +148 -0
  1016. package/src/router/trie-matching.ts +245 -0
  1017. package/src/router/types.ts +78 -3
  1018. package/src/router/url-params.ts +49 -0
  1019. package/src/router.ts +741 -4254
  1020. package/src/rsc/handler-context.ts +45 -0
  1021. package/src/rsc/handler.ts +912 -798
  1022. package/src/rsc/helpers.ts +181 -19
  1023. package/src/rsc/index.ts +0 -20
  1024. package/src/rsc/loader-fetch.ts +229 -0
  1025. package/src/rsc/manifest-init.ts +90 -0
  1026. package/src/rsc/nonce.ts +14 -0
  1027. package/src/rsc/origin-guard.ts +141 -0
  1028. package/src/rsc/progressive-enhancement.ts +393 -0
  1029. package/src/rsc/response-error.ts +37 -0
  1030. package/src/rsc/response-route-handler.ts +360 -0
  1031. package/src/rsc/rsc-rendering.ts +253 -0
  1032. package/src/rsc/runtime-warnings.ts +42 -0
  1033. package/src/rsc/server-action.ts +358 -0
  1034. package/src/rsc/ssr-setup.ts +128 -0
  1035. package/src/rsc/types.ts +46 -11
  1036. package/src/search-params.ts +230 -0
  1037. package/src/segment-content-promise.ts +67 -0
  1038. package/src/segment-loader-promise.ts +122 -0
  1039. package/src/segment-system.tsx +134 -36
  1040. package/src/server/context.ts +341 -61
  1041. package/src/server/cookie-store.ts +190 -0
  1042. package/src/server/fetchable-loader-store.ts +37 -0
  1043. package/src/server/handle-store.ts +113 -15
  1044. package/src/server/loader-registry.ts +24 -64
  1045. package/src/server/request-context.ts +603 -109
  1046. package/src/server.ts +35 -130
  1047. package/src/ssr/index.tsx +103 -30
  1048. package/src/static-handler.ts +126 -0
  1049. package/src/theme/ThemeProvider.tsx +21 -15
  1050. package/src/theme/ThemeScript.tsx +5 -5
  1051. package/src/theme/constants.ts +5 -2
  1052. package/src/theme/index.ts +4 -14
  1053. package/src/theme/theme-context.ts +4 -30
  1054. package/src/theme/theme-script.ts +21 -18
  1055. package/src/types/boundaries.ts +158 -0
  1056. package/src/types/cache-types.ts +198 -0
  1057. package/src/types/error-types.ts +192 -0
  1058. package/src/types/global-namespace.ts +100 -0
  1059. package/src/types/handler-context.ts +759 -0
  1060. package/src/types/index.ts +88 -0
  1061. package/src/types/loader-types.ts +209 -0
  1062. package/src/types/request-scope.ts +126 -0
  1063. package/src/types/route-config.ts +170 -0
  1064. package/src/types/route-entry.ts +120 -0
  1065. package/src/types/segments.ts +150 -0
  1066. package/src/types.ts +1 -1623
  1067. package/src/urls/include-helper.ts +207 -0
  1068. package/src/urls/index.ts +53 -0
  1069. package/src/urls/path-helper-types.ts +372 -0
  1070. package/src/urls/path-helper.ts +364 -0
  1071. package/src/urls/pattern-types.ts +107 -0
  1072. package/src/urls/response-types.ts +108 -0
  1073. package/src/urls/type-extraction.ts +372 -0
  1074. package/src/urls/urls-function.ts +98 -0
  1075. package/src/urls.ts +1 -802
  1076. package/src/use-loader.tsx +161 -81
  1077. package/src/vite/debug.ts +184 -0
  1078. package/src/vite/discovery/bundle-postprocess.ts +181 -0
  1079. package/src/vite/discovery/discover-routers.ts +376 -0
  1080. package/src/vite/discovery/prerender-collection.ts +486 -0
  1081. package/src/vite/discovery/route-types-writer.ts +258 -0
  1082. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1083. package/src/vite/discovery/state.ts +117 -0
  1084. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1085. package/src/vite/index.ts +15 -1076
  1086. package/src/vite/plugin-types.ts +103 -0
  1087. package/src/vite/plugins/cjs-to-esm.ts +98 -0
  1088. package/src/vite/plugins/client-ref-dedup.ts +131 -0
  1089. package/src/vite/plugins/client-ref-hashing.ts +117 -0
  1090. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1091. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1092. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  1093. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +107 -64
  1094. package/src/vite/plugins/expose-id-utils.ts +299 -0
  1095. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1096. package/src/vite/plugins/expose-ids/handler-transform.ts +209 -0
  1097. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1098. package/src/vite/plugins/expose-ids/router-transform.ts +127 -0
  1099. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1100. package/src/vite/plugins/expose-internal-ids.ts +816 -0
  1101. package/src/vite/plugins/performance-tracks.ts +96 -0
  1102. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1103. package/src/vite/plugins/use-cache-transform.ts +336 -0
  1104. package/src/vite/plugins/version-injector.ts +83 -0
  1105. package/src/vite/plugins/version-plugin.ts +266 -0
  1106. package/src/vite/plugins/virtual-entries.ts +123 -0
  1107. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1108. package/src/vite/rango.ts +497 -0
  1109. package/src/vite/router-discovery.ts +1111 -0
  1110. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1111. package/src/vite/utils/banner.ts +36 -0
  1112. package/src/vite/utils/bundle-analysis.ts +137 -0
  1113. package/src/vite/utils/manifest-utils.ts +70 -0
  1114. package/src/vite/utils/package-resolution.ts +161 -0
  1115. package/src/vite/utils/prerender-utils.ts +221 -0
  1116. package/src/vite/utils/shared-utils.ts +170 -0
  1117. package/CLAUDE.md +0 -43
  1118. package/src/browser/lru-cache.ts +0 -69
  1119. package/src/browser/request-controller.ts +0 -164
  1120. package/src/cache/memory-store.ts +0 -253
  1121. package/src/href.ts +0 -255
  1122. package/src/server/route-manifest-cache.ts +0 -173
  1123. package/src/vite/expose-handle-id.ts +0 -209
  1124. package/src/vite/expose-loader-id.ts +0 -426
  1125. package/src/vite/expose-location-state-id.ts +0 -177
  1126. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
package/src/href.ts DELETED
@@ -1,255 +0,0 @@
1
- import type { ExtractParams } from "./types.js";
2
-
3
- /**
4
- * Sanitize prefix string by removing leading slash
5
- * "/shop" -> "shop", "blog" -> "blog", "" -> ""
6
- */
7
- export type SanitizePrefix<T extends string> = T extends `/${infer P}` ? P : T;
8
-
9
- /**
10
- * Helper type to merge multiple route definitions into a single accumulated type.
11
- * Note: When using createRouter, types accumulate automatically through the
12
- * builder chain, so this type is typically not needed.
13
- *
14
- * @example
15
- * ```typescript
16
- * // Manual type merging (rarely needed):
17
- * type AppRoutes = MergeRoutes<[
18
- * typeof homeRoutes,
19
- * PrefixRoutePatterns<typeof blogRoutes, "/blog">,
20
- * ]>;
21
- *
22
- * // Preferred: Let router accumulate types automatically
23
- * const router = createRouter<AppEnv>()
24
- * .routes(homeRoutes).map(...)
25
- * .routes("/blog", blogRoutes).map(...);
26
- * type AppRoutes = typeof router.routeMap;
27
- * ```
28
- */
29
- export type MergeRoutes<T extends unknown[]> = T extends [
30
- infer First,
31
- ...infer Rest
32
- ]
33
- ? First & MergeRoutes<Rest>
34
- : {};
35
-
36
- /**
37
- * Add key prefix to all entries in a route map
38
- * { "cart": "/cart" } with prefix "shop" -> { "shop.cart": "/shop/cart" }
39
- */
40
- export type PrefixRouteKeys<
41
- T,
42
- Prefix extends string
43
- > = Prefix extends ""
44
- ? T
45
- : { [K in keyof T as `${Prefix}.${K & string}`]: T[K] };
46
-
47
- /**
48
- * Add path prefix to all patterns in a route map
49
- * { "cart": "/cart" } with prefix "/shop" -> { "cart": "/shop/cart" }
50
- */
51
- export type PrefixRoutePatterns<
52
- T,
53
- PathPrefix extends string
54
- > = {
55
- [K in keyof T]: PathPrefix extends "" | "/"
56
- ? T[K]
57
- : T[K] extends "/"
58
- ? PathPrefix
59
- : T[K] extends string
60
- ? `${PathPrefix}${T[K]}`
61
- : T[K];
62
- };
63
-
64
- /**
65
- * Combined: prefix both keys and patterns
66
- * Used for module augmentation registration
67
- *
68
- * @example
69
- * ```typescript
70
- * // Given shopRoutes = { "index": "/", "cart": "/cart", "products.detail": "/product/:slug" }
71
- * // PrefixedRoutes<typeof shopRoutes, "shop"> produces:
72
- * // { "shop.index": "/shop", "shop.cart": "/shop/cart", "shop.products.detail": "/shop/product/:slug" }
73
- * ```
74
- */
75
- export type PrefixedRoutes<
76
- T,
77
- KeyPrefix extends string,
78
- PathPrefix extends string = KeyPrefix extends "" ? "" : `/${KeyPrefix}`
79
- > = PrefixRouteKeys<PrefixRoutePatterns<T, PathPrefix>, KeyPrefix>;
80
-
81
- /**
82
- * Helper to safely extract route patterns from a routes object
83
- * Handles both Record<string, string> and interface types (like RegisteredRoutes)
84
- */
85
- type RoutePatternFor<TRoutes, TName extends keyof TRoutes> =
86
- TRoutes[TName] extends string ? TRoutes[TName] : string;
87
-
88
- /**
89
- * Extract params type for a route
90
- */
91
- export type ParamsFor<
92
- TRoutes,
93
- TName extends keyof TRoutes
94
- > = ExtractParams<RoutePatternFor<TRoutes, TName>>;
95
-
96
- /**
97
- * Check if an object type has any keys
98
- */
99
- type IsEmptyObject<T> = keyof T extends never ? true : false;
100
-
101
- /**
102
- * Type-safe href function signature
103
- *
104
- * Validates route names and params at compile time.
105
- * Use route names instead of raw paths for full type safety.
106
- *
107
- * @example
108
- * ```typescript
109
- * href("cart") // ✓ Validates route exists
110
- * href("product.detail", { id: "123" }) // ✓ Validates route + params
111
- * ```
112
- */
113
- export type HrefFunction<TRoutes> = {
114
- /**
115
- * Route without params - validates route name exists
116
- */
117
- <TName extends keyof TRoutes & string>(
118
- name: IsEmptyObject<ExtractParams<RoutePatternFor<TRoutes, TName>>> extends true ? TName : never
119
- ): string;
120
-
121
- /**
122
- * Route with params - validates both route name and params
123
- */
124
- <TName extends keyof TRoutes & string>(
125
- name: TName,
126
- params: ExtractParams<RoutePatternFor<TRoutes, TName>>
127
- ): string;
128
- };
129
-
130
- /**
131
- * Type-safe scoped href function signature for use with scopedHref<typeof patterns>()
132
- *
133
- * **Recommended: Use route names for type safety.**
134
- * Route names validate both the route exists and params are correct.
135
- * Path-based URLs (`/...`) are an escape hatch with no validation.
136
- *
137
- * @example
138
- * ```typescript
139
- * // RECOMMENDED: Use route names for type safety
140
- * href("blog.post", { slug: "hello" }) // ✓ Validates route + params
141
- * href("shop.cart") // ✓ Validates route exists
142
- *
143
- * // ESCAPE HATCH: Path-based URLs (no validation)
144
- * href("/about") // ⚠ No type checking
145
- * href("/typo/in/path") // ⚠ Won't catch errors
146
- * ```
147
- */
148
- export type ScopedHrefFunction<TLocalRoutes> = {
149
- /**
150
- * Route without params - validates route name exists
151
- * @recommended Use this for type-safe URL generation
152
- */
153
- <TName extends keyof TLocalRoutes & string>(
154
- name: IsEmptyObject<ExtractParams<RoutePatternFor<TLocalRoutes, TName>>> extends true ? TName : never
155
- ): string;
156
-
157
- /**
158
- * Route with params - validates both route name and params
159
- * @recommended Use this for type-safe URL generation with parameters
160
- */
161
- <TName extends keyof TLocalRoutes & string>(
162
- name: TName,
163
- params: ExtractParams<RoutePatternFor<TLocalRoutes, TName>>
164
- ): string;
165
-
166
- /**
167
- * Absolute route name (contains dot) - global lookup
168
- * Use for cross-module navigation: "shop.cart", "blog.post"
169
- */
170
- (name: `${string}.${string}`, params?: Record<string, string>): string;
171
-
172
- /**
173
- * Path-based URL - ESCAPE HATCH, no type validation
174
- * Prefer route names for type safety. Only use paths when necessary.
175
- */
176
- (name: `/${string}`, params?: Record<string, string>): string;
177
- };
178
-
179
- /**
180
- * Extract local routes type from UrlPatterns
181
- * Used with scopedHref() to get the routes type from patterns
182
- */
183
- export type ExtractLocalRoutes<TPatterns> =
184
- TPatterns extends { readonly _routes?: infer TRoutes } ? TRoutes : Record<string, string>;
185
-
186
- /**
187
- * Get a locally-typed href function from ctx.href for composable modules.
188
- *
189
- * This is a type-only cast - ctx.href already resolves local names at runtime
190
- * based on the current route prefix. This helper just provides type safety
191
- * for local route names within a url module.
192
- *
193
- * @param href - The ctx.href function from HandlerContext
194
- * @returns The same href function, but typed for local routes
195
- *
196
- * @example
197
- * ```typescript
198
- * // urls/blog.tsx
199
- * export const blogPatterns = urls(({ path }) => [
200
- * path("/", (ctx) => {
201
- * // Get locally-typed href for this module's routes
202
- * const href = scopedHref<typeof blogPatterns>(ctx.href);
203
- *
204
- * href("index"); // ✓ Type-safe local route
205
- * href("post", { slug: "x" }); // ✓ Type-safe with params
206
- * href("shop.cart"); // ✓ Cross-module (absolute name)
207
- *
208
- * return <BlogIndex />;
209
- * }, { name: "index" }),
210
- *
211
- * path("/:slug", BlogPost, { name: "post" }),
212
- * ]);
213
- * ```
214
- */
215
- export function scopedHref<TPatterns>(
216
- href: (name: string, params?: Record<string, string>) => string
217
- ): ScopedHrefFunction<ExtractLocalRoutes<TPatterns>> {
218
- return href as ScopedHrefFunction<ExtractLocalRoutes<TPatterns>>;
219
- }
220
-
221
- /**
222
- * Create a type-safe href function for URL generation
223
- *
224
- * @param routeMap - Flattened route map with all registered routes
225
- * @returns Type-safe href function
226
- *
227
- * @example
228
- * ```typescript
229
- * // Given routes: { cart: "/shop/cart", detail: "/shop/product/:slug" }
230
- * const href = createHref(routeMap);
231
- * href("cart"); // "/shop/cart"
232
- * href("detail", { slug: "my-product" }); // "/shop/product/my-product"
233
- * ```
234
- */
235
- export function createHref<TRoutes extends Record<string, string>>(
236
- routeMap: TRoutes
237
- ): HrefFunction<TRoutes & Record<string, string>> {
238
- return ((name: string, params?: Record<string, string>) => {
239
- const pattern = routeMap[name];
240
- if (!pattern) {
241
- throw new Error(`Unknown route: ${name}`);
242
- }
243
-
244
- if (!params) return pattern;
245
-
246
- // Replace :param placeholders with actual values
247
- return pattern.replace(/:([^/]+)/g, (_, key) => {
248
- const value = params[key];
249
- if (value === undefined) {
250
- throw new Error(`Missing param "${key}" for route "${name}"`);
251
- }
252
- return encodeURIComponent(value);
253
- });
254
- }) as HrefFunction<TRoutes>;
255
- }
@@ -1,173 +0,0 @@
1
- /**
2
- * Route Manifest Cache
3
- *
4
- * Three-tier caching strategy for route manifest data:
5
- * 1. In-memory (same isolate) - instant
6
- * 2. SegmentCacheStore (caches.default on Cloudflare) - ~1-2ms
7
- * 3. Generate on-demand (cache miss) - ~98ms
8
- *
9
- * Benefits:
10
- * - Removes 725KB bundled manifest from worker code
11
- * - Typical cold start: 0-2ms (cache hit)
12
- * - Worst case: ~98ms (first request per colo)
13
- */
14
-
15
- import type { SegmentCacheStore, CachedEntryData } from "../cache/types.js";
16
- import type { GeneratedManifest } from "../build/generate-manifest.js";
17
- import { setCachedManifest, hasCachedManifest } from "../route-map-builder.js";
18
-
19
- /**
20
- * Cached route data structure
21
- */
22
- interface CachedRouteData {
23
- /** Route name → pattern mapping for href() */
24
- routeManifest: Record<string, string>;
25
- /** Version string for cache invalidation */
26
- version: string;
27
- }
28
-
29
- // ============================================================================
30
- // Tier 1: In-memory singleton (same isolate - instant)
31
- // ============================================================================
32
-
33
- let memoryManifest: CachedRouteData | null = null;
34
-
35
- /**
36
- * Options for getRouteManifestData
37
- */
38
- export interface GetRouteManifestOptions {
39
- /** Cache store implementation (e.g., CFCacheStore). If omitted, memory-only caching is used. */
40
- store?: SegmentCacheStore;
41
- /** Optional function to schedule non-blocking cache write (e.g., ctx.waitUntil) */
42
- waitUntil?: (promise: Promise<void>) => void;
43
- }
44
-
45
- /**
46
- * Get route manifest data with caching:
47
- * 1. In-memory (same isolate) - instant
48
- * 2. SegmentCacheStore (if provided, e.g., CFCacheStore on Cloudflare) - ~1-2ms
49
- * 3. Generate on-demand (cache miss) - ~98ms
50
- *
51
- * When no store is provided, only in-memory caching is used (memory-only mode).
52
- * This is suitable for development or when external cache is not available.
53
- *
54
- * @param generateFn - Function to generate manifest on cache miss
55
- * @param version - Version string for cache invalidation
56
- * @param options - Optional cache store and waitUntil function
57
- * @returns Cached or freshly generated route data
58
- */
59
- export async function getRouteManifestData(
60
- generateFn: () => GeneratedManifest,
61
- version: string,
62
- options?: GetRouteManifestOptions
63
- ): Promise<CachedRouteData> {
64
- const { store, waitUntil } = options ?? {};
65
- const cacheKey = `route-manifest:${version}`;
66
-
67
- const startTime = performance.now();
68
-
69
- // 1. In-memory check (same isolate) - instant
70
- if (memoryManifest?.version === version) {
71
- console.log("[route-manifest] HIT memory cache (same isolate)");
72
- return memoryManifest;
73
- }
74
-
75
- // 2. Cache store check (if store provided) - ~1-2ms
76
- if (store) {
77
- try {
78
- const cached = await store.get(cacheKey);
79
- if (cached?.data) {
80
- // Extract manifest from the CachedEntryData wrapper
81
- const manifest = (cached.data as unknown as { manifest: CachedRouteData }).manifest;
82
- if (manifest?.version === version) {
83
- memoryManifest = manifest;
84
- setCachedManifest(memoryManifest.routeManifest);
85
- const duration = (performance.now() - startTime).toFixed(2);
86
- console.log(`[route-manifest] HIT edge cache (${duration}ms, ${Object.keys(manifest.routeManifest).length} routes)`);
87
- return memoryManifest;
88
- }
89
- }
90
- } catch (error) {
91
- // Cache miss or error - fall through to generation
92
- console.warn("[route-manifest] Edge cache read failed:", error);
93
- }
94
- }
95
-
96
- // 3. Generate on cache miss - ~98ms
97
- const generated = generateFn();
98
- memoryManifest = {
99
- routeManifest: generated.routeManifest,
100
- version,
101
- };
102
- // Make available to getGlobalRouteMap() for href()
103
- setCachedManifest(memoryManifest.routeManifest);
104
- const duration = (performance.now() - startTime).toFixed(2);
105
- console.log(`[route-manifest] MISS - generated fresh (${duration}ms, ${Object.keys(generated.routeManifest).length} routes)`);
106
-
107
- // Store in cache for other isolates (only if store provided)
108
- // OFF RENDERING PATH via waitUntil
109
- if (store) {
110
- console.log("[route-manifest] Writing to edge cache (via waitUntil)...");
111
- const cachePromise = (async () => {
112
- try {
113
- // Wrap in CachedEntryData format expected by SegmentCacheStore
114
- const data: CachedEntryData = {
115
- segments: [],
116
- handles: {},
117
- expiresAt: Date.now() + 31536000 * 1000, // 1 year
118
- };
119
- // Store manifest in a custom field
120
- (data as unknown as { manifest: CachedRouteData }).manifest = memoryManifest!;
121
- await store.set(cacheKey, data, 31536000); // 1 year TTL
122
- console.log("[route-manifest] Edge cache write complete");
123
- } catch (error) {
124
- console.warn("[route-manifest] Edge cache write failed:", error);
125
- }
126
- })();
127
-
128
- if (waitUntil) {
129
- // Non-blocking: cache write happens after response is sent
130
- waitUntil(cachePromise);
131
- } else {
132
- // Fallback: blocking write (dev mode or no waitUntil available)
133
- await cachePromise;
134
- }
135
- }
136
-
137
- return memoryManifest;
138
- }
139
-
140
- /**
141
- * Sync access to in-memory manifest (for href())
142
- * Returns null if not yet loaded
143
- *
144
- * @returns The route manifest or null if not loaded
145
- */
146
- export function getRouteManifestSync(): Record<string, string> | null {
147
- return memoryManifest?.routeManifest ?? null;
148
- }
149
-
150
- /**
151
- * Clear in-memory cache (for testing)
152
- */
153
- export function clearRouteManifestCache(): void {
154
- memoryManifest = null;
155
- }
156
-
157
- /**
158
- * Check if manifest is loaded in memory
159
- *
160
- * @returns true if manifest is available synchronously
161
- */
162
- export function isManifestLoaded(): boolean {
163
- return memoryManifest !== null;
164
- }
165
-
166
- /**
167
- * Get the current cached version (for debugging)
168
- *
169
- * @returns The version string or null if not loaded
170
- */
171
- export function getManifestVersion(): string | null {
172
- return memoryManifest?.version ?? null;
173
- }
@@ -1,209 +0,0 @@
1
- import type { Plugin, ResolvedConfig } from "vite";
2
- import MagicString from "magic-string";
3
- import path from "node:path";
4
- import crypto from "node:crypto";
5
-
6
- /**
7
- * Normalize path to forward slashes
8
- */
9
- function normalizePath(p: string): string {
10
- return p.split(path.sep).join("/");
11
- }
12
-
13
- /**
14
- * Generate a short hash for a handle ID
15
- * Uses first 8 chars of SHA-256 hash for uniqueness while keeping IDs short
16
- * Appends export name for easier debugging: "abc123#Breadcrumbs"
17
- */
18
- function hashHandleId(filePath: string, exportName: string): string {
19
- const input = `${filePath}#${exportName}`;
20
- const hash = crypto.createHash("sha256").update(input).digest("hex");
21
- return `${hash.slice(0, 8)}#${exportName}`;
22
- }
23
-
24
- /**
25
- * Check if file imports createHandle from rsc-router
26
- */
27
- function hasCreateHandleImport(code: string): boolean {
28
- // Match: import { createHandle } from "@rangojs/router" or "@rangojs/router/..."
29
- const pattern =
30
- /import\s*\{[^}]*\bcreateHandle\b[^}]*\}\s*from\s*["']@rangojs\/router(?:\/[^"']+)?["']/;
31
- return pattern.test(code);
32
- }
33
-
34
- /**
35
- * Analyze createHandle arguments to determine injection strategy
36
- * Returns: { hasArgs: boolean, firstArgIsString: boolean, firstArgIsFunction: boolean }
37
- */
38
- function analyzeCreateHandleArgs(
39
- code: string,
40
- startPos: number,
41
- endPos: number
42
- ): { hasArgs: boolean; firstArgIsString: boolean; firstArgIsFunction: boolean } {
43
- // Extract the content between parentheses
44
- const content = code.slice(startPos, endPos).trim();
45
-
46
- if (!content) {
47
- return { hasArgs: false, firstArgIsString: false, firstArgIsFunction: false };
48
- }
49
-
50
- // Check if first arg starts with a quote (string literal)
51
- const firstArgIsString = /^["']/.test(content);
52
-
53
- // Check if first arg starts with ( for arrow function or function keyword
54
- const firstArgIsFunction =
55
- content.startsWith("(") ||
56
- content.startsWith("function") ||
57
- // Check for identifier that could be a collect function reference
58
- /^[a-zA-Z_$][a-zA-Z0-9_$]*\s*(?:,|$)/.test(content);
59
-
60
- return { hasArgs: true, firstArgIsString, firstArgIsFunction };
61
- }
62
-
63
- /**
64
- * Transform export const X = createHandle(...) patterns to inject $$id
65
- *
66
- * Handles these cases:
67
- * 1. createHandle() - no args -> inject (undefined, "id")
68
- * 2. createHandle("name") - string name -> inject (, "id") after existing arg
69
- * 3. createHandle(collectFn) - collect function -> inject (collectFn, "id")
70
- * 4. createHandle("name", collectFn) - both -> inject (, "id") after existing args
71
- */
72
- function transformHandleExports(
73
- code: string,
74
- filePath: string,
75
- sourceId?: string,
76
- isBuild: boolean = false
77
- ): { code: string; map: ReturnType<MagicString["generateMap"]> } | null {
78
- // Quick bail-out
79
- if (!code.includes("createHandle")) {
80
- return null;
81
- }
82
-
83
- // Must have direct import from rsc-router
84
- if (!hasCreateHandleImport(code)) {
85
- return null;
86
- }
87
-
88
- // Match: export const X = createHandle<...>(
89
- // Captures the export name (X)
90
- const pattern = /export\s+const\s+(\w+)\s*=\s*createHandle\s*(?:<[^>]*>)?\s*\(/g;
91
-
92
- const s = new MagicString(code);
93
- let hasChanges = false;
94
- let match: RegExpExecArray | null;
95
-
96
- while ((match = pattern.exec(code)) !== null) {
97
- const exportName = match[1];
98
- const matchEnd = match.index + match[0].length;
99
-
100
- // Find the end of the createHandle(...) call
101
- let parenDepth = 1;
102
- let i = matchEnd;
103
- while (i < code.length && parenDepth > 0) {
104
- if (code[i] === "(") parenDepth++;
105
- if (code[i] === ")") parenDepth--;
106
- i++;
107
- }
108
-
109
- // i now points just after the closing )
110
- const closeParenPos = i - 1;
111
-
112
- // Analyze what arguments exist
113
- const args = analyzeCreateHandleArgs(code, matchEnd, closeParenPos);
114
-
115
- // Find the semicolon or end of statement
116
- let statementEnd = i;
117
- while (statementEnd < code.length && /\s/.test(code[statementEnd])) {
118
- statementEnd++;
119
- }
120
- if (code[statementEnd] === ";") {
121
- statementEnd++;
122
- }
123
-
124
- // Generate ID: hashed in production, readable in dev
125
- const handleId = isBuild
126
- ? hashHandleId(filePath, exportName)
127
- : `${filePath}#${exportName}`;
128
-
129
- // Inject $$id as the last parameter
130
- let paramInjection: string;
131
- if (!args.hasArgs) {
132
- // No args: createHandle() -> createHandle(undefined, "id")
133
- paramInjection = `undefined, "${handleId}"`;
134
- } else {
135
- // Has args: createHandle(x) -> createHandle(x, "id")
136
- paramInjection = `, "${handleId}"`;
137
- }
138
- s.appendLeft(closeParenPos, paramInjection);
139
-
140
- // Also set $$id property for external access
141
- const propInjection = `\n${exportName}.$$id = "${handleId}";`;
142
- s.appendRight(statementEnd, propInjection);
143
- hasChanges = true;
144
- }
145
-
146
- if (!hasChanges) {
147
- return null;
148
- }
149
-
150
- return {
151
- code: s.toString(),
152
- map: s.generateMap({ source: sourceId, includeContent: true }),
153
- };
154
- }
155
-
156
- /**
157
- * Vite plugin that exposes $$id on createHandle calls.
158
- *
159
- * When users create handles with createHandle(), this plugin:
160
- * 1. Injects a $$id as the last parameter (used as the handle name)
161
- * 2. Sets $$id property on the exported constant for external access
162
- *
163
- * This allows handles to be created without explicit names:
164
- * - Before: export const Breadcrumbs = createHandle<Item>("breadcrumbs")
165
- * - After: export const Breadcrumbs = createHandle<Item>()
166
- *
167
- * The name is auto-generated from file path + export name.
168
- *
169
- * Requirements:
170
- * - Must use direct import: import { createHandle } from "@rangojs/router"
171
- * - Must use named export: export const MyHandle = createHandle(...)
172
- */
173
- export function exposeHandleId(): Plugin {
174
- let config: ResolvedConfig;
175
- let isBuild = false;
176
-
177
- return {
178
- name: "@rangojs/router:expose-handle-id",
179
- enforce: "post",
180
-
181
- configResolved(resolvedConfig) {
182
- config = resolvedConfig;
183
- isBuild = config.command === "build";
184
- },
185
-
186
- transform(code, id) {
187
- // Skip node_modules
188
- if (id.includes("/node_modules/")) {
189
- return;
190
- }
191
-
192
- // Quick bail-out
193
- if (!code.includes("createHandle")) {
194
- return;
195
- }
196
-
197
- // Must have direct import from rsc-router
198
- if (!hasCreateHandleImport(code)) {
199
- return;
200
- }
201
-
202
- // Get relative path for the ID
203
- const relativePath = normalizePath(path.relative(config.root, id));
204
-
205
- // Transform: inject $$id
206
- return transformHandleExports(code, relativePath, id, isBuild);
207
- },
208
- };
209
- }