@rangojs/router 0.0.0-experimental.ede38110 → 0.0.0-experimental.f1468e3c

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 (1197) hide show
  1. package/AGENTS.md +8 -0
  2. package/README.md +169 -31
  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 +2839 -1043
  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/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  807. package/dist/vite/virtual-entries.d.ts +25 -0
  808. package/dist/vite/virtual-entries.d.ts.map +1 -0
  809. package/dist/vite/virtual-entries.js +110 -0
  810. package/dist/vite/virtual-entries.js.map +1 -0
  811. package/package.json +68 -14
  812. package/skills/api-client/SKILL.md +211 -0
  813. package/skills/breadcrumbs/SKILL.md +64 -2
  814. package/skills/bundle-analysis/SKILL.md +159 -0
  815. package/skills/cache-guide/SKILL.md +224 -32
  816. package/skills/caching/SKILL.md +279 -17
  817. package/skills/composability/SKILL.md +27 -3
  818. package/skills/css/SKILL.md +76 -0
  819. package/skills/debug-manifest/SKILL.md +4 -2
  820. package/skills/document-cache/SKILL.md +78 -55
  821. package/skills/handler-use/SKILL.md +11 -9
  822. package/skills/hooks/SKILL.md +250 -30
  823. package/skills/host-router/SKILL.md +83 -23
  824. package/skills/i18n/SKILL.md +276 -0
  825. package/skills/intercept/SKILL.md +68 -19
  826. package/skills/layout/SKILL.md +13 -9
  827. package/skills/links/SKILL.md +247 -17
  828. package/skills/loader/SKILL.md +235 -9
  829. package/skills/middleware/SKILL.md +18 -10
  830. package/skills/migrate-nextjs/SKILL.md +43 -19
  831. package/skills/migrate-react-router/SKILL.md +9 -2
  832. package/skills/mime-routes/SKILL.md +28 -1
  833. package/skills/observability/SKILL.md +172 -0
  834. package/skills/parallel/SKILL.md +18 -7
  835. package/skills/prerender/SKILL.md +65 -60
  836. package/skills/rango/SKILL.md +251 -24
  837. package/skills/react-compiler/SKILL.md +168 -0
  838. package/skills/response-routes/SKILL.md +123 -48
  839. package/skills/route/SKILL.md +46 -5
  840. package/skills/router-setup/SKILL.md +30 -8
  841. package/skills/scripts/SKILL.md +179 -0
  842. package/skills/server-actions/SKILL.md +775 -0
  843. package/skills/streams-and-websockets/SKILL.md +283 -0
  844. package/skills/tailwind/SKILL.md +27 -3
  845. package/skills/testing/SKILL.md +130 -0
  846. package/skills/testing/bindings.md +103 -0
  847. package/skills/testing/cache-prerender.md +127 -0
  848. package/skills/testing/client-components.md +124 -0
  849. package/skills/testing/e2e-parity.md +125 -0
  850. package/skills/testing/flight.md +91 -0
  851. package/skills/testing/handles.md +129 -0
  852. package/skills/testing/loader.md +128 -0
  853. package/skills/testing/middleware.md +99 -0
  854. package/skills/testing/render-handler.md +122 -0
  855. package/skills/testing/response-routes.md +95 -0
  856. package/skills/testing/reverse-and-types.md +84 -0
  857. package/skills/testing/server-actions.md +107 -0
  858. package/skills/testing/server-tree.md +128 -0
  859. package/skills/testing/setup.md +123 -0
  860. package/skills/typesafety/SKILL.md +322 -29
  861. package/skills/use-cache/SKILL.md +57 -14
  862. package/skills/view-transitions/SKILL.md +337 -0
  863. package/src/__augment-tests__/augment.ts +81 -0
  864. package/src/__augment-tests__/augmented.check.ts +116 -0
  865. package/src/__internal.ts +0 -65
  866. package/src/browser/action-coordinator.ts +53 -36
  867. package/src/browser/action-fence.ts +47 -0
  868. package/src/browser/app-shell.ts +39 -0
  869. package/src/browser/connection-warmup.ts +134 -0
  870. package/src/browser/cookie-name.ts +140 -0
  871. package/src/browser/event-controller.ts +192 -150
  872. package/src/browser/history-state.ts +21 -0
  873. package/src/browser/index.ts +3 -3
  874. package/src/browser/invalidate-client-cache.ts +52 -0
  875. package/src/browser/navigation-bridge.ts +94 -25
  876. package/src/browser/navigation-client.ts +138 -78
  877. package/src/browser/navigation-store-handle.ts +38 -0
  878. package/src/browser/navigation-store.ts +115 -67
  879. package/src/browser/navigation-transaction.ts +9 -59
  880. package/src/browser/network-error-handler.ts +34 -7
  881. package/src/browser/partial-update.ts +147 -128
  882. package/src/browser/prefetch/cache.ts +201 -68
  883. package/src/browser/prefetch/fetch.ts +305 -59
  884. package/src/browser/prefetch/queue.ts +42 -8
  885. package/src/browser/rango-state.ts +158 -76
  886. package/src/browser/react/Link.tsx +48 -20
  887. package/src/browser/react/NavigationProvider.tsx +289 -120
  888. package/src/browser/react/ScrollRestoration.tsx +10 -6
  889. package/src/browser/react/deferred-handle-resolution.ts +75 -0
  890. package/src/browser/react/filter-segment-order.ts +66 -7
  891. package/src/browser/react/index.ts +0 -48
  892. package/src/browser/react/location-state-shared.ts +178 -8
  893. package/src/browser/react/location-state.ts +39 -14
  894. package/src/browser/react/use-action.ts +6 -15
  895. package/src/browser/react/use-handle.ts +17 -14
  896. package/src/browser/react/use-href.tsx +8 -1
  897. package/src/browser/react/use-link-status.ts +33 -8
  898. package/src/browser/react/use-navigation.ts +40 -16
  899. package/src/browser/react/use-params.ts +20 -10
  900. package/src/browser/react/use-reverse.ts +106 -0
  901. package/src/browser/react/use-router.ts +25 -3
  902. package/src/browser/react/use-search-params.ts +0 -5
  903. package/src/browser/react/use-segments.ts +11 -21
  904. package/src/browser/response-adapter.ts +99 -8
  905. package/src/browser/rsc-router.tsx +91 -24
  906. package/src/browser/scroll-restoration.ts +30 -17
  907. package/src/browser/segment-structure-assert.ts +2 -2
  908. package/src/browser/server-action-bridge.ts +214 -55
  909. package/src/browser/types.ts +80 -9
  910. package/src/browser/validate-redirect-origin.ts +43 -16
  911. package/src/build/collect-fallback-refs.ts +107 -0
  912. package/src/build/generate-manifest.ts +60 -35
  913. package/src/build/generate-route-types.ts +2 -1
  914. package/src/build/index.ts +8 -2
  915. package/src/build/prefix-tree-utils.ts +123 -0
  916. package/src/build/route-trie.ts +117 -14
  917. package/src/build/route-types/ast-route-extraction.ts +15 -8
  918. package/src/build/route-types/codegen.ts +16 -5
  919. package/src/build/route-types/include-resolution.ts +117 -23
  920. package/src/build/route-types/param-extraction.ts +6 -3
  921. package/src/build/route-types/per-module-writer.ts +22 -6
  922. package/src/build/route-types/router-processing.ts +55 -28
  923. package/src/build/route-types/scan-filter.ts +1 -1
  924. package/src/build/route-types/source-scan.ts +216 -0
  925. package/src/build/runtime-discovery.ts +9 -20
  926. package/src/cache/cache-error.ts +104 -0
  927. package/src/cache/cache-key-utils.ts +29 -13
  928. package/src/cache/cache-policy.ts +108 -34
  929. package/src/cache/cache-runtime.ts +224 -41
  930. package/src/cache/cache-scope.ts +188 -82
  931. package/src/cache/cache-tag.ts +103 -0
  932. package/src/cache/cf/cf-base64.ts +33 -0
  933. package/src/cache/cf/cf-cache-constants.ts +127 -0
  934. package/src/cache/cf/cf-cache-store.ts +1989 -378
  935. package/src/cache/cf/cf-cache-types.ts +349 -0
  936. package/src/cache/cf/cf-kv-utils.ts +46 -0
  937. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  938. package/src/cache/cf/index.ts +6 -16
  939. package/src/cache/document-cache.ts +89 -21
  940. package/src/cache/handle-snapshot.ts +70 -0
  941. package/src/cache/index.ts +10 -20
  942. package/src/cache/memory-segment-store.ts +136 -37
  943. package/src/cache/profile-registry.ts +46 -31
  944. package/src/cache/read-through-swr.ts +56 -12
  945. package/src/cache/segment-codec.ts +9 -17
  946. package/src/cache/tag-invalidation.ts +230 -0
  947. package/src/cache/types.ts +37 -100
  948. package/src/client.rsc.tsx +44 -21
  949. package/src/client.tsx +36 -61
  950. package/src/cloudflare/index.ts +11 -0
  951. package/src/cloudflare/tracing.ts +109 -0
  952. package/src/component-utils.ts +19 -0
  953. package/src/components/DefaultDocument.tsx +8 -2
  954. package/src/context-var.ts +18 -6
  955. package/src/decode-loader-results.ts +52 -0
  956. package/src/defer.ts +196 -0
  957. package/src/deps/ssr.ts +0 -1
  958. package/src/encode-kv.ts +49 -0
  959. package/src/errors.ts +30 -4
  960. package/src/escape-script.ts +52 -0
  961. package/src/handle.ts +31 -23
  962. package/src/handles/MetaTags.tsx +62 -19
  963. package/src/handles/Scripts.tsx +183 -0
  964. package/src/handles/breadcrumbs.ts +37 -8
  965. package/src/handles/is-thenable.ts +19 -0
  966. package/src/handles/meta.ts +51 -40
  967. package/src/handles/script.ts +244 -0
  968. package/src/host/cookie-handler.ts +9 -60
  969. package/src/host/errors.ts +0 -24
  970. package/src/host/index.ts +8 -2
  971. package/src/host/pattern-matcher.ts +23 -52
  972. package/src/host/router.ts +107 -99
  973. package/src/host/testing.ts +40 -27
  974. package/src/host/types.ts +37 -4
  975. package/src/host/utils.ts +1 -1
  976. package/src/href-client.ts +137 -22
  977. package/src/index.rsc.ts +96 -12
  978. package/src/index.ts +94 -14
  979. package/src/internal-debug.ts +11 -10
  980. package/src/loader-store.ts +500 -0
  981. package/src/loader.rsc.ts +20 -13
  982. package/src/loader.ts +12 -11
  983. package/src/missing-id-error.ts +68 -0
  984. package/src/outlet-context.ts +1 -1
  985. package/src/outlet-provider.tsx +1 -5
  986. package/src/prerender/param-hash.ts +16 -16
  987. package/src/prerender/store.ts +32 -37
  988. package/src/prerender.ts +61 -6
  989. package/src/redirect-origin.ts +100 -0
  990. package/src/regex-escape.ts +8 -0
  991. package/src/render-error-thrower.tsx +20 -0
  992. package/src/response-utils.ts +62 -0
  993. package/src/reverse.ts +65 -39
  994. package/src/root-error-boundary.tsx +1 -19
  995. package/src/route-content-wrapper.tsx +19 -77
  996. package/src/route-definition/dsl-helpers.ts +304 -309
  997. package/src/route-definition/helper-factories.ts +28 -140
  998. package/src/route-definition/helpers-types.ts +82 -55
  999. package/src/route-definition/index.ts +1 -2
  1000. package/src/route-definition/redirect.ts +44 -11
  1001. package/src/route-definition/resolve-handler-use.ts +12 -1
  1002. package/src/route-definition/use-item-types.ts +29 -0
  1003. package/src/route-map-builder.ts +0 -16
  1004. package/src/route-types.ts +19 -46
  1005. package/src/router/basename.ts +14 -0
  1006. package/src/router/content-negotiation.ts +73 -25
  1007. package/src/router/error-handling.ts +45 -18
  1008. package/src/router/find-match.ts +44 -23
  1009. package/src/router/handler-context.ts +27 -42
  1010. package/src/router/instrument.ts +350 -0
  1011. package/src/router/intercept-resolution.ts +39 -20
  1012. package/src/router/lazy-includes.ts +10 -47
  1013. package/src/router/loader-resolution.ts +155 -72
  1014. package/src/router/logging.ts +0 -6
  1015. package/src/router/manifest.ts +18 -29
  1016. package/src/router/match-api.ts +9 -24
  1017. package/src/router/match-context.ts +0 -22
  1018. package/src/router/match-handlers.ts +58 -58
  1019. package/src/router/match-middleware/background-revalidation.ts +40 -24
  1020. package/src/router/match-middleware/cache-lookup.ts +159 -285
  1021. package/src/router/match-middleware/cache-store.ts +64 -52
  1022. package/src/router/match-middleware/intercept-resolution.ts +0 -22
  1023. package/src/router/match-middleware/segment-resolution.ts +0 -22
  1024. package/src/router/match-pipelines.ts +1 -42
  1025. package/src/router/match-result.ts +44 -74
  1026. package/src/router/metrics.ts +0 -34
  1027. package/src/router/middleware-types.ts +7 -134
  1028. package/src/router/middleware.ts +266 -166
  1029. package/src/router/navigation-snapshot.ts +0 -51
  1030. package/src/router/params-util.ts +23 -0
  1031. package/src/router/pattern-matching.ts +132 -90
  1032. package/src/router/prefetch-cache-ttl.ts +51 -0
  1033. package/src/router/prerender-match.ts +104 -65
  1034. package/src/router/preview-match.ts +3 -1
  1035. package/src/router/request-classification.ts +28 -62
  1036. package/src/router/revalidation.ts +123 -73
  1037. package/src/router/route-snapshot.ts +0 -1
  1038. package/src/router/router-context.ts +3 -28
  1039. package/src/router/router-interfaces.ts +83 -35
  1040. package/src/router/router-options.ts +136 -5
  1041. package/src/router/router-registry.ts +2 -5
  1042. package/src/router/segment-resolution/fresh.ts +97 -84
  1043. package/src/router/segment-resolution/helpers.ts +86 -6
  1044. package/src/router/segment-resolution/loader-cache.ts +76 -39
  1045. package/src/router/segment-resolution/revalidation.ts +272 -320
  1046. package/src/router/segment-resolution/static-store.ts +19 -5
  1047. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1048. package/src/router/segment-resolution/view-transition-default.ts +56 -0
  1049. package/src/router/segment-resolution.ts +5 -1
  1050. package/src/router/segment-wrappers.ts +6 -5
  1051. package/src/router/state-cookie-name.ts +33 -0
  1052. package/src/router/substitute-pattern-params.ts +56 -0
  1053. package/src/router/telemetry-otel.ts +161 -199
  1054. package/src/router/telemetry.ts +96 -19
  1055. package/src/router/timeout.ts +0 -20
  1056. package/src/router/tracing.ts +206 -0
  1057. package/src/router/trie-matching.ts +163 -59
  1058. package/src/router/types.ts +9 -63
  1059. package/src/router/url-params.ts +44 -0
  1060. package/src/router.ts +110 -55
  1061. package/src/rsc/handler-context.ts +3 -2
  1062. package/src/rsc/handler.ts +266 -219
  1063. package/src/rsc/helpers.ts +168 -46
  1064. package/src/rsc/index.ts +2 -5
  1065. package/src/rsc/json-route-result.ts +38 -0
  1066. package/src/rsc/loader-fetch.ts +114 -38
  1067. package/src/rsc/manifest-init.ts +28 -41
  1068. package/src/rsc/origin-guard.ts +39 -25
  1069. package/src/rsc/progressive-enhancement.ts +119 -11
  1070. package/src/rsc/redirect-guard.ts +99 -0
  1071. package/src/rsc/response-cache-serve.ts +238 -0
  1072. package/src/rsc/response-error.ts +79 -12
  1073. package/src/rsc/response-route-handler.ts +99 -189
  1074. package/src/rsc/rsc-rendering.ts +105 -76
  1075. package/src/rsc/runtime-warnings.ts +23 -10
  1076. package/src/rsc/server-action.ts +282 -116
  1077. package/src/rsc/ssr-setup.ts +16 -0
  1078. package/src/rsc/transition-gate.ts +89 -0
  1079. package/src/rsc/types.ts +23 -5
  1080. package/src/runtime-env.ts +18 -0
  1081. package/src/search-params.ts +35 -30
  1082. package/src/segment-loader-promise.ts +31 -4
  1083. package/src/segment-system.tsx +254 -143
  1084. package/src/serialize.ts +243 -0
  1085. package/src/server/context.ts +163 -51
  1086. package/src/server/cookie-parse.ts +32 -0
  1087. package/src/server/cookie-store.ts +80 -5
  1088. package/src/server/handle-store.ts +21 -38
  1089. package/src/server/loader-registry.ts +33 -42
  1090. package/src/server/request-context.ts +287 -178
  1091. package/src/ssr/index.tsx +21 -16
  1092. package/src/static-handler.ts +10 -13
  1093. package/src/testing/cache-status.ts +162 -0
  1094. package/src/testing/collect-handle.ts +40 -0
  1095. package/src/testing/dispatch.ts +701 -0
  1096. package/src/testing/dom.entry.ts +22 -0
  1097. package/src/testing/e2e/fixture.ts +188 -0
  1098. package/src/testing/e2e/index.ts +128 -0
  1099. package/src/testing/e2e/matchers.ts +35 -0
  1100. package/src/testing/e2e/page-helpers.ts +272 -0
  1101. package/src/testing/e2e/parity.ts +387 -0
  1102. package/src/testing/e2e/server.ts +195 -0
  1103. package/src/testing/flight-matchers.ts +97 -0
  1104. package/src/testing/flight-normalize.ts +11 -0
  1105. package/src/testing/flight-runtime.d.ts +57 -0
  1106. package/src/testing/flight-tree.ts +682 -0
  1107. package/src/testing/flight.entry.ts +52 -0
  1108. package/src/testing/flight.ts +257 -0
  1109. package/src/testing/generated-routes.ts +183 -0
  1110. package/src/testing/index.ts +105 -0
  1111. package/src/testing/internal/context.ts +371 -0
  1112. package/src/testing/internal/flight-client-globals.ts +30 -0
  1113. package/src/testing/internal/seed-vars.ts +54 -0
  1114. package/src/testing/render-handler.ts +357 -0
  1115. package/src/testing/render-route.tsx +581 -0
  1116. package/src/testing/run-loader.ts +385 -0
  1117. package/src/testing/run-middleware.ts +205 -0
  1118. package/src/testing/run-transition-when.ts +164 -0
  1119. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1120. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1121. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1122. package/src/testing/vitest-stubs/version.ts +5 -0
  1123. package/src/testing/vitest.ts +305 -0
  1124. package/src/theme/ThemeProvider.tsx +20 -58
  1125. package/src/theme/ThemeScript.tsx +7 -9
  1126. package/src/theme/constants.ts +52 -13
  1127. package/src/theme/index.ts +0 -7
  1128. package/src/theme/theme-context.ts +1 -5
  1129. package/src/theme/theme-script.ts +22 -21
  1130. package/src/theme/use-theme.ts +0 -3
  1131. package/src/types/boundaries.ts +0 -35
  1132. package/src/types/cache-types.ts +13 -4
  1133. package/src/types/error-types.ts +30 -90
  1134. package/src/types/global-namespace.ts +54 -41
  1135. package/src/types/handler-context.ts +110 -62
  1136. package/src/types/index.ts +3 -10
  1137. package/src/types/loader-types.ts +11 -9
  1138. package/src/types/request-scope.ts +112 -0
  1139. package/src/types/route-config.ts +6 -50
  1140. package/src/types/route-entry.ts +0 -6
  1141. package/src/types/segments.ts +135 -14
  1142. package/src/urls/include-helper.ts +9 -56
  1143. package/src/urls/index.ts +1 -11
  1144. package/src/urls/path-helper-types.ts +29 -12
  1145. package/src/urls/path-helper.ts +17 -106
  1146. package/src/urls/pattern-types.ts +36 -19
  1147. package/src/urls/response-types.ts +22 -29
  1148. package/src/urls/type-extraction.ts +58 -139
  1149. package/src/urls/urls-function.ts +1 -19
  1150. package/src/use-loader.tsx +292 -107
  1151. package/src/vite/debug.ts +185 -0
  1152. package/src/vite/discovery/bundle-postprocess.ts +8 -7
  1153. package/src/vite/discovery/discover-routers.ts +126 -85
  1154. package/src/vite/discovery/discovery-errors.ts +194 -0
  1155. package/src/vite/discovery/gate-state.ts +171 -0
  1156. package/src/vite/discovery/prerender-collection.ts +96 -68
  1157. package/src/vite/discovery/route-types-writer.ts +40 -84
  1158. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  1159. package/src/vite/discovery/state.ts +44 -0
  1160. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  1161. package/src/vite/index.ts +2 -0
  1162. package/src/vite/inject-client-debug.ts +36 -0
  1163. package/src/vite/plugin-types.ts +126 -8
  1164. package/src/vite/plugins/cjs-to-esm.ts +16 -19
  1165. package/src/vite/plugins/client-ref-dedup.ts +16 -11
  1166. package/src/vite/plugins/client-ref-hashing.ts +28 -15
  1167. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1168. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1169. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  1170. package/src/vite/plugins/expose-action-id.ts +48 -95
  1171. package/src/vite/plugins/expose-id-utils.ts +88 -55
  1172. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  1173. package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
  1174. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  1175. package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
  1176. package/src/vite/plugins/expose-internal-ids.ts +505 -486
  1177. package/src/vite/plugins/performance-tracks.ts +26 -25
  1178. package/src/vite/plugins/refresh-cmd.ts +1 -1
  1179. package/src/vite/plugins/use-cache-transform.ts +73 -83
  1180. package/src/vite/plugins/version-injector.ts +40 -29
  1181. package/src/vite/plugins/version-plugin.ts +37 -40
  1182. package/src/vite/plugins/virtual-entries.ts +39 -25
  1183. package/src/vite/rango.ts +109 -118
  1184. package/src/vite/router-discovery.ts +777 -119
  1185. package/src/vite/utils/ast-handler-extract.ts +26 -35
  1186. package/src/vite/utils/banner.ts +1 -1
  1187. package/src/vite/utils/bundle-analysis.ts +10 -15
  1188. package/src/vite/utils/client-chunks.ts +184 -0
  1189. package/src/vite/utils/directive-prologue.ts +40 -0
  1190. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1191. package/src/vite/utils/manifest-utils.ts +4 -59
  1192. package/src/vite/utils/package-resolution.ts +20 -52
  1193. package/src/vite/utils/prerender-utils.ts +54 -39
  1194. package/src/vite/utils/shared-utils.ts +90 -41
  1195. package/src/browser/action-response-classifier.ts +0 -99
  1196. package/src/browser/shallow.ts +0 -40
  1197. package/src/router/middleware-cookies.ts +0 -55
