@rangojs/router 0.0.0-experimental.9 → 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 (1125) 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 +1619 -155
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/dist/browser/react/use-client-cache.js +39 -0
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/dist/handles/index.d.ts +6 -0
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/{src/href-context.ts → dist/href-context.d.ts} +7 -11
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/dist/network-error-thrower.d.ts +17 -0
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/theme/ThemeProvider.d.ts +20 -0
  712. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  713. package/dist/theme/ThemeProvider.js +240 -0
  714. package/dist/theme/ThemeProvider.js.map +1 -0
  715. package/dist/theme/ThemeScript.d.ts +48 -0
  716. package/dist/theme/ThemeScript.d.ts.map +1 -0
  717. package/dist/theme/ThemeScript.js +13 -0
  718. package/dist/theme/ThemeScript.js.map +1 -0
  719. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  720. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  721. package/dist/theme/__tests__/theme.test.js +103 -0
  722. package/dist/theme/__tests__/theme.test.js.map +1 -0
  723. package/dist/theme/constants.d.ts +29 -0
  724. package/dist/theme/constants.d.ts.map +1 -0
  725. package/dist/theme/constants.js +48 -0
  726. package/dist/theme/constants.js.map +1 -0
  727. package/dist/theme/index.d.ts +31 -0
  728. package/dist/theme/index.d.ts.map +1 -0
  729. package/dist/theme/index.js +36 -0
  730. package/dist/theme/index.js.map +1 -0
  731. package/dist/theme/theme-context.d.ts +40 -0
  732. package/dist/theme/theme-context.d.ts.map +1 -0
  733. package/dist/theme/theme-context.js +60 -0
  734. package/dist/theme/theme-context.js.map +1 -0
  735. package/dist/theme/theme-script.d.ts +27 -0
  736. package/dist/theme/theme-script.d.ts.map +1 -0
  737. package/dist/theme/theme-script.js +147 -0
  738. package/dist/theme/theme-script.js.map +1 -0
  739. package/dist/theme/types.d.ts +163 -0
  740. package/dist/theme/types.d.ts.map +1 -0
  741. package/dist/theme/types.js +11 -0
  742. package/dist/theme/types.js.map +1 -0
  743. package/dist/theme/use-theme.d.ts +12 -0
  744. package/dist/theme/use-theme.d.ts.map +1 -0
  745. package/dist/theme/use-theme.js +40 -0
  746. package/dist/theme/use-theme.js.map +1 -0
  747. package/dist/types.d.ts +1479 -0
  748. package/dist/types.d.ts.map +1 -0
  749. package/dist/types.js +10 -0
  750. package/dist/types.js.map +1 -0
  751. package/dist/urls.d.ts +441 -0
  752. package/dist/urls.d.ts.map +1 -0
  753. package/dist/urls.gen.d.ts +8 -0
  754. package/dist/urls.gen.d.ts.map +1 -0
  755. package/dist/urls.gen.js +8 -0
  756. package/dist/urls.gen.js.map +1 -0
  757. package/dist/urls.js +443 -0
  758. package/dist/urls.js.map +1 -0
  759. package/dist/use-loader.d.ts +127 -0
  760. package/dist/use-loader.d.ts.map +1 -0
  761. package/dist/use-loader.js +237 -0
  762. package/dist/use-loader.js.map +1 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  779. package/dist/vite/ast-handler-extract.d.ts +49 -0
  780. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  781. package/dist/vite/ast-handler-extract.js +249 -0
  782. package/dist/vite/ast-handler-extract.js.map +1 -0
  783. package/dist/vite/expose-action-id.d.ts +19 -0
  784. package/dist/vite/expose-action-id.d.ts.map +1 -0
  785. package/dist/vite/expose-action-id.js +250 -0
  786. package/dist/vite/expose-action-id.js.map +1 -0
  787. package/dist/vite/expose-id-utils.d.ts +69 -0
  788. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  789. package/dist/vite/expose-id-utils.js +289 -0
  790. package/dist/vite/expose-id-utils.js.map +1 -0
  791. package/dist/vite/expose-internal-ids.d.ts +22 -0
  792. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  793. package/dist/vite/expose-internal-ids.js +886 -0
  794. package/dist/vite/expose-internal-ids.js.map +1 -0
  795. package/dist/vite/index.d.ts +149 -0
  796. package/dist/vite/index.d.ts.map +1 -0
  797. package/dist/vite/index.js +5565 -2291
  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 +64 -56
  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 +6 -4
  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 +158 -25
  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 +15 -11
  829. package/skills/parallel/SKILL.md +263 -1
  830. package/skills/prerender/SKILL.md +467 -65
  831. package/skills/rango/SKILL.md +87 -21
  832. package/skills/response-routes/SKILL.md +152 -91
  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/theme/SKILL.md +9 -8
  837. package/skills/typesafety/SKILL.md +327 -86
  838. package/skills/use-cache/SKILL.md +324 -0
  839. package/src/__internal.ts +102 -4
  840. package/src/bin/rango.ts +312 -15
  841. package/src/browser/action-coordinator.ts +97 -0
  842. package/src/browser/action-response-classifier.ts +99 -0
  843. package/src/browser/app-shell.ts +52 -0
  844. package/src/browser/app-version.ts +14 -0
  845. package/src/browser/event-controller.ts +92 -64
  846. package/src/browser/history-state.ts +80 -0
  847. package/src/browser/intercept-utils.ts +52 -0
  848. package/src/browser/link-interceptor.ts +24 -4
  849. package/src/browser/logging.ts +55 -0
  850. package/src/browser/merge-segment-loaders.ts +20 -12
  851. package/src/browser/navigation-bridge.ts +367 -561
  852. package/src/browser/navigation-client.ts +228 -70
  853. package/src/browser/navigation-store.ts +97 -55
  854. package/src/browser/navigation-transaction.ts +297 -0
  855. package/src/browser/network-error-handler.ts +61 -0
  856. package/src/browser/partial-update.ts +362 -316
  857. package/src/browser/prefetch/cache.ts +314 -0
  858. package/src/browser/prefetch/fetch.ts +282 -0
  859. package/src/browser/prefetch/observer.ts +65 -0
  860. package/src/browser/prefetch/policy.ts +48 -0
  861. package/src/browser/prefetch/queue.ts +191 -0
  862. package/src/browser/prefetch/resource-ready.ts +77 -0
  863. package/src/browser/rango-state.ts +152 -0
  864. package/src/browser/react/Link.tsx +255 -71
  865. package/src/browser/react/NavigationProvider.tsx +132 -17
  866. package/src/browser/react/context.ts +11 -0
  867. package/src/browser/react/filter-segment-order.ts +11 -0
  868. package/src/browser/react/index.ts +12 -12
  869. package/src/browser/react/location-state-shared.ts +95 -53
  870. package/src/browser/react/location-state.ts +60 -15
  871. package/src/browser/react/mount-context.ts +6 -1
  872. package/src/browser/react/nonce-context.ts +23 -0
  873. package/src/browser/react/shallow-equal.ts +27 -0
  874. package/src/browser/react/use-action.ts +29 -51
  875. package/src/browser/react/use-client-cache.ts +5 -3
  876. package/src/browser/react/use-handle.ts +30 -120
  877. package/src/browser/react/use-link-status.ts +6 -5
  878. package/src/browser/react/use-navigation.ts +44 -65
  879. package/src/browser/react/use-params.ts +75 -0
  880. package/src/browser/react/use-pathname.ts +47 -0
  881. package/src/browser/react/use-router.ts +83 -0
  882. package/src/browser/react/use-search-params.ts +56 -0
  883. package/src/browser/react/use-segments.ts +80 -97
  884. package/src/browser/response-adapter.ts +73 -0
  885. package/src/browser/rsc-router.tsx +246 -64
  886. package/src/browser/scroll-restoration.ts +127 -52
  887. package/src/browser/segment-reconciler.ts +243 -0
  888. package/src/browser/segment-structure-assert.ts +16 -0
  889. package/src/browser/server-action-bridge.ts +510 -603
  890. package/src/browser/shallow.ts +6 -1
  891. package/src/browser/types.ts +152 -48
  892. package/src/browser/validate-redirect-origin.ts +29 -0
  893. package/src/build/generate-manifest.ts +84 -23
  894. package/src/build/generate-route-types.ts +39 -752
  895. package/src/build/index.ts +6 -5
  896. package/src/build/route-trie.ts +83 -31
  897. package/src/build/route-types/ast-helpers.ts +25 -0
  898. package/src/build/route-types/ast-route-extraction.ts +98 -0
  899. package/src/build/route-types/codegen.ts +102 -0
  900. package/src/build/route-types/include-resolution.ts +418 -0
  901. package/src/build/route-types/param-extraction.ts +48 -0
  902. package/src/build/route-types/per-module-writer.ts +128 -0
  903. package/src/build/route-types/router-processing.ts +618 -0
  904. package/src/build/route-types/scan-filter.ts +85 -0
  905. package/src/build/runtime-discovery.ts +231 -0
  906. package/src/cache/background-task.ts +34 -0
  907. package/src/cache/cache-key-utils.ts +44 -0
  908. package/src/cache/cache-policy.ts +125 -0
  909. package/src/cache/cache-runtime.ts +342 -0
  910. package/src/cache/cache-scope.ts +167 -307
  911. package/src/cache/cf/cf-cache-store.ts +573 -21
  912. package/src/cache/cf/index.ts +13 -3
  913. package/src/cache/document-cache.ts +116 -77
  914. package/src/cache/handle-capture.ts +81 -0
  915. package/src/cache/handle-snapshot.ts +41 -0
  916. package/src/cache/index.ts +1 -15
  917. package/src/cache/memory-segment-store.ts +191 -13
  918. package/src/cache/profile-registry.ts +73 -0
  919. package/src/cache/read-through-swr.ts +134 -0
  920. package/src/cache/segment-codec.ts +256 -0
  921. package/src/cache/taint.ts +153 -0
  922. package/src/cache/types.ts +72 -122
  923. package/src/client.rsc.tsx +3 -1
  924. package/src/client.tsx +113 -301
  925. package/src/component-utils.ts +4 -4
  926. package/src/components/DefaultDocument.tsx +5 -1
  927. package/src/context-var.ts +156 -0
  928. package/src/debug.ts +19 -9
  929. package/src/errors.ts +77 -7
  930. package/src/handle.ts +55 -10
  931. package/src/handles/MetaTags.tsx +73 -20
  932. package/src/handles/breadcrumbs.ts +66 -0
  933. package/src/handles/index.ts +1 -0
  934. package/src/handles/meta.ts +30 -13
  935. package/src/host/cookie-handler.ts +21 -15
  936. package/src/host/errors.ts +8 -8
  937. package/src/host/index.ts +4 -7
  938. package/src/host/pattern-matcher.ts +27 -27
  939. package/src/host/router.ts +61 -39
  940. package/src/host/testing.ts +8 -8
  941. package/src/host/types.ts +15 -7
  942. package/src/host/utils.ts +1 -1
  943. package/src/href-client.ts +65 -45
  944. package/src/index.rsc.ts +138 -21
  945. package/src/index.ts +206 -51
  946. package/src/internal-debug.ts +11 -0
  947. package/src/loader.rsc.ts +25 -143
  948. package/src/loader.ts +27 -10
  949. package/src/network-error-thrower.tsx +3 -1
  950. package/src/outlet-context.ts +1 -1
  951. package/src/outlet-provider.tsx +45 -0
  952. package/src/prerender/param-hash.ts +4 -2
  953. package/src/prerender/store.ts +159 -13
  954. package/src/prerender.ts +397 -29
  955. package/src/response-utils.ts +28 -0
  956. package/src/reverse.ts +209 -121
  957. package/src/root-error-boundary.tsx +41 -29
  958. package/src/route-content-wrapper.tsx +7 -4
  959. package/src/route-definition/dsl-helpers.ts +1134 -0
  960. package/src/route-definition/helper-factories.ts +200 -0
  961. package/src/route-definition/helpers-types.ts +478 -0
  962. package/src/route-definition/index.ts +55 -0
  963. package/src/route-definition/redirect.ts +101 -0
  964. package/src/route-definition/resolve-handler-use.ts +155 -0
  965. package/src/route-definition.ts +1 -1431
  966. package/src/route-map-builder.ts +162 -123
  967. package/src/route-name.ts +53 -0
  968. package/src/route-types.ts +66 -9
  969. package/src/router/content-negotiation.ts +215 -0
  970. package/src/router/debug-manifest.ts +72 -0
  971. package/src/router/error-handling.ts +9 -9
  972. package/src/router/find-match.ts +160 -0
  973. package/src/router/handler-context.ts +455 -86
  974. package/src/router/intercept-resolution.ts +35 -20
  975. package/src/router/lazy-includes.ts +237 -0
  976. package/src/router/loader-resolution.ts +359 -128
  977. package/src/router/logging.ts +251 -0
  978. package/src/router/manifest.ts +98 -32
  979. package/src/router/match-api.ts +195 -261
  980. package/src/router/match-context.ts +4 -2
  981. package/src/router/match-handlers.ts +440 -0
  982. package/src/router/match-middleware/background-revalidation.ts +108 -93
  983. package/src/router/match-middleware/cache-lookup.ts +415 -86
  984. package/src/router/match-middleware/cache-store.ts +91 -29
  985. package/src/router/match-middleware/intercept-resolution.ts +48 -21
  986. package/src/router/match-middleware/segment-resolution.ts +73 -9
  987. package/src/router/match-pipelines.ts +10 -45
  988. package/src/router/match-result.ts +135 -35
  989. package/src/router/metrics.ts +240 -15
  990. package/src/router/middleware-cookies.ts +55 -0
  991. package/src/router/middleware-types.ts +200 -0
  992. package/src/router/middleware.ts +373 -371
  993. package/src/router/navigation-snapshot.ts +182 -0
  994. package/src/router/pattern-matching.ts +251 -44
  995. package/src/router/prerender-match.ts +502 -0
  996. package/src/router/preview-match.ts +98 -0
  997. package/src/router/request-classification.ts +310 -0
  998. package/src/router/revalidation.ts +137 -38
  999. package/src/router/route-snapshot.ts +245 -0
  1000. package/src/router/router-context.ts +41 -21
  1001. package/src/router/router-interfaces.ts +484 -0
  1002. package/src/router/router-options.ts +618 -0
  1003. package/src/router/router-registry.ts +24 -0
  1004. package/src/router/segment-resolution/fresh.ts +748 -0
  1005. package/src/router/segment-resolution/helpers.ts +268 -0
  1006. package/src/router/segment-resolution/loader-cache.ts +199 -0
  1007. package/src/router/segment-resolution/revalidation.ts +1379 -0
  1008. package/src/router/segment-resolution/static-store.ts +67 -0
  1009. package/src/router/segment-resolution.ts +21 -1315
  1010. package/src/router/segment-wrappers.ts +291 -0
  1011. package/src/router/telemetry-otel.ts +299 -0
  1012. package/src/router/telemetry.ts +300 -0
  1013. package/src/router/timeout.ts +148 -0
  1014. package/src/router/trie-matching.ts +103 -30
  1015. package/src/router/types.ts +17 -9
  1016. package/src/router/url-params.ts +49 -0
  1017. package/src/router.ts +647 -1988
  1018. package/src/rsc/handler-context.ts +45 -0
  1019. package/src/rsc/handler.ts +864 -1114
  1020. package/src/rsc/helpers.ts +181 -19
  1021. package/src/rsc/index.ts +0 -20
  1022. package/src/rsc/loader-fetch.ts +229 -0
  1023. package/src/rsc/manifest-init.ts +90 -0
  1024. package/src/rsc/nonce.ts +14 -0
  1025. package/src/rsc/origin-guard.ts +141 -0
  1026. package/src/rsc/progressive-enhancement.ts +393 -0
  1027. package/src/rsc/response-error.ts +37 -0
  1028. package/src/rsc/response-route-handler.ts +360 -0
  1029. package/src/rsc/rsc-rendering.ts +253 -0
  1030. package/src/rsc/runtime-warnings.ts +42 -0
  1031. package/src/rsc/server-action.ts +358 -0
  1032. package/src/rsc/ssr-setup.ts +128 -0
  1033. package/src/rsc/types.ts +46 -11
  1034. package/src/search-params.ts +230 -0
  1035. package/src/segment-content-promise.ts +67 -0
  1036. package/src/segment-loader-promise.ts +122 -0
  1037. package/src/segment-system.tsx +134 -36
  1038. package/src/server/context.ts +333 -59
  1039. package/src/server/cookie-store.ts +190 -0
  1040. package/src/server/fetchable-loader-store.ts +37 -0
  1041. package/src/server/handle-store.ts +113 -15
  1042. package/src/server/loader-registry.ts +24 -64
  1043. package/src/server/request-context.ts +603 -109
  1044. package/src/server.ts +35 -155
  1045. package/src/ssr/index.tsx +103 -30
  1046. package/src/static-handler.ts +126 -0
  1047. package/src/theme/ThemeProvider.tsx +21 -15
  1048. package/src/theme/ThemeScript.tsx +5 -5
  1049. package/src/theme/constants.ts +5 -2
  1050. package/src/theme/index.ts +4 -14
  1051. package/src/theme/theme-context.ts +4 -30
  1052. package/src/theme/theme-script.ts +21 -18
  1053. package/src/types/boundaries.ts +158 -0
  1054. package/src/types/cache-types.ts +198 -0
  1055. package/src/types/error-types.ts +192 -0
  1056. package/src/types/global-namespace.ts +100 -0
  1057. package/src/types/handler-context.ts +759 -0
  1058. package/src/types/index.ts +88 -0
  1059. package/src/types/loader-types.ts +209 -0
  1060. package/src/types/request-scope.ts +126 -0
  1061. package/src/types/route-config.ts +170 -0
  1062. package/src/types/route-entry.ts +120 -0
  1063. package/src/types/segments.ts +150 -0
  1064. package/src/types.ts +1 -1757
  1065. package/src/urls/include-helper.ts +207 -0
  1066. package/src/urls/index.ts +53 -0
  1067. package/src/urls/path-helper-types.ts +372 -0
  1068. package/src/urls/path-helper.ts +364 -0
  1069. package/src/urls/pattern-types.ts +107 -0
  1070. package/src/urls/response-types.ts +108 -0
  1071. package/src/urls/type-extraction.ts +372 -0
  1072. package/src/urls/urls-function.ts +98 -0
  1073. package/src/urls.ts +1 -1282
  1074. package/src/use-loader.tsx +161 -81
  1075. package/src/vite/debug.ts +184 -0
  1076. package/src/vite/discovery/bundle-postprocess.ts +181 -0
  1077. package/src/vite/discovery/discover-routers.ts +376 -0
  1078. package/src/vite/discovery/prerender-collection.ts +486 -0
  1079. package/src/vite/discovery/route-types-writer.ts +258 -0
  1080. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1081. package/src/vite/discovery/state.ts +117 -0
  1082. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1083. package/src/vite/index.ts +15 -1963
  1084. package/src/vite/plugin-types.ts +103 -0
  1085. package/src/vite/plugins/cjs-to-esm.ts +98 -0
  1086. package/src/vite/plugins/client-ref-dedup.ts +131 -0
  1087. package/src/vite/plugins/client-ref-hashing.ts +117 -0
  1088. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1089. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1090. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  1091. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +107 -64
  1092. package/src/vite/plugins/expose-id-utils.ts +299 -0
  1093. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1094. package/src/vite/plugins/expose-ids/handler-transform.ts +209 -0
  1095. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1096. package/src/vite/plugins/expose-ids/router-transform.ts +127 -0
  1097. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1098. package/src/vite/plugins/expose-internal-ids.ts +816 -0
  1099. package/src/vite/plugins/performance-tracks.ts +96 -0
  1100. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1101. package/src/vite/plugins/use-cache-transform.ts +336 -0
  1102. package/src/vite/plugins/version-injector.ts +83 -0
  1103. package/src/vite/plugins/version-plugin.ts +266 -0
  1104. package/src/vite/plugins/virtual-entries.ts +123 -0
  1105. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1106. package/src/vite/rango.ts +497 -0
  1107. package/src/vite/router-discovery.ts +1111 -0
  1108. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1109. package/src/vite/utils/banner.ts +36 -0
  1110. package/src/vite/utils/bundle-analysis.ts +137 -0
  1111. package/src/vite/utils/manifest-utils.ts +70 -0
  1112. package/src/vite/utils/package-resolution.ts +161 -0
  1113. package/src/vite/utils/prerender-utils.ts +221 -0
  1114. package/src/vite/utils/shared-utils.ts +170 -0
  1115. package/CLAUDE.md +0 -43
  1116. package/src/browser/lru-cache.ts +0 -69
  1117. package/src/browser/request-controller.ts +0 -164
  1118. package/src/cache/memory-store.ts +0 -253
  1119. package/src/router.gen.ts +0 -6
  1120. package/src/urls.gen.ts +0 -8
  1121. package/src/vite/expose-handle-id.ts +0 -209
  1122. package/src/vite/expose-loader-id.ts +0 -426
  1123. package/src/vite/expose-location-state-id.ts +0 -177
  1124. package/src/vite/expose-prerender-handler-id.ts +0 -429
  1125. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Flatten prefix tree leaf nodes into precomputed route entries.
