@rangojs/router 0.0.0-experimental.9eb4192e → 0.0.0-experimental.a014d2b7

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 (1191) hide show
  1. package/AGENTS.md +8 -0
  2. package/README.md +123 -15
  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 +319 -95
  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/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -28
  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/{src/handles/index.ts → dist/handles/index.d.ts} +1 -2
  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/dist/href-context.d.ts +29 -0
  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/{src/network-error-thrower.tsx → dist/network-error-thrower.d.ts} +4 -10
  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/testing/vitest.js +82 -0
  712. package/dist/theme/ThemeProvider.d.ts +20 -0
  713. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  714. package/dist/theme/ThemeProvider.js +240 -0
  715. package/dist/theme/ThemeProvider.js.map +1 -0
  716. package/dist/theme/ThemeScript.d.ts +48 -0
  717. package/dist/theme/ThemeScript.d.ts.map +1 -0
  718. package/dist/theme/ThemeScript.js +13 -0
  719. package/dist/theme/ThemeScript.js.map +1 -0
  720. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  721. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  722. package/dist/theme/__tests__/theme.test.js +103 -0
  723. package/dist/theme/__tests__/theme.test.js.map +1 -0
  724. package/dist/theme/constants.d.ts +29 -0
  725. package/dist/theme/constants.d.ts.map +1 -0
  726. package/dist/theme/constants.js +48 -0
  727. package/dist/theme/constants.js.map +1 -0
  728. package/dist/theme/index.d.ts +31 -0
  729. package/dist/theme/index.d.ts.map +1 -0
  730. package/dist/theme/index.js +36 -0
  731. package/dist/theme/index.js.map +1 -0
  732. package/dist/theme/theme-context.d.ts +40 -0
  733. package/dist/theme/theme-context.d.ts.map +1 -0
  734. package/dist/theme/theme-context.js +60 -0
  735. package/dist/theme/theme-context.js.map +1 -0
  736. package/dist/theme/theme-script.d.ts +27 -0
  737. package/dist/theme/theme-script.d.ts.map +1 -0
  738. package/dist/theme/theme-script.js +147 -0
  739. package/dist/theme/theme-script.js.map +1 -0
  740. package/dist/theme/types.d.ts +163 -0
  741. package/dist/theme/types.d.ts.map +1 -0
  742. package/dist/theme/types.js +11 -0
  743. package/dist/theme/types.js.map +1 -0
  744. package/dist/theme/use-theme.d.ts +12 -0
  745. package/dist/theme/use-theme.d.ts.map +1 -0
  746. package/dist/theme/use-theme.js +40 -0
  747. package/dist/theme/use-theme.js.map +1 -0
  748. package/dist/types.d.ts +1479 -0
  749. package/dist/types.d.ts.map +1 -0
  750. package/dist/types.js +10 -0
  751. package/dist/types.js.map +1 -0
  752. package/dist/urls.d.ts +441 -0
  753. package/dist/urls.d.ts.map +1 -0
  754. package/dist/urls.gen.d.ts +8 -0
  755. package/dist/urls.gen.d.ts.map +1 -0
  756. package/dist/urls.gen.js +8 -0
  757. package/dist/urls.gen.js.map +1 -0
  758. package/dist/urls.js +443 -0
  759. package/dist/urls.js.map +1 -0
  760. package/dist/use-loader.d.ts +127 -0
  761. package/dist/use-loader.d.ts.map +1 -0
  762. package/dist/use-loader.js +237 -0
  763. package/dist/use-loader.js.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  767. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  771. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  775. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  777. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  779. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  780. package/dist/vite/ast-handler-extract.d.ts +49 -0
  781. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  782. package/dist/vite/ast-handler-extract.js +249 -0
  783. package/dist/vite/ast-handler-extract.js.map +1 -0
  784. package/dist/vite/expose-action-id.d.ts +19 -0
  785. package/dist/vite/expose-action-id.d.ts.map +1 -0
  786. package/dist/vite/expose-action-id.js +250 -0
  787. package/dist/vite/expose-action-id.js.map +1 -0
  788. package/dist/vite/expose-id-utils.d.ts +69 -0
  789. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  790. package/dist/vite/expose-id-utils.js +289 -0
  791. package/dist/vite/expose-id-utils.js.map +1 -0
  792. package/dist/vite/expose-internal-ids.d.ts +22 -0
  793. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  794. package/dist/vite/expose-internal-ids.js +886 -0
  795. package/dist/vite/expose-internal-ids.js.map +1 -0
  796. package/dist/vite/index.d.ts +149 -0
  797. package/dist/vite/index.d.ts.map +1 -0
  798. package/dist/vite/index.js +2011 -783
  799. package/dist/vite/index.js.bak +5448 -0
  800. package/dist/vite/index.js.map +1 -0
  801. package/dist/vite/index.named-routes.gen.ts +103 -0
  802. package/dist/vite/package-resolution.d.ts +43 -0
  803. package/dist/vite/package-resolution.d.ts.map +1 -0
  804. package/dist/vite/package-resolution.js +112 -0
  805. package/dist/vite/package-resolution.js.map +1 -0
  806. package/dist/vite/virtual-entries.d.ts +25 -0
  807. package/dist/vite/virtual-entries.d.ts.map +1 -0
  808. package/dist/vite/virtual-entries.js +110 -0
  809. package/dist/vite/virtual-entries.js.map +1 -0
  810. package/package.json +67 -15
  811. package/skills/api-client/SKILL.md +211 -0
  812. package/skills/breadcrumbs/SKILL.md +61 -1
  813. package/skills/bundle-analysis/SKILL.md +159 -0
  814. package/skills/cache-guide/SKILL.md +224 -32
  815. package/skills/caching/SKILL.md +279 -17
  816. package/skills/composability/SKILL.md +27 -3
  817. package/skills/css/SKILL.md +76 -0
  818. package/skills/debug-manifest/SKILL.md +4 -2
  819. package/skills/document-cache/SKILL.md +78 -55
  820. package/skills/handler-use/SKILL.md +11 -9
  821. package/skills/hooks/SKILL.md +240 -28
  822. package/skills/host-router/SKILL.md +83 -23
  823. package/skills/i18n/SKILL.md +276 -0
  824. package/skills/intercept/SKILL.md +68 -19
  825. package/skills/layout/SKILL.md +13 -9
  826. package/skills/links/SKILL.md +175 -17
  827. package/skills/loader/SKILL.md +217 -24
  828. package/skills/middleware/SKILL.md +18 -10
  829. package/skills/migrate-nextjs/SKILL.md +43 -19
  830. package/skills/migrate-react-router/SKILL.md +8 -2
  831. package/skills/mime-routes/SKILL.md +28 -1
  832. package/skills/observability/SKILL.md +172 -0
  833. package/skills/parallel/SKILL.md +18 -7
  834. package/skills/prerender/SKILL.md +65 -60
  835. package/skills/rango/SKILL.md +251 -24
  836. package/skills/react-compiler/SKILL.md +168 -0
  837. package/skills/response-routes/SKILL.md +115 -48
  838. package/skills/route/SKILL.md +46 -5
  839. package/skills/router-setup/SKILL.md +30 -8
  840. package/skills/scripts/SKILL.md +179 -0
  841. package/skills/server-actions/SKILL.md +775 -0
  842. package/skills/tailwind/SKILL.md +27 -3
  843. package/skills/testing/SKILL.md +130 -0
  844. package/skills/testing/bindings.md +103 -0
  845. package/skills/testing/cache-prerender.md +127 -0
  846. package/skills/testing/client-components.md +124 -0
  847. package/skills/testing/e2e-parity.md +125 -0
  848. package/skills/testing/flight.md +91 -0
  849. package/skills/testing/handles.md +129 -0
  850. package/skills/testing/loader.md +128 -0
  851. package/skills/testing/middleware.md +99 -0
  852. package/skills/testing/render-handler.md +122 -0
  853. package/skills/testing/response-routes.md +95 -0
  854. package/skills/testing/reverse-and-types.md +84 -0
  855. package/skills/testing/server-actions.md +107 -0
  856. package/skills/testing/server-tree.md +128 -0
  857. package/skills/testing/setup.md +123 -0
  858. package/skills/typesafety/SKILL.md +319 -28
  859. package/skills/use-cache/SKILL.md +57 -14
  860. package/skills/view-transitions/SKILL.md +337 -0
  861. package/src/__augment-tests__/augment.ts +81 -0
  862. package/src/__augment-tests__/augmented.check.ts +116 -0
  863. package/src/__internal.ts +0 -65
  864. package/src/browser/action-coordinator.ts +53 -36
  865. package/src/browser/action-fence.ts +47 -0
  866. package/src/browser/app-shell.ts +14 -27
  867. package/src/browser/connection-warmup.ts +134 -0
  868. package/src/browser/cookie-name.ts +140 -0
  869. package/src/browser/event-controller.ts +192 -150
  870. package/src/browser/history-state.ts +21 -0
  871. package/src/browser/index.ts +3 -3
  872. package/src/browser/invalidate-client-cache.ts +52 -0
  873. package/src/browser/navigation-bridge.ts +95 -75
  874. package/src/browser/navigation-client.ts +110 -84
  875. package/src/browser/navigation-store-handle.ts +38 -0
  876. package/src/browser/navigation-store.ts +114 -90
  877. package/src/browser/navigation-transaction.ts +9 -59
  878. package/src/browser/network-error-handler.ts +34 -7
  879. package/src/browser/partial-update.ts +147 -147
  880. package/src/browser/prefetch/cache.ts +107 -72
  881. package/src/browser/prefetch/fetch.ts +204 -34
  882. package/src/browser/prefetch/queue.ts +6 -3
  883. package/src/browser/rango-state.ts +157 -115
  884. package/src/browser/react/Link.tsx +30 -7
  885. package/src/browser/react/NavigationProvider.tsx +272 -142
  886. package/src/browser/react/ScrollRestoration.tsx +10 -6
  887. package/src/browser/react/deferred-handle-resolution.ts +75 -0
  888. package/src/browser/react/filter-segment-order.ts +66 -7
  889. package/src/browser/react/index.ts +0 -48
  890. package/src/browser/react/location-state-shared.ts +178 -8
  891. package/src/browser/react/location-state.ts +39 -14
  892. package/src/browser/react/use-action.ts +6 -15
  893. package/src/browser/react/use-handle.ts +17 -14
  894. package/src/browser/react/use-href.tsx +8 -1
  895. package/src/browser/react/use-link-status.ts +33 -8
  896. package/src/browser/react/use-navigation.ts +10 -5
  897. package/src/browser/react/use-params.ts +11 -11
  898. package/src/browser/react/use-reverse.ts +106 -0
  899. package/src/browser/react/use-router.ts +20 -5
  900. package/src/browser/react/use-search-params.ts +0 -5
  901. package/src/browser/react/use-segments.ts +11 -21
  902. package/src/browser/response-adapter.ts +99 -8
  903. package/src/browser/rsc-router.tsx +73 -34
  904. package/src/browser/scroll-restoration.ts +30 -17
  905. package/src/browser/segment-structure-assert.ts +2 -2
  906. package/src/browser/server-action-bridge.ts +214 -55
  907. package/src/browser/types.ts +80 -22
  908. package/src/browser/validate-redirect-origin.ts +43 -16
  909. package/src/build/collect-fallback-refs.ts +107 -0
  910. package/src/build/generate-manifest.ts +60 -35
  911. package/src/build/generate-route-types.ts +2 -1
  912. package/src/build/index.ts +8 -2
  913. package/src/build/prefix-tree-utils.ts +123 -0
  914. package/src/build/route-trie.ts +117 -14
  915. package/src/build/route-types/ast-route-extraction.ts +15 -8
  916. package/src/build/route-types/codegen.ts +16 -5
  917. package/src/build/route-types/include-resolution.ts +117 -23
  918. package/src/build/route-types/param-extraction.ts +6 -3
  919. package/src/build/route-types/per-module-writer.ts +22 -6
  920. package/src/build/route-types/router-processing.ts +55 -28
  921. package/src/build/route-types/scan-filter.ts +1 -1
  922. package/src/build/route-types/source-scan.ts +216 -0
  923. package/src/build/runtime-discovery.ts +9 -20
  924. package/src/cache/cache-error.ts +104 -0
  925. package/src/cache/cache-key-utils.ts +29 -13
  926. package/src/cache/cache-policy.ts +108 -34
  927. package/src/cache/cache-runtime.ts +224 -41
  928. package/src/cache/cache-scope.ts +188 -82
  929. package/src/cache/cache-tag.ts +103 -0
  930. package/src/cache/cf/cf-base64.ts +33 -0
  931. package/src/cache/cf/cf-cache-constants.ts +127 -0
  932. package/src/cache/cf/cf-cache-store.ts +1990 -377
  933. package/src/cache/cf/cf-cache-types.ts +349 -0
  934. package/src/cache/cf/cf-kv-utils.ts +46 -0
  935. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  936. package/src/cache/cf/index.ts +6 -16
  937. package/src/cache/document-cache.ts +89 -21
  938. package/src/cache/handle-snapshot.ts +70 -0
  939. package/src/cache/index.ts +10 -20
  940. package/src/cache/memory-segment-store.ts +136 -37
  941. package/src/cache/profile-registry.ts +46 -31
  942. package/src/cache/read-through-swr.ts +56 -12
  943. package/src/cache/segment-codec.ts +9 -17
  944. package/src/cache/tag-invalidation.ts +230 -0
  945. package/src/cache/types.ts +37 -100
  946. package/src/client.rsc.tsx +44 -21
  947. package/src/client.tsx +36 -61
  948. package/src/cloudflare/index.ts +11 -0
  949. package/src/cloudflare/tracing.ts +109 -0
  950. package/src/component-utils.ts +19 -0
  951. package/src/components/DefaultDocument.tsx +8 -2
  952. package/src/context-var.ts +18 -6
  953. package/src/decode-loader-results.ts +52 -0
  954. package/src/defer.ts +196 -0
  955. package/src/deps/ssr.ts +0 -1
  956. package/src/encode-kv.ts +49 -0
  957. package/src/errors.ts +30 -4
  958. package/src/escape-script.ts +52 -0
  959. package/src/handle.ts +31 -23
  960. package/src/handles/MetaTags.tsx +62 -19
  961. package/src/handles/Scripts.tsx +183 -0
  962. package/src/handles/breadcrumbs.ts +37 -8
  963. package/src/handles/is-thenable.ts +19 -0
  964. package/src/handles/meta.ts +51 -40
  965. package/src/handles/script.ts +244 -0
  966. package/src/host/cookie-handler.ts +9 -60
  967. package/src/host/errors.ts +0 -24
  968. package/src/host/index.ts +8 -2
  969. package/src/host/pattern-matcher.ts +23 -52
  970. package/src/host/router.ts +107 -99
  971. package/src/host/testing.ts +40 -27
  972. package/src/host/types.ts +37 -4
  973. package/src/host/utils.ts +1 -1
  974. package/src/href-client.ts +137 -22
  975. package/src/index.rsc.ts +93 -12
  976. package/src/index.ts +91 -14
  977. package/src/internal-debug.ts +11 -10
  978. package/src/loader-store.ts +500 -0
  979. package/src/loader.rsc.ts +20 -13
  980. package/src/loader.ts +12 -11
  981. package/src/missing-id-error.ts +68 -0
  982. package/src/outlet-provider.tsx +1 -5
  983. package/src/prerender/param-hash.ts +16 -16
  984. package/src/prerender/store.ts +32 -37
  985. package/src/prerender.ts +61 -6
  986. package/src/redirect-origin.ts +100 -0
  987. package/src/regex-escape.ts +8 -0
  988. package/src/render-error-thrower.tsx +20 -0
  989. package/src/response-utils.ts +34 -0
  990. package/src/reverse.ts +65 -40
  991. package/src/root-error-boundary.tsx +1 -19
  992. package/src/route-content-wrapper.tsx +19 -77
  993. package/src/route-definition/dsl-helpers.ts +293 -311
  994. package/src/route-definition/helper-factories.ts +28 -140
  995. package/src/route-definition/helpers-types.ts +82 -55
  996. package/src/route-definition/index.ts +1 -2
  997. package/src/route-definition/redirect.ts +44 -11
  998. package/src/route-definition/resolve-handler-use.ts +6 -1
  999. package/src/route-definition/use-item-types.ts +29 -0
  1000. package/src/route-map-builder.ts +0 -16
  1001. package/src/route-types.ts +19 -46
  1002. package/src/router/basename.ts +14 -0
  1003. package/src/router/content-negotiation.ts +73 -25
  1004. package/src/router/error-handling.ts +45 -18
  1005. package/src/router/find-match.ts +44 -23
  1006. package/src/router/handler-context.ts +10 -42
  1007. package/src/router/instrument.ts +350 -0
  1008. package/src/router/intercept-resolution.ts +39 -20
  1009. package/src/router/lazy-includes.ts +9 -46
  1010. package/src/router/loader-resolution.ts +152 -72
  1011. package/src/router/logging.ts +0 -6
  1012. package/src/router/manifest.ts +18 -29
  1013. package/src/router/match-api.ts +6 -21
  1014. package/src/router/match-context.ts +0 -22
  1015. package/src/router/match-handlers.ts +58 -58
  1016. package/src/router/match-middleware/background-revalidation.ts +40 -24
  1017. package/src/router/match-middleware/cache-lookup.ts +159 -285
  1018. package/src/router/match-middleware/cache-store.ts +64 -52
  1019. package/src/router/match-middleware/intercept-resolution.ts +0 -22
  1020. package/src/router/match-middleware/segment-resolution.ts +0 -22
  1021. package/src/router/match-pipelines.ts +1 -42
  1022. package/src/router/match-result.ts +44 -74
  1023. package/src/router/metrics.ts +0 -34
  1024. package/src/router/middleware-types.ts +5 -112
  1025. package/src/router/middleware.ts +237 -165
  1026. package/src/router/navigation-snapshot.ts +0 -51
  1027. package/src/router/params-util.ts +23 -0
  1028. package/src/router/pattern-matching.ts +85 -94
  1029. package/src/router/prefetch-cache-ttl.ts +51 -0
  1030. package/src/router/prerender-match.ts +104 -65
  1031. package/src/router/preview-match.ts +3 -1
  1032. package/src/router/request-classification.ts +28 -62
  1033. package/src/router/revalidation.ts +123 -73
  1034. package/src/router/route-snapshot.ts +0 -1
  1035. package/src/router/router-context.ts +3 -28
  1036. package/src/router/router-interfaces.ts +83 -35
  1037. package/src/router/router-options.ts +136 -5
  1038. package/src/router/router-registry.ts +2 -5
  1039. package/src/router/segment-resolution/fresh.ts +97 -84
  1040. package/src/router/segment-resolution/helpers.ts +86 -6
  1041. package/src/router/segment-resolution/loader-cache.ts +76 -39
  1042. package/src/router/segment-resolution/revalidation.ts +272 -320
  1043. package/src/router/segment-resolution/static-store.ts +19 -5
  1044. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1045. package/src/router/segment-resolution/view-transition-default.ts +56 -0
  1046. package/src/router/segment-resolution.ts +5 -1
  1047. package/src/router/segment-wrappers.ts +6 -5
  1048. package/src/router/state-cookie-name.ts +33 -0
  1049. package/src/router/substitute-pattern-params.ts +56 -0
  1050. package/src/router/telemetry-otel.ts +161 -199
  1051. package/src/router/telemetry.ts +96 -19
  1052. package/src/router/timeout.ts +0 -20
  1053. package/src/router/tracing.ts +206 -0
  1054. package/src/router/trie-matching.ts +162 -64
  1055. package/src/router/types.ts +9 -63
  1056. package/src/router/url-params.ts +0 -5
  1057. package/src/router.ts +109 -53
  1058. package/src/rsc/handler-context.ts +3 -2
  1059. package/src/rsc/handler.ts +262 -219
  1060. package/src/rsc/helpers.ts +100 -6
  1061. package/src/rsc/index.ts +2 -5
  1062. package/src/rsc/json-route-result.ts +38 -0
  1063. package/src/rsc/loader-fetch.ts +114 -38
  1064. package/src/rsc/manifest-init.ts +28 -41
  1065. package/src/rsc/origin-guard.ts +39 -25
  1066. package/src/rsc/progressive-enhancement.ts +117 -11
  1067. package/src/rsc/redirect-guard.ts +99 -0
  1068. package/src/rsc/response-cache-serve.ts +238 -0
  1069. package/src/rsc/response-error.ts +79 -12
  1070. package/src/rsc/response-route-handler.ts +85 -188
  1071. package/src/rsc/rsc-rendering.ts +98 -76
  1072. package/src/rsc/runtime-warnings.ts +23 -10
  1073. package/src/rsc/server-action.ts +281 -117
  1074. package/src/rsc/ssr-setup.ts +16 -0
  1075. package/src/rsc/transition-gate.ts +89 -0
  1076. package/src/rsc/types.ts +23 -5
  1077. package/src/runtime-env.ts +18 -0
  1078. package/src/search-params.ts +35 -30
  1079. package/src/segment-loader-promise.ts +31 -4
  1080. package/src/segment-system.tsx +227 -143
  1081. package/src/serialize.ts +243 -0
  1082. package/src/server/context.ts +163 -51
  1083. package/src/server/cookie-parse.ts +32 -0
  1084. package/src/server/cookie-store.ts +80 -5
  1085. package/src/server/handle-store.ts +21 -38
  1086. package/src/server/loader-registry.ts +33 -42
  1087. package/src/server/request-context.ts +277 -136
  1088. package/src/ssr/index.tsx +21 -16
  1089. package/src/static-handler.ts +10 -13
  1090. package/src/testing/cache-status.ts +162 -0
  1091. package/src/testing/collect-handle.ts +40 -0
  1092. package/src/testing/dispatch.ts +701 -0
  1093. package/src/testing/dom.entry.ts +22 -0
  1094. package/src/testing/e2e/fixture.ts +188 -0
  1095. package/src/testing/e2e/index.ts +128 -0
  1096. package/src/testing/e2e/matchers.ts +35 -0
  1097. package/src/testing/e2e/page-helpers.ts +272 -0
  1098. package/src/testing/e2e/parity.ts +387 -0
  1099. package/src/testing/e2e/server.ts +195 -0
  1100. package/src/testing/flight-matchers.ts +97 -0
  1101. package/src/testing/flight-normalize.ts +11 -0
  1102. package/src/testing/flight-runtime.d.ts +57 -0
  1103. package/src/testing/flight-tree.ts +682 -0
  1104. package/src/testing/flight.entry.ts +52 -0
  1105. package/src/testing/flight.ts +257 -0
  1106. package/src/testing/generated-routes.ts +183 -0
  1107. package/src/testing/index.ts +105 -0
  1108. package/src/testing/internal/context.ts +371 -0
  1109. package/src/testing/internal/flight-client-globals.ts +30 -0
  1110. package/src/testing/internal/seed-vars.ts +54 -0
  1111. package/src/testing/render-handler.ts +357 -0
  1112. package/src/testing/render-route.tsx +581 -0
  1113. package/src/testing/run-loader.ts +385 -0
  1114. package/src/testing/run-middleware.ts +205 -0
  1115. package/src/testing/run-transition-when.ts +164 -0
  1116. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1117. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1118. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1119. package/src/testing/vitest-stubs/version.ts +5 -0
  1120. package/src/testing/vitest.ts +305 -0
  1121. package/src/theme/ThemeProvider.tsx +20 -58
  1122. package/src/theme/ThemeScript.tsx +7 -9
  1123. package/src/theme/constants.ts +52 -13
  1124. package/src/theme/index.ts +0 -7
  1125. package/src/theme/theme-context.ts +1 -5
  1126. package/src/theme/theme-script.ts +22 -21
  1127. package/src/theme/use-theme.ts +0 -3
  1128. package/src/types/boundaries.ts +0 -35
  1129. package/src/types/cache-types.ts +13 -4
  1130. package/src/types/error-types.ts +30 -90
  1131. package/src/types/global-namespace.ts +54 -41
  1132. package/src/types/handler-context.ts +108 -28
  1133. package/src/types/index.ts +3 -10
  1134. package/src/types/loader-types.ts +6 -3
  1135. package/src/types/request-scope.ts +8 -22
  1136. package/src/types/route-config.ts +6 -50
  1137. package/src/types/route-entry.ts +0 -6
  1138. package/src/types/segments.ts +135 -14
  1139. package/src/urls/include-helper.ts +9 -56
  1140. package/src/urls/index.ts +1 -11
  1141. package/src/urls/path-helper-types.ts +29 -12
  1142. package/src/urls/path-helper.ts +17 -106
  1143. package/src/urls/pattern-types.ts +36 -19
  1144. package/src/urls/response-types.ts +20 -19
  1145. package/src/urls/type-extraction.ts +58 -139
  1146. package/src/urls/urls-function.ts +1 -19
  1147. package/src/use-loader.tsx +292 -107
  1148. package/src/vite/debug.ts +58 -13
  1149. package/src/vite/discovery/bundle-postprocess.ts +8 -7
  1150. package/src/vite/discovery/discover-routers.ts +97 -84
  1151. package/src/vite/discovery/discovery-errors.ts +194 -0
  1152. package/src/vite/discovery/gate-state.ts +171 -0
  1153. package/src/vite/discovery/prerender-collection.ts +50 -69
  1154. package/src/vite/discovery/route-types-writer.ts +40 -84
  1155. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  1156. package/src/vite/discovery/state.ts +44 -0
  1157. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  1158. package/src/vite/index.ts +2 -0
  1159. package/src/vite/inject-client-debug.ts +36 -0
  1160. package/src/vite/plugin-types.ts +126 -8
  1161. package/src/vite/plugins/cjs-to-esm.ts +14 -28
  1162. package/src/vite/plugins/client-ref-dedup.ts +5 -21
  1163. package/src/vite/plugins/client-ref-hashing.ts +14 -13
  1164. package/src/vite/plugins/cloudflare-protocol-stub.ts +1 -21
  1165. package/src/vite/plugins/expose-action-id.ts +6 -77
  1166. package/src/vite/plugins/expose-id-utils.ts +88 -55
  1167. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  1168. package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
  1169. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  1170. package/src/vite/plugins/expose-ids/router-transform.ts +100 -28
  1171. package/src/vite/plugins/expose-internal-ids.ts +59 -70
  1172. package/src/vite/plugins/performance-tracks.ts +11 -18
  1173. package/src/vite/plugins/refresh-cmd.ts +1 -1
  1174. package/src/vite/plugins/use-cache-transform.ts +28 -52
  1175. package/src/vite/plugins/version-injector.ts +40 -29
  1176. package/src/vite/plugins/version-plugin.ts +37 -40
  1177. package/src/vite/plugins/virtual-entries.ts +39 -25
  1178. package/src/vite/rango.ts +62 -106
  1179. package/src/vite/router-discovery.ts +591 -122
  1180. package/src/vite/utils/ast-handler-extract.ts +26 -35
  1181. package/src/vite/utils/bundle-analysis.ts +10 -15
  1182. package/src/vite/utils/client-chunks.ts +184 -0
  1183. package/src/vite/utils/directive-prologue.ts +40 -0
  1184. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1185. package/src/vite/utils/manifest-utils.ts +4 -59
  1186. package/src/vite/utils/package-resolution.ts +1 -73
  1187. package/src/vite/utils/prerender-utils.ts +54 -39
  1188. package/src/vite/utils/shared-utils.ts +90 -41
  1189. package/src/browser/action-response-classifier.ts +0 -99
  1190. package/src/browser/shallow.ts +0 -40
  1191. package/src/router/middleware-cookies.ts +0 -55