package/AGENTS.md CHANGED
@@ -7,3 +7,11 @@ Run `/rango` to understand the API. Detailed guides for each feature are in the
7
7
  ## Development rules
8
8
 
9
9
  - Always commit generated files (e.g. `*.gen.ts`) alongside the source changes that produced them.
10
+
11
+ ## Repo-wide rules (read before pushing)
12
+
13
+ This package inherits the repo-wide conventions in the root [`AGENTS.md`](../../AGENTS.md) and [`CLAUDE.md`](../../CLAUDE.md). The ones a package-scoped reader is most likely to miss:
14
+
15
+ - **Pre-push gate** — before EVERY push, run all of the following from the **repo root** and fix any failures: `pnpm run typecheck`, `pnpm run test:unit:all`, `pnpm run lint`, `pnpm run format`.
16
+ - **`test:unit:all` is recursive** — it runs the unit AND Flight/RSC suites for every package and consumer app (cloudflare-basic, mini, vite-rsc-demo, ...), not just `@rangojs/router`. A change can pass this package's own tests while breaking a consumer app's `@rangojs/router/testing` dogfood suite, so do not run only `pnpm --filter @rangojs/router test:unit`.
17
+ - **Dev + prod e2e parity is mandatory** — every e2e test must cover BOTH dev and production modes; never add a dev-only test without its production counterpart. See the dev/prod bucketing convention in the root `AGENTS.md`.
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
- # @rangojs/router
1
+ # Rango
2
2
 
