@rangojs/router 0.0.0-experimental.debug-cache-fix → 0.0.0-experimental.df410dd5

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 (1077) hide show
  1. package/README.md +196 -43
  2. package/dist/__internal.d.ts +83 -0
  3. package/dist/__internal.d.ts.map +1 -0
  4. package/dist/__internal.js +19 -0
  5. package/dist/__internal.js.map +1 -0
  6. package/dist/__mocks__/version.d.ts +7 -0
  7. package/dist/__mocks__/version.d.ts.map +1 -0
  8. package/dist/__mocks__/version.js +7 -0
  9. package/dist/__mocks__/version.js.map +1 -0
  10. package/dist/__tests__/client-href.test.d.ts +2 -0
  11. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  12. package/dist/__tests__/client-href.test.js +74 -0
  13. package/dist/__tests__/client-href.test.js.map +1 -0
  14. package/dist/__tests__/component-utils.test.d.ts +2 -0
  15. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  16. package/dist/__tests__/component-utils.test.js +51 -0
  17. package/dist/__tests__/component-utils.test.js.map +1 -0
  18. package/dist/__tests__/event-controller.test.d.ts +2 -0
  19. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  20. package/dist/__tests__/event-controller.test.js +538 -0
  21. package/dist/__tests__/event-controller.test.js.map +1 -0
  22. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  24. package/dist/__tests__/helpers/route-tree.js +374 -0
  25. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  26. package/dist/__tests__/match-result.test.d.ts +2 -0
  27. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  28. package/dist/__tests__/match-result.test.js +154 -0
  29. package/dist/__tests__/match-result.test.js.map +1 -0
  30. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  31. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  32. package/dist/__tests__/navigation-store.test.js +440 -0
  33. package/dist/__tests__/navigation-store.test.js.map +1 -0
  34. package/dist/__tests__/partial-update.test.d.ts +2 -0
  35. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  36. package/dist/__tests__/partial-update.test.js +1009 -0
  37. package/dist/__tests__/partial-update.test.js.map +1 -0
  38. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  39. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  40. package/dist/__tests__/reverse-types.test.js +656 -0
  41. package/dist/__tests__/reverse-types.test.js.map +1 -0
  42. package/dist/__tests__/route-definition.test.d.ts +2 -0
  43. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  44. package/dist/__tests__/route-definition.test.js +55 -0
  45. package/dist/__tests__/route-definition.test.js.map +1 -0
  46. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  47. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  48. package/dist/__tests__/router-helpers.test.js +377 -0
  49. package/dist/__tests__/router-helpers.test.js.map +1 -0
  50. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  52. package/dist/__tests__/router-integration-2.test.js +426 -0
  53. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  54. package/dist/__tests__/router-integration.test.d.ts +2 -0
  55. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  56. package/dist/__tests__/router-integration.test.js +1051 -0
  57. package/dist/__tests__/router-integration.test.js.map +1 -0
  58. package/dist/__tests__/search-params.test.d.ts +5 -0
  59. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  60. package/dist/__tests__/search-params.test.js +306 -0
  61. package/dist/__tests__/search-params.test.js.map +1 -0
  62. package/dist/__tests__/segment-system.test.d.ts +2 -0
  63. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  64. package/dist/__tests__/segment-system.test.js +627 -0
  65. package/dist/__tests__/segment-system.test.js.map +1 -0
  66. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  68. package/dist/__tests__/static-handler-types.test.js +63 -0
  69. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  70. package/dist/__tests__/urls.test.d.ts +2 -0
  71. package/dist/__tests__/urls.test.d.ts.map +1 -0
  72. package/dist/__tests__/urls.test.js +421 -0
  73. package/dist/__tests__/urls.test.js.map +1 -0
  74. package/dist/__tests__/use-mount.test.d.ts +2 -0
  75. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  76. package/dist/__tests__/use-mount.test.js +35 -0
  77. package/dist/__tests__/use-mount.test.js.map +1 -0
  78. package/dist/bin/rango.d.ts +2 -0
  79. package/dist/bin/rango.d.ts.map +1 -0
  80. package/dist/bin/rango.js +269 -96
  81. package/dist/bin/rango.js.map +1 -0
  82. package/dist/browser/event-controller.d.ts +191 -0
  83. package/dist/browser/event-controller.d.ts.map +1 -0
  84. package/dist/browser/event-controller.js +559 -0
  85. package/dist/browser/event-controller.js.map +1 -0
  86. package/dist/browser/index.d.ts +2 -0
  87. package/dist/browser/index.d.ts.map +1 -0
  88. package/dist/browser/index.js +14 -0
  89. package/dist/browser/index.js.map +1 -0
  90. package/dist/browser/link-interceptor.d.ts +38 -0
  91. package/dist/browser/link-interceptor.d.ts.map +1 -0
  92. package/dist/browser/link-interceptor.js +99 -0
  93. package/dist/browser/link-interceptor.js.map +1 -0
  94. package/dist/browser/logging.d.ts +10 -0
  95. package/dist/browser/logging.d.ts.map +1 -0
  96. package/dist/browser/logging.js +29 -0
  97. package/dist/browser/logging.js.map +1 -0
  98. package/dist/browser/lru-cache.d.ts +17 -0
  99. package/dist/browser/lru-cache.d.ts.map +1 -0
  100. package/dist/browser/lru-cache.js +50 -0
  101. package/dist/browser/lru-cache.js.map +1 -0
  102. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  103. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  104. package/dist/browser/merge-segment-loaders.js +102 -0
  105. package/dist/browser/merge-segment-loaders.js.map +1 -0
  106. package/dist/browser/navigation-bridge.d.ts +102 -0
  107. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  108. package/dist/browser/navigation-bridge.js +708 -0
  109. package/dist/browser/navigation-bridge.js.map +1 -0
  110. package/dist/browser/navigation-client.d.ts +25 -0
  111. package/dist/browser/navigation-client.d.ts.map +1 -0
  112. package/dist/browser/navigation-client.js +157 -0
  113. package/dist/browser/navigation-client.js.map +1 -0
  114. package/dist/browser/navigation-store.d.ts +101 -0
  115. package/dist/browser/navigation-store.d.ts.map +1 -0
  116. package/dist/browser/navigation-store.js +625 -0
  117. package/dist/browser/navigation-store.js.map +1 -0
  118. package/dist/browser/partial-update.d.ts +75 -0
  119. package/dist/browser/partial-update.d.ts.map +1 -0
  120. package/dist/browser/partial-update.js +426 -0
  121. package/dist/browser/partial-update.js.map +1 -0
  122. package/dist/browser/react/Link.d.ts +86 -0
  123. package/dist/browser/react/Link.d.ts.map +1 -0
  124. package/dist/browser/react/Link.js +128 -0
  125. package/dist/browser/react/Link.js.map +1 -0
  126. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  127. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  128. package/dist/browser/react/NavigationProvider.js +216 -0
  129. package/dist/browser/react/NavigationProvider.js.map +1 -0
  130. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  132. package/dist/browser/react/ScrollRestoration.js +57 -0
  133. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  134. package/dist/browser/react/context.d.ts +46 -0
  135. package/dist/browser/react/context.d.ts.map +1 -0
  136. package/dist/browser/react/context.js +10 -0
  137. package/dist/browser/react/context.js.map +1 -0
  138. package/dist/browser/react/index.d.ts +11 -0
  139. package/dist/browser/react/index.d.ts.map +1 -0
  140. package/dist/browser/react/index.js +22 -0
  141. package/dist/browser/react/index.js.map +1 -0
  142. package/dist/browser/react/location-state-shared.d.ts +63 -0
  143. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  144. package/dist/browser/react/location-state-shared.js +81 -0
  145. package/dist/browser/react/location-state-shared.js.map +1 -0
  146. package/dist/browser/react/location-state.d.ts +23 -0
  147. package/dist/browser/react/location-state.d.ts.map +1 -0
  148. package/dist/browser/react/location-state.js +29 -0
  149. package/dist/browser/react/location-state.js.map +1 -0
  150. package/dist/browser/react/mount-context.d.ts +24 -0
  151. package/dist/browser/react/mount-context.d.ts.map +1 -0
  152. package/dist/browser/react/mount-context.js +24 -0
  153. package/dist/browser/react/mount-context.js.map +1 -0
  154. package/dist/browser/react/use-action.d.ts +64 -0
  155. package/dist/browser/react/use-action.d.ts.map +1 -0
  156. package/dist/browser/react/use-action.js +134 -0
  157. package/dist/browser/react/use-action.js.map +1 -0
  158. package/dist/browser/react/use-client-cache.d.ts +41 -0
  159. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  160. package/dist/browser/react/use-client-cache.js +39 -0
  161. package/dist/browser/react/use-client-cache.js.map +1 -0
  162. package/dist/browser/react/use-handle.d.ts +31 -0
  163. package/dist/browser/react/use-handle.d.ts.map +1 -0
  164. package/dist/browser/react/use-handle.js +144 -0
  165. package/dist/browser/react/use-handle.js.map +1 -0
  166. package/dist/browser/react/use-href.d.ts +33 -0
  167. package/dist/browser/react/use-href.d.ts.map +1 -0
  168. package/dist/browser/react/use-href.js +39 -0
  169. package/dist/browser/react/use-href.js.map +1 -0
  170. package/dist/browser/react/use-link-status.d.ts +37 -0
  171. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  172. package/dist/browser/react/use-link-status.js +99 -0
  173. package/dist/browser/react/use-link-status.js.map +1 -0
  174. package/dist/browser/react/use-mount.d.ts +25 -0
  175. package/dist/browser/react/use-mount.d.ts.map +1 -0
  176. package/dist/browser/react/use-mount.js +30 -0
  177. package/dist/browser/react/use-mount.js.map +1 -0
  178. package/dist/browser/react/use-navigation.d.ts +27 -0
  179. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  180. package/dist/browser/react/use-navigation.js +87 -0
  181. package/dist/browser/react/use-navigation.js.map +1 -0
  182. package/dist/browser/react/use-segments.d.ts +38 -0
  183. package/dist/browser/react/use-segments.d.ts.map +1 -0
  184. package/dist/browser/react/use-segments.js +130 -0
  185. package/dist/browser/react/use-segments.js.map +1 -0
  186. package/dist/browser/request-controller.d.ts +26 -0
  187. package/dist/browser/request-controller.d.ts.map +1 -0
  188. package/dist/browser/request-controller.js +147 -0
  189. package/dist/browser/request-controller.js.map +1 -0
  190. package/dist/browser/rsc-router.d.ts +129 -0
  191. package/dist/browser/rsc-router.d.ts.map +1 -0
  192. package/dist/browser/rsc-router.js +195 -0
  193. package/dist/browser/rsc-router.js.map +1 -0
  194. package/dist/browser/scroll-restoration.d.ts +93 -0
  195. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  196. package/dist/browser/scroll-restoration.js +321 -0
  197. package/dist/browser/scroll-restoration.js.map +1 -0
  198. package/dist/browser/segment-structure-assert.d.ts +17 -0
  199. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  200. package/dist/browser/segment-structure-assert.js +59 -0
  201. package/dist/browser/segment-structure-assert.js.map +1 -0
  202. package/dist/browser/server-action-bridge.d.ts +26 -0
  203. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  204. package/dist/browser/server-action-bridge.js +668 -0
  205. package/dist/browser/server-action-bridge.js.map +1 -0
  206. package/dist/browser/shallow.d.ts +12 -0
  207. package/dist/browser/shallow.d.ts.map +1 -0
  208. package/dist/browser/shallow.js +34 -0
  209. package/dist/browser/shallow.js.map +1 -0
  210. package/dist/browser/types.d.ts +369 -0
  211. package/dist/browser/types.d.ts.map +1 -0
  212. package/dist/browser/types.js +2 -0
  213. package/dist/browser/types.js.map +1 -0
  214. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  216. package/dist/build/__tests__/generate-cli.test.js +237 -0
  217. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  218. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  220. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  221. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  222. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  224. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  225. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  226. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  228. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  230. package/dist/build/generate-manifest.d.ts +81 -0
  231. package/dist/build/generate-manifest.d.ts.map +1 -0
  232. package/dist/build/generate-manifest.js +276 -0
  233. package/dist/build/generate-manifest.js.map +1 -0
  234. package/dist/build/generate-route-types.d.ts +115 -0
  235. package/dist/build/generate-route-types.d.ts.map +1 -0
  236. package/dist/build/generate-route-types.js +740 -0
  237. package/dist/build/generate-route-types.js.map +1 -0
  238. package/dist/build/index.d.ts +21 -0
  239. package/dist/build/index.d.ts.map +1 -0
  240. package/dist/build/index.js +21 -0
  241. package/dist/build/index.js.map +1 -0
  242. package/dist/build/route-trie.d.ts +71 -0
  243. package/dist/build/route-trie.d.ts.map +1 -0
  244. package/dist/build/route-trie.js +175 -0
  245. package/dist/build/route-trie.js.map +1 -0
  246. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  248. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  249. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  250. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  252. package/dist/cache/__tests__/document-cache.test.js +345 -0
  253. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  254. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  258. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  260. package/dist/cache/__tests__/memory-store.test.js +367 -0
  261. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  262. package/dist/cache/cache-scope.d.ts +102 -0
  263. package/dist/cache/cache-scope.d.ts.map +1 -0
  264. package/dist/cache/cache-scope.js +440 -0
  265. package/dist/cache/cache-scope.js.map +1 -0
  266. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  270. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  272. package/dist/cache/cf/cf-cache-store.js +242 -0
  273. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  274. package/dist/cache/cf/index.d.ts +14 -0
  275. package/dist/cache/cf/index.d.ts.map +1 -0
  276. package/dist/cache/cf/index.js +17 -0
  277. package/dist/cache/cf/index.js.map +1 -0
  278. package/dist/cache/document-cache.d.ts +64 -0
  279. package/dist/cache/document-cache.d.ts.map +1 -0
  280. package/dist/cache/document-cache.js +228 -0
  281. package/dist/cache/document-cache.js.map +1 -0
  282. package/dist/cache/index.d.ts +19 -0
  283. package/dist/cache/index.d.ts.map +1 -0
  284. package/dist/cache/index.js +21 -0
  285. package/dist/cache/index.js.map +1 -0
  286. package/dist/cache/memory-segment-store.d.ts +110 -0
  287. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  288. package/dist/cache/memory-segment-store.js +117 -0
  289. package/dist/cache/memory-segment-store.js.map +1 -0
  290. package/dist/cache/memory-store.d.ts +41 -0
  291. package/dist/cache/memory-store.d.ts.map +1 -0
  292. package/dist/cache/memory-store.js +191 -0
  293. package/dist/cache/memory-store.js.map +1 -0
  294. package/dist/cache/types.d.ts +317 -0
  295. package/dist/cache/types.d.ts.map +1 -0
  296. package/dist/cache/types.js +12 -0
  297. package/dist/cache/types.js.map +1 -0
  298. package/dist/client.d.ts +248 -0
  299. package/dist/client.d.ts.map +1 -0
  300. package/dist/client.js +367 -0
  301. package/dist/client.js.map +1 -0
  302. package/dist/client.rsc.d.ts +26 -0
  303. package/dist/client.rsc.d.ts.map +1 -0
  304. package/dist/client.rsc.js +46 -0
  305. package/dist/client.rsc.js.map +1 -0
  306. package/dist/component-utils.d.ts +36 -0
  307. package/dist/component-utils.d.ts.map +1 -0
  308. package/dist/component-utils.js +61 -0
  309. package/dist/component-utils.js.map +1 -0
  310. package/dist/components/DefaultDocument.d.ts +13 -0
  311. package/dist/components/DefaultDocument.d.ts.map +1 -0
  312. package/dist/components/DefaultDocument.js +15 -0
  313. package/dist/components/DefaultDocument.js.map +1 -0
  314. package/dist/debug.d.ts +58 -0
  315. package/dist/debug.d.ts.map +1 -0
  316. package/dist/debug.js +157 -0
  317. package/dist/debug.js.map +1 -0
  318. package/dist/default-error-boundary.d.ts +11 -0
  319. package/dist/default-error-boundary.d.ts.map +1 -0
  320. package/dist/default-error-boundary.js +45 -0
  321. package/dist/default-error-boundary.js.map +1 -0
  322. package/dist/deps/browser.d.ts +2 -0
  323. package/dist/deps/browser.d.ts.map +1 -0
  324. package/dist/deps/browser.js +3 -0
  325. package/dist/deps/browser.js.map +1 -0
  326. package/dist/deps/html-stream-client.d.ts +2 -0
  327. package/dist/deps/html-stream-client.d.ts.map +1 -0
  328. package/dist/deps/html-stream-client.js +3 -0
  329. package/dist/deps/html-stream-client.js.map +1 -0
  330. package/dist/deps/html-stream-server.d.ts +2 -0
  331. package/dist/deps/html-stream-server.d.ts.map +1 -0
  332. package/dist/deps/html-stream-server.js +3 -0
  333. package/dist/deps/html-stream-server.js.map +1 -0
  334. package/dist/deps/rsc.d.ts +2 -0
  335. package/dist/deps/rsc.d.ts.map +1 -0
  336. package/dist/deps/rsc.js +4 -0
  337. package/dist/deps/rsc.js.map +1 -0
  338. package/dist/deps/ssr.d.ts +2 -0
  339. package/dist/deps/ssr.d.ts.map +1 -0
  340. package/dist/deps/ssr.js +3 -0
  341. package/dist/deps/ssr.js.map +1 -0
  342. package/dist/errors.d.ts +174 -0
  343. package/dist/errors.d.ts.map +1 -0
  344. package/dist/errors.js +241 -0
  345. package/dist/errors.js.map +1 -0
  346. package/dist/handle.d.ts +78 -0
  347. package/dist/handle.d.ts.map +1 -0
  348. package/dist/handle.js +82 -0
  349. package/dist/handle.js.map +1 -0
  350. package/dist/handles/MetaTags.d.ts +14 -0
  351. package/dist/handles/MetaTags.d.ts.map +1 -0
  352. package/dist/handles/MetaTags.js +136 -0
  353. package/dist/handles/MetaTags.js.map +1 -0
  354. package/dist/handles/index.d.ts +6 -0
  355. package/dist/handles/index.d.ts.map +1 -0
  356. package/dist/handles/index.js +6 -0
  357. package/dist/handles/index.js.map +1 -0
  358. package/dist/handles/meta.d.ts +39 -0
  359. package/dist/handles/meta.d.ts.map +1 -0
  360. package/dist/handles/meta.js +202 -0
  361. package/dist/handles/meta.js.map +1 -0
  362. package/dist/host/__tests__/errors.test.d.ts +2 -0
  363. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  364. package/dist/host/__tests__/errors.test.js +76 -0
  365. package/dist/host/__tests__/errors.test.js.map +1 -0
  366. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  370. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  372. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  374. package/dist/host/__tests__/router.test.d.ts +2 -0
  375. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  376. package/dist/host/__tests__/router.test.js +241 -0
  377. package/dist/host/__tests__/router.test.js.map +1 -0
  378. package/dist/host/__tests__/testing.test.d.ts +2 -0
  379. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  380. package/dist/host/__tests__/testing.test.js +64 -0
  381. package/dist/host/__tests__/testing.test.js.map +1 -0
  382. package/dist/host/__tests__/utils.test.d.ts +2 -0
  383. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  384. package/dist/host/__tests__/utils.test.js +29 -0
  385. package/dist/host/__tests__/utils.test.js.map +1 -0
  386. package/dist/host/cookie-handler.d.ts +34 -0
  387. package/dist/host/cookie-handler.d.ts.map +1 -0
  388. package/dist/host/cookie-handler.js +124 -0
  389. package/dist/host/cookie-handler.js.map +1 -0
  390. package/dist/host/errors.d.ts +56 -0
  391. package/dist/host/errors.d.ts.map +1 -0
  392. package/dist/host/errors.js +79 -0
  393. package/dist/host/errors.js.map +1 -0
  394. package/dist/host/index.d.ts +29 -0
  395. package/dist/host/index.d.ts.map +1 -0
  396. package/dist/host/index.js +32 -0
  397. package/dist/host/index.js.map +1 -0
  398. package/dist/host/pattern-matcher.d.ts +36 -0
  399. package/dist/host/pattern-matcher.d.ts.map +1 -0
  400. package/dist/host/pattern-matcher.js +172 -0
  401. package/dist/host/pattern-matcher.js.map +1 -0
  402. package/dist/host/router.d.ts +26 -0
  403. package/dist/host/router.d.ts.map +1 -0
  404. package/dist/host/router.js +218 -0
  405. package/dist/host/router.js.map +1 -0
  406. package/dist/host/testing.d.ts +36 -0
  407. package/dist/host/testing.d.ts.map +1 -0
  408. package/dist/host/testing.js +55 -0
  409. package/dist/host/testing.js.map +1 -0
  410. package/dist/host/types.d.ts +115 -0
  411. package/dist/host/types.d.ts.map +1 -0
  412. package/dist/host/types.js +7 -0
  413. package/dist/host/types.js.map +1 -0
  414. package/dist/host/utils.d.ts +21 -0
  415. package/dist/host/utils.d.ts.map +1 -0
  416. package/dist/host/utils.js +23 -0
  417. package/dist/host/utils.js.map +1 -0
  418. package/dist/href-client.d.ts +131 -0
  419. package/dist/href-client.d.ts.map +1 -0
  420. package/dist/href-client.js +64 -0
  421. package/dist/href-client.js.map +1 -0
  422. package/dist/href-context.d.ts +29 -0
  423. package/dist/href-context.d.ts.map +1 -0
  424. package/dist/href-context.js +21 -0
  425. package/dist/href-context.js.map +1 -0
  426. package/dist/index.d.ts +73 -0
  427. package/dist/index.d.ts.map +1 -0
  428. package/dist/index.js +91 -0
  429. package/dist/index.js.map +1 -0
  430. package/dist/index.rsc.d.ts +32 -0
  431. package/dist/index.rsc.d.ts.map +1 -0
  432. package/dist/index.rsc.js +40 -0
  433. package/dist/index.rsc.js.map +1 -0
  434. package/dist/internal-debug.d.ts +2 -0
  435. package/dist/internal-debug.d.ts.map +1 -0
  436. package/dist/internal-debug.js +5 -0
  437. package/dist/internal-debug.js.map +1 -0
  438. package/dist/loader.d.ts +14 -0
  439. package/dist/loader.d.ts.map +1 -0
  440. package/dist/loader.js +20 -0
  441. package/dist/loader.js.map +1 -0
  442. package/dist/loader.rsc.d.ts +19 -0
  443. package/dist/loader.rsc.d.ts.map +1 -0
  444. package/dist/loader.rsc.js +99 -0
  445. package/dist/loader.rsc.js.map +1 -0
  446. package/dist/network-error-thrower.d.ts +17 -0
  447. package/dist/network-error-thrower.d.ts.map +1 -0
  448. package/dist/network-error-thrower.js +14 -0
  449. package/dist/network-error-thrower.js.map +1 -0
  450. package/dist/outlet-context.d.ts +13 -0
  451. package/dist/outlet-context.d.ts.map +1 -0
  452. package/dist/outlet-context.js +3 -0
  453. package/dist/outlet-context.js.map +1 -0
  454. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  456. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  457. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  458. package/dist/prerender/param-hash.d.ts +16 -0
  459. package/dist/prerender/param-hash.d.ts.map +1 -0
  460. package/dist/prerender/param-hash.js +36 -0
  461. package/dist/prerender/param-hash.js.map +1 -0
  462. package/dist/prerender/store.d.ts +38 -0
  463. package/dist/prerender/store.d.ts.map +1 -0
  464. package/dist/prerender/store.js +61 -0
  465. package/dist/prerender/store.js.map +1 -0
  466. package/dist/prerender.d.ts +66 -0
  467. package/dist/prerender.d.ts.map +1 -0
  468. package/dist/prerender.js +57 -0
  469. package/dist/prerender.js.map +1 -0
  470. package/dist/reverse.d.ts +196 -0
  471. package/dist/reverse.d.ts.map +1 -0
  472. package/dist/reverse.js +78 -0
  473. package/dist/reverse.js.map +1 -0
  474. package/dist/root-error-boundary.d.ts +33 -0
  475. package/dist/root-error-boundary.d.ts.map +1 -0
  476. package/dist/root-error-boundary.js +165 -0
  477. package/dist/root-error-boundary.js.map +1 -0
  478. package/dist/route-content-wrapper.d.ts +46 -0
  479. package/dist/route-content-wrapper.d.ts.map +1 -0
  480. package/dist/route-content-wrapper.js +77 -0
  481. package/dist/route-content-wrapper.js.map +1 -0
  482. package/dist/route-definition.d.ts +421 -0
  483. package/dist/route-definition.d.ts.map +1 -0
  484. package/dist/route-definition.js +868 -0
  485. package/dist/route-definition.js.map +1 -0
  486. package/dist/route-map-builder.d.ts +155 -0
  487. package/dist/route-map-builder.d.ts.map +1 -0
  488. package/dist/route-map-builder.js +237 -0
  489. package/dist/route-map-builder.js.map +1 -0
  490. package/dist/route-types.d.ts +165 -0
  491. package/dist/route-types.d.ts.map +1 -0
  492. package/dist/route-types.js +7 -0
  493. package/dist/route-types.js.map +1 -0
  494. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  496. package/dist/router/__tests__/handler-context.test.js +65 -0
  497. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  498. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  502. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  503. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  504. package/dist/router/__tests__/match-context.test.js +92 -0
  505. package/dist/router/__tests__/match-context.test.js.map +1 -0
  506. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  508. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  509. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  510. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  511. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  512. package/dist/router/__tests__/match-result.test.js +457 -0
  513. package/dist/router/__tests__/match-result.test.js.map +1 -0
  514. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  515. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  516. package/dist/router/__tests__/on-error.test.js +678 -0
  517. package/dist/router/__tests__/on-error.test.js.map +1 -0
  518. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  520. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  521. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  522. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  526. package/dist/router/error-handling.d.ts +77 -0
  527. package/dist/router/error-handling.d.ts.map +1 -0
  528. package/dist/router/error-handling.js +202 -0
  529. package/dist/router/error-handling.js.map +1 -0
  530. package/dist/router/handler-context.d.ts +20 -0
  531. package/dist/router/handler-context.d.ts.map +1 -0
  532. package/dist/router/handler-context.js +198 -0
  533. package/dist/router/handler-context.js.map +1 -0
  534. package/dist/router/intercept-resolution.d.ts +66 -0
  535. package/dist/router/intercept-resolution.d.ts.map +1 -0
  536. package/dist/router/intercept-resolution.js +246 -0
  537. package/dist/router/intercept-resolution.js.map +1 -0
  538. package/dist/router/loader-resolution.d.ts +64 -0
  539. package/dist/router/loader-resolution.d.ts.map +1 -0
  540. package/dist/router/loader-resolution.js +284 -0
  541. package/dist/router/loader-resolution.js.map +1 -0
  542. package/dist/router/logging.d.ts +15 -0
  543. package/dist/router/logging.d.ts.map +1 -0
  544. package/dist/router/logging.js +99 -0
  545. package/dist/router/logging.js.map +1 -0
  546. package/dist/router/manifest.d.ts +22 -0
  547. package/dist/router/manifest.d.ts.map +1 -0
  548. package/dist/router/manifest.js +181 -0
  549. package/dist/router/manifest.js.map +1 -0
  550. package/dist/router/match-api.d.ts +35 -0
  551. package/dist/router/match-api.d.ts.map +1 -0
  552. package/dist/router/match-api.js +406 -0
  553. package/dist/router/match-api.js.map +1 -0
  554. package/dist/router/match-context.d.ts +206 -0
  555. package/dist/router/match-context.d.ts.map +1 -0
  556. package/dist/router/match-context.js +17 -0
  557. package/dist/router/match-context.js.map +1 -0
  558. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  560. package/dist/router/match-middleware/background-revalidation.js +75 -0
  561. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  562. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  564. package/dist/router/match-middleware/cache-lookup.js +257 -0
  565. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  566. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  567. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  568. package/dist/router/match-middleware/cache-store.js +108 -0
  569. package/dist/router/match-middleware/cache-store.js.map +1 -0
  570. package/dist/router/match-middleware/index.d.ts +81 -0
  571. package/dist/router/match-middleware/index.d.ts.map +1 -0
  572. package/dist/router/match-middleware/index.js +80 -0
  573. package/dist/router/match-middleware/index.js.map +1 -0
  574. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  576. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  577. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  578. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  580. package/dist/router/match-middleware/segment-resolution.js +53 -0
  581. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  582. package/dist/router/match-pipelines.d.ts +147 -0
  583. package/dist/router/match-pipelines.d.ts.map +1 -0
  584. package/dist/router/match-pipelines.js +82 -0
  585. package/dist/router/match-pipelines.js.map +1 -0
  586. package/dist/router/match-result.d.ts +126 -0
  587. package/dist/router/match-result.d.ts.map +1 -0
  588. package/dist/router/match-result.js +93 -0
  589. package/dist/router/match-result.js.map +1 -0
  590. package/dist/router/metrics.d.ts +20 -0
  591. package/dist/router/metrics.d.ts.map +1 -0
  592. package/dist/router/metrics.js +47 -0
  593. package/dist/router/metrics.js.map +1 -0
  594. package/dist/router/middleware.d.ts +249 -0
  595. package/dist/router/middleware.d.ts.map +1 -0
  596. package/dist/router/middleware.js +434 -0
  597. package/dist/router/middleware.js.map +1 -0
  598. package/dist/router/middleware.test.d.ts +2 -0
  599. package/dist/router/middleware.test.d.ts.map +1 -0
  600. package/dist/router/middleware.test.js +816 -0
  601. package/dist/router/middleware.test.js.map +1 -0
  602. package/dist/router/pattern-matching.d.ts +149 -0
  603. package/dist/router/pattern-matching.d.ts.map +1 -0
  604. package/dist/router/pattern-matching.js +349 -0
  605. package/dist/router/pattern-matching.js.map +1 -0
  606. package/dist/router/revalidation.d.ts +44 -0
  607. package/dist/router/revalidation.d.ts.map +1 -0
  608. package/dist/router/revalidation.js +147 -0
  609. package/dist/router/revalidation.js.map +1 -0
  610. package/dist/router/router-context.d.ts +135 -0
  611. package/dist/router/router-context.d.ts.map +1 -0
  612. package/dist/router/router-context.js +36 -0
  613. package/dist/router/router-context.js.map +1 -0
  614. package/dist/router/segment-resolution.d.ts +127 -0
  615. package/dist/router/segment-resolution.d.ts.map +1 -0
  616. package/dist/router/segment-resolution.js +919 -0
  617. package/dist/router/segment-resolution.js.map +1 -0
  618. package/dist/router/trie-matching.d.ts +40 -0
  619. package/dist/router/trie-matching.d.ts.map +1 -0
  620. package/dist/router/trie-matching.js +127 -0
  621. package/dist/router/trie-matching.js.map +1 -0
  622. package/dist/router/types.d.ts +136 -0
  623. package/dist/router/types.d.ts.map +1 -0
  624. package/dist/router/types.js +7 -0
  625. package/dist/router/types.js.map +1 -0
  626. package/dist/router.d.ts +753 -0
  627. package/dist/router.d.ts.map +1 -0
  628. package/dist/router.gen.d.ts +6 -0
  629. package/dist/router.gen.d.ts.map +1 -0
  630. package/dist/router.gen.js +6 -0
  631. package/dist/router.gen.js.map +1 -0
  632. package/dist/router.js +1304 -0
  633. package/dist/router.js.map +1 -0
  634. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  636. package/dist/rsc/__tests__/helpers.test.js +140 -0
  637. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  638. package/dist/rsc/handler.d.ts +45 -0
  639. package/dist/rsc/handler.d.ts.map +1 -0
  640. package/dist/rsc/handler.js +1172 -0
  641. package/dist/rsc/handler.js.map +1 -0
  642. package/dist/rsc/helpers.d.ts +16 -0
  643. package/dist/rsc/helpers.d.ts.map +1 -0
  644. package/dist/rsc/helpers.js +55 -0
  645. package/dist/rsc/helpers.js.map +1 -0
  646. package/dist/rsc/index.d.ts +22 -0
  647. package/dist/rsc/index.d.ts.map +1 -0
  648. package/dist/rsc/index.js +23 -0
  649. package/dist/rsc/index.js.map +1 -0
  650. package/dist/rsc/nonce.d.ts +9 -0
  651. package/dist/rsc/nonce.d.ts.map +1 -0
  652. package/dist/rsc/nonce.js +18 -0
  653. package/dist/rsc/nonce.js.map +1 -0
  654. package/dist/rsc/types.d.ts +206 -0
  655. package/dist/rsc/types.d.ts.map +1 -0
  656. package/dist/rsc/types.js +8 -0
  657. package/dist/rsc/types.js.map +1 -0
  658. package/dist/search-params.d.ts +103 -0
  659. package/dist/search-params.d.ts.map +1 -0
  660. package/dist/search-params.js +74 -0
  661. package/dist/search-params.js.map +1 -0
  662. package/dist/segment-system.d.ts +75 -0
  663. package/dist/segment-system.d.ts.map +1 -0
  664. package/dist/segment-system.js +336 -0
  665. package/dist/segment-system.js.map +1 -0
  666. package/dist/server/context.d.ts +245 -0
  667. package/dist/server/context.d.ts.map +1 -0
  668. package/dist/server/context.js +197 -0
  669. package/dist/server/context.js.map +1 -0
  670. package/dist/server/fetchable-loader-store.d.ts +18 -0
  671. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  672. package/dist/server/fetchable-loader-store.js +18 -0
  673. package/dist/server/fetchable-loader-store.js.map +1 -0
  674. package/dist/server/handle-store.d.ts +85 -0
  675. package/dist/server/handle-store.d.ts.map +1 -0
  676. package/dist/server/handle-store.js +142 -0
  677. package/dist/server/handle-store.js.map +1 -0
  678. package/dist/server/loader-registry.d.ts +55 -0
  679. package/dist/server/loader-registry.d.ts.map +1 -0
  680. package/dist/server/loader-registry.js +132 -0
  681. package/dist/server/loader-registry.js.map +1 -0
  682. package/dist/server/request-context.d.ts +226 -0
  683. package/dist/server/request-context.d.ts.map +1 -0
  684. package/dist/server/request-context.js +290 -0
  685. package/dist/server/request-context.js.map +1 -0
  686. package/dist/server/root-layout.d.ts +4 -0
  687. package/dist/server/root-layout.d.ts.map +1 -0
  688. package/dist/server/root-layout.js +5 -0
  689. package/dist/server/root-layout.js.map +1 -0
  690. package/dist/server.d.ts +15 -0
  691. package/dist/server.d.ts.map +1 -0
  692. package/dist/server.js +20 -0
  693. package/dist/server.js.map +1 -0
  694. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  698. package/dist/ssr/index.d.ts +98 -0
  699. package/dist/ssr/index.d.ts.map +1 -0
  700. package/dist/ssr/index.js +158 -0
  701. package/dist/ssr/index.js.map +1 -0
  702. package/dist/static-handler.d.ts +50 -0
  703. package/dist/static-handler.d.ts.map +1 -0
  704. package/dist/static-handler.gen.d.ts +5 -0
  705. package/dist/static-handler.gen.d.ts.map +1 -0
  706. package/dist/static-handler.gen.js +5 -0
  707. package/dist/static-handler.gen.js.map +1 -0
  708. package/dist/static-handler.js +29 -0
  709. package/dist/static-handler.js.map +1 -0
  710. package/dist/testing/vitest.js +48 -0
  711. package/dist/theme/ThemeProvider.d.ts +20 -0
  712. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  713. package/dist/theme/ThemeProvider.js +240 -0
  714. package/dist/theme/ThemeProvider.js.map +1 -0
  715. package/dist/theme/ThemeScript.d.ts +48 -0
  716. package/dist/theme/ThemeScript.d.ts.map +1 -0
  717. package/dist/theme/ThemeScript.js +13 -0
  718. package/dist/theme/ThemeScript.js.map +1 -0
  719. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  720. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  721. package/dist/theme/__tests__/theme.test.js +103 -0
  722. package/dist/theme/__tests__/theme.test.js.map +1 -0
  723. package/dist/theme/constants.d.ts +29 -0
  724. package/dist/theme/constants.d.ts.map +1 -0
  725. package/dist/theme/constants.js +48 -0
  726. package/dist/theme/constants.js.map +1 -0
  727. package/dist/theme/index.d.ts +31 -0
  728. package/dist/theme/index.d.ts.map +1 -0
  729. package/dist/theme/index.js +36 -0
  730. package/dist/theme/index.js.map +1 -0
  731. package/dist/theme/theme-context.d.ts +40 -0
  732. package/dist/theme/theme-context.d.ts.map +1 -0
  733. package/dist/theme/theme-context.js +60 -0
  734. package/dist/theme/theme-context.js.map +1 -0
  735. package/dist/theme/theme-script.d.ts +27 -0
  736. package/dist/theme/theme-script.d.ts.map +1 -0
  737. package/dist/theme/theme-script.js +147 -0
  738. package/dist/theme/theme-script.js.map +1 -0
  739. package/dist/theme/types.d.ts +163 -0
  740. package/dist/theme/types.d.ts.map +1 -0
  741. package/dist/theme/types.js +11 -0
  742. package/dist/theme/types.js.map +1 -0
  743. package/dist/theme/use-theme.d.ts +12 -0
  744. package/dist/theme/use-theme.d.ts.map +1 -0
  745. package/dist/theme/use-theme.js +40 -0
  746. package/dist/theme/use-theme.js.map +1 -0
  747. package/dist/types.d.ts +1479 -0
  748. package/dist/types.d.ts.map +1 -0
  749. package/dist/types.js +10 -0
  750. package/dist/types.js.map +1 -0
  751. package/dist/urls.d.ts +441 -0
  752. package/dist/urls.d.ts.map +1 -0
  753. package/dist/urls.gen.d.ts +8 -0
  754. package/dist/urls.gen.d.ts.map +1 -0
  755. package/dist/urls.gen.js +8 -0
  756. package/dist/urls.gen.js.map +1 -0
  757. package/dist/urls.js +443 -0
  758. package/dist/urls.js.map +1 -0
  759. package/dist/use-loader.d.ts +127 -0
  760. package/dist/use-loader.d.ts.map +1 -0
  761. package/dist/use-loader.js +237 -0
  762. package/dist/use-loader.js.map +1 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  779. package/dist/vite/ast-handler-extract.d.ts +49 -0
  780. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  781. package/dist/vite/ast-handler-extract.js +249 -0
  782. package/dist/vite/ast-handler-extract.js.map +1 -0
  783. package/dist/vite/expose-action-id.d.ts +19 -0
  784. package/dist/vite/expose-action-id.d.ts.map +1 -0
  785. package/dist/vite/expose-action-id.js +250 -0
  786. package/dist/vite/expose-action-id.js.map +1 -0
  787. package/dist/vite/expose-id-utils.d.ts +69 -0
  788. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  789. package/dist/vite/expose-id-utils.js +289 -0
  790. package/dist/vite/expose-id-utils.js.map +1 -0
  791. package/dist/vite/expose-internal-ids.d.ts +22 -0
  792. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  793. package/dist/vite/expose-internal-ids.js +886 -0
  794. package/dist/vite/expose-internal-ids.js.map +1 -0
  795. package/dist/vite/index.d.ts +149 -0
  796. package/dist/vite/index.d.ts.map +1 -0
  797. package/dist/vite/index.js +2659 -883
  798. package/dist/vite/index.js.bak +5448 -0
  799. package/dist/vite/index.js.map +1 -0
  800. package/dist/vite/index.named-routes.gen.ts +103 -0
  801. package/dist/vite/package-resolution.d.ts +43 -0
  802. package/dist/vite/package-resolution.d.ts.map +1 -0
  803. package/dist/vite/package-resolution.js +112 -0
  804. package/dist/vite/package-resolution.js.map +1 -0
  805. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  806. package/dist/vite/virtual-entries.d.ts +25 -0
  807. package/dist/vite/virtual-entries.d.ts.map +1 -0
  808. package/dist/vite/virtual-entries.js +110 -0
  809. package/dist/vite/virtual-entries.js.map +1 -0
  810. package/package.json +57 -11
  811. package/skills/breadcrumbs/SKILL.md +3 -1
  812. package/skills/bundle-analysis/SKILL.md +159 -0
  813. package/skills/cache-guide/SKILL.md +243 -21
  814. package/skills/caching/SKILL.md +118 -2
  815. package/skills/composability/SKILL.md +27 -2
  816. package/skills/document-cache/SKILL.md +78 -55
  817. package/skills/handler-use/SKILL.md +364 -0
  818. package/skills/hooks/SKILL.md +229 -20
  819. package/skills/host-router/SKILL.md +45 -20
  820. package/skills/i18n/SKILL.md +276 -0
  821. package/skills/intercept/SKILL.md +46 -4
  822. package/skills/layout/SKILL.md +28 -7
  823. package/skills/links/SKILL.md +249 -17
  824. package/skills/loader/SKILL.md +273 -53
  825. package/skills/middleware/SKILL.md +49 -12
  826. package/skills/migrate-nextjs/SKILL.md +562 -0
  827. package/skills/migrate-react-router/SKILL.md +769 -0
  828. package/skills/mime-routes/SKILL.md +27 -0
  829. package/skills/observability/SKILL.md +137 -0
  830. package/skills/parallel/SKILL.md +71 -6
  831. package/skills/prerender/SKILL.md +123 -100
  832. package/skills/rango/SKILL.md +242 -22
  833. package/skills/react-compiler/SKILL.md +168 -0
  834. package/skills/response-routes/SKILL.md +66 -9
  835. package/skills/route/SKILL.md +88 -4
  836. package/skills/router-setup/SKILL.md +90 -5
  837. package/skills/server-actions/SKILL.md +751 -0
  838. package/skills/streams-and-websockets/SKILL.md +283 -0
  839. package/skills/testing/SKILL.md +776 -0
  840. package/skills/typesafety/SKILL.md +329 -27
  841. package/skills/use-cache/SKILL.md +34 -5
  842. package/skills/view-transitions/SKILL.md +294 -0
  843. package/src/__augment-tests__/augment.ts +81 -0
  844. package/src/__augment-tests__/augmented.check.ts +117 -0
  845. package/src/__internal.ts +1 -1
  846. package/src/browser/action-coordinator.ts +53 -36
  847. package/src/browser/app-shell.ts +52 -0
  848. package/src/browser/app-version.ts +14 -0
  849. package/src/browser/event-controller.ts +86 -70
  850. package/src/browser/history-state.ts +21 -0
  851. package/src/browser/index.ts +3 -3
  852. package/src/browser/navigation-bridge.ts +101 -13
  853. package/src/browser/navigation-client.ts +125 -53
  854. package/src/browser/navigation-store.ts +75 -17
  855. package/src/browser/navigation-transaction.ts +10 -28
  856. package/src/browser/partial-update.ts +90 -30
  857. package/src/browser/prefetch/cache.ts +129 -21
  858. package/src/browser/prefetch/fetch.ts +156 -18
  859. package/src/browser/prefetch/queue.ts +92 -29
  860. package/src/browser/prefetch/resource-ready.ts +77 -0
  861. package/src/browser/rango-state.ts +53 -13
  862. package/src/browser/react/Link.tsx +72 -8
  863. package/src/browser/react/NavigationProvider.tsx +83 -33
  864. package/src/browser/react/context.ts +7 -2
  865. package/src/browser/react/filter-segment-order.ts +51 -7
  866. package/src/browser/react/index.ts +3 -0
  867. package/src/browser/react/location-state-shared.ts +175 -4
  868. package/src/browser/react/location-state.ts +39 -13
  869. package/src/browser/react/use-handle.ts +23 -64
  870. package/src/browser/react/use-navigation.ts +22 -2
  871. package/src/browser/react/use-params.ts +20 -8
  872. package/src/browser/react/use-reverse.ts +106 -0
  873. package/src/browser/react/use-router.ts +43 -10
  874. package/src/browser/react/use-segments.ts +11 -8
  875. package/src/browser/response-adapter.ts +25 -0
  876. package/src/browser/rsc-router.tsx +87 -22
  877. package/src/browser/scroll-restoration.ts +29 -19
  878. package/src/browser/segment-reconciler.ts +36 -14
  879. package/src/browser/segment-structure-assert.ts +2 -2
  880. package/src/browser/server-action-bridge.ts +31 -36
  881. package/src/browser/types.ts +48 -5
  882. package/src/build/collect-fallback-refs.ts +107 -0
  883. package/src/build/generate-manifest.ts +65 -40
  884. package/src/build/generate-route-types.ts +5 -0
  885. package/src/build/index.ts +2 -0
  886. package/src/build/route-trie.ts +52 -25
  887. package/src/build/route-types/codegen.ts +4 -4
  888. package/src/build/route-types/include-resolution.ts +9 -2
  889. package/src/build/route-types/per-module-writer.ts +7 -4
  890. package/src/build/route-types/router-processing.ts +266 -86
  891. package/src/build/route-types/scan-filter.ts +9 -2
  892. package/src/build/route-types/source-scan.ts +118 -0
  893. package/src/build/runtime-discovery.ts +9 -20
  894. package/src/cache/cache-scope.ts +40 -56
  895. package/src/cache/cf/cf-cache-store.ts +54 -13
  896. package/src/cache/taint.ts +55 -0
  897. package/src/client.rsc.tsx +3 -0
  898. package/src/client.tsx +94 -238
  899. package/src/context-var.ts +72 -2
  900. package/src/decode-loader-results.ts +36 -0
  901. package/src/errors.ts +30 -1
  902. package/src/handle.ts +65 -12
  903. package/src/host/index.ts +2 -2
  904. package/src/host/router.ts +129 -57
  905. package/src/host/types.ts +31 -2
  906. package/src/host/utils.ts +1 -1
  907. package/src/href-client.ts +140 -20
  908. package/src/index.rsc.ts +12 -5
  909. package/src/index.ts +61 -11
  910. package/src/loader-store.ts +500 -0
  911. package/src/loader.rsc.ts +21 -6
  912. package/src/loader.ts +3 -10
  913. package/src/missing-id-error.ts +68 -0
  914. package/src/outlet-context.ts +1 -1
  915. package/src/prerender/store.ts +5 -4
  916. package/src/prerender.ts +141 -80
  917. package/src/response-utils.ts +37 -0
  918. package/src/reverse.ts +65 -15
  919. package/src/route-content-wrapper.tsx +6 -28
  920. package/src/route-definition/dsl-helpers.ts +411 -261
  921. package/src/route-definition/helper-factories.ts +29 -139
  922. package/src/route-definition/helpers-types.ts +110 -34
  923. package/src/route-definition/index.ts +3 -0
  924. package/src/route-definition/redirect.ts +9 -1
  925. package/src/route-definition/resolve-handler-use.ts +155 -0
  926. package/src/route-definition/use-item-types.ts +32 -0
  927. package/src/route-types.ts +37 -41
  928. package/src/router/basename.ts +14 -0
  929. package/src/router/content-negotiation.ts +113 -1
  930. package/src/router/error-handling.ts +1 -1
  931. package/src/router/handler-context.ts +77 -38
  932. package/src/router/intercept-resolution.ts +13 -22
  933. package/src/router/lazy-includes.ts +8 -8
  934. package/src/router/loader-resolution.ts +174 -22
  935. package/src/router/manifest.ts +22 -13
  936. package/src/router/match-api.ts +128 -192
  937. package/src/router/match-handlers.ts +63 -20
  938. package/src/router/match-middleware/cache-lookup.ts +70 -97
  939. package/src/router/match-middleware/cache-store.ts +3 -2
  940. package/src/router/match-middleware/segment-resolution.ts +53 -0
  941. package/src/router/match-result.ts +103 -4
  942. package/src/router/metrics.ts +1 -1
  943. package/src/router/middleware-types.ts +21 -34
  944. package/src/router/middleware.ts +101 -89
  945. package/src/router/navigation-snapshot.ts +182 -0
  946. package/src/router/pattern-matching.ts +101 -17
  947. package/src/router/prerender-match.ts +110 -10
  948. package/src/router/preview-match.ts +32 -102
  949. package/src/router/request-classification.ts +286 -0
  950. package/src/router/revalidation.ts +58 -2
  951. package/src/router/route-snapshot.ts +245 -0
  952. package/src/router/router-interfaces.ts +77 -28
  953. package/src/router/router-options.ts +76 -11
  954. package/src/router/router-registry.ts +2 -5
  955. package/src/router/segment-resolution/fresh.ts +105 -13
  956. package/src/router/segment-resolution/helpers.ts +29 -24
  957. package/src/router/segment-resolution/revalidation.ts +236 -112
  958. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  959. package/src/router/substitute-pattern-params.ts +56 -0
  960. package/src/router/telemetry.ts +99 -0
  961. package/src/router/trie-matching.ts +18 -13
  962. package/src/router/types.ts +9 -0
  963. package/src/router/url-params.ts +49 -0
  964. package/src/router.ts +86 -22
  965. package/src/rsc/handler-context.ts +2 -2
  966. package/src/rsc/handler.ts +440 -381
  967. package/src/rsc/helpers.ts +91 -43
  968. package/src/rsc/index.ts +1 -1
  969. package/src/rsc/loader-fetch.ts +23 -3
  970. package/src/rsc/manifest-init.ts +5 -1
  971. package/src/rsc/origin-guard.ts +28 -10
  972. package/src/rsc/progressive-enhancement.ts +18 -2
  973. package/src/rsc/response-route-handler.ts +46 -53
  974. package/src/rsc/rsc-rendering.ts +41 -48
  975. package/src/rsc/runtime-warnings.ts +9 -10
  976. package/src/rsc/server-action.ts +25 -37
  977. package/src/rsc/ssr-setup.ts +18 -2
  978. package/src/rsc/types.ts +17 -3
  979. package/src/search-params.ts +4 -4
  980. package/src/segment-content-promise.ts +67 -0
  981. package/src/segment-loader-promise.ts +122 -0
  982. package/src/segment-system.tsx +132 -116
  983. package/src/serialize.ts +243 -0
  984. package/src/server/context.ts +190 -51
  985. package/src/server/cookie-store.ts +28 -4
  986. package/src/server/handle-store.ts +19 -0
  987. package/src/server/loader-registry.ts +9 -8
  988. package/src/server/request-context.ts +195 -57
  989. package/src/ssr/index.tsx +8 -1
  990. package/src/static-handler.ts +19 -7
  991. package/src/testing/cache-status.ts +166 -0
  992. package/src/testing/collect-handle.ts +63 -0
  993. package/src/testing/dispatch.ts +440 -0
  994. package/src/testing/dom.entry.ts +22 -0
  995. package/src/testing/e2e/fixture.ts +154 -0
  996. package/src/testing/e2e/index.ts +149 -0
  997. package/src/testing/e2e/matchers.ts +51 -0
  998. package/src/testing/e2e/page-helpers.ts +272 -0
  999. package/src/testing/e2e/parity.ts +306 -0
  1000. package/src/testing/e2e/server.ts +183 -0
  1001. package/src/testing/flight-matchers.ts +104 -0
  1002. package/src/testing/flight-runtime.d.ts +57 -0
  1003. package/src/testing/flight-tree.ts +309 -0
  1004. package/src/testing/flight.entry.ts +39 -0
  1005. package/src/testing/flight.ts +197 -0
  1006. package/src/testing/generated-routes.ts +223 -0
  1007. package/src/testing/index.ts +106 -0
  1008. package/src/testing/internal/context.ts +304 -0
  1009. package/src/testing/internal/flight-client-globals.ts +30 -0
  1010. package/src/testing/render-route.tsx +565 -0
  1011. package/src/testing/run-loader.ts +341 -0
  1012. package/src/testing/run-middleware.ts +179 -0
  1013. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1014. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1015. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1016. package/src/testing/vitest-stubs/version.ts +5 -0
  1017. package/src/testing/vitest.ts +185 -0
  1018. package/src/types/cache-types.ts +4 -4
  1019. package/src/types/global-namespace.ts +39 -26
  1020. package/src/types/handler-context.ts +103 -67
  1021. package/src/types/index.ts +1 -0
  1022. package/src/types/loader-types.ts +41 -15
  1023. package/src/types/request-scope.ts +126 -0
  1024. package/src/types/route-entry.ts +12 -1
  1025. package/src/types/segments.ts +36 -2
  1026. package/src/urls/include-helper.ts +34 -67
  1027. package/src/urls/index.ts +0 -3
  1028. package/src/urls/path-helper-types.ts +50 -9
  1029. package/src/urls/path-helper.ts +63 -63
  1030. package/src/urls/pattern-types.ts +48 -19
  1031. package/src/urls/response-types.ts +25 -22
  1032. package/src/urls/type-extraction.ts +26 -116
  1033. package/src/urls/urls-function.ts +1 -5
  1034. package/src/use-loader.tsx +487 -44
  1035. package/src/vite/debug.ts +185 -0
  1036. package/src/vite/discovery/bundle-postprocess.ts +34 -37
  1037. package/src/vite/discovery/discover-routers.ts +105 -51
  1038. package/src/vite/discovery/discovery-errors.ts +194 -0
  1039. package/src/vite/discovery/gate-state.ts +171 -0
  1040. package/src/vite/discovery/prerender-collection.ts +188 -93
  1041. package/src/vite/discovery/route-types-writer.ts +40 -84
  1042. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  1043. package/src/vite/discovery/state.ts +46 -4
  1044. package/src/vite/discovery/virtual-module-codegen.ts +13 -23
  1045. package/src/vite/index.ts +6 -0
  1046. package/src/vite/plugin-types.ts +126 -4
  1047. package/src/vite/plugins/cjs-to-esm.ts +8 -7
  1048. package/src/vite/plugins/client-ref-dedup.ts +16 -0
  1049. package/src/vite/plugins/client-ref-hashing.ts +28 -5
  1050. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1051. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1052. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  1053. package/src/vite/plugins/expose-action-id.ts +54 -30
  1054. package/src/vite/plugins/expose-id-utils.ts +24 -8
  1055. package/src/vite/plugins/expose-ids/export-analysis.ts +100 -20
  1056. package/src/vite/plugins/expose-ids/handler-transform.ts +12 -35
  1057. package/src/vite/plugins/expose-ids/loader-transform.ts +3 -5
  1058. package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
  1059. package/src/vite/plugins/expose-internal-ids.ts +544 -317
  1060. package/src/vite/plugins/performance-tracks.ts +92 -0
  1061. package/src/vite/plugins/refresh-cmd.ts +88 -26
  1062. package/src/vite/plugins/use-cache-transform.ts +65 -50
  1063. package/src/vite/plugins/version-injector.ts +39 -23
  1064. package/src/vite/plugins/version-plugin.ts +59 -2
  1065. package/src/vite/plugins/virtual-entries.ts +2 -2
  1066. package/src/vite/rango.ts +130 -26
  1067. package/src/vite/router-discovery.ts +920 -129
  1068. package/src/vite/utils/ast-handler-extract.ts +15 -15
  1069. package/src/vite/utils/banner.ts +1 -1
  1070. package/src/vite/utils/bundle-analysis.ts +4 -2
  1071. package/src/vite/utils/client-chunks.ts +190 -0
  1072. package/src/vite/utils/forward-user-plugins.ts +193 -0
  1073. package/src/vite/utils/manifest-utils.ts +21 -5
  1074. package/src/vite/utils/package-resolution.ts +41 -1
  1075. package/src/vite/utils/prerender-utils.ts +38 -5
  1076. package/src/vite/utils/shared-utils.ts +109 -27
  1077. package/src/browser/action-response-classifier.ts +0 -99
