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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1191) hide show
  1. package/AGENTS.md +8 -0
  2. package/README.md +123 -15
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/dist/__mocks__/version.js +7 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +319 -95
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -28
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/{src/handles/index.ts → dist/handles/index.d.ts} +1 -2
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/dist/href-context.d.ts +29 -0
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/{src/network-error-thrower.tsx → dist/network-error-thrower.d.ts} +4 -10
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/testing/vitest.js +82 -0
  712. package/dist/theme/ThemeProvider.d.ts +20 -0
  713. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  714. package/dist/theme/ThemeProvider.js +240 -0
  715. package/dist/theme/ThemeProvider.js.map +1 -0
  716. package/dist/theme/ThemeScript.d.ts +48 -0
  717. package/dist/theme/ThemeScript.d.ts.map +1 -0
  718. package/dist/theme/ThemeScript.js +13 -0
  719. package/dist/theme/ThemeScript.js.map +1 -0
  720. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  721. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  722. package/dist/theme/__tests__/theme.test.js +103 -0
  723. package/dist/theme/__tests__/theme.test.js.map +1 -0
  724. package/dist/theme/constants.d.ts +29 -0
  725. package/dist/theme/constants.d.ts.map +1 -0
  726. package/dist/theme/constants.js +48 -0
  727. package/dist/theme/constants.js.map +1 -0
  728. package/dist/theme/index.d.ts +31 -0
  729. package/dist/theme/index.d.ts.map +1 -0
  730. package/dist/theme/index.js +36 -0
  731. package/dist/theme/index.js.map +1 -0
  732. package/dist/theme/theme-context.d.ts +40 -0
  733. package/dist/theme/theme-context.d.ts.map +1 -0
  734. package/dist/theme/theme-context.js +60 -0
  735. package/dist/theme/theme-context.js.map +1 -0
  736. package/dist/theme/theme-script.d.ts +27 -0
  737. package/dist/theme/theme-script.d.ts.map +1 -0
  738. package/dist/theme/theme-script.js +147 -0
  739. package/dist/theme/theme-script.js.map +1 -0
  740. package/dist/theme/types.d.ts +163 -0
  741. package/dist/theme/types.d.ts.map +1 -0
  742. package/dist/theme/types.js +11 -0
  743. package/dist/theme/types.js.map +1 -0
  744. package/dist/theme/use-theme.d.ts +12 -0
  745. package/dist/theme/use-theme.d.ts.map +1 -0
  746. package/dist/theme/use-theme.js +40 -0
  747. package/dist/theme/use-theme.js.map +1 -0
  748. package/dist/types.d.ts +1479 -0
  749. package/dist/types.d.ts.map +1 -0
  750. package/dist/types.js +10 -0
  751. package/dist/types.js.map +1 -0
  752. package/dist/urls.d.ts +441 -0
  753. package/dist/urls.d.ts.map +1 -0
  754. package/dist/urls.gen.d.ts +8 -0
  755. package/dist/urls.gen.d.ts.map +1 -0
  756. package/dist/urls.gen.js +8 -0
  757. package/dist/urls.gen.js.map +1 -0
  758. package/dist/urls.js +443 -0
  759. package/dist/urls.js.map +1 -0
  760. package/dist/use-loader.d.ts +127 -0
  761. package/dist/use-loader.d.ts.map +1 -0
  762. package/dist/use-loader.js +237 -0
  763. package/dist/use-loader.js.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  767. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  771. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  775. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  777. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  779. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  780. package/dist/vite/ast-handler-extract.d.ts +49 -0
  781. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  782. package/dist/vite/ast-handler-extract.js +249 -0
  783. package/dist/vite/ast-handler-extract.js.map +1 -0
  784. package/dist/vite/expose-action-id.d.ts +19 -0
  785. package/dist/vite/expose-action-id.d.ts.map +1 -0
  786. package/dist/vite/expose-action-id.js +250 -0
  787. package/dist/vite/expose-action-id.js.map +1 -0
  788. package/dist/vite/expose-id-utils.d.ts +69 -0
  789. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  790. package/dist/vite/expose-id-utils.js +289 -0
  791. package/dist/vite/expose-id-utils.js.map +1 -0
  792. package/dist/vite/expose-internal-ids.d.ts +22 -0
  793. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  794. package/dist/vite/expose-internal-ids.js +886 -0
  795. package/dist/vite/expose-internal-ids.js.map +1 -0
  796. package/dist/vite/index.d.ts +149 -0
  797. package/dist/vite/index.d.ts.map +1 -0
  798. package/dist/vite/index.js +2011 -783
  799. package/dist/vite/index.js.bak +5448 -0
  800. package/dist/vite/index.js.map +1 -0
  801. package/dist/vite/index.named-routes.gen.ts +103 -0
  802. package/dist/vite/package-resolution.d.ts +43 -0
  803. package/dist/vite/package-resolution.d.ts.map +1 -0
  804. package/dist/vite/package-resolution.js +112 -0
  805. package/dist/vite/package-resolution.js.map +1 -0
  806. package/dist/vite/virtual-entries.d.ts +25 -0
  807. package/dist/vite/virtual-entries.d.ts.map +1 -0
  808. package/dist/vite/virtual-entries.js +110 -0
  809. package/dist/vite/virtual-entries.js.map +1 -0
  810. package/package.json +67 -15
  811. package/skills/api-client/SKILL.md +211 -0
  812. package/skills/breadcrumbs/SKILL.md +61 -1
  813. package/skills/bundle-analysis/SKILL.md +159 -0
  814. package/skills/cache-guide/SKILL.md +224 -32
  815. package/skills/caching/SKILL.md +279 -17
  816. package/skills/composability/SKILL.md +27 -3
  817. package/skills/css/SKILL.md +76 -0
  818. package/skills/debug-manifest/SKILL.md +4 -2
  819. package/skills/document-cache/SKILL.md +78 -55
  820. package/skills/handler-use/SKILL.md +11 -9
  821. package/skills/hooks/SKILL.md +240 -28
  822. package/skills/host-router/SKILL.md +83 -23
  823. package/skills/i18n/SKILL.md +276 -0
  824. package/skills/intercept/SKILL.md +68 -19
  825. package/skills/layout/SKILL.md +13 -9
  826. package/skills/links/SKILL.md +175 -17
  827. package/skills/loader/SKILL.md +217 -24
  828. package/skills/middleware/SKILL.md +18 -10
  829. package/skills/migrate-nextjs/SKILL.md +43 -19
  830. package/skills/migrate-react-router/SKILL.md +8 -2
  831. package/skills/mime-routes/SKILL.md +28 -1
  832. package/skills/observability/SKILL.md +172 -0
  833. package/skills/parallel/SKILL.md +18 -7
  834. package/skills/prerender/SKILL.md +65 -60
  835. package/skills/rango/SKILL.md +251 -24
  836. package/skills/react-compiler/SKILL.md +168 -0
  837. package/skills/response-routes/SKILL.md +115 -48
  838. package/skills/route/SKILL.md +46 -5
  839. package/skills/router-setup/SKILL.md +30 -8
  840. package/skills/scripts/SKILL.md +179 -0
  841. package/skills/server-actions/SKILL.md +775 -0
  842. package/skills/tailwind/SKILL.md +27 -3
  843. package/skills/testing/SKILL.md +130 -0
  844. package/skills/testing/bindings.md +103 -0
  845. package/skills/testing/cache-prerender.md +127 -0
  846. package/skills/testing/client-components.md +124 -0
  847. package/skills/testing/e2e-parity.md +125 -0
  848. package/skills/testing/flight.md +91 -0
  849. package/skills/testing/handles.md +129 -0
  850. package/skills/testing/loader.md +128 -0
  851. package/skills/testing/middleware.md +99 -0
  852. package/skills/testing/render-handler.md +122 -0
  853. package/skills/testing/response-routes.md +95 -0
  854. package/skills/testing/reverse-and-types.md +84 -0
  855. package/skills/testing/server-actions.md +107 -0
  856. package/skills/testing/server-tree.md +128 -0
  857. package/skills/testing/setup.md +123 -0
  858. package/skills/typesafety/SKILL.md +319 -28
  859. package/skills/use-cache/SKILL.md +57 -14
  860. package/skills/view-transitions/SKILL.md +337 -0
  861. package/src/__augment-tests__/augment.ts +81 -0
  862. package/src/__augment-tests__/augmented.check.ts +116 -0
  863. package/src/__internal.ts +0 -65
  864. package/src/browser/action-coordinator.ts +53 -36
  865. package/src/browser/action-fence.ts +47 -0
  866. package/src/browser/app-shell.ts +14 -27
  867. package/src/browser/connection-warmup.ts +134 -0
  868. package/src/browser/cookie-name.ts +140 -0
  869. package/src/browser/event-controller.ts +192 -150
  870. package/src/browser/history-state.ts +21 -0
  871. package/src/browser/index.ts +3 -3
  872. package/src/browser/invalidate-client-cache.ts +52 -0
  873. package/src/browser/navigation-bridge.ts +95 -75
  874. package/src/browser/navigation-client.ts +110 -84
  875. package/src/browser/navigation-store-handle.ts +38 -0
  876. package/src/browser/navigation-store.ts +114 -90
  877. package/src/browser/navigation-transaction.ts +9 -59
  878. package/src/browser/network-error-handler.ts +34 -7
  879. package/src/browser/partial-update.ts +147 -147
  880. package/src/browser/prefetch/cache.ts +107 -72
  881. package/src/browser/prefetch/fetch.ts +204 -34
  882. package/src/browser/prefetch/queue.ts +6 -3
  883. package/src/browser/rango-state.ts +157 -115
  884. package/src/browser/react/Link.tsx +30 -7
  885. package/src/browser/react/NavigationProvider.tsx +272 -142
  886. package/src/browser/react/ScrollRestoration.tsx +10 -6
  887. package/src/browser/react/deferred-handle-resolution.ts +75 -0
  888. package/src/browser/react/filter-segment-order.ts +66 -7
  889. package/src/browser/react/index.ts +0 -48
  890. package/src/browser/react/location-state-shared.ts +178 -8
  891. package/src/browser/react/location-state.ts +39 -14
  892. package/src/browser/react/use-action.ts +6 -15
  893. package/src/browser/react/use-handle.ts +17 -14
  894. package/src/browser/react/use-href.tsx +8 -1
  895. package/src/browser/react/use-link-status.ts +33 -8
  896. package/src/browser/react/use-navigation.ts +10 -5
  897. package/src/browser/react/use-params.ts +11 -11
  898. package/src/browser/react/use-reverse.ts +106 -0
  899. package/src/browser/react/use-router.ts +20 -5
  900. package/src/browser/react/use-search-params.ts +0 -5
  901. package/src/browser/react/use-segments.ts +11 -21
  902. package/src/browser/response-adapter.ts +99 -8
  903. package/src/browser/rsc-router.tsx +73 -34
  904. package/src/browser/scroll-restoration.ts +30 -17
  905. package/src/browser/segment-structure-assert.ts +2 -2
  906. package/src/browser/server-action-bridge.ts +214 -55
  907. package/src/browser/types.ts +80 -22
  908. package/src/browser/validate-redirect-origin.ts +43 -16
  909. package/src/build/collect-fallback-refs.ts +107 -0
  910. package/src/build/generate-manifest.ts +60 -35
  911. package/src/build/generate-route-types.ts +2 -1
  912. package/src/build/index.ts +8 -2
  913. package/src/build/prefix-tree-utils.ts +123 -0
  914. package/src/build/route-trie.ts +117 -14
  915. package/src/build/route-types/ast-route-extraction.ts +15 -8
  916. package/src/build/route-types/codegen.ts +16 -5
  917. package/src/build/route-types/include-resolution.ts +117 -23
  918. package/src/build/route-types/param-extraction.ts +6 -3
  919. package/src/build/route-types/per-module-writer.ts +22 -6
  920. package/src/build/route-types/router-processing.ts +55 -28
  921. package/src/build/route-types/scan-filter.ts +1 -1
  922. package/src/build/route-types/source-scan.ts +216 -0
  923. package/src/build/runtime-discovery.ts +9 -20
  924. package/src/cache/cache-error.ts +104 -0
  925. package/src/cache/cache-key-utils.ts +29 -13
  926. package/src/cache/cache-policy.ts +108 -34
  927. package/src/cache/cache-runtime.ts +224 -41
  928. package/src/cache/cache-scope.ts +188 -82
  929. package/src/cache/cache-tag.ts +103 -0
  930. package/src/cache/cf/cf-base64.ts +33 -0
  931. package/src/cache/cf/cf-cache-constants.ts +127 -0
  932. package/src/cache/cf/cf-cache-store.ts +1990 -377
  933. package/src/cache/cf/cf-cache-types.ts +349 -0
  934. package/src/cache/cf/cf-kv-utils.ts +46 -0
  935. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  936. package/src/cache/cf/index.ts +6 -16
  937. package/src/cache/document-cache.ts +89 -21
  938. package/src/cache/handle-snapshot.ts +70 -0
  939. package/src/cache/index.ts +10 -20
  940. package/src/cache/memory-segment-store.ts +136 -37
  941. package/src/cache/profile-registry.ts +46 -31
  942. package/src/cache/read-through-swr.ts +56 -12
  943. package/src/cache/segment-codec.ts +9 -17
  944. package/src/cache/tag-invalidation.ts +230 -0
  945. package/src/cache/types.ts +37 -100
  946. package/src/client.rsc.tsx +44 -21
  947. package/src/client.tsx +36 -61
  948. package/src/cloudflare/index.ts +11 -0
  949. package/src/cloudflare/tracing.ts +109 -0
  950. package/src/component-utils.ts +19 -0
  951. package/src/components/DefaultDocument.tsx +8 -2
  952. package/src/context-var.ts +18 -6
  953. package/src/decode-loader-results.ts +52 -0
  954. package/src/defer.ts +196 -0
  955. package/src/deps/ssr.ts +0 -1
  956. package/src/encode-kv.ts +49 -0
  957. package/src/errors.ts +30 -4
  958. package/src/escape-script.ts +52 -0
  959. package/src/handle.ts +31 -23
  960. package/src/handles/MetaTags.tsx +62 -19
  961. package/src/handles/Scripts.tsx +183 -0
  962. package/src/handles/breadcrumbs.ts +37 -8
  963. package/src/handles/is-thenable.ts +19 -0
  964. package/src/handles/meta.ts +51 -40
  965. package/src/handles/script.ts +244 -0
  966. package/src/host/cookie-handler.ts +9 -60
  967. package/src/host/errors.ts +0 -24
  968. package/src/host/index.ts +8 -2
  969. package/src/host/pattern-matcher.ts +23 -52
  970. package/src/host/router.ts +107 -99
  971. package/src/host/testing.ts +40 -27
  972. package/src/host/types.ts +37 -4
  973. package/src/host/utils.ts +1 -1
  974. package/src/href-client.ts +137 -22
  975. package/src/index.rsc.ts +93 -12
  976. package/src/index.ts +91 -14
  977. package/src/internal-debug.ts +11 -10
  978. package/src/loader-store.ts +500 -0
  979. package/src/loader.rsc.ts +20 -13
  980. package/src/loader.ts +12 -11
  981. package/src/missing-id-error.ts +68 -0
  982. package/src/outlet-provider.tsx +1 -5
  983. package/src/prerender/param-hash.ts +16 -16
  984. package/src/prerender/store.ts +32 -37
  985. package/src/prerender.ts +61 -6
  986. package/src/redirect-origin.ts +100 -0
  987. package/src/regex-escape.ts +8 -0
  988. package/src/render-error-thrower.tsx +20 -0
  989. package/src/response-utils.ts +34 -0
  990. package/src/reverse.ts +65 -40
  991. package/src/root-error-boundary.tsx +1 -19
  992. package/src/route-content-wrapper.tsx +19 -77
  993. package/src/route-definition/dsl-helpers.ts +293 -311
  994. package/src/route-definition/helper-factories.ts +28 -140
  995. package/src/route-definition/helpers-types.ts +82 -55
  996. package/src/route-definition/index.ts +1 -2
  997. package/src/route-definition/redirect.ts +44 -11
  998. package/src/route-definition/resolve-handler-use.ts +6 -1
  999. package/src/route-definition/use-item-types.ts +29 -0
  1000. package/src/route-map-builder.ts +0 -16
  1001. package/src/route-types.ts +19 -46
  1002. package/src/router/basename.ts +14 -0
  1003. package/src/router/content-negotiation.ts +73 -25
  1004. package/src/router/error-handling.ts +45 -18
  1005. package/src/router/find-match.ts +44 -23
  1006. package/src/router/handler-context.ts +10 -42
  1007. package/src/router/instrument.ts +350 -0
  1008. package/src/router/intercept-resolution.ts +39 -20
  1009. package/src/router/lazy-includes.ts +9 -46
  1010. package/src/router/loader-resolution.ts +152 -72
  1011. package/src/router/logging.ts +0 -6
  1012. package/src/router/manifest.ts +18 -29
  1013. package/src/router/match-api.ts +6 -21
  1014. package/src/router/match-context.ts +0 -22
  1015. package/src/router/match-handlers.ts +58 -58
  1016. package/src/router/match-middleware/background-revalidation.ts +40 -24
  1017. package/src/router/match-middleware/cache-lookup.ts +159 -285
  1018. package/src/router/match-middleware/cache-store.ts +64 -52
  1019. package/src/router/match-middleware/intercept-resolution.ts +0 -22
  1020. package/src/router/match-middleware/segment-resolution.ts +0 -22
  1021. package/src/router/match-pipelines.ts +1 -42
  1022. package/src/router/match-result.ts +44 -74
  1023. package/src/router/metrics.ts +0 -34
  1024. package/src/router/middleware-types.ts +5 -112
  1025. package/src/router/middleware.ts +237 -165
  1026. package/src/router/navigation-snapshot.ts +0 -51
  1027. package/src/router/params-util.ts +23 -0
  1028. package/src/router/pattern-matching.ts +85 -94
  1029. package/src/router/prefetch-cache-ttl.ts +51 -0
  1030. package/src/router/prerender-match.ts +104 -65
  1031. package/src/router/preview-match.ts +3 -1
  1032. package/src/router/request-classification.ts +28 -62
  1033. package/src/router/revalidation.ts +123 -73
  1034. package/src/router/route-snapshot.ts +0 -1
  1035. package/src/router/router-context.ts +3 -28
  1036. package/src/router/router-interfaces.ts +83 -35
  1037. package/src/router/router-options.ts +136 -5
  1038. package/src/router/router-registry.ts +2 -5
  1039. package/src/router/segment-resolution/fresh.ts +97 -84
  1040. package/src/router/segment-resolution/helpers.ts +86 -6
  1041. package/src/router/segment-resolution/loader-cache.ts +76 -39
  1042. package/src/router/segment-resolution/revalidation.ts +272 -320
  1043. package/src/router/segment-resolution/static-store.ts +19 -5
  1044. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1045. package/src/router/segment-resolution/view-transition-default.ts +56 -0
  1046. package/src/router/segment-resolution.ts +5 -1
  1047. package/src/router/segment-wrappers.ts +6 -5
  1048. package/src/router/state-cookie-name.ts +33 -0
  1049. package/src/router/substitute-pattern-params.ts +56 -0
  1050. package/src/router/telemetry-otel.ts +161 -199
  1051. package/src/router/telemetry.ts +96 -19
  1052. package/src/router/timeout.ts +0 -20
  1053. package/src/router/tracing.ts +206 -0
  1054. package/src/router/trie-matching.ts +162 -64
  1055. package/src/router/types.ts +9 -63
  1056. package/src/router/url-params.ts +0 -5
  1057. package/src/router.ts +109 -53
  1058. package/src/rsc/handler-context.ts +3 -2
  1059. package/src/rsc/handler.ts +262 -219
  1060. package/src/rsc/helpers.ts +100 -6
  1061. package/src/rsc/index.ts +2 -5
  1062. package/src/rsc/json-route-result.ts +38 -0
  1063. package/src/rsc/loader-fetch.ts +114 -38
  1064. package/src/rsc/manifest-init.ts +28 -41
  1065. package/src/rsc/origin-guard.ts +39 -25
  1066. package/src/rsc/progressive-enhancement.ts +117 -11
  1067. package/src/rsc/redirect-guard.ts +99 -0
  1068. package/src/rsc/response-cache-serve.ts +238 -0
  1069. package/src/rsc/response-error.ts +79 -12
  1070. package/src/rsc/response-route-handler.ts +85 -188
  1071. package/src/rsc/rsc-rendering.ts +98 -76
  1072. package/src/rsc/runtime-warnings.ts +23 -10
  1073. package/src/rsc/server-action.ts +281 -117
  1074. package/src/rsc/ssr-setup.ts +16 -0
  1075. package/src/rsc/transition-gate.ts +89 -0
  1076. package/src/rsc/types.ts +23 -5
  1077. package/src/runtime-env.ts +18 -0
  1078. package/src/search-params.ts +35 -30
  1079. package/src/segment-loader-promise.ts +31 -4
  1080. package/src/segment-system.tsx +227 -143
  1081. package/src/serialize.ts +243 -0
  1082. package/src/server/context.ts +163 -51
  1083. package/src/server/cookie-parse.ts +32 -0
  1084. package/src/server/cookie-store.ts +80 -5
  1085. package/src/server/handle-store.ts +21 -38
  1086. package/src/server/loader-registry.ts +33 -42
  1087. package/src/server/request-context.ts +277 -136
  1088. package/src/ssr/index.tsx +21 -16
  1089. package/src/static-handler.ts +10 -13
  1090. package/src/testing/cache-status.ts +162 -0
  1091. package/src/testing/collect-handle.ts +40 -0
  1092. package/src/testing/dispatch.ts +701 -0
  1093. package/src/testing/dom.entry.ts +22 -0
  1094. package/src/testing/e2e/fixture.ts +188 -0
  1095. package/src/testing/e2e/index.ts +128 -0
  1096. package/src/testing/e2e/matchers.ts +35 -0
  1097. package/src/testing/e2e/page-helpers.ts +272 -0
  1098. package/src/testing/e2e/parity.ts +387 -0
  1099. package/src/testing/e2e/server.ts +195 -0
  1100. package/src/testing/flight-matchers.ts +97 -0
  1101. package/src/testing/flight-normalize.ts +11 -0
  1102. package/src/testing/flight-runtime.d.ts +57 -0
  1103. package/src/testing/flight-tree.ts +682 -0
  1104. package/src/testing/flight.entry.ts +52 -0
  1105. package/src/testing/flight.ts +257 -0
  1106. package/src/testing/generated-routes.ts +183 -0
  1107. package/src/testing/index.ts +105 -0
  1108. package/src/testing/internal/context.ts +371 -0
  1109. package/src/testing/internal/flight-client-globals.ts +30 -0
  1110. package/src/testing/internal/seed-vars.ts +54 -0
  1111. package/src/testing/render-handler.ts +357 -0
  1112. package/src/testing/render-route.tsx +581 -0
  1113. package/src/testing/run-loader.ts +385 -0
  1114. package/src/testing/run-middleware.ts +205 -0
  1115. package/src/testing/run-transition-when.ts +164 -0
  1116. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1117. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1118. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1119. package/src/testing/vitest-stubs/version.ts +5 -0
  1120. package/src/testing/vitest.ts +305 -0
  1121. package/src/theme/ThemeProvider.tsx +20 -58
  1122. package/src/theme/ThemeScript.tsx +7 -9
  1123. package/src/theme/constants.ts +52 -13
  1124. package/src/theme/index.ts +0 -7
  1125. package/src/theme/theme-context.ts +1 -5
  1126. package/src/theme/theme-script.ts +22 -21
  1127. package/src/theme/use-theme.ts +0 -3
  1128. package/src/types/boundaries.ts +0 -35
  1129. package/src/types/cache-types.ts +13 -4
  1130. package/src/types/error-types.ts +30 -90
  1131. package/src/types/global-namespace.ts +54 -41
  1132. package/src/types/handler-context.ts +108 -28
  1133. package/src/types/index.ts +3 -10
  1134. package/src/types/loader-types.ts +6 -3
  1135. package/src/types/request-scope.ts +8 -22
  1136. package/src/types/route-config.ts +6 -50
  1137. package/src/types/route-entry.ts +0 -6
  1138. package/src/types/segments.ts +135 -14
  1139. package/src/urls/include-helper.ts +9 -56
  1140. package/src/urls/index.ts +1 -11
  1141. package/src/urls/path-helper-types.ts +29 -12
  1142. package/src/urls/path-helper.ts +17 -106
  1143. package/src/urls/pattern-types.ts +36 -19
  1144. package/src/urls/response-types.ts +20 -19
  1145. package/src/urls/type-extraction.ts +58 -139
  1146. package/src/urls/urls-function.ts +1 -19
  1147. package/src/use-loader.tsx +292 -107
  1148. package/src/vite/debug.ts +58 -13
  1149. package/src/vite/discovery/bundle-postprocess.ts +8 -7
  1150. package/src/vite/discovery/discover-routers.ts +97 -84
  1151. package/src/vite/discovery/discovery-errors.ts +194 -0
  1152. package/src/vite/discovery/gate-state.ts +171 -0
  1153. package/src/vite/discovery/prerender-collection.ts +50 -69
  1154. package/src/vite/discovery/route-types-writer.ts +40 -84
  1155. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  1156. package/src/vite/discovery/state.ts +44 -0
  1157. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  1158. package/src/vite/index.ts +2 -0
  1159. package/src/vite/inject-client-debug.ts +36 -0
  1160. package/src/vite/plugin-types.ts +126 -8
  1161. package/src/vite/plugins/cjs-to-esm.ts +14 -28
  1162. package/src/vite/plugins/client-ref-dedup.ts +5 -21
  1163. package/src/vite/plugins/client-ref-hashing.ts +14 -13
  1164. package/src/vite/plugins/cloudflare-protocol-stub.ts +1 -21
  1165. package/src/vite/plugins/expose-action-id.ts +6 -77
  1166. package/src/vite/plugins/expose-id-utils.ts +88 -55
  1167. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  1168. package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
  1169. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  1170. package/src/vite/plugins/expose-ids/router-transform.ts +100 -28
  1171. package/src/vite/plugins/expose-internal-ids.ts +59 -70
  1172. package/src/vite/plugins/performance-tracks.ts +11 -18
  1173. package/src/vite/plugins/refresh-cmd.ts +1 -1
  1174. package/src/vite/plugins/use-cache-transform.ts +28 -52
  1175. package/src/vite/plugins/version-injector.ts +40 -29
  1176. package/src/vite/plugins/version-plugin.ts +37 -40
  1177. package/src/vite/plugins/virtual-entries.ts +39 -25
  1178. package/src/vite/rango.ts +62 -106
  1179. package/src/vite/router-discovery.ts +591 -122
  1180. package/src/vite/utils/ast-handler-extract.ts +26 -35
  1181. package/src/vite/utils/bundle-analysis.ts +10 -15
  1182. package/src/vite/utils/client-chunks.ts +184 -0
  1183. package/src/vite/utils/directive-prologue.ts +40 -0
  1184. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1185. package/src/vite/utils/manifest-utils.ts +4 -59
  1186. package/src/vite/utils/package-resolution.ts +1 -73
  1187. package/src/vite/utils/prerender-utils.ts +54 -39
  1188. package/src/vite/utils/shared-utils.ts +90 -41
  1189. package/src/browser/action-response-classifier.ts +0 -99
  1190. package/src/browser/shallow.ts +0 -40
  1191. package/src/router/middleware-cookies.ts +0 -55
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.
@@ -482,6 +494,70 @@ const urlpatterns = urls(({ path, loader }) => [
482
494
  ]);