3
- Named-route RSC router with structural composability and type-safe partial rendering for Vite.
3
+ React RSC Route Wrangler
4
+
5
+ A code-first, type-safe React Server Components router
4
6
 
5
7
  > **Experimental:** This package is under active development. APIs may change between releases. Install with `@experimental` tag.
6
8
 
@@ -10,6 +12,7 @@ Named-route RSC router with structural composability and type-safe partial rende
10
12
  - **Structural composability** — Attach routes, loaders, middleware, handles, caching, prerendering, and static generation without hiding the route tree
11
13
  - **Composable URL patterns** — Django-style `urls()` DSL with `path`, `layout`, `include`
12
14
  - **Data loaders** — `createLoader()` with automatic streaming and Suspense integration
15
+ - **Server actions** — `"use server"` mutations with `useActionState`, `useOptimistic`, and per-segment + per-loader `revalidate()` rules
13
16
  - **Live data layer** — Pre-render or cache the UI shell while loaders stay live by default at request time
14
17
  - **Layouts & nesting** — Nested layouts with `<Outlet />` and parallel routes
15
18
  - **Segment-level caching** — `cache()` DSL with TTL/SWR and pluggable cache stores
@@ -124,20 +127,29 @@ export const router = createRouter().routes(urlpatterns);
124
127
  "use client";