@@ -0,0 +1,309 @@
1
+ /// <reference path="./flight-runtime.d.ts" />
2
+ /**
3
+ * renderServerTree — REAL Flight serialize -> deserialize round-trip for unit
4
+ * tests, returning an INSPECTABLE React element tree (not just the wire string).
5
+ *
6
+ * Where it sits:
7
+ * - `renderRoute` (testing/dom): a synthetic CLIENT tree, no Flight at all.
8
+ * - `renderToFlightString` (testing/flight): the real Flight WIRE STRING, for
9
+ * `toMatchFlight` substring/snapshot assertions.
10
+ * - `renderServerTree` (here): serializes the real Flight, then deserializes it
11
+ * back to a React element tree you can traverse — so you can assert TYPED prop
12
+ * fidelity across the server/client boundary (a `Date` comes back a `Date`,
13
+ * not the opaque `$D...` wire encoding) and detect whether a `"use client"`
14
+ * component actually crossed the boundary (an `I` row) or was inlined.
15
+ *
16
+ * Scope (deliberate): serialize + deserialize ONLY. There is NO hydration and
17
+ * NO interaction — the deserialized client boundaries are inert placeholders
18
+ * carrying their props. Real interaction/hydration-mismatch testing stays at the
19
+ * e2e tier; in-process happy-dom hydration re-tests React more than your app and
20
+ * misses the only hydration bug worth a dedicated test (server/client divergence
21
+ * needs a real browser).
22
+ *
23
+ * Runs under the `react-server` export condition, in the SAME worker as the
24
+ * serializer (the client deserializer's react/react-dom imports are inert here
25
+ * because deserialize-only never renders). Use it from the rsc Vitest project
26
+ * (vitest.rsc.config.ts); name files `*.rsc-test.{ts,tsx}`.
27
+ */
28
+
29
+ // MUST be first: defines the webpack-style globals the vendored client reads at
30
+ // module-eval time, before that client module is imported below.
31
+ import "./internal/flight-client-globals.js";
32
+ import type { ReactNode } from "react";
33
+ import { createFromReadableStream } from "@vitejs/plugin-rsc/react/browser";
34
+ import { setRequireModule } from "@vitejs/plugin-rsc/core/browser";
35
+ import * as RSDServer from "@vitejs/plugin-rsc/vendor/react-server-dom/server.edge";
36
+ import { serializeToFlightString } from "./flight.js";
37
+ import type { RenderToFlightStringOptions } from "./flight.js";
38
+
39
+ /** Options for {@link renderServerTree}. */
40
+ export interface RenderServerTreeOptions extends RenderToFlightStringOptions {
41
+ /**
42
+ * The `"use client"` modules reachable from the server tree, so their exports
43
+ * serialize as real client boundaries (`I` rows) instead of being inlined.
44
+ *
45
+ * Pass `import.meta.glob("./**\/*.client.tsx", { eager: true })` — one line.
46
+ * Each module's function exports are registered as client references (in place)
47
+ * keyed by the glob path, with the export name as the boundary name. The rsc
48
+ * Vitest project does NOT apply the `"use client"` transform, so without this a
49
+ * client component would render server-side (and likely throw on a hook).
50
+ *
51
+ * Omit it for pure server-only trees. Modules already registered as client
52
+ * references (e.g. by a transform) are left untouched.
53
+ */
54
+ clientModules?: Record<string, unknown>;
55
+ }
56
+
57
+ /** Result of {@link renderServerTree}. */
58
+ export interface RenderServerTreeResult {
59
+ /** The raw Flight wire string (so `toMatchFlight` assertions still apply). */
60
+ flight: string;
61
+ /**
62
+ * The deserialized React element tree. Server elements are plain React
63
+ * elements; each client boundary is an inert placeholder element whose `props`
64
+ * are the real, deserialized JS values that crossed the boundary. Use
65
+ * {@link findClientBoundary} / {@link findClientBoundaries} to locate them.
66
+ */
67
+ tree: unknown;
68
+ }
69
+
70
+ /** A client boundary located in a deserialized tree. */
71
+ export interface ClientBoundary {
72
+ /** The client module id (the glob path it was registered under). */
73
+ id: string;
74
+ /** The export name of the client component (the boundary name). */
75
+ name: string;
76
+ /** The props that crossed the boundary, as real deserialized JS values. */
77
+ props: Record<string, unknown>;
78
+ /** The raw deserialized element (for advanced assertions). */
79
+ element: unknown;
80
+ }
81
+
82
+ const CLIENT_REFERENCE = Symbol.for("react.client.reference");
83
+
84
+ /**
85
+ * Register every function export of each client module as a client reference,
86
+ * in place (ESM live-binding identity makes the server tree's own import see the
87
+ * reference). Idempotent: already-registered exports are skipped.
88
+ */
89
+ function registerClientModules(modules: Record<string, unknown>): void {
90
+ for (const [modulePath, mod] of Object.entries(modules)) {
91
+ if (mod == null || typeof mod !== "object") continue;
92
+ for (const [exportName, value] of Object.entries(mod)) {
93
+ if (typeof value !== "function") continue;
94
+ const ref = value as { $$typeof?: symbol; $$id?: string };
95
+ if (ref.$$typeof === CLIENT_REFERENCE || ref.$$id) continue;
96
+ RSDServer.registerClientReference(value, modulePath, exportName);
97
+ }
98
+ }
99
+ }
100
+
101
+ /**
102
+ * A client manifest that resolves ANY registered client reference without
103
+ * needing to enumerate them. `$$id` is `${id}#${exportName}`; the serializer
104
+ * looks it up here. We omit `async`, so each `I` row is a 3-element row and the
105
+ * deserialized boundary's payload is a clean `resolved_module` whose value is
106
+ * `[id, [], name]` — synchronously readable by {@link findClientBoundaries}.
107
+ */
108
+ function makeClientManifest(): unknown {
109
+ return new Proxy(
110
+ {},
111
+ {
112
+ get(_target, key) {
113
+ if (typeof key !== "string") return undefined;
114
+ const hash = key.lastIndexOf("#");
115
+ const id = hash >= 0 ? key.slice(0, hash) : key;
116
+ const name = hash >= 0 ? key.slice(hash + 1) : "default";
117
+ return { id, chunks: [], name };
118
+ },
119
+ },
120
+ );
121
+ }
122
+
123
+ let loadInstalled = false;
124
+ /**
125
+ * Install the deserialize-side module loader. For the non-async manifest above,
126
+ * the deserializer never calls it (boundaries stay placeholders), so it throws a
127
+ * clear error if a code path ever does try to execute a client reference.
128
+ */
129
+ function installDeserializeLoad(): void {
130
+ if (loadInstalled) return;
131
+ loadInstalled = true;
132
+ setRequireModule({
133
+ load: (id: string) => {
134
+ throw new Error(
135
+ `renderServerTree does not execute client references (deserialize-only). ` +
136
+ `A client reference "${id}" was resolved — render/interaction is the e2e tier.`,
137
+ );
138
+ },
139
+ });
140
+ }
141
+
142
+ function stringToStream(text: string): ReadableStream<Uint8Array> {
143
+ const bytes = new TextEncoder().encode(text);
144
+ return new ReadableStream({
145
+ start(controller) {
146
+ controller.enqueue(bytes);
147
+ controller.close();
148
+ },
149
+ });
150
+ }
151
+
152
+ /**
153
+ * Serialize a server component to real Flight, then deserialize it back to an
154
+ * inspectable React element tree. See the module header for scope.
155
+ *
156
+ * Must run under the `react-server` export condition.
157
+ */
158
+ export async function renderServerTree(
159
+ element: ReactNode,
160
+ opts: RenderServerTreeOptions = {},
161
+ ): Promise<RenderServerTreeResult> {
162
+ if (opts.clientModules) registerClientModules(opts.clientModules);
163
+ const flight = await serializeToFlightString(
164
+ element,
165
+ opts,
166
+ makeClientManifest(),
167
+ );
168
+ installDeserializeLoad();
169
+ const payload = await createFromReadableStream(stringToStream(flight));
170
+ // Resolve the top server chunk so the consumer gets their element, not a lazy.
171
+ return { flight, tree: resolveServerLazy(unwrapPayload(payload)) };
172
+ }
173
+
174
+ /**
175
+ * The serializer wraps the element in Rango's payload shape
176
+ * (`{ metadata: { segments: [{ component }] } }`) to mirror the real wire
177
+ * format. Return the consumer's own element tree, not that wrapper.
178
+ */
179
+ function unwrapPayload(payload: unknown): unknown {
180
+ const segment = (
181
+ payload as { metadata?: { segments?: Array<{ component?: unknown }> } }
182
+ )?.metadata?.segments?.[0];
183
+ return segment && "component" in segment ? segment.component : payload;
184
+ }
185
+
186
+ interface FlightLazy {
187
+ _payload: { status: string; value: unknown };
188
+ _init: (payload: unknown) => unknown;
189
+ }
190
+
191
+ function asFlightLazy(node: unknown): FlightLazy | undefined {
192
+ const candidate = node as Partial<FlightLazy> | null;
193
+ if (
194
+ candidate &&
195
+ typeof candidate === "object" &&
196
+ typeof candidate._init === "function" &&
197
+ candidate._payload &&
198
+ typeof (candidate._payload as { status?: unknown }).status === "string"
199
+ ) {
200
+ return candidate as FlightLazy;
201
+ }
202
+ return undefined;
203
+ }
204
+
205
+ /**
206
+ * An async server component serializes as a deferred chunk that deserializes to
207
+ * a lazy (`status: "resolved_model"`). Initialize it to the materialized element
208
+ * (synchronous for a fully-drained stream; never calls a client `load`). Client
209
+ * references (`status: "resolved_module"`) are left untouched — they are the
210
+ * boundary markers {@link findClientBoundaries} reads.
211
+ */
212
+ function resolveServerLazy(node: unknown): unknown {
213
+ let current = node;
214
+ for (let guard = 0; guard < 1000; guard++) {
215
+ const lazy = asFlightLazy(current);
216
+ if (!lazy || lazy._payload.status !== "resolved_model") return current;
217
+ try {
218
+ current = lazy._init(lazy._payload);
219
+ } catch {
220
+ return current;
221
+ }
222
+ }
223
+ return current;
224
+ }
225
+
226
+ interface ClientBoundaryElement {
227
+ type: { _payload: { status: string; value: unknown[] } };
228
+ props?: Record<string, unknown>;
229
+ }
230
+
231
+ function isClientBoundaryElement(node: unknown): node is ClientBoundaryElement {
232
+ const type = (node as { type?: unknown })?.type as
233
+ | { _payload?: { status?: string; value?: unknown } }
234
+ | undefined;
235
+ const payload = type?._payload;
236
+ return (
237
+ !!payload &&
238
+ payload.status === "resolved_module" &&
239
+ Array.isArray(payload.value)
240
+ );
241
+ }
242
+
243
+ /**
244
+ * Walk a deserialized tree and return every client boundary, in document order,
245
+ * each with its id, export name, and typed props. Pass `name` to keep only the
246
+ * boundaries with that export name.
247
+ *
248
+ * Always returns an array (no throw on zero/many). For a single expected
249
+ * boundary, destructure the first: `const [tag] = findClientBoundaries(tree,
250
+ * "PriceTag")` — and assert on `.length` when the count matters (a missing name
251
+ * yields `[]`, so `tag` would be `undefined`).
252
+ */
253
+ export function findClientBoundaries(
254
+ tree: unknown,
255
+ name?: string,
256
+ ): ClientBoundary[] {
257
+ const out: ClientBoundary[] = [];
258
+ const seen = new Set<unknown>();
259
+ const visit = (raw: unknown): void => {
260
+ // Materialize async-server-component chunks so we can traverse into them;
261
+ // client-reference chunks pass through untouched.
262
+ const node = resolveServerLazy(raw);
263
+ if (node == null || typeof node !== "object") return;
264
+ if (seen.has(node)) return;
265
+ seen.add(node);
266
+ if (Array.isArray(node)) {
267
+ for (const child of node) visit(child);
268
+ return;
269
+ }
270
+ if (isClientBoundaryElement(node)) {
271
+ const value = node.type._payload.value;
272
+ out.push({
273
+ id: String(value[0]),
274
+ name: String(value[2]),
275
+ props: node.props ?? {},
276
+ element: node,
277
+ });
278
+ }
279
+ // Recurse all own enumerable values: the tree is a deserialized payload
280
+ // (metadata -> segments -> component -> children/props), not just nested
281
+ // React props.
282
+ for (const value of Object.values(node as Record<string, unknown>)) {
283
+ visit(value);
284
+ }
285
+ };
286
+ visit(tree);
287
+ return name === undefined
288
+ ? out
289
+ : out.filter((boundary) => boundary.name === name);
290
+ }
291
+
292
+ /**
293
+ * Smoke check that the vendored client deserializer subpaths still resolve. The
294
+ * paths are private to plugin-rsc; a minor bump could relocate them. Call this in
295
+ * a test to fail loudly with a clear message instead of an opaque import error.
296
+ */
297
+ export function assertFlightTreeRuntimeAvailable(): void {
298
+ if (
299
+ typeof createFromReadableStream !== "function" ||
300
+ typeof setRequireModule !== "function" ||
301
+ typeof RSDServer.registerClientReference !== "function"
302
+ ) {
303
+ throw new Error(
304
+ "renderServerTree runtime not available: a @vitejs/plugin-rsc client/server " +
305
+ "subpath did not export the expected function. A plugin-rsc upgrade may have " +
306
+ "moved react/browser, core/browser, or vendor/react-server-dom/server.edge.",
307
+ );
308
+ }
309
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @rangojs/router/testing/flight
3
+ *
4
+ * Real React Server Component (Flight) rendering for unit tests. This entry is
5
+ * SEPARATE from the main ./testing barrel because its serializer (the vendored
6
+ * react-server-dom build) can only be imported under the `react-server` node
7
+ * condition; importing it elsewhere throws. Use it only from a Vitest project
8
+ * configured with that condition (see vitest.rsc.config.ts) — name those test
9
+ * files `*.rsc-test.{ts,tsx}` and run `pnpm test:unit:rsc`.
10
+ *
11
+ * This entry deliberately does NOT pull in Vitest. The `toMatchFlight` /
12
+ * `toMatchFlightSnapshot` matchers (which import `vitest`) live at the separate
13
+ * `@rangojs/router/testing/flight-matchers` subpath, so a consumer can import
14
+ * `renderToFlightString` without taking a hard dependency on Vitest.
15
+ *
16
+ * `renderToFlightString` returns the wire STRING (for `toMatchFlight`).
17
+ * `renderServerTree` additionally deserializes it back to an inspectable React
18
+ * element tree, so you can assert typed prop fidelity across the client boundary
19
+ * (a `Date` comes back a `Date`) and detect inlined-vs-island. Serialize +
20
+ * deserialize only — no hydration/interaction (that is the e2e tier).
21
+ */
22
+
23
+ export {
24
+ renderToFlightString,
25
+ normalizeFlight,
26
+ assertFlightRuntimeAvailable,
27
+ } from "./flight.js";
28
+ export type { RenderToFlightStringOptions } from "./flight.js";
29
+
30
+ export {
31
+ renderServerTree,
32
+ findClientBoundaries,
33
+ assertFlightTreeRuntimeAvailable,
34
+ } from "./flight-tree.js";
35
+ export type {
36
+ RenderServerTreeOptions,
37
+ RenderServerTreeResult,
38
+ ClientBoundary,
39
+ } from "./flight-tree.js";
@@ -0,0 +1,197 @@
1
+ /// <reference path="./flight-runtime.d.ts" />
2
+ /**
3
+ * renderToFlightString — REAL React Server Component (Flight) rendering for
4
+ * unit tests of @rangojs/router consumer apps.
5
+ *
6
+ * This module renders a server component tree to its Flight wire string using
7
+ * the same react-server-dom serializer the router uses at runtime. It runs in
8
+ * plain node (no Vite, no browser), but ONLY under the `react-server` export
9
+ * condition. The serializer is the VENDORED build shipped with
10
+ * @vitejs/plugin-rsc — the public `@vitejs/plugin-rsc/rsc` entry top-level
11
+ * imports Vite virtual modules and is not usable outside a Vite build.
12
+ *
13
+ * Run the example/tests for this module via the dedicated rsc vitest project
14
+ * (vitest.rsc.config.ts), which forces `--conditions=react-server` on the
15
+ * worker. The main vitest project must NOT use that condition (it would flip
16
+ * React to the no-hooks server build and break the ~50 tests that mock
17
+ * @vitejs/plugin-rsc/rsc).
18
+ *
19
+ * Scope / limitations (v1):
20
+ * - Server-only / leaf trees. A tree containing a CLIENT component emits an
21
+ * `I[...]` import row whose module id will not resolve against the empty `{}`
22
+ * client manifest used here — fine for snapshotting the SHAPE of the payload,
23
+ * but the client reference cannot be executed/hydrated. The interactive DOM
24
+ * render (`renderServer`) is deferred (see module TODO at bottom of report).
25
+ * - The vendored subpath is a private plugin-rsc path; a minor bump could move
26
+ * it. `assertFlightRuntimeAvailable()` provides a smoke check.
27
+ * - For stable snapshots, run under NODE_ENV=production: the production
28
+ * serializer drops the dev-only debug-info rows (the `N<timestamp>` reference
29
+ * row, the per-component `stack`/`env` rows, and `D{...}` timing rows),
30
+ * leaving just the rendered tree row(s).
31
+ */
32
+
33
+ import type { ReactNode } from "react";
34
+ // Vendored react-server-dom serializer. Resolves via plugin-rsc's
35
+ // `"./*": "./dist/*.js"` export to
36
+ // dist/vendor/react-server-dom/server.edge.js. Only loadable under the
37
+ // `react-server` export condition.
38
+ import * as RSDServer from "@vitejs/plugin-rsc/vendor/react-server-dom/server.edge";
39
+ import {
40
+ createRequestContext,
41
+ runWithRequestContext,
42
+ setRequestContextParams,
43
+ } from "../server/request-context.js";
44
+ import type { RscPayload } from "../rsc/types.js";
45
+ import type { ResolvedSegment } from "../types.js";
46
+
47
+ /**
48
+ * Options for {@link renderToFlightString}.
49
+ */
50
+ export interface RenderToFlightStringOptions {
51
+ /** Request URL. Defaults to `http://localhost/`. */
52
+ url?: string;
53
+ /** Request headers (e.g. Cookie) visible to the server tree. */
54
+ headers?: HeadersInit;
55
+ /** Env / bindings exposed as `ctx.env`. Defaults to `{}`. */
56
+ env?: unknown;
57
+ /** Route params exposed via `ctx.params` and loader contexts. */
58
+ params?: Record<string, string>;
59
+ /** Matched route name (drives `ctx.routeName` and scoped reverse). */
60
+ routeName?: string;
61
+ }
62
+
63
+ const DEFAULT_URL = "http://localhost/";
64
+
65
+ /**
66
+ * Wrap a single element in the minimal ResolvedSegment + RscPayload shape that
67
+ * mirrors Rango's wire format, so the serialized output matches what a real
68
+ * route segment would emit.
69
+ */
70
+ function wrapAsPayload(element: ReactNode, pathname: string): RscPayload {
71
+ const segment: ResolvedSegment = {
72
+ id: "test",
73
+ namespace: "",
74
+ type: "route",
75
+ index: 0,
76
+ component: element,
77
+ };
78
+ return {
79
+ metadata: {
80
+ pathname,
81
+ segments: [segment],
82
+ version: "test",
83
+ },
84
+ };
85
+ }
86
+
87
+ /**
88
+ * Render a server component (or any ReactNode) to its Flight wire string.
89
+ *
90
+ * The element is wrapped in a minimal Rango segment + payload, then serialized
91
+ * with the vendored react-server-dom server. A request context is active for
92
+ * the duration of the render (drained INSIDE runWithRequestContext) so async
93
+ * server components can call getRequestContext(), read params, cookies, etc.
94
+ *
95
+ * Must run under the `react-server` export condition (see module header).
96
+ */
97
+ export async function renderToFlightString(
98
+ element: ReactNode,
99
+ opts: RenderToFlightStringOptions = {},
100
+ ): Promise<string> {
101
+ // Server-only trees: empty client manifest. A client reference would emit an
102
+ // unresolvable `I` row here; use renderServerTree (flight-tree.ts) when the
103
+ // tree has client boundaries you want to inspect.
104
+ return serializeToFlightString(element, opts, {});
105
+ }
106
+
107
+ /**
108
+ * Shared serialize core: set up a request context, wrap the element as a Rango
109
+ * payload, and serialize it with the given client-reference manifest. Used by
110
+ * {@link renderToFlightString} (empty manifest) and renderServerTree (a manifest
111
+ * that resolves every registered client reference).
112
+ *
113
+ * Must run under the `react-server` export condition (see module header).
114
+ */
115
+ export async function serializeToFlightString(
116
+ element: ReactNode,
117
+ opts: RenderToFlightStringOptions,
118
+ clientManifest: unknown,
119
+ ): Promise<string> {
120
+ const url = new URL(opts.url ?? DEFAULT_URL);
121
+ const request = new Request(url, { headers: opts.headers });
122
+ const ctx = createRequestContext({
123
+ env: opts.env ?? {},
124
+ request,
125
+ url,
126
+ variables: {},
127
+ });
128
+
129
+ const payload = wrapAsPayload(element, url.pathname);
130
+
131
+ return runWithRequestContext(ctx, async () => {
132
+ setRequestContextParams(opts.params ?? {}, opts.routeName);
133
+ // Capture (do NOT rethrow) the first render error. The serializer calls
134
+ // onError from its own scheduled work; throwing there escapes as an
135
+ // unhandled rejection AND leaves the stream un-closed, so the drain below
136
+ // would hang until the test times out. Production's onError returns void
137
+ // (rsc-rendering.ts) so the stream completes with an error row. We mirror
138
+ // that — let the stream finish — then surface the error as a clean
139
+ // rejection after draining, so `await expect(...).rejects.toThrow()` works.
140
+ let renderError: unknown;
141
+ let didError = false;
142
+ const stream = RSDServer.renderToReadableStream(payload, clientManifest, {
143
+ onError(error: unknown) {
144
+ if (!didError) {
145
+ didError = true;
146
+ renderError = error;
147
+ }
148
+ },
149
+ });
150
+ // Drain inside the context so async components see ctx during streaming.
151
+ const text = await new Response(stream).text();
152
+ if (didError) throw renderError;
153
+ return text;
154
+ });
155
+ }
156
+
157
+ // Volatile leading reference row: `:N<timestamp>` (dev debug-info anchor).
158
+ const REFERENCE_ROW_RE = /^:N[\d.]+\n/;
159
+ // Absolute file:// paths embedded in dev STACK rows. The serializer emits stack
160
+ // frames as `["Component","file:///abs/path.tsx",<line>,<col>,...]`, so the
161
+ // path is a quoted JSON string immediately followed by `",<line>,<col>`. The
162
+ // lookahead scopes the scrub to exactly that frame shape, leaving a legitimate
163
+ // `file://` href in RENDERED content (e.g. `{"href":"file:///x"}`) untouched.
164
+ const FILE_URL_RE = /file:\/\/[^"\\]+(?=",\d+,\d+)/g;
165
+
166
+ /**
167
+ * Scrub volatile bits from a Flight string so snapshots are stable across runs
168
+ * and machines:
169
+ * - the leading `:N<timestamp>` reference row (dev only),
170
+ * - absolute `file://...` paths inside dev stack rows.
171
+ *
172
+ * Under NODE_ENV=production these rows are already absent; normalize is a
173
+ * no-op safety net there. In dev mode it removes the machine/clock-specific
174
+ * noise while leaving the rendered tree intact.
175
+ */
176
+ export function normalizeFlight(flight: string): string {
177
+ return flight
178
+ .replace(REFERENCE_ROW_RE, "")
179
+ .replace(FILE_URL_RE, "file://<path>");
180
+ }
181
+
182
+ /**
183
+ * Smoke check that the vendored serializer subpath still resolves and exposes
184
+ * `renderToReadableStream`. The vendored path is private to plugin-rsc; a minor
185
+ * bump could relocate it. Call this in a test to fail loudly with a clear
186
+ * message instead of an opaque import error.
187
+ */
188
+ export function assertFlightRuntimeAvailable(): void {
189
+ if (typeof RSDServer.renderToReadableStream !== "function") {
190
+ throw new Error(
191
+ "Vendored react-server-dom serializer not available: " +
192
+ "@vitejs/plugin-rsc/vendor/react-server-dom/server.edge did not export " +
193
+ "renderToReadableStream. The private vendored subpath may have moved in " +
194
+ "a plugin-rsc upgrade.",
195
+ );
196
+ }
197
+ }