@@ -11,9 +11,6 @@ deserialization path, same segment system. The worker handles every request --
11
11
  there are NO static .html or .rsc files served from assets. The worker reads
12
12
  pre-computed Flight payloads instead of executing handler code.
13
13
 
14
- Canonical semantics reference:
15
- [docs/execution-model.md](../../docs/internal/execution-model.md)
16
-
17
14
  ## API: Prerender
18
15
 
19
16
  ### Static Route (no params)
@@ -122,6 +119,8 @@ interface BuildContext<TParams> {
122
119
  use: <T>(handle: Handle<T>) => (data: T) => void; // Push handle data
123
120
  url: URL; // Synthetic URL from pattern + params
124
121
  pathname: string; // Pathname from synthetic URL
122
+ searchParams: URLSearchParams; // URLSearchParams from the synthetic URL (always empty for prerender)
123
+ search: {}; // Typed search params -- always {} for prerender (no real query string)
125
124
  set(key: string, value: any): void; // Set context variable (string key)
126
125
  set<T>(contextVar: ContextVar<T>, value: T): void; // Set typed context variable
127
126
  get(key: string): any; // Read context variable (string key)
@@ -244,16 +243,16 @@ path("/blog/:slug", BlogPost, { name: "blog.post" }, () => [
244
243
 
245
244
  ## Interaction with DSL Items
246
245
 
247
- | DSL item | Behavior with Prerender |
248
- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
249
- | `loader()` | Live at runtime, bundled normally. Use `cache()` for caching. |
250
- | `revalidate()` | Not allowed without Passthrough. Allowed with Passthrough. |
251
- | `cache()` | Orthogonal -- use on parent layouts and loaders. |
252
- | `layout()` | Child layouts inside path are pre-rendered. Parent layouts are live. |
253
- | `parallel()` | Parallel slots inside path are pre-rendered. |
254
- | `middleware()` | Skipped during pre-render (no request). Runs at request time for loaders. |
255
- | `loading()` | Ignored without Passthrough. Works for live fallback with Passthrough. |
256
- | `intercept()` | Pre-rendered at build time. Intercept variant stored under `/i` key alongside main segments. At runtime, the correct variant is served based on `ctx.isIntercept`. `when()` conditions are skipped at build time (all intercepts are pre-rendered unconditionally). |
246
+ | DSL item | Behavior with Prerender |
247
+ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
248
+ | `loader()` | Live at runtime, bundled normally. Use `cache()` for caching. |
249
+ | `revalidate()` | Not allowed without Passthrough. Allowed with Passthrough. |
250
+ | `cache()` | Orthogonal -- use on parent layouts and loaders. |
251
+ | `layout()` | Child layouts inside path are pre-rendered. Parent layouts are live. |
252
+ | `parallel()` | Parallel slots inside path are pre-rendered. |
253
+ | `middleware()` | Skipped during pre-render (no request). Runs at request time for loaders. |
254
+ | `loading()` | Ignored without Passthrough. Works for live fallback with Passthrough. |
255
+ | `intercept()` | Pre-rendered at build time. Intercept variant stored under `/i` key alongside main segments. At runtime, the correct variant is served based on `ctx.isIntercept`. `when` config conditions are skipped at build time (all intercepts are pre-rendered unconditionally). |
257
256
 
258
257
  When Passthrough revalidation is enabled, remember that revalidation is
259
258
  still partial: opting a child segment into revalidation does not
@@ -346,14 +345,31 @@ export const TocSidebar = Static(() => {
346
345
 
347
346
  ### Error behavior at build time
348
347
 
349
- | Handler outcome | Effect |
350
- | --------------------------- | ----------------------------------------------------- |
351
- | JSX / `null` | Normal prerender entry, log OK |
352
- | `return ctx.passthrough()` | Skip entry, log PASS, continue (Passthrough routes) |
353
- | `throw new Skip("reason")` | Skip entry, log SKIP, continue with remaining entries |
354
- | `throw new Error("reason")` | Log FAIL, stop ALL pre-rendering, fail the build |
348
+ When a render throws a non-`Skip` error, it is **surfaced to the build** — never
349
+ baked into a frozen error page served as a 200 (issue #587). What happens next is
350
+ controlled by `prerender.onError` in your `rango()` options:
351
+
352
+ ```ts
353
+ rango({ prerender: { onError: "warn" } }); // default is "fail"
354
+ ```
355
355
 
356
- Both error types propagate to the router's `onError` callback with phase
356
+ | Handler outcome | `onError: "fail"` (default) | `onError: "warn"` |
357
+ | --------------------------- | -------------------------------------------- | -------------------------------- |
358
+ | JSX / `null` | Normal prerender entry, log OK | Normal prerender entry, log OK |
359
+ | `return ctx.passthrough()` | Skip entry, log PASS (Passthrough routes) | Skip entry, log PASS |
360
+ | `throw new Skip("reason")` | Skip entry, log SKIP, continue | Skip entry, log SKIP, continue |
361
+ | `throw new Error("reason")` | Log FAIL, stop ALL pre-rendering, fail build | Log WARN, skip the URL, continue |
362
+
363
+ With `"warn"` the errored entry is logged and left un-baked (never served as a baked
364
+ 200 error page). `"warn"` is a build-unblock, not a runtime contract: the route falls
365
+ through to normal resolution — it may render live (its handler is still bundled) or
366
+ 404 (once other baked entries trigger prerender handler eviction), so the outcome
367
+ depends on the rest of the build, and a skipped `Static()` handler's evicted code can
368
+ surface as an error. For DEFINED runtime behavior reach for `Passthrough()` (a live
369
+ fallback) or `throw new Skip()` (an intentional skip — works in the render fn, not
370
+ only `getParams()`); otherwise prefer the default `"fail"`.
371
+
372
+ Both `Skip` and hard errors propagate to the router's `onError` callback with phase
357
373
  `"prerender"` or `"static"`.
358
374
 
359
375
  ### Build logs
@@ -361,21 +377,23 @@ Both error types propagate to the router's `onError` callback with phase
361
377
  The build produces per-URL timing logs:
362
378
 
363
379
  ```
364
- [rsc-router] Pre-rendering 12 URL(s) (concurrency: 4)...
365
- [rsc-router] OK /articles/hello (42ms)
366
- [rsc-router] PASS /articles/remote-only (5ms) - live fallback
367
- [rsc-router] SKIP /articles/draft-post (3ms) - Article is a draft
368
- [rsc-router] Pre-render complete: 11 done, 1 skipped (1204ms total)
369
-
370
- [rsc-router] Rendering 3 static handler(s)...
371
- [rsc-router] OK DocsLayout (28ms)
372
- [rsc-router] SKIP TocSidebar (1ms) - Not ready
373
- [rsc-router] Static render complete: 2 done, 1 skipped (120ms total)
380
+ [rango] Pre-rendering 12 URL(s) (concurrency: 4)...
381
+ [rango] OK /articles/hello (42ms)
382
+ [rango] PASS /articles/remote-only (5ms) - live fallback
383
+ [rango] SKIP /articles/draft-post (3ms) - Article is a draft
384
+ [rango] Pre-render complete: 11 done, 1 skipped (1204ms total)
385
+
386
+ [rango] Rendering 3 static handler(s)...
387
+ [rango] OK DocsLayout (28ms)
388
+ [rango] SKIP TocSidebar (1ms) - Not ready
389
+ [rango] Static render complete: 2 done, 1 skipped (120ms total)
374
390
  ```
375
391
 
376
- A `FAIL` line is logged per-URL when a handler throws a non-Skip error. The
377
- error is re-thrown immediately, so no summary line is printed — the build
378
- stops at the first failure.
392
+ A `FAIL` line is logged per-URL when a handler throws a non-Skip error (with the
393
+ default `prerender.onError: "fail"`). The error is re-thrown immediately, so no
394
+ summary line is printed — the build stops at the first failure. Under
395
+ `prerender.onError: "warn"` the same case logs a `WARN` line, skips that URL, and
396
+ the build continues.
379
397
 
380
398
  ### Dev mode behavior
381
399
 
@@ -466,9 +484,9 @@ export const Product = Passthrough(ProductDef, async (ctx) => {
466
484
  Passthrough entries are logged distinctly:
467
485
 
468
486
  ```
469
- [rsc-router] OK /blog/a (42ms)
470
- [rsc-router] PASS /blog/b (3ms) - live fallback
471
- [rsc-router] OK /blog/c (38ms)
487
+ [rango] OK /blog/a (42ms)
488
+ [rango] PASS /blog/b (3ms) - live fallback
489
+ [rango] OK /blog/c (38ms)
472
490
  ```
473
491
 
474
492
  ## Edge Cases and Constraints
@@ -591,12 +609,12 @@ At runtime, the cache-lookup middleware checks `ctx.isIntercept`:
591
609
  (filtered by `namespace?.startsWith("intercept:")`) and sets up slots.
592
610
  - **Direct navigation**: looks up `paramHash` (no suffix). Standard prerender path.
593
611
  - **Intercept miss (no `/i` entry)**: falls through to the normal pipeline so
594
- intercept-resolution middleware runs live. This handles `when()` conditions
612
+ intercept-resolution middleware runs live. This handles `when` config conditions
595
613
  that prevented pre-rendering.
596
614
 
597
- The `when()` callback receives an `InterceptSelectorContext` with `from.pathname`
615
+ The `when` config selector receives an `InterceptSelectorContext` with `from.pathname`
598
616
  which is unknown at build time. All intercepts are pre-rendered unconditionally;
599
- `when()` is evaluated at runtime by the intercept-resolution middleware.
617
+ `when` is evaluated at runtime by the intercept-resolution middleware.
600
618
 
601
619
  ### Example: Pre-rendered route with intercept
602
620
 
@@ -615,10 +633,13 @@ layout(ShopLayout, () => [
615
633
 
616
634
  // Intercept detail from shop index into a modal.
617
635
  // At build time, this is resolved and stored under the /i key.
618
- intercept("@modal", ".detail", <ProductModal />, () => [
619
- when(({ from }) => from.pathname === "/shop"),
620
- loader(ProductLoader),
621
- ]),
636
+ intercept(
637
+ "@modal",
638
+ ".detail",
639
+ <ProductModal />,
640
+ { when: ({ from }) => from.pathname === "/shop" },
641
+ () => [loader(ProductLoader)],
642
+ ),
622
643
  ])
623
644
  ```
624
645
 
@@ -640,16 +661,7 @@ At runtime, the cache-lookup middleware uses these flags:
640
661
 
641
662
  ## Contributor Checklist
642
663
 
643
- Before changing prerender behavior, read these docs and run these tests.
644
-
645
- ### Docs to re-read
646
-
647
- - [Prerender API design](../../docs/prerender-api-design.md) -- canonical
648
- architecture: build-time flow, runtime flow, storage, Passthrough, intercept
649
- - [Execution model](../../docs/internal/execution-model.md) -- handler-first
650
- ordering, middleware scope, context visibility rules
651
- - [Semantic change checklist](../../docs/internal/semantic-change-checklist.md)
652
- -- gate for any change to execution semantics
664
+ Before changing prerender behavior, run these tests.
653
665
 
654
666
  ### Tests to run
655
667
 
@@ -676,10 +688,3 @@ pnpm --filter @rangojs/router exec playwright test handler-first
676
688
  dev/build-only and do not need a production counterpart.
677
689
  - Behavioral assertions (rendered content, loader freshness, Passthrough
678
690
  fallback, intercept variant selection) must work in the production build.
679
-
680
- ## Maintenance References
681
-
682
- - [Stability next steps plan](../../docs/internal/stability-next-steps-plan.md)
683
- -- completed parity and cleanup pass (reference for decisions made)
684
- - [Test quality baseline](../../docs/internal/test-quality-baseline.md) --
685
- measured test inventory, sleep debt, production coverage gaps
@@ -8,32 +8,250 @@ argument-hint:
8
8
 
9
9
  Django-inspired RSC router with composable URL patterns, type-safe href, and server components.
10
10
 
11
+ This page is the mental model to read **before** the catalog. A flat list of
12
+ skills gives nothing to slot details into, so a reader free-associates from local
13
+ vocabulary — which is exactly how `revalidate()` gets misread as caching. Start
14
+ with the shape, then pick a primitive.
15
+
16
+ ## The shape of rango (read first)
17
+
18
+ - **Routes are expressed, not configured.** The `urls()` tree shows where every
19
+ route, layout, loader, and cache lives. No file-system convention, no hunting.
20
+ - **Two freshness axes, orthogonal:**
21
+ - _stored-value freshness_ — `"use cache"`, `cache()`, loader `cache()`
22
+ (SWR is first-class where the store supports it; `"use cache"` ships a
23
+ default SWR window; see `/cache-guide`)
24
+ - _client-update selection_ — `revalidate()`
25
+ - **Loaders are the live data layer** — fresh every request by default, even
26
+ inside a cached render. They run **in parallel** right after middleware and
27
+ **stream**, so data latency overlaps first paint instead of blocking it (a
28
+ cache hit streams UI instantly while loaders resolve fresh alongside). Opt into
29
+ caching explicitly. See `/loader` → "Parallel and streaming".
30
+ - **One identity, one store** — loaders, handles, cached fns, and actions are all
31
+ `path#export`; all caches share one store. Entries expire by TTL/SWR, and are
32
+ tagged via `cache({ tags })` or runtime `cacheTag(...tags)`; built-in stores
33
+ index by tag and invalidate via `updateTag(...tags)` (awaitable, read-your-own-writes)
34
+ or `revalidateTag(...tags)` (background, non-blocking).
35
+ - **Type-safe end to end** — route names, params, search schemas, loader return
36
+ types, context vars, and `href` / `reverse` are checked at compile time
37
+ (`/typesafety`).
38
+ - **See where time goes** — turn on `debugPerformance` early (router option, or
39
+ `ctx.debugPerformance()` in middleware for per-request opt-in). It prints a
40
+ per-request waterfall + `Server-Timing` header; loaders should overlap the
41
+ render bar, not serialize after it. For production, wire `telemetry` to a
42
+ console, OpenTelemetry, or custom sink. See `/observability`.
43
+
44
+ Most features are **just-in-time**: the core is `urls()`, `path()`, `layout()`,
45
+ `include()`, and `reverse()`. Caching, parallel routes, intercepts, prerender,
46
+ i18n, themes, and the rest are opt-in — reach for them when a requirement
47
+ appears, not up front.
48
+
49
+ ## Composability: structure vs config
50
+
51
+ - `path()` / `include()` are **structure** — they define URLs and must stay
52
+ visible in `urls()`. They cannot be hidden in a factory. `include()` composes
53
+ whole modules (separation of real concerns); `path()` places a leaf.
54
+ - Everything else — `cache`, `loader`, `loading`, `middleware`, `revalidate`,
55
+ `parallel`, `intercept`, `errorBoundary`, … — is **config**. It attaches to a
56
+ node via its `use` callback, is importable, and extracts into factories that
57
+ return arrays (`withAuth()`, `withCaching()`), flattened automatically.
58
+
59
+ To decide where something can live: **does it define a URL? structure, stays in
60
+ `urls()`. Does it modify a node? config, compose freely.**
61
+
62
+ ## Pick a primitive
63
+
64
+ | I need to… | Use | Skill |
65
+ | ------------------------------------- | -------------------------------- | ----------------------- |
66
+ | render data fresh every request | `loader()` + `useLoader()` | /loader |
67
+ | cache a rendered subtree | `cache()` on a segment | /caching |
68
+ | cache one function/component's result | `"use cache"` | /use-cache |
69
+ | cache a loader's data | `loader(L, () => [cache()])` | /loader, /caching |
70
+ | re-render a segment after an action | `revalidate()` | /loader |
71
+ | mutate | `"use server"` action | /server-actions |
72
+ | debug a slow request | `debugPerformance` / telemetry | /observability |
73
+ | share config across routes | factory returning a helper array | /composability |
74
+ | compose a sub-app / module | `include()` | /route |
75
+ | modal / soft navigation | `intercept()` | /intercept |
76
+ | pre-render a route at build time | `Prerender(...)` wrapper | /prerender |
77
+ | stream SSE / upgrade a WebSocket | `path.stream()` / `path.any()` | /streams-and-websockets |
78
+
79
+ ## Invariants
80
+
81
+ - `path()`/`include()` are always visible in `urls()`; config helpers are extractable.
82
+ - **Cache decides freshness; `revalidate()` decides client-update.** Orthogonal; compose.
83
+ - Loaders resolve fresh every request (even inside `cache()`) and never run twice/request.
84
+ - Inside `"use cache"`: `cookies()`/`headers()` and `ctx` side-effects
85
+ (`set`/`header`/`setTheme`/`onResponse`/`setLocationState`) throw; `ctx.use(Handle)`
86
+ is captured on miss and replayed on hit. (The non-cacheable read guard is a
87
+ separate `cache()`-boundary check — see the correctness bullet below.)
88
+ - One identity `path#export` (`functionId`/`$$id`/`actionId`); one store. Freshness
89
+ is TTL/SWR expiry plus tag-based invalidation: tag via `cache({ tags })` /
90
+ `cacheTag(...tags)`, then `updateTag(...tags)` (awaitable) or `revalidateTag(...tags)`
91
+ (background). Built-in stores index by tag.
92
+ - `useLoader` / `useHandle` / `useFetchLoader` are client-only.
93
+ - Caches are correctness-first: persistent store keys are version-segmented (no
94
+ cross-deploy drift), the forward/back cache is mutation-aware, and
95
+ `createVar({ cache: false })` throws on a **direct** read inside a `cache()`
96
+ boundary (a deliberately non-propagating guard). See `/cache-guide` →
97
+ "Correctness & invalidation".
98
+ - Nested caches: the outer cache window bounds the inner — an inner shorter TTL
99
+ only applies when the enclosing cache recomputes; put a value in a loader if it
100
+ must be fresher. See `/cache-guide` → "Combining Both".
101
+
102
+ ## Don't confuse
103
+
104
+ - `revalidate()` ≠ cache invalidation — partial-render selection vs value freshness.
105
+ - host router `.lazy()` (lazy import of a handler/sub-app) vs `.map()` (inline Response).
106
+ - `cache()` (segment, in the DSL) vs `"use cache"` (function/component directive).
107
+ - `loader()` registration (server) vs `useLoader()` consumption (client).
108
+
109
+ ### Coming from another framework (false friends)
110
+
111
+ Same words, different jobs — this is the most common source of the
112
+ `revalidate()`-is-caching misread.
113
+
114
+ | You may know | Maps to Rango axis | Watch out |
115
+ | --------------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
116
+ | Next.js `export const revalidate = N` | **Axis 1** (cache) | Same word, opposite meaning. Next's `revalidate` is time-based cache expiry; Rango's `revalidate()` is **axis 2**. Use `cache({ ttl })` for the Next behavior. |
117
+ | Next.js `revalidateTag` / `updateTag` | **Axis 1** (cache) | Cache busting by tag. Tag via `cache({ tags })` / `cacheTag(...tags)`; invalidate with `updateTag(...tags)` (awaitable, read-your-own-writes) or `revalidateTag(...tags)` (background, non-blocking). Built-in stores index by tag. No `revalidatePath` (path-based busting); use tags. |
118
+ | React Router / Remix `shouldRevalidate` | **Axis 2** | This is the correct mental model for Rango's `revalidate()`. |
119
+ | HTTP `Cache-Control` / ISR | **Axis 1** | Edge/document layer — see `/document-cache`. Separate from both `cache()` and `revalidate()`. |
120
+ | Remix/RR `loader` | live data | Like Rango loaders, fresh per request — but Rango loaders run in parallel and stream (latency overlaps first paint), and can opt into caching on demand. |
121
+
122
+ See `/cache-guide` for the axis-1 decision guide, `/loader` and `/route` for
123
+ `revalidate()` (axis 2), and `/document-cache` for the edge layer.
124
+
125
+ ## Canonical shape
126
+
127
+ ```ts
128
+ export const urlpatterns = urls(({ path, layout, loader, loading, cache, revalidate }) => [
129
+ layout(<ShopLayout />, () => [ // structure: wraps children
130
+ loader(CartLoader, () => [ // config: live data
131
+ // partial-render axis: re-run on cart actions, defer otherwise.
132
+ // ctx.isAction() matches by reference (rename-safe), not by string.
133
+ revalidate((ctx) => ctx.isAction(CartActions) || undefined),
134
+ ]),
135
+ path("/shop/:slug", ProductPage, { name: "product" }, () => [ // structure: leaf
136
+ loader(ProductLoader, () => [cache({ ttl: 60 })]), // config: cache loader DATA
137
+ loading(<ProductSkeleton />), // config
138
+ withRecs(), // composed factory (config array)
139
+ ]),
140
+ ]),
141
+ ]);
142
+ ```
143
+
144
+ One tree, both axes visible: structure (`layout`/`path`) vs config (everything
145
+ else), freshness (`cache`) vs client-update (`revalidate`). Actions are matched
146
+ by reference with `ctx.isAction(Action)` (rename-safe, where `CartActions` is an
147
+ `import * as CartActions from "./actions/cart"`); see `/typesafety` → "Stable
148
+ identity".
149
+
150
+ The predicate arg carries the action's full context, not just its identity. Match
151
+ _which_ action with `ctx.isAction(addToCart)` (rename-safe); branch on _what it
152
+ returned_ with `ctx.actionResult` — the value your `"use server"` function
153
+ returned, for outcome-conditional revalidation. The arg also exposes `actionId`
154
+ (raw `path#export`), `actionUrl`, `formData`, `method`, and `stale` (cross-tab
155
+ `_rsc_stale` signal). All are `undefined` on plain navigation (no action).
156
+
157
+ Two idioms, picked by what an _unrelated_ action should do. `ctx.isAction()`
158
+ returns a raw boolean, so combine it with `|| undefined` to **defer** ("mine,
159
+ else let the default decide": `ctx.isAction(CartActions) || undefined`) or leave
160
+ it bare to **suppress** ("mine only": `ctx.isAction(CartActions)`). Prefer the
161
+ defer form unless a sibling segment must own the unrelated-action decision.
162
+
163
+ ```ts
164
+ // re-render only when checkout actually succeeded; defer otherwise
165
+ revalidate((ctx) => (ctx.isAction(checkout) && ctx.actionResult?.ok) || undefined),
166
+ ```
167
+
168
+ **The source is the source of truth.** Structure, types, and update policy are
169
+ visible and local in the tree — read top-down, no hidden global model to hold in
170
+ your head. A snippet earns its place only if, from the code alone, you can answer:
171
+ _what URLs exist and who owns them?_ (composition), _can I trust this reference
172
+ without leaving the call site?_ (type-safety), _what re-renders after this
173
+ action?_ (partial rendering). If any answer needs another file, it isn't legible
174
+ yet.
175
+
176
+ **Reading Rango's own source.** Rango is consumed as raw TypeScript — the
177
+ `exports` map resolves `@rangojs/router` and its subpaths to `./src/*.ts` for
178
+ both types and runtime, so a consuming app bundles Rango straight from source.
179
+ Only the `./vite` plugin entry and the CLI `bin` load from `dist/`. To confirm
180
+ any runtime or type detail against an installed copy, read the resolved source
181
+ under `node_modules/@rangojs/router/src/`, not `dist/` — the runtime does not
182
+ resolve `dist/` outside `./vite`, and it may lag `src/`.
183
+
11
184
  ## Skills
12
185
 
13
- | Skill | Description |
14
- | ----------------------- | -------------------------------------------------------------------------- |
15
- | `/router-setup` | Create and configure the RSC router |
16
- | `/route` | Define routes with `urls()` and `path()` |
17
- | `/layout` | Layouts that wrap child routes |
18
- | `/loader` | Data loaders with `createLoader()` |
19
- | `/middleware` | Request processing and authentication |
20
- | `/intercept` | Modal/slide-over patterns for soft navigation |
21
- | `/parallel` | Multi-column layouts and sidebars |
22
- | `/caching` | Segment caching with memory or KV stores |
23
- | `/use-cache` | Function-level caching with `"use cache"` directive |
24
- | `/cache-guide` | When to use `cache()` vs `"use cache"` — differences and decision guide |
25
- | `/document-cache` | Edge caching with Cache-Control headers |
26
- | `/theme` | Light/dark mode with FOUC prevention |
27
- | `/links` | URL generation: ctx.reverse, href, useHref, useMount, scopedReverse |
28
- | `/hooks` | Client-side React hooks |
29
- | `/typesafety` | Type-safe routes, params, href, and environment |
30
- | `/host-router` | Multi-app host routing with domain/subdomain patterns |
31
- | `/tailwind` | Set up Tailwind CSS v4 with `?url` imports |
32
- | `/response-routes` | JSON/text/HTML/XML/stream endpoints with `path.json()`, `path.text()` |
33
- | `/mime-routes` | Content negotiation — same URL, different response types via Accept header |
34
- | `/fonts` | Load web fonts with preload hints |
35
- | `/migrate-nextjs` | Migrate a Next.js App Router project to Rango |
36
- | `/migrate-react-router` | Migrate a React Router / Remix project to Rango |
186
+ Grouped by concern — read when you need to…
187
+
188
+ **Structure & routing** shape URLs, layouts, navigation, and request processing:
189
+
190
+ | Skill | Description |
191
+ | ------------------------- | -------------------------------------------------------------------------- |
192
+ | `/router-setup` | Create and configure the RSC router |
193
+ | `/route` | Define routes with `urls()`, `path()`, and `include()` |
194
+ | `/layout` | Layouts that wrap child routes |
195
+ | `/parallel` | Multi-column layouts and sidebars |
196
+ | `/intercept` | Modal/slide-over patterns for soft navigation |
197
+ | `/middleware` | Request processing and authentication |
198
+ | `/host-router` | Multi-app host routing with domain/subdomain patterns |
199
+ | `/links` | URL generation: ctx.reverse, href, useHref, useMount, scopedReverse |
200
+ | `/response-routes` | JSON/text/HTML/XML/stream endpoints with `path.json()`, `path.text()` |
201
+ | `/api-client` | Typed client for consuming your own response-route JSON APIs (recipe) |
202
+ | `/mime-routes` | Content negotiation same URL, different response types via Accept header |
203
+ | `/streams-and-websockets` | SSE via `path.stream` and WebSocket upgrades via `path.any` |
204
+ | `/handler-use` | Attach default loaders/middleware to a handler via `handler.use` |
205
+ | `/composability` | Reusable route-helper factories (structure vs config) |
206
+
207
+ **Data & caching** fetch, mutate, and cache:
208
+
209
+ | Skill | Description |
210
+ | ----------------- | ----------------------------------------------------------------------- |
211
+ | `/loader` | Data loaders with `createLoader()` and `revalidate()` |
212
+ | `/server-actions` | Mutations with `"use server"`, useActionState, validation, revalidation |
213
+ | `/caching` | Segment caching with memory or KV stores |
214
+ | `/use-cache` | Function-level caching with `"use cache"` directive |
215
+ | `/cache-guide` | When to use `cache()` vs `"use cache"` — differences and decision guide |
216
+ | `/document-cache` | Edge caching with Cache-Control headers |
217
+ | `/prerender` | Pre-render route segments at build time (Passthrough live fallback) |
218
+
219
+ **Client & presentation** — build the client-side UX:
220
+
221
+ | Skill | Description |
222
+ | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
223
+ | `/hooks` | Client-side React hooks |
224
+ | `/theme` | Light/dark mode with FOUC prevention |
225
+ | `/i18n` | Locale routing with `:locale?`, resolution chains, react-intl integration |
226
+ | `/fonts` | Load web fonts with preload hints |
227
+ | `/css` | Import CSS in the Document `<head>` (`?url` + managed `precedence` links) |
228
+ | `/scripts` | Inject third-party scripts (GTM/analytics) into head/body via the `Script` handle; nonce auto-applied to document-rendered scripts |
229
+ | `/tailwind` | Set up Tailwind CSS v4 with `?url` imports |
230
+ | `/view-transitions` | React View Transitions on layouts, routes, and parallel slots |
231
+ | `/breadcrumbs` | Built-in Breadcrumbs handle for breadcrumb navigation |
232
+ | `/react-compiler` | Enable React Compiler (opt-in) the vite-rsc way; client-only scope |
233
+
234
+ **Observability & production health**:
235
+
236
+ | Skill | Description |
237
+ | ------------------ | ------------------------------------------------------------------------ |
238
+ | `/observability` | `debugPerformance`, `Server-Timing`, structured telemetry, tracing |
239
+ | `/bundle-analysis` | Audit your app's production bundle for server leaks and oversized chunks |
240
+ | `/debug-manifest` | Inspect route manifest structure |
241
+
242
+ **Testing**:
243
+
244
+ | Skill | Description |
245
+ | ---------- | ------------------------------------------------------------------------------------------------------------------------------- |
246
+ | `/testing` | Unit (loaders/middleware/reverse/components), integration (dispatch/Flight), and e2e (dev+prod parity, progressive enhancement) |
247
+
248
+ **Setup, types & migration**:
249
+
250
+ | Skill | Description |
251
+ | ----------------------- | ----------------------------------------------- |
252
+ | `/typesafety` | Type-safe routes, params, href, and environment |
253
+ | `/migrate-nextjs` | Migrate a Next.js App Router project to Rango |
254
+ | `/migrate-react-router` | Migrate a React Router / Remix project to Rango |
37
255
 
38
256
  ## Quick Start
39
257
 
@@ -89,6 +307,15 @@ Each file is classified by its contents:
89
307
  Directories are scanned recursively for `.ts`/`.tsx` files, skipping `node_modules`,
90
308
  dotfiles, and existing `.gen.` files.
91
309
 
310
+ > The two generated files are **not interchangeable surfaces**.
311
+ > `router.named-routes.gen.ts` augments the global `GeneratedRouteMap` for
312
+ > named-route typing (`Handler<"name">`, `ctx.reverse("name")`, prerender).
313
+ > Per-module `*.gen.ts` exports a local `routes` map for `useReverse(routes)`
314
+ > and explicit local handler typing (`Handler<".name", routes>`). Neither
315
+ > carries response payloads — response/MIME payload inference comes from
316
+ > `typeof router.routeMap` via `RegisteredRoutes`, not `*.named-routes.gen.ts`.
317
+ > See `/typesafety` for the full surface breakdown.
318
+
92
319
  ### Recursive includes
93
320
 
94
321
  The generator follows `include()` calls across files, resolving imports to build