483
495
  ```
484
496
 
497
+ ## Server Actions
498
+
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.
502
+
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
+ ```
515
+
516
+ ```tsx
517
+ // Client form with progressive enhancement + pending state
518
+ "use client";
519
+ import { useActionState } from "react";
520
+ import { saveProfile } from "../actions/profile";
521
+
522
+ export function ProfileForm() {
523
+ const [state, action, pending] = useActionState(saveProfile, null);
524
+ return (
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>
530
+ );
531
+ }
532
+ ```
533
+
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:
538
+
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
+
485
561
  ## Navigation & Links
486
562
 
487
563
  ### Named Routes with `ctx.reverse()` (Server)
@@ -537,7 +613,7 @@ export function Nav({ home, post }: { home: string; post: string }) {
537
613
  }
538
614
  ```
539
615
 
540
- For client-side navigation to static paths (no named-route lookup), use `href()` — see below. For URLs tied to named routes, always generate on the server and pass the string in.
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.
541
617
 
542
618
  ### `href()` for Path Validation (Client Components)
543
619
 
@@ -878,9 +954,9 @@ import { createHostRouter } from "@rangojs/router/host";
878
954
 
879
955
  const hostRouter = createHostRouter();
880
956
 
881
- hostRouter.host(["*.localhost"]).map(() => import("./apps/admin/handler.js"));
882
- hostRouter.host(["localhost"]).map(() => import("./apps/site/handler.js"));
883
- 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"));
884
960
 
885
961
  export default {
886
962
  async fetch(request, env, ctx) {
@@ -889,7 +965,7 @@ export default {
889
965
  };
890
966
  ```