3
+ * Leaf nodes have no children (no nested includes), so their routes can be
4
+ * used directly by evaluateLazyEntry() without running the handler.
5
+ * Non-leaf nodes are skipped because they have nested lazy includes that
6
+ * require the handler to run for discovery.
7
+ */
8
+ export function flattenLeafEntries(
9
+ prefixTree: Record<string, any>,
10
+ routeManifest: Record<string, string>,
11
+ result: Array<{ staticPrefix: string; routes: Record<string, string> }>,
12
+ ): void {
13
+ function visit(node: any): void {
14
+ const children = node.children || {};
15
+ if (
16
+ Object.keys(children).length === 0 &&
17
+ node.routes &&
18
+ node.routes.length > 0
19
+ ) {
20
+ // Leaf node: collect its routes from the manifest
21
+ const routes: Record<string, string> = {};
22
+ for (const name of node.routes) {
23
+ if (name in routeManifest) {
24
+ routes[name] = routeManifest[name];
25
+ }
26
+ }
27
+ result.push({ staticPrefix: node.staticPrefix, routes });
28
+ } else {
29
+ // Non-leaf: recurse into children
30
+ for (const child of Object.values(children)) {
31
+ visit(child);
32
+ }
33
+ }
34
+ }
35
+ for (const node of Object.values(prefixTree)) {
36
+ visit(node);
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Walk prefix tree to map each route name to its scope's staticPrefix.
42
+ */
43
+ export function buildRouteToStaticPrefix(
44
+ prefixTree: Record<string, any>,
45
+ result: Record<string, string>,
46
+ ): void {
47
+ function visit(node: any): void {
48
+ const sp = node.staticPrefix || "";
49
+ for (const name of node.routes || []) {
50
+ result[name] = sp;
51
+ }
52
+ for (const child of Object.values(node.children || {})) {
53
+ visit(child);
54
+ }
55
+ }
56
+ for (const node of Object.values(prefixTree)) {
57
+ visit(node);
58
+ }
59
+ }
60
+
61
+ /**
62
+ * Wrap a value as `JSON.parse('...')` instead of a JS object literal.
63
+ * V8's JSON parser is significantly faster than its full JS parser for large
64
+ * objects, so this improves startup time for big route manifests.
65
+ */
66
+ export function jsonParseExpression(value: unknown): string {
67
+ const json = JSON.stringify(value);
68
+ const escaped = json.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
69
+ return `JSON.parse('${escaped}')`;
70
+ }
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Package Resolution Utilities
3
+ *
4
+ * Handles detection of workspace vs npm install context and generates
5
+ * appropriate aliases and exclude lists for Vite configuration.
6
+ */
7
+
8
+ import { existsSync } from "node:fs";
9
+ import { createRequire } from "node:module";
10
+ import { resolve } from "node:path";
11
+ import packageJson from "../../../package.json";
12
+
13
+ const require = createRequire(import.meta.url);
14
+
15
+ /**
16
+ * The canonical name used in virtual entries (without scope)
17
+ */
18
+ const VIRTUAL_PACKAGE_NAME = "@rangojs/router";
19
+
20
+ /**
21
+ * Get the published package name (e.g., "@rangojs/router")
22
+ */
23
+ export function getPublishedPackageName(): string {
24
+ return packageJson.name;
25
+ }
26
+
27
+ /**
28
+ * Check if the package is installed from npm (scoped) vs workspace (unscoped)
29
+ *
30
+ * In workspace development:
31
+ * - Package is installed as "@rangojs/router" via pnpm workspace alias
32
+ * - The scoped name (@rangojs/router) doesn't exist in node_modules
33
+ *
34
+ * When installed from npm:
35
+ * - Package is installed as "@rangojs/router"
36
+ * - We need aliases to map "@rangojs/router/*" to "@rangojs/router/*"
37
+ */
38
+ export function isInstalledFromNpm(): boolean {
39
+ const packageName = getPublishedPackageName();
40
+ // Check if the scoped package exists in node_modules
41
+ return existsSync(resolve(process.cwd(), "node_modules", packageName));
42
+ }
43
+
44
+ /**
45
+ * Check if we're in a monorepo/workspace development context
46
+ */
47
+ export function isWorkspaceDevelopment(): boolean {
48
+ return !isInstalledFromNpm();
49
+ }
50
+
51
+ /**
52
+ * Subpaths derived from package.json exports that use TypeScript source.
53
+ * These must be excluded from Vite's dependency optimization (they ship
54
+ * as .ts/.tsx, not compiled JS) and aliased when installed from npm.
55
+ *
56
+ * Derived automatically from the exports field to prevent drift.
57
+ */
58
+ const SOURCE_EXPORT_SUBPATHS = Object.keys(packageJson.exports)
59
+ .filter((key) => {
60
+ const entry = (
61
+ packageJson.exports as Record<string, Record<string, string>>
62
+ )[key];
63
+ // Include if any non-types condition points to TypeScript source
64
+ return Object.entries(entry).some(
65
+ ([condition, path]) =>
66
+ condition !== "types" &&
67
+ typeof path === "string" &&
68
+ /\.tsx?$/.test(path),
69
+ );
70
+ })
71
+ .map((key) => key.replace(/^\./, ""));
72
+
73
+ /**
74
+ * Generate the list of modules to exclude from Vite's dependency optimization.
75
+ *
76
+ * We include both the published name and the virtual name because
77
+ * Vite's optimizer runs before alias resolution.
78
+ */
79
+ export function getExcludeDeps(): string[] {
80
+ const packageName = getPublishedPackageName();
81
+ const excludes: string[] = [];
82
+
83
+ for (const subpath of SOURCE_EXPORT_SUBPATHS) {
84
+ // Add scoped package paths
85
+ excludes.push(`${packageName}${subpath}`);
86
+ // Add virtual/aliased paths (before alias resolution)
87
+ if (packageName !== VIRTUAL_PACKAGE_NAME) {
88
+ excludes.push(`${VIRTUAL_PACKAGE_NAME}${subpath}`);
89
+ }
90
+ }
91
+
92
+ return excludes;
93
+ }
94
+
95
+ /**
96
+ * Subpaths that need aliasing — same as SOURCE_EXPORT_SUBPATHS.
97
+ * When installed from npm, virtual entries may use a different package name
98
+ * than the published one; aliases bridge them.
99
+ */
100
+ const ALIAS_SUBPATHS = SOURCE_EXPORT_SUBPATHS;
101
+
102
+ /**
103
+ * Generate aliases to map virtual package paths to the actual published package.
104
+ *
105
+ * Only needed when installed from npm, where the package is under @rangojs/router
106
+ * but virtual entries import from rsc-router/*.
107
+ *
108
+ * Returns empty object in workspace development where rsc-router resolves directly.
109
+ */
110
+ export function getPackageAliases(): Record<string, string> {
111
+ if (isWorkspaceDevelopment()) {
112
+ // No aliases needed - rsc-router resolves directly
113
+ return {};
114
+ }
115
+
116
+ const packageName = getPublishedPackageName();
117
+ const aliases: Record<string, string> = {};
118
+
119
+ for (const subpath of ALIAS_SUBPATHS) {
120
+ aliases[`${VIRTUAL_PACKAGE_NAME}${subpath}`] = `${packageName}${subpath}`;
121
+ }
122
+
123
+ return aliases;
124
+ }
125
+
126
+ /**
127
+ * Plugin-rsc pushes bare specs like
128
+ * `@vitejs/plugin-rsc/vendor/react-server-dom/client.edge` into
129
+ * `optimizeDeps.include` for the ssr and rsc environments. In strict pnpm
130
+ * consumer apps, `@vitejs/plugin-rsc` is only reachable from @rangojs/router's
131
+ * node_modules, so Vite's optimizer — which resolves from the project root —
132
+ * can't find them and emits "Failed to resolve dependency" warnings.
133
+ *
134
+ * We resolve those specs from this plugin's location (where plugin-rsc is
135
+ * guaranteed to be installed as our dep) and expose them as `resolve.alias`
136
+ * entries. The optimizer's resolver honors aliases, so the bare specs map to
137
+ * absolute paths and resolve cleanly.
138
+ */
139
+ export function getVendorAliases(): Record<string, string> {
140
+ // client.browser is intentionally NOT aliased. plugin-rsc injects it into
141
+ // the client env's optimizeDeps.include; Vite's manual-include path resolves
142
+ // and pre-bundles regardless of optimizeDeps.exclude, so aliasing would
143
+ // trigger esbuild pre-bundling of the CJS vendor file and bypass the
144
+ // cjs-to-esm transform that patches `require('react'|'react-dom')` into
145
+ // real ESM imports. The consumer may still see a single "Failed to resolve"
146
+ // warning for client.browser; runtime resolution from plugin-rsc's own
147
+ // importer works because Vite resolves relative to the importer (not root).
148
+ const specs = [
149
+ "@vitejs/plugin-rsc/vendor/react-server-dom/client.edge",
150
+ "@vitejs/plugin-rsc/vendor/react-server-dom/server.edge",
151
+ ];
152
+ const aliases: Record<string, string> = {};
153
+ for (const spec of specs) {
154
+ try {
155
+ aliases[spec] = require.resolve(spec);
156
+ } catch {
157
+ // Spec unresolvable (unexpected but non-fatal — Vite will warn as before).
158
+ }
159
+ }
160
+ return aliases;
161
+ }
@@ -0,0 +1,221 @@
1
+ import { createHash } from "node:crypto";
2
+ import {
3
+ copyFileSync,
4
+ existsSync,
5
+ mkdirSync,
6
+ rmSync,
7
+ statSync,
8
+ writeFileSync,
9
+ } from "node:fs";
10
+ import { resolve } from "node:path";
11
+
12
+ /**
13
+ * Escape special RegExp characters in a string for safe interpolation
14
+ * into new RegExp() patterns.
15
+ */
16
+ export function escapeRegExp(str: string): string {
17
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
18
+ }
19
+
20
+ /**
21
+ * Encode route param values for path interpolation while preserving path
22
+ * separators for wildcard params (splat-style values can include `/`).
23
+ */
24
+ export function encodePathParam(value: unknown): string {
25
+ return String(value)
26
+ .split("/")
27
+ .map((segment) => encodeURIComponent(segment))
28
+ .join("/");
29
+ }
30
+
31
+ /**
32
+ * Substitute route params into a pattern, stripping constraint and optional
33
+ * syntax (:param(a|b)? -> value). Also handles wildcard params (*key).
34
+ * Optional params not present in `params` are removed from the output.
35
+ */
36
+ export function substituteRouteParams(
37
+ pattern: string,
38
+ params: Record<string, string>,
39
+ encode: (value: string) => string = encodeURIComponent,
40
+ ): string {
41
+ let result = pattern;
42
+ let hadOmittedOptional = false;
43
+
44
+ // First pass: substitute provided params.
45
+ // Empty string on an optional placeholder is treated as omitted (the trie
46
+ // matcher fills unmatched optionals with "" — letting the second pass
47
+ // strip them keeps slash cleanup consistent). Empty string on required
48
+ // `:key` or wildcard `*key` still substitutes, matching prior behaviour.
49
+ for (const [key, value] of Object.entries(params)) {
50
+ const escaped = escapeRegExp(key);
51
+ if (value === "") {
52
+ // Only replace required placeholders (negative lookahead for `?`);
53
+ // leave `:key?` for the second pass.
54
+ result = result.replace(
55
+ new RegExp(`:${escaped}(\\([^)]*\\))?(?!\\?)`),
56
+ "",
57
+ );
58
+ result = result.replace(`*${key}`, "");
59
+ } else {
60
+ result = result.replace(
61
+ new RegExp(`:${escaped}(\\([^)]*\\))?\\??`),
62
+ encode(value),
63
+ );
64
+ result = result.replace(`*${key}`, encode(value));
65
+ }
66
+ }
67
+
68
+ // Second pass: strip remaining optional param placeholders not in params
69
+ result = result.replace(/:([a-zA-Z_][a-zA-Z0-9_]*)(\([^)]*\))?\?/g, () => {
70
+ hadOmittedOptional = true;
71
+ return "";
72
+ });
73
+
74
+ // Clean up slashes from omitted optional segments
75
+ if (hadOmittedOptional) {
76
+ const hadTrailingSlash = pattern.length > 1 && pattern.endsWith("/");
77
+ result = result.replace(/\/\/+/g, "/").replace(/\/+$/, "") || "/";
78
+ if (hadTrailingSlash && !result.endsWith("/")) result += "/";
79
+ }
80
+
81
+ return result;
82
+ }
83
+
84
+ /**
85
+ * Run an async function over items with bounded concurrency.
86
+ * Errors propagate immediately and abort remaining work.
87
+ */
88
+ export async function runWithConcurrency<T>(
89
+ items: T[],
90
+ concurrency: number,
91
+ fn: (item: T) => Promise<void>,
92
+ ): Promise<void> {
93
+ const limit = Math.max(1, Math.min(concurrency, items.length));
94
+ if (limit <= 1) {
95
+ for (const item of items) await fn(item);
96
+ return;
97
+ }
98
+ let nextIndex = 0;
99
+ async function worker() {
100
+ while (nextIndex < items.length) {
101
+ const idx = nextIndex++;
102
+ await fn(items[idx]);
103
+ }
104
+ }
105
+ await Promise.all(Array.from({ length: limit }, () => worker()));
106
+ }
107
+
108
+ /**
109
+ * Group prerender entries by their concurrency setting so each group
110
+ * can be rendered with the appropriate parallelism.
111
+ */
112
+ export function groupByConcurrency<T extends { concurrency: number }>(
113
+ entries: T[],
114
+ ): { concurrency: number; entries: T[] }[] {
115
+ const map = new Map<number, T[]>();
116
+ for (const entry of entries) {
117
+ const key = entry.concurrency;
118
+ let group = map.get(key);
119
+ if (!group) {
120
+ group = [];
121
+ map.set(key, group);
122
+ }
123
+ group.push(entry);
124
+ }
125
+ return Array.from(map.entries(), ([concurrency, items]) => ({
126
+ concurrency,
127
+ entries: items,
128
+ }));
129
+ }
130
+
131
+ /**
132
+ * Notify all routers' onError callbacks about a build-time error.
133
+ * Uses a synthetic request since there is no real request during build.
134
+ */
135
+ export function notifyOnError(
136
+ registry: Map<string, any>,
137
+ error: unknown,
138
+ phase: "prerender" | "static",
139
+ routeKey?: string,
140
+ pathname?: string,
141
+ skipped?: boolean,
142
+ ): void {
143
+ for (const [, routerInstance] of registry) {
144
+ const onError = routerInstance.onError;
145
+ if (!onError) continue;
146
+
147
+ const errorObj = error instanceof Error ? error : new Error(String(error));
148
+ const syntheticUrl = new URL("http://prerender" + (pathname || "/"));
149
+ const context = {
150
+ error: errorObj,
151
+ phase,
152
+ request: new Request(syntheticUrl),
153
+ url: syntheticUrl,
154
+ pathname: syntheticUrl.pathname,
155
+ method: "GET",
156
+ routeKey,
157
+ metadata: skipped ? { skipped: true } : undefined,
158
+ };
159
+
160
+ try {
161
+ const result = onError(context);
162
+ if (result instanceof Promise) {
163
+ result.catch((cbErr: unknown) => {
164
+ console.error(`[Build.onError] Callback error:`, cbErr);
165
+ });
166
+ }
167
+ } catch (cbErr) {
168
+ console.error(`[Build.onError] Callback error:`, cbErr);
169
+ }
170
+ break; // Only notify the first router with onError
171
+ }
172
+ }
173
+
174
+ function getStagedAssetDir(projectRoot: string): string {
175
+ return resolve(projectRoot, "node_modules/.rangojs-router-build/rsc-assets");
176
+ }
177
+
178
+ export function resetStagedBuildAssets(projectRoot: string): void {
179
+ rmSync(getStagedAssetDir(projectRoot), { recursive: true, force: true });
180
+ }
181
+
182
+ export function stageBuildAssetModule(
183
+ projectRoot: string,
184
+ prefix: "__pr" | "__st",
185
+ exportValue: string,
186
+ ): string {
187
+ const stagedDir = getStagedAssetDir(projectRoot);
188
+ mkdirSync(stagedDir, { recursive: true });
189
+
190
+ const contentHash = createHash("sha256")
191
+ .update(exportValue)
192
+ .digest("hex")
193
+ .slice(0, 8);
194
+ const fileName = `${prefix}-${contentHash}.js`;
195
+ const filePath = resolve(stagedDir, fileName);
196
+
197
+ if (!existsSync(filePath)) {
198
+ writeFileSync(filePath, `export default ${exportValue};\n`);
199
+ }
200
+
201
+ return fileName;
202
+ }
203
+
204
+ export function copyStagedBuildAssets(
205
+ projectRoot: string,
206
+ fileNames: Iterable<string>,
207
+ ): number {
208
+ const stagedDir = getStagedAssetDir(projectRoot);
209
+ const distAssetsDir = resolve(projectRoot, "dist/rsc/assets");
210
+ mkdirSync(distAssetsDir, { recursive: true });
211
+
212
+ let totalBytes = 0;
213
+ for (const fileName of new Set(fileNames)) {
214
+ const stagedPath = resolve(stagedDir, fileName);
215
+ const distPath = resolve(distAssetsDir, fileName);
216
+ copyFileSync(stagedPath, distPath);
217
+ totalBytes += statSync(stagedPath).size;
218
+ }
219
+
220
+ return totalBytes;
221
+ }
@@ -0,0 +1,170 @@
1
+ import type { Plugin } from "vite";
2
+ import * as Vite from "vite";
3
+ import { getPublishedPackageName } from "./package-resolution.js";
4
+ import { performanceTracksOptimizeDepsPlugin } from "../plugins/performance-tracks.js";
5
+ import {
6
+ VIRTUAL_ENTRY_BROWSER,
7
+ VIRTUAL_ENTRY_SSR,
8
+ getVirtualEntryRSC,
9
+ VIRTUAL_IDS,
10
+ } from "../plugins/virtual-entries.js";
11
+
12
+ /**
13
+ * esbuild plugin to provide rsc-router:version virtual module during optimization.
14
+ * This is needed because esbuild runs during Vite's dependency optimization phase,
15
+ * before Vite's plugin system can handle virtual modules.
16
+ */
17
+ const versionEsbuildPlugin = {
18
+ name: "@rangojs/router-version",
19
+ setup(build: any): void {
20
+ build.onResolve({ filter: /^rsc-router:version$/ }, (args: any) => ({
21
+ path: args.path,
22
+ namespace: "@rangojs/router-virtual",
23
+ }));
24
+ build.onLoad(
25
+ { filter: /.*/, namespace: "@rangojs/router-virtual" },
26
+ () => ({
27
+ contents: `export const VERSION = "dev";`,
28
+ loader: "js",
29
+ }),
30
+ );
31
+ },
32
+ };
33
+
34
+ /**
35
+ * Shared esbuild options for dependency optimization.
36
+ * Includes the version stub plugin for all environments.
37
+ */
38
+ export const sharedEsbuildOptions: {
39
+ plugins: any[];
40
+ } = {
41
+ plugins: [versionEsbuildPlugin, performanceTracksOptimizeDepsPlugin()],
42
+ };
43
+
44
+ /**
45
+ * Create a virtual modules plugin for default entry files.
46
+ * Provides virtual module content when entries use VIRTUAL_IDS (no custom entry configured).
47
+ */
48
+ export function createVirtualEntriesPlugin(
49
+ entries: { client: string; ssr: string; rsc?: string },
50
+ routerPathRef?: { path?: string },
51
+ ): Plugin {
52
+ // Build virtual modules map based on which entries use virtual IDs
53
+ const virtualModules: Record<string, string> = {};
54
+
55
+ if (entries.client === VIRTUAL_IDS.browser) {
56
+ virtualModules[VIRTUAL_IDS.browser] = VIRTUAL_ENTRY_BROWSER;
57
+ }
58
+ if (entries.ssr === VIRTUAL_IDS.ssr) {
59
+ virtualModules[VIRTUAL_IDS.ssr] = VIRTUAL_ENTRY_SSR;
60
+ }
61
+
62
+ // RSC entry is resolved lazily in load() because routerPath may be
63
+ // set after plugin creation (e.g. by the auto-discover config() hook).
64
+ // Track all known virtual IDs for resolveId (content is separate).
65
+ const knownIds = new Set(Object.keys(virtualModules));
66
+ if (entries.rsc === VIRTUAL_IDS.rsc) {
67
+ knownIds.add(VIRTUAL_IDS.rsc);
68
+ }
69
+
70
+ return {
71
+ name: "@rangojs/router:virtual-entries",
72
+ enforce: "pre",
73
+
74
+ resolveId(id) {
75
+ if (knownIds.has(id)) {
76
+ return "\0" + id;
77
+ }
78
+ // Handle if the id already has the null prefix (RSC plugin wrapper imports)
79
+ if (id.startsWith("\0") && knownIds.has(id.slice(1))) {
80
+ return id;
81
+ }
82
+ return null;
83
+ },
84
+
85
+ load(id) {
86
+ if (id.startsWith("\0virtual:rsc-router/")) {
87
+ const virtualId = id.slice(1);
88
+ if (virtualId in virtualModules) {
89
+ return virtualModules[virtualId];
90
+ }
91
+ // Lazy RSC entry: routerPath may have been set by a config() hook
92
+ if (virtualId === VIRTUAL_IDS.rsc && routerPathRef?.path) {
93
+ const raw = routerPathRef.path.startsWith(".")
94
+ ? "/" + routerPathRef.path.slice(2) // ./src/router.tsx -> /src/router.tsx
95
+ : routerPathRef.path;
96
+ // Normalize backslashes for Windows (path.join/slice preserve native separators)
97
+ const absoluteRouterPath = raw.replaceAll("\\", "/");
98
+ return getVirtualEntryRSC(absoluteRouterPath);
99
+ }
100
+ }
101
+ return null;
102
+ },
103
+ };
104
+ }
105
+
106
+ /**
107
+ * Rollup onwarn handler that suppresses known harmless warnings:
108
+ * - "use client" directives: handled by the RSC plugin, not relevant to Rollup
109
+ * - sourcemap errors: caused by "use client" directive at line 1:0 confusing sourcemap resolution
110
+ * - sourcemap incomplete: plugins that transform without generating sourcemaps (router + RSC plugin)
111
+ * - dynamic/static mixed imports: expected for router internals (e.g. request-context, cache-scope)
112
+ * - empty bundle: @vitejs/plugin-rsc scan build (step 1/5) produces an empty "index" chunk
113
+ * because the RSC entry is fully externalized during client-reference analysis
114
+ */
115
+ export function onwarn(
116
+ warning: Vite.Rollup.RollupLog,
117
+ defaultHandler: (warning: Vite.Rollup.RollupLog) => void,
118
+ ): void {
119
+ if (
120
+ warning.code === "MODULE_LEVEL_DIRECTIVE" ||
121
+ warning.code === "SOURCEMAP_ERROR" ||
122
+ warning.code === "EMPTY_BUNDLE"
123
+ ) {
124
+ return;
125
+ }
126
+ // @vitejs/plugin-rsc@0.5.14: rsc:virtual:vite-rsc/assets-manifest renderChunk
127
+ // returns { code } without map, causing Rollup to warn about incorrect sourcemaps.
128
+ // This is harmless (simple string replacement). Remove this suppression if a
129
+ // future version of @vitejs/plugin-rsc fixes the missing sourcemap.
130
+ if (warning.message?.includes("Sourcemap is likely to be incorrect")) {
131
+ return;
132
+ }
133
+ if (
134
+ warning.plugin === "vite:reporter" &&
135
+ warning.message?.includes(
136
+ "dynamic import will not move module into another chunk",
137
+ )
138
+ ) {
139
+ return;
140
+ }
141
+ defaultHandler(warning);
142
+ }
143
+
144
+ /**
145
+ * Manual chunks configuration for client build.
146
+ * Splits React and router packages into separate chunks for better caching.
147
+ */
148
+ export function getManualChunks(id: string): string | undefined {
149
+ const normalized = Vite.normalizePath(id);
150
+
151
+ if (
152
+ normalized.includes("node_modules/react/") ||
153
+ normalized.includes("node_modules/react-dom/") ||
154
+ normalized.includes("node_modules/react-server-dom-webpack/") ||
155
+ normalized.includes("node_modules/@vitejs/plugin-rsc/")
156
+ ) {
157
+ return "react";
158
+ }
159
+ // Use dynamic package name from package.json
160
+ // Check both npm install path and workspace symlink resolved path
161
+ const packageName = getPublishedPackageName();
162
+ if (
163
+ normalized.includes(`node_modules/${packageName}/`) ||
164
+ normalized.includes("packages/rsc-router/") ||
165
+ normalized.includes("packages/rangojs-router/")
166
+ ) {
167
+ return "router";
168
+ }
169
+ return undefined;
170
+ }
package/CLAUDE.md DELETED
@@ -1,43 +0,0 @@
1
- # @rangojs/router
2
-
3
- Run `/rango` first to understand the API. Skills are in `node_modules/@rangojs/router/skills/`.
4
-
5
- ## Tree-Structure-Critical Files (DO NOT MODIFY without understanding)
6
-
7
- The following files control the React tree structure. Changing the tree structure
8
- (element types, nesting depth, or keys at any position) between SSR, navigation,
9
- and action renders will cause React to remount components, destroying client state
10
- like `useActionState`, refs, and local state. This is extremely hard to debug.
11
-
12
- **Protected files:**
13
-
14
- - `src/segment-system.tsx` - `renderSegments()` builds the React tree from segments.
15
- The `loading` property determines tree structure:
16
- - `undefined` / `null` -> OutletProvider directly (no boundary)
17
- - `false` -> LoaderBoundary + OutletProvider (boundary, no RouteContentWrapper)
18
- - truthy (ReactNode) -> LoaderBoundary + OutletProvider + RouteContentWrapper
19
-
20
- - `src/route-content-wrapper.tsx` - `LoaderBoundary` and `RouteContentWrapper`.
21
- These add structural depth (Suspense boundaries) to the React tree.
22
-
23
- - `src/browser/server-action-bridge.ts` - Merges server action segments with
24
- cached segments. Must preserve cached `loading` values to prevent tree drift.
25
-
26
- - `src/browser/partial-update.ts` - Merges navigation segments with cached segments.
27
-
28
- **Rules:**
29
-
30
- 1. Never change the conditional logic in `renderSegments()` that decides between
31
- LoaderBoundary/RouteContentWrapper/OutletProvider without verifying all three
32
- render paths (SSR, navigation, action) produce identical tree structures.
33
-
34
- 2. Never add or remove wrapper elements (Suspense, div, Fragment) around segment
35
- content without checking that the same wrappers exist in ALL render paths.
36
-
37
- 3. When merging segments (action bridge, partial update), always preserve the
38
- cached `loading` value if it differs from the server value. The server may
39
- return different `loading` values based on `isSSR` context.
40
-
41
- 4. Run `pnpm --filter @rangojs/router exec playwright test loader-behavior` after
42
- any changes to these files. The skipSSR action tests specifically catch tree
43
- structure regressions.