125
128
 
126
129
  import type { ReactNode } from "react";
127
- import { MetaTags } from "@rangojs/router/client";
130
+ import { MetaTags, Scripts } from "@rangojs/router/client";
128
131
 
129
132
  export function Document({ children }: { children: ReactNode }) {
130
133
  return (
131
134
  <html lang="en">
132
135
  <head>
133
136
  <MetaTags />
137
+ <Scripts />
134
138
  </head>
135
- <body>{children}</body>
139
+ <body>
140
+ <Scripts position="body" />
141
+ {children}
142
+ </body>
136
143
  </html>
137
144
  );
138
145
  }
139
146
  ```
140
147
 
148
+ `<MetaTags />` and `<Scripts />` render the tags collected by the built-in `Meta`
149
+ and `Script` handles (see [Meta Tags](#meta-tags) and [Scripts](#scripts)). The
150
+ built-in `DefaultDocument` already includes all three sites, so this is only
151
+ needed for a custom document.
152
+
141
153
  ## Defining Routes
142
154
 
143
155
  Rango is a named-route router first.
@@ -161,13 +173,18 @@ const urlpatterns = urls(({ path }) => [
161
173
  ]);
162
174
  ```
163
175
 
164
- Use `reverse()` as the default way to link to routes:
176
+ Use `ctx.reverse()` from handler context as the default way to link to routes from server code:
165
177
 