891
967
 
892
- 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.
893
969
 
894
970
  ## Meta Tags
895
971
 
@@ -911,6 +987,38 @@ export function BlogPostPage(ctx: HandlerContext) {
911
987
 
912
988
  Render collected tags in the document with `<MetaTags />` from `@rangojs/router/client`.
913
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
+
914
1022
  ## CLI: `rango generate`
915
1023
 
916
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`):
@@ -928,16 +1036,16 @@ Auto-detects file type:
928
1036
 
929
1037
  ## Type Safety
930
1038
 
931
- 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.
932
1040
 
933
- 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.
934
1042
 
935
1043
  ```typescript
936
1044
  // router.tsx
937
1045
  const router = createRouter<AppBindings>({}).routes(urlpatterns);
938
1046
 
939
1047
  declare global {
940
- namespace RSCRouter {
1048
+ namespace Rango {
941
1049
  interface Env extends AppEnv {}
942
1050
  interface Vars extends AppVars {}
943
1051
  interface RegisteredRoutes extends typeof router.routeMap {}
@@ -949,7 +1057,7 @@ Quick rule of thumb:
949
1057
 
950
1058
  - `GeneratedRouteMap` (auto-generated) — use for server-side named-route typing: `Handler<"name">`, `ctx.reverse()`, `Prerender<"name">`
951
1059
  - `typeof router.routeMap` — use when you need route entries with response metadata
952
- - `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
953
1061
 
954
1062
  For extracted reusable loaders or middleware, prefer global dotted names on
955
1063
  `ctx.reverse()` by default. If you want type-safe local names for a specific
@@ -977,9 +1085,9 @@ APIs, use their dedicated subpaths.
977
1085
 
978
1086
  ## Examples
979
1087
 
980
- See the `examples/` directory for full working applications:
1088
+ See the example and demo apps for full working applications:
981
1089
 
982
- - [`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
983
1091
  - [`cloudflare-multi-router`](../../examples/cloudflare-multi-router) — Multi-app host routing
984
1092
 
985
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":""}