166
178
  ```tsx
167
- router.reverse("product", { slug: "widget" }); // "/product/widget"
168
- router.reverse("search", undefined, { q: "rsc" }); // "/search?q=rsc"
179
+ const ProductPage: Handler<"product"> = (ctx) => {
180
+ const url = ctx.reverse("product", { slug: "widget" }); // "/product/widget"
181
+ const searchUrl = ctx.reverse("search", undefined, { q: "rsc" }); // "/search?q=rsc"
182
+ return <Link to={url}>Widget</Link>;
183
+ };
169
184
  ```
170
185
 
186
+ `router.reverse()` (exported from the router module) is the same function without a handler context, useful in scripts or tests. In request code, prefer `ctx.reverse()` — it auto-fills mount params from the current match.
187
+
171
188
  ### Composable URL Modules
172
189
 
173
190
  Local route names compose cleanly with `include(..., { name })`:
@@ -477,41 +494,130 @@ const urlpatterns = urls(({ path, loader }) => [
477
494
  ]);
478
495
  ```
479
496
 
480
- ## Navigation & Links
497
+ ## Server Actions
481
498
 
482
- ### Named Routes with `reverse()` (Server Components)
499
+ Server actions are React's RSC mutation primitive. Define them with the
500
+ `"use server"` directive — Rango uses standard React 19 hooks
501
+ (`useActionState`, `useFormStatus`, `useOptimistic`) with no framework wrapper.
483
502
 
484
- In server components, use `reverse()` to generate URLs by route name:
503
+ ```tsx
504
+ // app/actions/cart.ts
505
+ "use server";
506
+
507
+ import { getRequestContext } from "@rangojs/router";
508
+
509
+ export async function addToCart(productId: string): Promise<void> {
510
+ const ctx = getRequestContext();
511
+ const userId = ctx.get("user").id;
512
+ await db.cart.insert({ userId, productId });
513
+ }
514
+ ```
485
515
 
486
516
  ```tsx
487
- import { Link } from "@rangojs/router/client";
488
- import { reverse } from "./router";
517
+ // Client form with progressive enhancement + pending state
518
+ "use client";
519
+ import { useActionState } from "react";
520
+ import { saveProfile } from "../actions/profile";
489
521
 
490
- function BlogIndex() {
522
+ export function ProfileForm() {
523
+ const [state, action, pending] = useActionState(saveProfile, null);
491
524
  return (
492
- <nav>
493
- <Link to={reverse("home")}>Home</Link>
494
- <Link to={reverse("blogPost", { slug: "my-post" })}>My Post</Link>
495
- <Link to={reverse("about")}>About</Link>
496
- </nav>
525
+ <form action={action}>
526
+ <input name="name" defaultValue={state?.values?.name} />
527
+ {state?.errors?.name && <p role="alert">{state.errors.name}</p>}
528
+ <button disabled={pending}>{pending ? "Saving…" : "Save"}</button>
529
+ </form>
497
530
  );
498
531
  }
499
532
  ```
500
533
 
501
- `reverse()` is type-safe route names and required params are checked at compile time. Included routes use dotted names: `reverse("api.health")`.
534
+ After an action runs, matched route segments (path/layout/parallel/intercept)
535
+ and loaders can re-render/re-resolve so the UI reflects the new state.
536
+ Attach a `revalidate(({ actionId }) => ...)` rule on any segment or loader
537
+ that owns data the action touched:
502
538
 
503
- Handlers also have `ctx.reverse()` directly on the context:
539
+ ```tsx
540
+ urls(({ path, loader, revalidate }) => [
541
+ // Segment-level: re-render the cart page handler after cart actions.
542
+ // Nest loaders that belong to this route inside the same path() so the
543
+ // segment owns its data dependencies.
544
+ path("/cart", CartPage, { name: "cart" }, () => [
545
+ revalidate(
546
+ ({ actionId }) => actionId?.startsWith("src/actions/cart.ts#") ?? false,
547
+ ),
548
+ loader(CartLoader, () => [
549
+ revalidate(
550
+ ({ actionId }) => actionId?.startsWith("src/actions/cart.ts#") ?? false,
551
+ ),
552
+ ]),
553
+ ]),
554
+ ]);
555
+ ```
556
+
557
+ For the full guide — validation with Zod, error handling, file uploads,
558
+ `useOptimistic`, redirects, and progressive enhancement — see the
559
+ `/server-actions` skill.
560
+
561
+ ## Navigation & Links
562
+
563
+ ### Named Routes with `ctx.reverse()` (Server)
564
+
565
+ In server components and handlers, use `ctx.reverse()` to generate URLs by route name. This is the default — it is typed, auto-fills mount params from the current match, and resolves both local (`.name`) and absolute (`name.sub`) names:
504
566
 
505
567
  ```tsx
568
+ import { Link } from "@rangojs/router/client";
569
+ import type { Handler } from "@rangojs/router";
570
+
506
571
  const BlogPostPage: Handler<"blogPost"> = (ctx) => {
507
572
  const backUrl = ctx.reverse("blog");
508
573
  return <Link to={backUrl}>Back to blog</Link>;
509
574
  };
510
575
  ```
511
576
 
577
+ `reverse()` is type-safe — route names and required params are checked at compile time. Included routes use dotted names: `ctx.reverse("api.health")`.
578
+
579
+ For scripts, tests, or other code without a handler context, import the router-level `reverse`:
580
+
581
+ ```tsx
582
+ import { reverse } from "./router";
583
+ reverse("blogPost", { slug: "my-post" });
584
+ ```
585
+
586
+ ### Client Components
587
+
588
+ **`reverse()` is server-only.** It depends on the route manifest and handler context — neither is available in the browser bundle. Client components receive URLs as props, loader data, or server-action return values:
589
+
590
+ ```tsx
591
+ // server
592
+ function BlogIndex(ctx: HandlerContext) {
593
+ return (
594
+ <Nav
595
+ home={ctx.reverse("home")}
596
+ post={ctx.reverse("blogPost", { slug: "my-post" })}
597
+ />
598
+ );
599
+ }
600
+ ```
601
+
602
+ ```tsx
603
+ "use client";
604
+ import { Link } from "@rangojs/router/client";
605
+
606
+ export function Nav({ home, post }: { home: string; post: string }) {
607
+ return (
608
+ <nav>
609
+ <Link to={home}>Home</Link>
610
+ <Link to={post}>My Post</Link>
611
+ </nav>
612
+ );
613
+ }
614
+ ```
615
+
616
+ For client-side navigation to static paths (no named-route lookup), use `href()` — see below. For URLs tied to named routes, you have two options: import the per-module generated `routes` map and use `useReverse(routes)` for in-module names (see [`/links` skill](./skills/links/SKILL.md)), or generate the URL on the server and pass the string in for cross-module URLs.
617
+
512
618
  ### `href()` for Path Validation (Client Components)
513
619
 
514
- In client components, use `href()` for compile-time path validation:
620
+ In client components, use `href()` for compile-time path validation on static path strings:
515
621
 
516
622
  ```tsx
517
623
  "use client";
@@ -848,9 +954,9 @@ import { createHostRouter } from "@rangojs/router/host";
848
954
 
849
955
  const hostRouter = createHostRouter();
850
956
 
851
- hostRouter.host(["*.localhost"]).map(() => import("./apps/admin/handler.js"));
852
- hostRouter.host(["localhost"]).map(() => import("./apps/site/handler.js"));
853
- hostRouter.fallback().map(() => import("./apps/site/handler.js"));
957
+ hostRouter.host(["*.localhost"]).lazy(() => import("./apps/admin/handler.js"));
958
+ hostRouter.host(["localhost"]).lazy(() => import("./apps/site/handler.js"));
959
+ hostRouter.fallback().lazy(() => import("./apps/site/handler.js"));
854
960
 
855
961
  export default {
856
962
  async fetch(request, env, ctx) {
@@ -859,7 +965,7 @@ export default {
859
965
  };
860
966
  ```
861
967
 
862
- Each sub-app has its own `createRouter()` and `urls()`. The host router lazily imports the matched app's handler. Patterns are matched in registration order — register more specific patterns (subdomains) before catch-alls.
968
+ Use `.lazy(() => import("./sub-app"))` to mount a lazily-imported sub-app (a module whose `default` export is a handler or nested host router), and `.map((request) => Response)` for an inline request handler. Only `.lazy()` mounts are imported during build-time discovery; `.map(() => import(...))` is a type error. Each sub-app has its own `createRouter()` and `urls()`. Patterns are matched in registration order — register more specific patterns (subdomains) before catch-alls.
863
969
 
864
970
  ## Meta Tags
865
971
 
@@ -881,6 +987,38 @@ export function BlogPostPage(ctx: HandlerContext) {
881
987
 
882
988
  Render collected tags in the document with `<MetaTags />` from `@rangojs/router/client`.
883
989
 
990
+ ## Scripts
991
+
992
+ Inject `<script>` tags (analytics, GTM, widgets) the same way, using the built-in
993
+ `Script` handle — push a config from a handler, render with `<Scripts />`:
994
+
995
+ ```tsx
996
+ import { Script } from "@rangojs/router";
997
+ import type { HandlerContext } from "@rangojs/router";
998
+ import { Outlet } from "@rangojs/router/client";
999
+
1000
+ export function RootLayout(ctx: HandlerContext) {
1001
+ // Inline bootstrap (GTM/GA4/Segment) — rendered with the request CSP nonce.
1002
+ ctx.use(Script)({ id: "gtm", children: gtmBootstrap("GTM-XXXX") });
1003
+ // External async resource (loads on first encounter, deduped by src).
1004
+ ctx.use(Script)({
1005
+ id: "plausible",
1006
+ src: "https://plausible.io/js/script.js",
1007
+ async: true,
1008
+ attributes: { "data-domain": "example.com" },
1009
+ });
1010
+ return <Outlet />;
1011
+ }
1012
+ ```
1013
+
1014
+ Render with `<Scripts />` (head) and `<Scripts position="body" />` (body) from
1015
+ `@rangojs/router/client` (both are wired in `DefaultDocument`). The request CSP
1016
+ nonce is applied automatically to document-rendered scripts. `ScriptConfig` is a
1017
+ discriminated union (inline / external-async / external-ordered), and inline +
1018
+ ordered scripts are document-load while async externals are React resources — see
1019
+ the [`/scripts` skill](./skills/scripts/SKILL.md) for the full execution contract
1020
+ and CSP guidance.
1021
+
884
1022
  ## CLI: `rango generate`
885
1023
 
886
1024
  Route types are generated automatically by the Vite plugin. The CLI is a manual fallback for generating types outside the dev server (e.g. in CI or for IDE support before first `pnpm dev`):
@@ -898,16 +1036,16 @@ Auto-detects file type:
898
1036
 
899
1037
  ## Type Safety
900
1038
 
901
- The Vite plugin automatically generates a `router.named-routes.gen.ts` file that globally registers route names, patterns, and search schemas via `RSCRouter.GeneratedRouteMap`. This powers server-side named-route typing such as `Handler<"name">`, `ctx.reverse()`, `getRequestContext().reverse()`, and `RouteParams<"name">` without any manual route registration. The gen file is updated on dev server startup, HMR, and production builds.
1039
+ The Vite plugin automatically generates a `router.named-routes.gen.ts` file that globally registers route names, patterns, and search schemas via `Rango.GeneratedRouteMap`. This powers server-side named-route typing such as `Handler<"name">`, `ctx.reverse()`, `getRequestContext().reverse()`, and `RouteParams<"name">` without any manual route registration. The gen file is updated on dev server startup, HMR, and production builds.
902
1040
 
903
- Use the generated map by default. Augment `RSCRouter.RegisteredRoutes` only when you need the richer `typeof router.routeMap` shape globally, especially for response-aware and path-based utilities.
1041
+ Use the generated map by default. Augment `Rango.RegisteredRoutes` only when you need the richer `typeof router.routeMap` shape globally, especially for response-aware and path-based utilities.
904
1042
 
905
1043
  ```typescript
906
1044
  // router.tsx
907
1045
  const router = createRouter<AppBindings>({}).routes(urlpatterns);
908
1046
 
909
1047
  declare global {
910
- namespace RSCRouter {
1048
+ namespace Rango {
911
1049
  interface Env extends AppEnv {}
912
1050
  interface Vars extends AppVars {}
913
1051
  interface RegisteredRoutes extends typeof router.routeMap {}
@@ -919,7 +1057,7 @@ Quick rule of thumb:
919
1057
 
920
1058
  - `GeneratedRouteMap` (auto-generated) — use for server-side named-route typing: `Handler<"name">`, `ctx.reverse()`, `Prerender<"name">`
921
1059
  - `typeof router.routeMap` — use when you need route entries with response metadata
922
- - `RegisteredRoutes` (manual augmentation) — use to expose `typeof router.routeMap` globally for `href()`, `PathResponse`, `ValidPaths`, and other path/response-aware utilities
1060
+ - `RegisteredRoutes` (manual augmentation) — use to expose `typeof router.routeMap` globally for `href()`, `Rango.Path`, `Rango.PathResponse`, and other path/response-aware utilities
923
1061
 
924
1062
  For extracted reusable loaders or middleware, prefer global dotted names on
925
1063
  `ctx.reverse()` by default. If you want type-safe local names for a specific
@@ -947,9 +1085,9 @@ APIs, use their dedicated subpaths.
947
1085
 
948
1086
  ## Examples
949
1087
 
950
- See the `examples/` directory for full working applications:
1088
+ See the example and demo apps for full working applications:
951
1089
 
952
- - [`cloudflare-basic`](../../examples/cloudflare-basic) — Cloudflare Workers with caching, loaders, theme, and pre-rendering
1090
+ - [`cloudflare-basic`](../../tests/cloudflare-basic) — Cloudflare Workers with caching, loaders, theme, and pre-rendering
953
1091
  - [`cloudflare-multi-router`](../../examples/cloudflare-multi-router) — Multi-app host routing
954
1092
 
955
1093
  ## License
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Internal Types - Implementation Details
3
+ *
4
+ * @internal
5
+ * These types are for internal use only and should not be relied upon by consumers.
6
+ * They may change without notice between versions.
7
+ *
8
+ * If you find yourself needing these types, please open an issue to discuss
9
+ * adding them to the public API.
10
+ */
11
+ /**
12
+ * @internal
13
+ * Internal representation of a resolved route segment.
14
+ * Used during route matching and rendering pipeline.
15
+ */
16
+ export type { ResolvedSegment, SegmentMetadata } from "./types.js";
17
+ /**
18
+ * @internal
19
+ * Internal match result from route resolution.
20
+ */
21
+ export type { MatchResult, SlotState } from "./types.js";
22
+ /**
23
+ * @internal
24
+ * Context for intercept route selection.
25
+ */
26
+ export type { InterceptSelectorContext, InterceptSegmentsState, InterceptWhenFn, } from "./server/context.js";
27
+ /**
28
+ * @internal
29
+ * RSC protocol payload structure.
30
+ */
31
+ export type { RscPayload, ReactFormState } from "./rsc/types.js";
32
+ /**
33
+ * @internal
34
+ * Internal navigation store interface.
35
+ */
36
+ export type { NavigationStore, NavigationBridge, RscMetadata, ActionResult, InflightAction, NavigationState, TrackedActionState, ActionStateListener, SegmentCache, SegmentState, NavigationUpdate, } from "./browser/types.js";
37
+ /**
38
+ * @internal
39
+ * Internal handle storage mechanism.
40
+ */
41
+ export type { HandleStore, HandleData } from "./server/handle-store.js";
42
+ /**
43
+ * @internal
44
+ * Segment handle data in cache.
45
+ */
46
+ export type { SegmentHandleData } from "./cache/types.js";
47
+ /**
48
+ * @internal
49
+ * Internal cache entry data structure.
50
+ */
51
+ export type { CachedEntryData, CachedEntryResult, CacheGetResult, SerializedSegmentData, CacheDefaults, } from "./cache/types.js";
52
+ /**
53
+ * @internal
54
+ * Router context for AsyncLocalStorage.
55
+ */
56
+ export type { RouterContext, RevalidationContext, InterceptResult } from "./router/router-context.js";
57
+ /**
58
+ * @internal
59
+ * Route match context during pipeline processing.
60
+ */
61
+ export type { MatchContext, MatchPipelineState } from "./router/match-context.js";
62
+ /**
63
+ * @internal
64
+ * Pattern matching result.
65
+ */
66
+ export type { RouteMatchResult } from "./router/pattern-matching.js";
67
+ /**
68
+ * @internal
69
+ * Entry data during route traversal.
70
+ */
71
+ export type { EntryData, InterceptEntry, MetricsStore, PerformanceMetric, EntryCacheConfig, EntryPropCommon, EntryPropDatas, LoaderEntry, EntryPropSegments, } from "./server/context.js";
72
+ /**
73
+ * @internal
74
+ * Internal handler context with additional props for router internals.
75
+ * Includes `_originalRequest` and `_currentSegmentId`.
76
+ */
77
+ export type { InternalHandlerContext } from "./types.js";
78
+ /**
79
+ * @internal
80
+ * Debug utilities for manifest inspection and comparison.
81
+ */
82
+ export { serializeManifest, compareManifests, formatManifestDiff, type SerializedEntry, type SerializedManifest, } from "./debug.js";
83
+ //# sourceMappingURL=__internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__internal.d.ts","sourceRoot":"","sources":["../src/__internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;;GAIG;AACH,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnE;;;GAGG;AACH,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMzD;;;GAGG;AACH,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAM7B;;;GAGG;AACH,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEjE;;;GAGG;AACH,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAM5B;;;GAGG;AACH,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAExE;;;GAGG;AACH,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAM1D;;;GAGG;AACH,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAM1B;;;GAGG;AACH,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAMtG;;;GAGG;AACH,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAElF;;;GAGG;AACH,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMrE;;;GAGG;AACH,YAAY,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAM7B;;;;GAIG;AACH,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAMzD;;;GAGG;AACH,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Internal Types - Implementation Details
3
+ *
4
+ * @internal
5
+ * These types are for internal use only and should not be relied upon by consumers.
6
+ * They may change without notice between versions.
7
+ *
8
+ * If you find yourself needing these types, please open an issue to discuss
9
+ * adding them to the public API.
10
+ */
11
+ // ============================================================================
12
+ // Debug Utilities (Internal)
13
+ // ============================================================================
14
+ /**
15
+ * @internal
16
+ * Debug utilities for manifest inspection and comparison.
17
+ */
18
+ export { serializeManifest, compareManifests, formatManifestDiff, } from "./debug.js";
19
+ //# sourceMappingURL=__internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__internal.js","sourceRoot":"","sources":["../src/__internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsJH,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;;GAGG;AACH,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GAGnB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Mock for rsc-router:version virtual module.
3
+ * Used by vitest since the virtual module is only available at build time.
4
+ * Empty string disables version path in URLs for simpler test assertions.
5
+ */
6
+ export declare const VERSION = "";
7
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/__mocks__/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,OAAO,KAAK,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Mock for rsc-router:version virtual module.
3
+ * Used by vitest since the virtual module is only available at build time.
4
+ * Empty string disables version path in URLs for simpler test assertions.
5
+ */
6
+ export const VERSION = "";
7
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/__mocks__/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client-href.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-href.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/client-href.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,74 @@
1
+ import { describe, it, expect, expectTypeOf } from "vitest";
2
+ import { href } from "../href-client.js";
3
+ describe("href()", () => {
4
+ describe("without mount", () => {
5
+ it("returns path unchanged", () => {
6
+ expect(href("/foo")).toBe("/foo");
7
+ });
8
+ it("handles root path", () => {
9
+ expect(href("/")).toBe("/");
10
+ });
11
+ it("handles nested paths", () => {
12
+ expect(href("/blog/my-post")).toBe("/blog/my-post");
13
+ });
14
+ it("handles paths with query strings", () => {
15
+ expect(href("/search?q=test")).toBe("/search?q=test");
16
+ });
17
+ it("handles paths with hash fragments", () => {
18
+ expect(href("/about#contact")).toBe("/about#contact");
19
+ });
20
+ it("handles paths with query and hash", () => {
21
+ expect(href("/page?a=1#top")).toBe("/page?a=1#top");
22
+ });
23
+ });
24
+ describe("with mount", () => {
25
+ it("prepends mount to path", () => {
26
+ expect(href("/foo", "/articles")).toBe("/articles/foo");
27
+ });
28
+ it("prepends mount to root path", () => {
29
+ expect(href("/", "/articles")).toBe("/articles/");
30
+ });
31
+ it("handles nested mount", () => {
32
+ expect(href("/detail", "/articles/comments")).toBe("/articles/comments/detail");
33
+ });
34
+ it("treats root mount as no mount", () => {
35
+ expect(href("/foo", "/")).toBe("/foo");
36
+ });
37
+ it("handles undefined mount", () => {
38
+ expect(href("/foo", undefined)).toBe("/foo");
39
+ });
40
+ it("handles empty string mount", () => {
41
+ expect(href("/foo", "")).toBe("/foo");
42
+ });
43
+ });
44
+ describe("PatternToPath types", () => {
45
+ it("static path", () => {
46
+ expectTypeOf().toEqualTypeOf();
47
+ });
48
+ it("dynamic param", () => {
49
+ expectTypeOf().toEqualTypeOf();
50
+ });
51
+ it("optional param at end", () => {
52
+ expectTypeOf().toEqualTypeOf();
53
+ });
54
+ it("constrained param", () => {
55
+ expectTypeOf().toEqualTypeOf();
56
+ });
57
+ it("multiple dynamic params", () => {
58
+ expectTypeOf().toEqualTypeOf();
59
+ });
60
+ it("root path stays root", () => {
61
+ expectTypeOf().toEqualTypeOf();
62
+ });
63
+ });
64
+ describe("ValidPaths fallback", () => {
65
+ // When no routes are registered, ValidPaths falls back to `/${string}`
66
+ // This is tested implicitly by the fact that href() accepts any path starting with /
67
+ it("accepts any path when no routes registered", () => {
68
+ // href() is callable with any /-prefixed string
69
+ const result = href("/anything/at/all");
70
+ expect(result).toBe("/anything/at/all");
71
+ });
72
+ });
73
+ });
74
+ //# sourceMappingURL=client-href.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-href.test.js","sourceRoot":"","sources":["../../src/__tests__/client-href.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=component-utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-utils.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/component-utils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { isClientComponent, assertClientComponent } from "../component-utils";
3
+ describe("component-utils", () => {
4
+ describe("isClientComponent", () => {
5
+ it("should return false for regular functions", () => {
6
+ const ServerComponent = () => null;
7
+ expect(isClientComponent(ServerComponent)).toBe(false);
8
+ });
9
+ it("should return false for non-functions", () => {
10
+ expect(isClientComponent(null)).toBe(false);
11
+ expect(isClientComponent(undefined)).toBe(false);
12
+ expect(isClientComponent("string")).toBe(false);
13
+ expect(isClientComponent(123)).toBe(false);
14
+ expect(isClientComponent({})).toBe(false);
15
+ });
16
+ it("should return true for functions with client reference marker", () => {
17
+ const ClientComponent = () => null;
18
+ // Simulate what the bundler does for "use client" components
19
+ ClientComponent.$$typeof = Symbol.for("react.client.reference");
20
+ ClientComponent.$$id = "src/components/MyComponent.tsx#default";
21
+ expect(isClientComponent(ClientComponent)).toBe(true);
22
+ });
23
+ it("should return false for functions with wrong $$typeof symbol", () => {
24
+ const Component = () => null;
25
+ Component.$$typeof = Symbol.for("react.element");
26
+ expect(isClientComponent(Component)).toBe(false);
27
+ });
28
+ });
29
+ describe("assertClientComponent", () => {
30
+ it("should throw for non-function values", () => {
31
+ expect(() => assertClientComponent(null, "document")).toThrow('document must be a client component function with "use client" directive');
32
+ expect(() => assertClientComponent({}, "document")).toThrow('document must be a client component function with "use client" directive');
33
+ });
34
+ it("should throw for server components (no client marker)", () => {
35
+ const ServerComponent = () => null;
36
+ expect(() => assertClientComponent(ServerComponent, "document")).toThrow('document must be a client component with "use client" directive');
37
+ expect(() => assertClientComponent(ServerComponent, "document")).toThrow("cannot be serialized in the RSC payload");
38
+ });
39
+ it("should not throw for client components", () => {
40
+ const ClientComponent = () => null;
41
+ ClientComponent.$$typeof = Symbol.for("react.client.reference");
42
+ ClientComponent.$$id = "src/document.tsx#default";
43
+ expect(() => assertClientComponent(ClientComponent, "document")).not.toThrow();
44
+ });
45
+ it("should include component name in error message", () => {
46
+ const ServerComponent = () => null;
47
+ expect(() => assertClientComponent(ServerComponent, "myLayout")).toThrow("myLayout must be a client component");
48
+ });
49
+ });
50
+ });
51
+ //# sourceMappingURL=component-utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-utils.test.js","sourceRoot":"","sources":["../../src/__tests__/component-utils.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=event-controller.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-controller.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/event-controller.test.ts"],"names":[],"mappings":""}