@rangojs/router 0.0.0-experimental.122 → 0.0.0-experimental.124

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 (909) hide show
  1. package/dist/__internal.d.ts +83 -0
  2. package/dist/__internal.d.ts.map +1 -0
  3. package/dist/__internal.js +19 -0
  4. package/dist/__internal.js.map +1 -0
  5. package/dist/__mocks__/version.d.ts +7 -0
  6. package/dist/__mocks__/version.d.ts.map +1 -0
  7. package/dist/__mocks__/version.js +7 -0
  8. package/dist/__mocks__/version.js.map +1 -0
  9. package/dist/__tests__/client-href.test.d.ts +2 -0
  10. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  11. package/dist/__tests__/client-href.test.js +74 -0
  12. package/dist/__tests__/client-href.test.js.map +1 -0
  13. package/dist/__tests__/component-utils.test.d.ts +2 -0
  14. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  15. package/dist/__tests__/component-utils.test.js +51 -0
  16. package/dist/__tests__/component-utils.test.js.map +1 -0
  17. package/dist/__tests__/event-controller.test.d.ts +2 -0
  18. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  19. package/dist/__tests__/event-controller.test.js +538 -0
  20. package/dist/__tests__/event-controller.test.js.map +1 -0
  21. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  22. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.js +374 -0
  24. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  25. package/dist/__tests__/match-result.test.d.ts +2 -0
  26. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  27. package/dist/__tests__/match-result.test.js +154 -0
  28. package/dist/__tests__/match-result.test.js.map +1 -0
  29. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  30. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  31. package/dist/__tests__/navigation-store.test.js +440 -0
  32. package/dist/__tests__/navigation-store.test.js.map +1 -0
  33. package/dist/__tests__/partial-update.test.d.ts +2 -0
  34. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  35. package/dist/__tests__/partial-update.test.js +1009 -0
  36. package/dist/__tests__/partial-update.test.js.map +1 -0
  37. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  38. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  39. package/dist/__tests__/reverse-types.test.js +656 -0
  40. package/dist/__tests__/reverse-types.test.js.map +1 -0
  41. package/dist/__tests__/route-definition.test.d.ts +2 -0
  42. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  43. package/dist/__tests__/route-definition.test.js +55 -0
  44. package/dist/__tests__/route-definition.test.js.map +1 -0
  45. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  46. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  47. package/dist/__tests__/router-helpers.test.js +377 -0
  48. package/dist/__tests__/router-helpers.test.js.map +1 -0
  49. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  50. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.js +426 -0
  52. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  53. package/dist/__tests__/router-integration.test.d.ts +2 -0
  54. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  55. package/dist/__tests__/router-integration.test.js +1051 -0
  56. package/dist/__tests__/router-integration.test.js.map +1 -0
  57. package/dist/__tests__/search-params.test.d.ts +5 -0
  58. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  59. package/dist/__tests__/search-params.test.js +306 -0
  60. package/dist/__tests__/search-params.test.js.map +1 -0
  61. package/dist/__tests__/segment-system.test.d.ts +2 -0
  62. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  63. package/dist/__tests__/segment-system.test.js +627 -0
  64. package/dist/__tests__/segment-system.test.js.map +1 -0
  65. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  66. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.js +63 -0
  68. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  69. package/dist/__tests__/urls.test.d.ts +2 -0
  70. package/dist/__tests__/urls.test.d.ts.map +1 -0
  71. package/dist/__tests__/urls.test.js +421 -0
  72. package/dist/__tests__/urls.test.js.map +1 -0
  73. package/dist/__tests__/use-mount.test.d.ts +2 -0
  74. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  75. package/dist/__tests__/use-mount.test.js +35 -0
  76. package/dist/__tests__/use-mount.test.js.map +1 -0
  77. package/dist/bin/rango.d.ts +2 -0
  78. package/dist/bin/rango.d.ts.map +1 -0
  79. package/dist/bin/rango.js +7 -2
  80. package/dist/bin/rango.js.map +1 -0
  81. package/dist/browser/event-controller.d.ts +191 -0
  82. package/dist/browser/event-controller.d.ts.map +1 -0
  83. package/dist/browser/event-controller.js +559 -0
  84. package/dist/browser/event-controller.js.map +1 -0
  85. package/dist/browser/index.d.ts +2 -0
  86. package/dist/browser/index.d.ts.map +1 -0
  87. package/dist/browser/index.js +14 -0
  88. package/dist/browser/index.js.map +1 -0
  89. package/dist/browser/link-interceptor.d.ts +38 -0
  90. package/dist/browser/link-interceptor.d.ts.map +1 -0
  91. package/dist/browser/link-interceptor.js +99 -0
  92. package/dist/browser/link-interceptor.js.map +1 -0
  93. package/dist/browser/logging.d.ts +10 -0
  94. package/dist/browser/logging.d.ts.map +1 -0
  95. package/dist/browser/logging.js +29 -0
  96. package/dist/browser/logging.js.map +1 -0
  97. package/dist/browser/lru-cache.d.ts +17 -0
  98. package/dist/browser/lru-cache.d.ts.map +1 -0
  99. package/dist/browser/lru-cache.js +50 -0
  100. package/dist/browser/lru-cache.js.map +1 -0
  101. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  102. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  103. package/dist/browser/merge-segment-loaders.js +102 -0
  104. package/dist/browser/merge-segment-loaders.js.map +1 -0
  105. package/dist/browser/navigation-bridge.d.ts +102 -0
  106. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  107. package/dist/browser/navigation-bridge.js +708 -0
  108. package/dist/browser/navigation-bridge.js.map +1 -0
  109. package/dist/browser/navigation-client.d.ts +25 -0
  110. package/dist/browser/navigation-client.d.ts.map +1 -0
  111. package/dist/browser/navigation-client.js +157 -0
  112. package/dist/browser/navigation-client.js.map +1 -0
  113. package/dist/browser/navigation-store.d.ts +101 -0
  114. package/dist/browser/navigation-store.d.ts.map +1 -0
  115. package/dist/browser/navigation-store.js +625 -0
  116. package/dist/browser/navigation-store.js.map +1 -0
  117. package/dist/browser/partial-update.d.ts +75 -0
  118. package/dist/browser/partial-update.d.ts.map +1 -0
  119. package/dist/browser/partial-update.js +426 -0
  120. package/dist/browser/partial-update.js.map +1 -0
  121. package/dist/browser/react/Link.d.ts +86 -0
  122. package/dist/browser/react/Link.d.ts.map +1 -0
  123. package/dist/browser/react/Link.js +128 -0
  124. package/dist/browser/react/Link.js.map +1 -0
  125. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  126. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  127. package/dist/browser/react/NavigationProvider.js +216 -0
  128. package/dist/browser/react/NavigationProvider.js.map +1 -0
  129. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  130. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.js +57 -0
  132. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  133. package/dist/browser/react/context.d.ts +46 -0
  134. package/dist/browser/react/context.d.ts.map +1 -0
  135. package/dist/browser/react/context.js +10 -0
  136. package/dist/browser/react/context.js.map +1 -0
  137. package/dist/browser/react/index.d.ts +11 -0
  138. package/dist/browser/react/index.d.ts.map +1 -0
  139. package/dist/browser/react/index.js +22 -0
  140. package/dist/browser/react/index.js.map +1 -0
  141. package/dist/browser/react/location-state-shared.d.ts +63 -0
  142. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  143. package/dist/browser/react/location-state-shared.js +81 -0
  144. package/dist/browser/react/location-state-shared.js.map +1 -0
  145. package/dist/browser/react/location-state.d.ts +23 -0
  146. package/dist/browser/react/location-state.d.ts.map +1 -0
  147. package/dist/browser/react/location-state.js +29 -0
  148. package/dist/browser/react/location-state.js.map +1 -0
  149. package/dist/browser/react/mount-context.d.ts +24 -0
  150. package/dist/browser/react/mount-context.d.ts.map +1 -0
  151. package/dist/browser/react/mount-context.js +24 -0
  152. package/dist/browser/react/mount-context.js.map +1 -0
  153. package/dist/browser/react/use-action.d.ts +64 -0
  154. package/dist/browser/react/use-action.d.ts.map +1 -0
  155. package/dist/browser/react/use-action.js +134 -0
  156. package/dist/browser/react/use-action.js.map +1 -0
  157. package/dist/browser/react/use-client-cache.d.ts +41 -0
  158. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  159. package/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -28
  160. package/dist/browser/react/use-client-cache.js.map +1 -0
  161. package/dist/browser/react/use-handle.d.ts +31 -0
  162. package/dist/browser/react/use-handle.d.ts.map +1 -0
  163. package/dist/browser/react/use-handle.js +144 -0
  164. package/dist/browser/react/use-handle.js.map +1 -0
  165. package/dist/browser/react/use-href.d.ts +33 -0
  166. package/dist/browser/react/use-href.d.ts.map +1 -0
  167. package/dist/browser/react/use-href.js +39 -0
  168. package/dist/browser/react/use-href.js.map +1 -0
  169. package/dist/browser/react/use-link-status.d.ts +37 -0
  170. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  171. package/dist/browser/react/use-link-status.js +99 -0
  172. package/dist/browser/react/use-link-status.js.map +1 -0
  173. package/dist/browser/react/use-mount.d.ts +25 -0
  174. package/dist/browser/react/use-mount.d.ts.map +1 -0
  175. package/dist/browser/react/use-mount.js +30 -0
  176. package/dist/browser/react/use-mount.js.map +1 -0
  177. package/dist/browser/react/use-navigation.d.ts +27 -0
  178. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  179. package/dist/browser/react/use-navigation.js +87 -0
  180. package/dist/browser/react/use-navigation.js.map +1 -0
  181. package/dist/browser/react/use-segments.d.ts +38 -0
  182. package/dist/browser/react/use-segments.d.ts.map +1 -0
  183. package/dist/browser/react/use-segments.js +130 -0
  184. package/dist/browser/react/use-segments.js.map +1 -0
  185. package/dist/browser/request-controller.d.ts +26 -0
  186. package/dist/browser/request-controller.d.ts.map +1 -0
  187. package/dist/browser/request-controller.js +147 -0
  188. package/dist/browser/request-controller.js.map +1 -0
  189. package/dist/browser/rsc-router.d.ts +129 -0
  190. package/dist/browser/rsc-router.d.ts.map +1 -0
  191. package/dist/browser/rsc-router.js +195 -0
  192. package/dist/browser/rsc-router.js.map +1 -0
  193. package/dist/browser/scroll-restoration.d.ts +93 -0
  194. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  195. package/dist/browser/scroll-restoration.js +321 -0
  196. package/dist/browser/scroll-restoration.js.map +1 -0
  197. package/dist/browser/segment-structure-assert.d.ts +17 -0
  198. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  199. package/dist/browser/segment-structure-assert.js +59 -0
  200. package/dist/browser/segment-structure-assert.js.map +1 -0
  201. package/dist/browser/server-action-bridge.d.ts +26 -0
  202. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  203. package/dist/browser/server-action-bridge.js +668 -0
  204. package/dist/browser/server-action-bridge.js.map +1 -0
  205. package/dist/browser/shallow.d.ts +12 -0
  206. package/dist/browser/shallow.d.ts.map +1 -0
  207. package/dist/browser/shallow.js +34 -0
  208. package/dist/browser/shallow.js.map +1 -0
  209. package/dist/browser/types.d.ts +369 -0
  210. package/dist/browser/types.d.ts.map +1 -0
  211. package/dist/browser/types.js +2 -0
  212. package/dist/browser/types.js.map +1 -0
  213. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  214. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.js +237 -0
  216. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  217. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  218. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  220. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  221. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  222. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  224. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  225. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  226. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  228. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  229. package/dist/build/generate-manifest.d.ts +81 -0
  230. package/dist/build/generate-manifest.d.ts.map +1 -0
  231. package/dist/build/generate-manifest.js +276 -0
  232. package/dist/build/generate-manifest.js.map +1 -0
  233. package/dist/build/generate-route-types.d.ts +115 -0
  234. package/dist/build/generate-route-types.d.ts.map +1 -0
  235. package/dist/build/generate-route-types.js +740 -0
  236. package/dist/build/generate-route-types.js.map +1 -0
  237. package/dist/build/index.d.ts +21 -0
  238. package/dist/build/index.d.ts.map +1 -0
  239. package/dist/build/index.js +21 -0
  240. package/dist/build/index.js.map +1 -0
  241. package/dist/build/route-trie.d.ts +71 -0
  242. package/dist/build/route-trie.d.ts.map +1 -0
  243. package/dist/build/route-trie.js +175 -0
  244. package/dist/build/route-trie.js.map +1 -0
  245. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  246. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  248. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  249. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  250. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.js +345 -0
  252. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  253. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  254. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  257. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  258. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.js +367 -0
  260. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  261. package/dist/cache/cache-scope.d.ts +102 -0
  262. package/dist/cache/cache-scope.d.ts.map +1 -0
  263. package/dist/cache/cache-scope.js +440 -0
  264. package/dist/cache/cache-scope.js.map +1 -0
  265. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  266. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  269. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  270. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.js +242 -0
  272. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  273. package/dist/cache/cf/index.d.ts +14 -0
  274. package/dist/cache/cf/index.d.ts.map +1 -0
  275. package/dist/cache/cf/index.js +17 -0
  276. package/dist/cache/cf/index.js.map +1 -0
  277. package/dist/cache/document-cache.d.ts +64 -0
  278. package/dist/cache/document-cache.d.ts.map +1 -0
  279. package/dist/cache/document-cache.js +228 -0
  280. package/dist/cache/document-cache.js.map +1 -0
  281. package/dist/cache/index.d.ts +19 -0
  282. package/dist/cache/index.d.ts.map +1 -0
  283. package/dist/cache/index.js +21 -0
  284. package/dist/cache/index.js.map +1 -0
  285. package/dist/cache/memory-segment-store.d.ts +110 -0
  286. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  287. package/dist/cache/memory-segment-store.js +117 -0
  288. package/dist/cache/memory-segment-store.js.map +1 -0
  289. package/dist/cache/memory-store.d.ts +41 -0
  290. package/dist/cache/memory-store.d.ts.map +1 -0
  291. package/dist/cache/memory-store.js +191 -0
  292. package/dist/cache/memory-store.js.map +1 -0
  293. package/dist/cache/types.d.ts +317 -0
  294. package/dist/cache/types.d.ts.map +1 -0
  295. package/dist/cache/types.js +12 -0
  296. package/dist/cache/types.js.map +1 -0
  297. package/dist/client.d.ts +248 -0
  298. package/dist/client.d.ts.map +1 -0
  299. package/dist/client.js +367 -0
  300. package/dist/client.js.map +1 -0
  301. package/dist/client.rsc.d.ts +26 -0
  302. package/dist/client.rsc.d.ts.map +1 -0
  303. package/dist/client.rsc.js +46 -0
  304. package/dist/client.rsc.js.map +1 -0
  305. package/dist/component-utils.d.ts +36 -0
  306. package/dist/component-utils.d.ts.map +1 -0
  307. package/dist/component-utils.js +61 -0
  308. package/dist/component-utils.js.map +1 -0
  309. package/dist/components/DefaultDocument.d.ts +13 -0
  310. package/dist/components/DefaultDocument.d.ts.map +1 -0
  311. package/dist/components/DefaultDocument.js +15 -0
  312. package/dist/components/DefaultDocument.js.map +1 -0
  313. package/dist/debug.d.ts +58 -0
  314. package/dist/debug.d.ts.map +1 -0
  315. package/dist/debug.js +157 -0
  316. package/dist/debug.js.map +1 -0
  317. package/dist/default-error-boundary.d.ts +11 -0
  318. package/dist/default-error-boundary.d.ts.map +1 -0
  319. package/dist/default-error-boundary.js +45 -0
  320. package/dist/default-error-boundary.js.map +1 -0
  321. package/dist/deps/browser.d.ts +2 -0
  322. package/dist/deps/browser.d.ts.map +1 -0
  323. package/dist/deps/browser.js +3 -0
  324. package/dist/deps/browser.js.map +1 -0
  325. package/dist/deps/html-stream-client.d.ts +2 -0
  326. package/dist/deps/html-stream-client.d.ts.map +1 -0
  327. package/dist/deps/html-stream-client.js +3 -0
  328. package/dist/deps/html-stream-client.js.map +1 -0
  329. package/dist/deps/html-stream-server.d.ts +2 -0
  330. package/dist/deps/html-stream-server.d.ts.map +1 -0
  331. package/dist/deps/html-stream-server.js +3 -0
  332. package/dist/deps/html-stream-server.js.map +1 -0
  333. package/dist/deps/rsc.d.ts +2 -0
  334. package/dist/deps/rsc.d.ts.map +1 -0
  335. package/dist/deps/rsc.js +4 -0
  336. package/dist/deps/rsc.js.map +1 -0
  337. package/dist/deps/ssr.d.ts +2 -0
  338. package/dist/deps/ssr.d.ts.map +1 -0
  339. package/dist/deps/ssr.js +3 -0
  340. package/dist/deps/ssr.js.map +1 -0
  341. package/dist/errors.d.ts +174 -0
  342. package/dist/errors.d.ts.map +1 -0
  343. package/dist/errors.js +241 -0
  344. package/dist/errors.js.map +1 -0
  345. package/dist/handle.d.ts +78 -0
  346. package/dist/handle.d.ts.map +1 -0
  347. package/dist/handle.js +82 -0
  348. package/dist/handle.js.map +1 -0
  349. package/dist/handles/MetaTags.d.ts +14 -0
  350. package/dist/handles/MetaTags.d.ts.map +1 -0
  351. package/dist/handles/MetaTags.js +136 -0
  352. package/dist/handles/MetaTags.js.map +1 -0
  353. package/dist/handles/index.d.ts +6 -0
  354. package/dist/handles/index.d.ts.map +1 -0
  355. package/dist/handles/index.js +6 -0
  356. package/dist/handles/index.js.map +1 -0
  357. package/dist/handles/meta.d.ts +39 -0
  358. package/dist/handles/meta.d.ts.map +1 -0
  359. package/dist/handles/meta.js +202 -0
  360. package/dist/handles/meta.js.map +1 -0
  361. package/dist/host/__tests__/errors.test.d.ts +2 -0
  362. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  363. package/dist/host/__tests__/errors.test.js +76 -0
  364. package/dist/host/__tests__/errors.test.js.map +1 -0
  365. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  366. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  369. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  370. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  372. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  373. package/dist/host/__tests__/router.test.d.ts +2 -0
  374. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  375. package/dist/host/__tests__/router.test.js +241 -0
  376. package/dist/host/__tests__/router.test.js.map +1 -0
  377. package/dist/host/__tests__/testing.test.d.ts +2 -0
  378. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  379. package/dist/host/__tests__/testing.test.js +64 -0
  380. package/dist/host/__tests__/testing.test.js.map +1 -0
  381. package/dist/host/__tests__/utils.test.d.ts +2 -0
  382. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  383. package/dist/host/__tests__/utils.test.js +29 -0
  384. package/dist/host/__tests__/utils.test.js.map +1 -0
  385. package/dist/host/cookie-handler.d.ts +34 -0
  386. package/dist/host/cookie-handler.d.ts.map +1 -0
  387. package/dist/host/cookie-handler.js +124 -0
  388. package/dist/host/cookie-handler.js.map +1 -0
  389. package/dist/host/errors.d.ts +56 -0
  390. package/dist/host/errors.d.ts.map +1 -0
  391. package/dist/host/errors.js +79 -0
  392. package/dist/host/errors.js.map +1 -0
  393. package/dist/host/index.d.ts +29 -0
  394. package/dist/host/index.d.ts.map +1 -0
  395. package/dist/host/index.js +32 -0
  396. package/dist/host/index.js.map +1 -0
  397. package/dist/host/pattern-matcher.d.ts +36 -0
  398. package/dist/host/pattern-matcher.d.ts.map +1 -0
  399. package/dist/host/pattern-matcher.js +172 -0
  400. package/dist/host/pattern-matcher.js.map +1 -0
  401. package/dist/host/router.d.ts +26 -0
  402. package/dist/host/router.d.ts.map +1 -0
  403. package/dist/host/router.js +218 -0
  404. package/dist/host/router.js.map +1 -0
  405. package/dist/host/testing.d.ts +36 -0
  406. package/dist/host/testing.d.ts.map +1 -0
  407. package/dist/host/testing.js +55 -0
  408. package/dist/host/testing.js.map +1 -0
  409. package/dist/host/types.d.ts +115 -0
  410. package/dist/host/types.d.ts.map +1 -0
  411. package/dist/host/types.js +7 -0
  412. package/dist/host/types.js.map +1 -0
  413. package/dist/host/utils.d.ts +21 -0
  414. package/dist/host/utils.d.ts.map +1 -0
  415. package/dist/host/utils.js +23 -0
  416. package/dist/host/utils.js.map +1 -0
  417. package/dist/href-client.d.ts +131 -0
  418. package/dist/href-client.d.ts.map +1 -0
  419. package/dist/href-client.js +64 -0
  420. package/dist/href-client.js.map +1 -0
  421. package/dist/href-context.d.ts +29 -0
  422. package/dist/href-context.d.ts.map +1 -0
  423. package/dist/href-context.js +21 -0
  424. package/dist/href-context.js.map +1 -0
  425. package/dist/index.d.ts +73 -0
  426. package/dist/index.d.ts.map +1 -0
  427. package/dist/index.js +91 -0
  428. package/dist/index.js.map +1 -0
  429. package/dist/index.rsc.d.ts +32 -0
  430. package/dist/index.rsc.d.ts.map +1 -0
  431. package/dist/index.rsc.js +40 -0
  432. package/dist/index.rsc.js.map +1 -0
  433. package/dist/internal-debug.d.ts +2 -0
  434. package/dist/internal-debug.d.ts.map +1 -0
  435. package/dist/internal-debug.js +5 -0
  436. package/dist/internal-debug.js.map +1 -0
  437. package/dist/loader.d.ts +14 -0
  438. package/dist/loader.d.ts.map +1 -0
  439. package/dist/loader.js +20 -0
  440. package/dist/loader.js.map +1 -0
  441. package/dist/loader.rsc.d.ts +19 -0
  442. package/dist/loader.rsc.d.ts.map +1 -0
  443. package/dist/loader.rsc.js +99 -0
  444. package/dist/loader.rsc.js.map +1 -0
  445. package/dist/network-error-thrower.d.ts +17 -0
  446. package/dist/network-error-thrower.d.ts.map +1 -0
  447. package/dist/network-error-thrower.js +14 -0
  448. package/dist/network-error-thrower.js.map +1 -0
  449. package/dist/outlet-context.d.ts +13 -0
  450. package/dist/outlet-context.d.ts.map +1 -0
  451. package/dist/outlet-context.js +3 -0
  452. package/dist/outlet-context.js.map +1 -0
  453. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  454. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  456. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  457. package/dist/prerender/param-hash.d.ts +16 -0
  458. package/dist/prerender/param-hash.d.ts.map +1 -0
  459. package/dist/prerender/param-hash.js +36 -0
  460. package/dist/prerender/param-hash.js.map +1 -0
  461. package/dist/prerender/store.d.ts +38 -0
  462. package/dist/prerender/store.d.ts.map +1 -0
  463. package/dist/prerender/store.js +61 -0
  464. package/dist/prerender/store.js.map +1 -0
  465. package/dist/prerender.d.ts +66 -0
  466. package/dist/prerender.d.ts.map +1 -0
  467. package/dist/prerender.js +57 -0
  468. package/dist/prerender.js.map +1 -0
  469. package/dist/reverse.d.ts +196 -0
  470. package/dist/reverse.d.ts.map +1 -0
  471. package/dist/reverse.js +78 -0
  472. package/dist/reverse.js.map +1 -0
  473. package/dist/root-error-boundary.d.ts +33 -0
  474. package/dist/root-error-boundary.d.ts.map +1 -0
  475. package/dist/root-error-boundary.js +165 -0
  476. package/dist/root-error-boundary.js.map +1 -0
  477. package/dist/route-content-wrapper.d.ts +46 -0
  478. package/dist/route-content-wrapper.d.ts.map +1 -0
  479. package/dist/route-content-wrapper.js +77 -0
  480. package/dist/route-content-wrapper.js.map +1 -0
  481. package/dist/route-definition.d.ts +421 -0
  482. package/dist/route-definition.d.ts.map +1 -0
  483. package/dist/route-definition.js +868 -0
  484. package/dist/route-definition.js.map +1 -0
  485. package/dist/route-map-builder.d.ts +155 -0
  486. package/dist/route-map-builder.d.ts.map +1 -0
  487. package/dist/route-map-builder.js +237 -0
  488. package/dist/route-map-builder.js.map +1 -0
  489. package/dist/route-types.d.ts +165 -0
  490. package/dist/route-types.d.ts.map +1 -0
  491. package/dist/route-types.js +7 -0
  492. package/dist/route-types.js.map +1 -0
  493. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  494. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.js +65 -0
  496. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  497. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  498. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  501. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  502. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  503. package/dist/router/__tests__/match-context.test.js +92 -0
  504. package/dist/router/__tests__/match-context.test.js.map +1 -0
  505. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  506. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  508. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  509. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  510. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  511. package/dist/router/__tests__/match-result.test.js +457 -0
  512. package/dist/router/__tests__/match-result.test.js.map +1 -0
  513. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  514. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  515. package/dist/router/__tests__/on-error.test.js +678 -0
  516. package/dist/router/__tests__/on-error.test.js.map +1 -0
  517. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  518. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  520. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  521. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  522. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  525. package/dist/router/error-handling.d.ts +77 -0
  526. package/dist/router/error-handling.d.ts.map +1 -0
  527. package/dist/router/error-handling.js +202 -0
  528. package/dist/router/error-handling.js.map +1 -0
  529. package/dist/router/handler-context.d.ts +20 -0
  530. package/dist/router/handler-context.d.ts.map +1 -0
  531. package/dist/router/handler-context.js +198 -0
  532. package/dist/router/handler-context.js.map +1 -0
  533. package/dist/router/intercept-resolution.d.ts +66 -0
  534. package/dist/router/intercept-resolution.d.ts.map +1 -0
  535. package/dist/router/intercept-resolution.js +246 -0
  536. package/dist/router/intercept-resolution.js.map +1 -0
  537. package/dist/router/loader-resolution.d.ts +64 -0
  538. package/dist/router/loader-resolution.d.ts.map +1 -0
  539. package/dist/router/loader-resolution.js +284 -0
  540. package/dist/router/loader-resolution.js.map +1 -0
  541. package/dist/router/logging.d.ts +15 -0
  542. package/dist/router/logging.d.ts.map +1 -0
  543. package/dist/router/logging.js +99 -0
  544. package/dist/router/logging.js.map +1 -0
  545. package/dist/router/manifest.d.ts +22 -0
  546. package/dist/router/manifest.d.ts.map +1 -0
  547. package/dist/router/manifest.js +181 -0
  548. package/dist/router/manifest.js.map +1 -0
  549. package/dist/router/match-api.d.ts +35 -0
  550. package/dist/router/match-api.d.ts.map +1 -0
  551. package/dist/router/match-api.js +406 -0
  552. package/dist/router/match-api.js.map +1 -0
  553. package/dist/router/match-context.d.ts +206 -0
  554. package/dist/router/match-context.d.ts.map +1 -0
  555. package/dist/router/match-context.js +17 -0
  556. package/dist/router/match-context.js.map +1 -0
  557. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  558. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.js +75 -0
  560. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  561. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  562. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.js +257 -0
  564. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  565. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  566. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  567. package/dist/router/match-middleware/cache-store.js +108 -0
  568. package/dist/router/match-middleware/cache-store.js.map +1 -0
  569. package/dist/router/match-middleware/index.d.ts +81 -0
  570. package/dist/router/match-middleware/index.d.ts.map +1 -0
  571. package/dist/router/match-middleware/index.js +80 -0
  572. package/dist/router/match-middleware/index.js.map +1 -0
  573. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  574. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  576. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  577. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  578. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.js +53 -0
  580. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  581. package/dist/router/match-pipelines.d.ts +147 -0
  582. package/dist/router/match-pipelines.d.ts.map +1 -0
  583. package/dist/router/match-pipelines.js +82 -0
  584. package/dist/router/match-pipelines.js.map +1 -0
  585. package/dist/router/match-result.d.ts +126 -0
  586. package/dist/router/match-result.d.ts.map +1 -0
  587. package/dist/router/match-result.js +93 -0
  588. package/dist/router/match-result.js.map +1 -0
  589. package/dist/router/metrics.d.ts +20 -0
  590. package/dist/router/metrics.d.ts.map +1 -0
  591. package/dist/router/metrics.js +47 -0
  592. package/dist/router/metrics.js.map +1 -0
  593. package/dist/router/middleware.d.ts +249 -0
  594. package/dist/router/middleware.d.ts.map +1 -0
  595. package/dist/router/middleware.js +434 -0
  596. package/dist/router/middleware.js.map +1 -0
  597. package/dist/router/middleware.test.d.ts +2 -0
  598. package/dist/router/middleware.test.d.ts.map +1 -0
  599. package/dist/router/middleware.test.js +816 -0
  600. package/dist/router/middleware.test.js.map +1 -0
  601. package/dist/router/pattern-matching.d.ts +149 -0
  602. package/dist/router/pattern-matching.d.ts.map +1 -0
  603. package/dist/router/pattern-matching.js +349 -0
  604. package/dist/router/pattern-matching.js.map +1 -0
  605. package/dist/router/revalidation.d.ts +44 -0
  606. package/dist/router/revalidation.d.ts.map +1 -0
  607. package/dist/router/revalidation.js +147 -0
  608. package/dist/router/revalidation.js.map +1 -0
  609. package/dist/router/router-context.d.ts +135 -0
  610. package/dist/router/router-context.d.ts.map +1 -0
  611. package/dist/router/router-context.js +36 -0
  612. package/dist/router/router-context.js.map +1 -0
  613. package/dist/router/segment-resolution.d.ts +127 -0
  614. package/dist/router/segment-resolution.d.ts.map +1 -0
  615. package/dist/router/segment-resolution.js +919 -0
  616. package/dist/router/segment-resolution.js.map +1 -0
  617. package/dist/router/trie-matching.d.ts +40 -0
  618. package/dist/router/trie-matching.d.ts.map +1 -0
  619. package/dist/router/trie-matching.js +127 -0
  620. package/dist/router/trie-matching.js.map +1 -0
  621. package/dist/router/types.d.ts +136 -0
  622. package/dist/router/types.d.ts.map +1 -0
  623. package/dist/router/types.js +7 -0
  624. package/dist/router/types.js.map +1 -0
  625. package/dist/router.d.ts +753 -0
  626. package/dist/router.d.ts.map +1 -0
  627. package/dist/router.gen.d.ts +6 -0
  628. package/dist/router.gen.d.ts.map +1 -0
  629. package/dist/router.gen.js +6 -0
  630. package/dist/router.gen.js.map +1 -0
  631. package/dist/router.js +1304 -0
  632. package/dist/router.js.map +1 -0
  633. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  634. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.js +140 -0
  636. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  637. package/dist/rsc/handler.d.ts +45 -0
  638. package/dist/rsc/handler.d.ts.map +1 -0
  639. package/dist/rsc/handler.js +1172 -0
  640. package/dist/rsc/handler.js.map +1 -0
  641. package/dist/rsc/helpers.d.ts +16 -0
  642. package/dist/rsc/helpers.d.ts.map +1 -0
  643. package/dist/rsc/helpers.js +55 -0
  644. package/dist/rsc/helpers.js.map +1 -0
  645. package/dist/rsc/index.d.ts +22 -0
  646. package/dist/rsc/index.d.ts.map +1 -0
  647. package/dist/rsc/index.js +23 -0
  648. package/dist/rsc/index.js.map +1 -0
  649. package/dist/rsc/nonce.d.ts +9 -0
  650. package/dist/rsc/nonce.d.ts.map +1 -0
  651. package/dist/rsc/nonce.js +18 -0
  652. package/dist/rsc/nonce.js.map +1 -0
  653. package/dist/rsc/types.d.ts +206 -0
  654. package/dist/rsc/types.d.ts.map +1 -0
  655. package/dist/rsc/types.js +8 -0
  656. package/dist/rsc/types.js.map +1 -0
  657. package/dist/search-params.d.ts +103 -0
  658. package/dist/search-params.d.ts.map +1 -0
  659. package/dist/search-params.js +74 -0
  660. package/dist/search-params.js.map +1 -0
  661. package/dist/segment-system.d.ts +75 -0
  662. package/dist/segment-system.d.ts.map +1 -0
  663. package/dist/segment-system.js +336 -0
  664. package/dist/segment-system.js.map +1 -0
  665. package/dist/server/context.d.ts +245 -0
  666. package/dist/server/context.d.ts.map +1 -0
  667. package/dist/server/context.js +197 -0
  668. package/dist/server/context.js.map +1 -0
  669. package/dist/server/fetchable-loader-store.d.ts +18 -0
  670. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  671. package/dist/server/fetchable-loader-store.js +18 -0
  672. package/dist/server/fetchable-loader-store.js.map +1 -0
  673. package/dist/server/handle-store.d.ts +85 -0
  674. package/dist/server/handle-store.d.ts.map +1 -0
  675. package/dist/server/handle-store.js +142 -0
  676. package/dist/server/handle-store.js.map +1 -0
  677. package/dist/server/loader-registry.d.ts +55 -0
  678. package/dist/server/loader-registry.d.ts.map +1 -0
  679. package/dist/server/loader-registry.js +132 -0
  680. package/dist/server/loader-registry.js.map +1 -0
  681. package/dist/server/request-context.d.ts +226 -0
  682. package/dist/server/request-context.d.ts.map +1 -0
  683. package/dist/server/request-context.js +290 -0
  684. package/dist/server/request-context.js.map +1 -0
  685. package/dist/server/root-layout.d.ts +4 -0
  686. package/dist/server/root-layout.d.ts.map +1 -0
  687. package/dist/server/root-layout.js +5 -0
  688. package/dist/server/root-layout.js.map +1 -0
  689. package/dist/server.d.ts +15 -0
  690. package/dist/server.d.ts.map +1 -0
  691. package/dist/server.js +20 -0
  692. package/dist/server.js.map +1 -0
  693. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  694. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  697. package/dist/ssr/index.d.ts +98 -0
  698. package/dist/ssr/index.d.ts.map +1 -0
  699. package/dist/ssr/index.js +158 -0
  700. package/dist/ssr/index.js.map +1 -0
  701. package/dist/static-handler.d.ts +50 -0
  702. package/dist/static-handler.d.ts.map +1 -0
  703. package/dist/static-handler.gen.d.ts +5 -0
  704. package/dist/static-handler.gen.d.ts.map +1 -0
  705. package/dist/static-handler.gen.js +5 -0
  706. package/dist/static-handler.gen.js.map +1 -0
  707. package/dist/static-handler.js +29 -0
  708. package/dist/static-handler.js.map +1 -0
  709. package/dist/testing/vitest.js +82 -0
  710. package/dist/theme/ThemeProvider.d.ts +20 -0
  711. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  712. package/dist/theme/ThemeProvider.js +240 -0
  713. package/dist/theme/ThemeProvider.js.map +1 -0
  714. package/dist/theme/ThemeScript.d.ts +48 -0
  715. package/dist/theme/ThemeScript.d.ts.map +1 -0
  716. package/dist/theme/ThemeScript.js +13 -0
  717. package/dist/theme/ThemeScript.js.map +1 -0
  718. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  719. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  720. package/dist/theme/__tests__/theme.test.js +103 -0
  721. package/dist/theme/__tests__/theme.test.js.map +1 -0
  722. package/dist/theme/constants.d.ts +29 -0
  723. package/dist/theme/constants.d.ts.map +1 -0
  724. package/dist/theme/constants.js +48 -0
  725. package/dist/theme/constants.js.map +1 -0
  726. package/dist/theme/index.d.ts +31 -0
  727. package/dist/theme/index.d.ts.map +1 -0
  728. package/dist/theme/index.js +36 -0
  729. package/dist/theme/index.js.map +1 -0
  730. package/dist/theme/theme-context.d.ts +40 -0
  731. package/dist/theme/theme-context.d.ts.map +1 -0
  732. package/dist/theme/theme-context.js +60 -0
  733. package/dist/theme/theme-context.js.map +1 -0
  734. package/dist/theme/theme-script.d.ts +27 -0
  735. package/dist/theme/theme-script.d.ts.map +1 -0
  736. package/dist/theme/theme-script.js +147 -0
  737. package/dist/theme/theme-script.js.map +1 -0
  738. package/dist/theme/types.d.ts +163 -0
  739. package/dist/theme/types.d.ts.map +1 -0
  740. package/dist/theme/types.js +11 -0
  741. package/dist/theme/types.js.map +1 -0
  742. package/dist/theme/use-theme.d.ts +12 -0
  743. package/dist/theme/use-theme.d.ts.map +1 -0
  744. package/dist/theme/use-theme.js +40 -0
  745. package/dist/theme/use-theme.js.map +1 -0
  746. package/dist/types.d.ts +1479 -0
  747. package/dist/types.d.ts.map +1 -0
  748. package/dist/types.js +10 -0
  749. package/dist/types.js.map +1 -0
  750. package/dist/urls.d.ts +441 -0
  751. package/dist/urls.d.ts.map +1 -0
  752. package/dist/urls.gen.d.ts +8 -0
  753. package/dist/urls.gen.d.ts.map +1 -0
  754. package/dist/urls.gen.js +8 -0
  755. package/dist/urls.gen.js.map +1 -0
  756. package/dist/urls.js +443 -0
  757. package/dist/urls.js.map +1 -0
  758. package/dist/use-loader.d.ts +127 -0
  759. package/dist/use-loader.d.ts.map +1 -0
  760. package/dist/use-loader.js +237 -0
  761. package/dist/use-loader.js.map +1 -0
  762. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  766. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  770. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  774. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  778. package/dist/vite/ast-handler-extract.d.ts +49 -0
  779. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  780. package/dist/vite/ast-handler-extract.js +249 -0
  781. package/dist/vite/ast-handler-extract.js.map +1 -0
  782. package/dist/vite/expose-action-id.d.ts +19 -0
  783. package/dist/vite/expose-action-id.d.ts.map +1 -0
  784. package/dist/vite/expose-action-id.js +250 -0
  785. package/dist/vite/expose-action-id.js.map +1 -0
  786. package/dist/vite/expose-id-utils.d.ts +69 -0
  787. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  788. package/dist/vite/expose-id-utils.js +289 -0
  789. package/dist/vite/expose-id-utils.js.map +1 -0
  790. package/dist/vite/expose-internal-ids.d.ts +22 -0
  791. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  792. package/dist/vite/expose-internal-ids.js +886 -0
  793. package/dist/vite/expose-internal-ids.js.map +1 -0
  794. package/dist/vite/index.d.ts +149 -0
  795. package/dist/vite/index.d.ts.map +1 -0
  796. package/dist/vite/index.js +47 -6
  797. package/dist/vite/index.js.bak +5448 -0
  798. package/dist/vite/index.js.map +1 -0
  799. package/dist/vite/index.named-routes.gen.ts +103 -0
  800. package/dist/vite/package-resolution.d.ts +43 -0
  801. package/dist/vite/package-resolution.d.ts.map +1 -0
  802. package/dist/vite/package-resolution.js +112 -0
  803. package/dist/vite/package-resolution.js.map +1 -0
  804. package/dist/vite/virtual-entries.d.ts +25 -0
  805. package/dist/vite/virtual-entries.d.ts.map +1 -0
  806. package/dist/vite/virtual-entries.js +110 -0
  807. package/dist/vite/virtual-entries.js.map +1 -0
  808. package/package.json +61 -21
  809. package/skills/caching/SKILL.md +2 -1
  810. package/skills/hooks/SKILL.md +38 -27
  811. package/skills/host-router/SKILL.md +16 -2
  812. package/skills/intercept/SKILL.md +4 -2
  813. package/skills/layout/SKILL.md +11 -6
  814. package/skills/loader/SKILL.md +6 -2
  815. package/skills/middleware/SKILL.md +4 -2
  816. package/skills/migrate-nextjs/SKILL.md +3 -1
  817. package/skills/parallel/SKILL.md +9 -4
  818. package/skills/rango/SKILL.md +12 -0
  819. package/skills/route/SKILL.md +4 -2
  820. package/skills/testing/SKILL.md +129 -0
  821. package/skills/testing/bindings.md +89 -0
  822. package/skills/testing/cache-prerender.md +98 -0
  823. package/skills/testing/client-components.md +122 -0
  824. package/skills/testing/e2e-parity.md +125 -0
  825. package/skills/testing/flight.md +89 -0
  826. package/skills/testing/handles.md +129 -0
  827. package/skills/testing/loader.md +128 -0
  828. package/skills/testing/middleware.md +99 -0
  829. package/skills/testing/render-handler.md +118 -0
  830. package/skills/testing/response-routes.md +95 -0
  831. package/skills/testing/reverse-and-types.md +84 -0
  832. package/skills/testing/server-actions.md +107 -0
  833. package/skills/testing/server-tree.md +128 -0
  834. package/skills/testing/setup.md +120 -0
  835. package/src/browser/action-fence.ts +37 -0
  836. package/src/browser/cookie-name.ts +140 -0
  837. package/src/browser/invalidate-client-cache.ts +52 -0
  838. package/src/browser/navigation-bridge.ts +14 -1
  839. package/src/browser/navigation-client.ts +14 -1
  840. package/src/browser/navigation-store-handle.ts +39 -0
  841. package/src/browser/navigation-store.ts +26 -12
  842. package/src/browser/prefetch/fetch.ts +7 -0
  843. package/src/browser/rango-state.ts +176 -97
  844. package/src/browser/react/index.ts +0 -6
  845. package/src/browser/rsc-router.tsx +12 -4
  846. package/src/browser/server-action-bridge.ts +77 -15
  847. package/src/browser/types.ts +7 -1
  848. package/src/cache/cf/cf-cache-store.ts +22 -1
  849. package/src/cache/document-cache.ts +11 -0
  850. package/src/cache/memory-segment-store.ts +6 -0
  851. package/src/client.rsc.tsx +1 -1
  852. package/src/client.tsx +0 -6
  853. package/src/component-utils.ts +19 -0
  854. package/src/handle.ts +29 -9
  855. package/src/host/testing.ts +43 -14
  856. package/src/index.rsc.ts +22 -1
  857. package/src/index.ts +31 -1
  858. package/src/loader.rsc.ts +24 -3
  859. package/src/loader.ts +16 -2
  860. package/src/prerender.ts +24 -3
  861. package/src/router/basename.ts +14 -0
  862. package/src/router/match-handlers.ts +62 -20
  863. package/src/router/prerender-match.ts +4 -0
  864. package/src/router/router-interfaces.ts +7 -0
  865. package/src/router/router-options.ts +30 -0
  866. package/src/router/state-cookie-name.ts +33 -0
  867. package/src/router/telemetry.ts +99 -0
  868. package/src/router.ts +36 -7
  869. package/src/rsc/handler.ts +3 -0
  870. package/src/rsc/helpers.ts +19 -0
  871. package/src/rsc/progressive-enhancement.ts +2 -0
  872. package/src/rsc/rsc-rendering.ts +2 -0
  873. package/src/rsc/types.ts +2 -0
  874. package/src/runtime-env.ts +18 -0
  875. package/src/server/cookie-store.ts +52 -1
  876. package/src/server/request-context.ts +69 -0
  877. package/src/static-handler.ts +25 -3
  878. package/src/testing/cache-status.ts +166 -0
  879. package/src/testing/collect-handle.ts +63 -0
  880. package/src/testing/dispatch.ts +581 -0
  881. package/src/testing/dom.entry.ts +22 -0
  882. package/src/testing/e2e/fixture.ts +188 -0
  883. package/src/testing/e2e/index.ts +149 -0
  884. package/src/testing/e2e/matchers.ts +51 -0
  885. package/src/testing/e2e/page-helpers.ts +272 -0
  886. package/src/testing/e2e/parity.ts +387 -0
  887. package/src/testing/e2e/server.ts +195 -0
  888. package/src/testing/flight-matchers.ts +110 -0
  889. package/src/testing/flight-normalize.ts +38 -0
  890. package/src/testing/flight-runtime.d.ts +57 -0
  891. package/src/testing/flight-tree.ts +682 -0
  892. package/src/testing/flight.entry.ts +52 -0
  893. package/src/testing/flight.ts +234 -0
  894. package/src/testing/generated-routes.ts +223 -0
  895. package/src/testing/index.ts +119 -0
  896. package/src/testing/internal/context.ts +390 -0
  897. package/src/testing/internal/flight-client-globals.ts +30 -0
  898. package/src/testing/internal/seed-vars.ts +80 -0
  899. package/src/testing/render-handler.ts +360 -0
  900. package/src/testing/render-route.tsx +594 -0
  901. package/src/testing/run-loader.ts +474 -0
  902. package/src/testing/run-middleware.ts +231 -0
  903. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  904. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  905. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  906. package/src/testing/vitest-stubs/version.ts +5 -0
  907. package/src/testing/vitest.ts +305 -0
  908. package/src/types/global-namespace.ts +11 -1
  909. package/src/types/handler-context.ts +16 -5
@@ -0,0 +1,390 @@
1
+ /**
2
+ * Shared internals for the consumer testing primitives.
3
+ *
4
+ * Builds a real RequestContext via the same createRequestContext the RSC
5
+ * handler uses, with test-friendly defaults, so loaders and middleware run
6
+ * with production-fidelity context (cookies, headers, get/set, use, reverse)
7
+ * instead of a hand-rolled mock.
8
+ */
9
+
10
+ import {
11
+ createRequestContext,
12
+ runWithRequestContext,
13
+ type RequestContext,
14
+ } from "../../server/request-context.js";
15
+ import { resolveLocationStateEntries } from "../../browser/react/location-state-shared.js";
16
+ import { createReverseFunction } from "../../router/handler-context.js";
17
+ import { normalizeBasename } from "../../router/basename.js";
18
+ import {
19
+ seedVariables,
20
+ resolveSeededStateCookieName,
21
+ type VarsInit,
22
+ type StateCookieSeed,
23
+ } from "./seed-vars.js";
24
+ import type { ThemeConfig } from "../../theme/types.js";
25
+ import { resolveThemeConfig } from "../../theme/constants.js";
26
+ import type { SegmentCacheStore } from "../../cache/types.js";
27
+ import type { CacheProfile } from "../../cache/profile-registry.js";
28
+
29
+ const DEFAULT_ORIGIN = "http://localhost/";
30
+
31
+ // VarsInit + seedVariables live in ./seed-vars.js (react-server-safe) so the
32
+ // Flight tier can seed vars too; re-exported here for existing importers.
33
+ export type { VarsInit, StateCookieSeed };
34
+ export { seedVariables };
35
+
36
+ /** Normalize a Request | string | undefined into a concrete Request. */
37
+ export function toRequest(
38
+ request: Request | string | undefined,
39
+ init?: RequestInit,
40
+ ): Request {
41
+ if (request instanceof Request) return request;
42
+ if (typeof request === "string") {
43
+ return new Request(new URL(request, DEFAULT_ORIGIN), init);
44
+ }
45
+ return new Request(DEFAULT_ORIGIN, init);
46
+ }
47
+
48
+ export interface CreateTestContextOptions<TEnv> {
49
+ env?: TEnv;
50
+ request?: Request | string;
51
+ requestInit?: RequestInit;
52
+ /** Backing store for ctx.get()/ctx.set(); pre-seeded from `vars`. */
53
+ variables?: Record<string, unknown>;
54
+ /** Variables a prior middleware would have set (object or [key, value] list). */
55
+ vars?: VarsInit;
56
+ /** Route name -> pattern map enabling ctx.reverse() without global state. */
57
+ routeMap?: Record<string, string>;
58
+ routeName?: string;
59
+ params?: Record<string, string>;
60
+ /**
61
+ * Router basename for this request (what the RSC handler stores on the
62
+ * context). Drives redirect() prefixing. Normalized exactly like
63
+ * createRouter({ basename }) (leading slash forced, trailing stripped, bare
64
+ * "/" -> undefined) so passing the same value your router takes yields the
65
+ * same redirect Location. Defaults to undefined (no basename).
66
+ */
67
+ basename?: string;
68
+ /**
69
+ * Cache store backing `use cache` functions invoked during the test, the
70
+ * same shape `createRouter({ cache })` resolves. Without it,
71
+ * registerCachedFunction bypasses (it checks for a store FIRST), so a cached
72
+ * function runs uncached and its taint/profile guards never fire. Wire one
73
+ * (e.g. `new MemorySegmentCacheStore()`) to exercise real cache behavior.
74
+ */
75
+ cacheStore?: SegmentCacheStore;
76
+ /**
77
+ * Cache profiles in the `createRouter({ cacheProfiles })` shape. Required for
78
+ * a `use cache: "profileName"` function to resolve its profile (an unknown
79
+ * profile throws), once a `cacheStore` is wired.
80
+ */
81
+ cacheProfiles?: Record<string, CacheProfile>;
82
+ /**
83
+ * Theme config in the same shape `createRouter({ theme })` takes (resolved
84
+ * internally). Without it `ctx.theme`/`ctx.setTheme` are inert (undefined),
85
+ * mirroring an app with no theme configured. Pass one (e.g. `true`, or
86
+ * `{ themes: [...] }`) to exercise a handler that reads them.
87
+ */
88
+ theme?: ThemeConfig | true;
89
+ /**
90
+ * Customize the rango state cookie that `invalidateClientCache()` rotates.
91
+ * The name is ALWAYS seeded (default `rango-state_router_0`) so a call to
92
+ * `invalidateClientCache()` rotates and emits the `Set-Cookie` exactly as in
93
+ * production, rather than silently no-opping. Override `prefix`/`routerId` to
94
+ * match your `createRouter({ stateCookiePrefix, id })` so the test asserts the
95
+ * same name, or `version` (the build identifier prefixed to the rotated
96
+ * `{version}:{timestamp}` value, default `"0"`). Assert
97
+ * `response.headers.getSetCookie()` against the resolved `stateCookieName`
98
+ * (returned by `runInRequestContext`).
99
+ */
100
+ stateCookie?: StateCookieSeed;
101
+ }
102
+
103
+ /**
104
+ * The seeded RequestContext with its `reverse` RELAXED to accept any route NAME
105
+ * from the `routeMap` you passed, rather than the global `Rango.GeneratedRouteMap`
106
+ * union — so reversing a test-only route name is not a type error (it works at
107
+ * runtime; the names come from your `routeMap`). Mirrors runLoader's
108
+ * `TestLoaderContext.reverse`. Everything else is the real `RequestContext`.
109
+ */
110
+ export type TestRequestContextObject<TEnv> = Omit<
111
+ RequestContext<TEnv>,
112
+ "reverse"
113
+ > & {
114
+ reverse: (
115
+ name: string,
116
+ params?: Record<string, string>,
117
+ search?: Record<string, unknown>,
118
+ ) => string;
119
+ };
120
+
121
+ export interface TestRequestContext<TEnv> {
122
+ ctx: TestRequestContextObject<TEnv>;
123
+ request: Request;
124
+ url: URL;
125
+ variables: Record<string, unknown>;
126
+ /**
127
+ * The resolved rango state cookie name seeded into the context (default
128
+ * `rango-state_router_0`, or composed from `opts.stateCookie`). The name a
129
+ * call to `invalidateClientCache()` rotates.
130
+ */
131
+ stateCookieName: string;
132
+ }
133
+
134
+ /**
135
+ * Create a real RequestContext for unit-testing loaders/middleware.
136
+ *
137
+ * The returned `ctx` must be ENTERED before use — wrap your call in
138
+ * `runWithRequestContext(ctx, fn)` (re-exported from `@rangojs/router/testing`)
139
+ * so that cookie/header mutations and `getRequestContext()` resolve. For the
140
+ * common case prefer {@link runInRequestContext}, which builds AND enters the
141
+ * context in a single call.
142
+ */
143
+ export function createTestRequestContext<TEnv>(
144
+ opts: CreateTestContextOptions<TEnv> = {},
145
+ ): TestRequestContext<TEnv> {
146
+ const request = toRequest(opts.request, opts.requestInit);
147
+ const url = new URL(request.url);
148
+ const variables = seedVariables(opts.variables ?? {}, opts.vars);
149
+ // Always seed a resolved name so invalidateClientCache() rotates (and emits
150
+ // the Set-Cookie) like production instead of no-opping; opts.stateCookie
151
+ // customizes the name/version. Surfaced on the result so a consumer asserts
152
+ // the rotation against the same name without recomputing it.
153
+ const stateCookieName = resolveSeededStateCookieName(opts.stateCookie);
154
+ const ctx = createRequestContext<TEnv>({
155
+ env: (opts.env ?? {}) as TEnv,
156
+ request,
157
+ url,
158
+ variables,
159
+ themeConfig:
160
+ opts.theme === undefined ? undefined : resolveThemeConfig(opts.theme),
161
+ cacheStore: opts.cacheStore,
162
+ cacheProfiles: opts.cacheProfiles,
163
+ stateCookieName,
164
+ version: opts.stateCookie?.version,
165
+ });
166
+ if (opts.basename !== undefined)
167
+ ctx._basename = normalizeBasename(opts.basename);
168
+ if (opts.params) ctx.params = opts.params;
169
+ if (opts.routeMap) {
170
+ ctx._routeName = opts.routeName;
171
+ ctx.reverse = createReverseFunction(
172
+ opts.routeMap,
173
+ opts.routeName,
174
+ opts.params ?? {},
175
+ ) as RequestContext<TEnv>["reverse"];
176
+ }
177
+ // ctx.reverse is assigned the routeMap-scoped reverse (string-accepting) above;
178
+ // expose it through the relaxed type so a test reverses a local route name
179
+ // without casting. The runtime value matches; RequestContext's reverse is
180
+ // declared against the narrower global route-name union, hence the cast.
181
+ return {
182
+ ctx: ctx as unknown as TestRequestContextObject<TEnv>,
183
+ request,
184
+ url,
185
+ variables,
186
+ stateCookieName,
187
+ };
188
+ }
189
+
190
+ /**
191
+ * What a run accumulated on the request context, surfaced as PUBLIC values so a
192
+ * test never has to cast through the `@internal` `ctx.res` / `ctx.cookies()` to
193
+ * assert what an action produced.
194
+ */
195
+ export interface RunInRequestContextResult<T> {
196
+ /**
197
+ * The value `fn` returned (awaited), or `undefined` if `fn` threw — in which
198
+ * case the thrown value is on {@link thrown}. The snapshot below is captured
199
+ * either way.
200
+ */
201
+ result: T | undefined;
202
+ /**
203
+ * The value `fn` threw, or `undefined` if it returned normally. Commonly a
204
+ * `Response` from `throw redirect(...)` / `throw notFound()` — the dominant
205
+ * cookie+flash case is an action that sets them then throws a redirect — so
206
+ * this (and the snapshot below) is observable WITHOUT wrapping the action in
207
+ * your own try/catch. NOTE: the value is captured, NOT re-thrown; assert on it
208
+ * for a throwing action.
209
+ */
210
+ thrown: unknown;
211
+ /**
212
+ * A Response carrying the status, headers, and Set-Cookie the run set (via
213
+ * `cookies().set()`, `ctx.header()`, etc.). Assert Set-Cookie with
214
+ * `response.headers.getSetCookie()`. When `fn` threw a `Response` (a redirect),
215
+ * THIS is that Response with the accumulated Set-Cookie/headers merged in
216
+ * (mirroring how the framework merges them in production), so a redirect's
217
+ * Location AND the cookies it set are both observable here.
218
+ */
219
+ response: Response;
220
+ /**
221
+ * The effective cookie view after the run: request cookies merged with
222
+ * anything the run set or deleted (last-write-wins), as `{ name: value }`.
223
+ */
224
+ cookies: Record<string, string>;
225
+ /**
226
+ * The response headers the run set (via `ctx.header(...)`, plus a thrown
227
+ * redirect's `Location`), as a plain `{ name: value }` object — the same view
228
+ * as `response.headers`, but assertable like `cookies`/`locationState`.
229
+ * EXCLUDES `set-cookie` (use `cookies`, or `response.headers.getSetCookie()`).
230
+ * Header names are lowercased (HTTP headers are case-insensitive).
231
+ */
232
+ headers: Record<string, string>;
233
+ /**
234
+ * Location state the run set via `ctx.setLocationState()` / `redirect({ state })`,
235
+ * resolved to the flat `{ key: value }` shape the client reads off
236
+ * `history.state` (empty object when none) — so a post-action flash ("Saved!")
237
+ * is assertable at the unit layer.
238
+ */
239
+ locationState: Record<string, unknown>;
240
+ /**
241
+ * The resolved rango state cookie name seeded into the run (default
242
+ * `rango-state_router_0`, or composed from `opts.stateCookie`). Assert an
243
+ * action's `invalidateClientCache()` rotation against it without recomputing:
244
+ * `response.headers.getSetCookie().some((c) => c.startsWith(stateCookieName + "="))`.
245
+ */
246
+ stateCookieName: string;
247
+ }
248
+
249
+ /**
250
+ * Snapshot the observable effects a run left on `ctx` (cookies + location
251
+ * state). Reads the fields directly off the ctx object, so it works both inside
252
+ * and outside the AsyncLocalStorage scope (no `getRequestContext()`). Headers are
253
+ * snapshotted separately from the final {@link Response} (via
254
+ * {@link headersToObject}) so a thrown redirect's `Location` is included.
255
+ */
256
+ export function snapshotRunEffects<TEnv>(ctx: RequestContext<TEnv>): {
257
+ cookies: Record<string, string>;
258
+ locationState: Record<string, unknown>;
259
+ } {
260
+ return {
261
+ cookies: { ...ctx.cookies() },
262
+ locationState: resolveLocationStateEntries(ctx._locationState ?? []),
263
+ };
264
+ }
265
+
266
+ /**
267
+ * The response headers as a plain `{ name: value }` object, EXCLUDING
268
+ * `set-cookie` (surfaced parsed on `cookies`). Names are lowercased (HTTP header
269
+ * names are case-insensitive). Read from the final response so a thrown
270
+ * redirect's `Location` and any `ctx.header(...)` both appear.
271
+ */
272
+ export function headersToObject(headers: Headers): Record<string, string> {
273
+ const out: Record<string, string> = {};
274
+ headers.forEach((value, name) => {
275
+ if (name.toLowerCase() === "set-cookie") return;
276
+ out[name] = value;
277
+ });
278
+ return out;
279
+ }
280
+
281
+ /**
282
+ * Build the observable response from what the run accumulated on `ctx.res`. When
283
+ * `fn` threw a `Response` (a `redirect()`/`notFound()`), that Response IS the
284
+ * response — merge the accumulated Set-Cookie/other headers into it (the
285
+ * framework does this when it catches the thrown Response in production), with
286
+ * its status/Location preserved. Otherwise snapshot the stub (status + headers).
287
+ * The `Response`/`Headers` constructors copy, so the result is immutable.
288
+ */
289
+ export function buildRunResponse<TEnv>(
290
+ ctx: RequestContext<TEnv>,
291
+ thrown: unknown,
292
+ ): Response {
293
+ const stub = ctx.res;
294
+ if (thrown instanceof Response) {
295
+ const headers = new Headers(thrown.headers);
296
+ for (const cookie of stub.headers.getSetCookie()) {
297
+ headers.append("set-cookie", cookie);
298
+ }
299
+ stub.headers.forEach((value, name) => {
300
+ if (name.toLowerCase() === "set-cookie") return;
301
+ if (!headers.has(name)) headers.set(name, value);
302
+ });
303
+ return new Response(null, { status: thrown.status, headers });
304
+ }
305
+ return new Response(null, { status: stub.status, headers: stub.headers });
306
+ }
307
+
308
+ /**
309
+ * Snapshot the shared run-result envelope fields (everything except the primary
310
+ * value) from what a run left on `ctx`: the captured `thrown`, the merged
311
+ * `response`, the effective `cookies`/`headers` views, the `locationState`, and
312
+ * the resolved `stateCookieName`. Shared by `runInRequestContext` and
313
+ * `runLoaderResult` so the snapshot sequence lives once; each spreads it next to
314
+ * its own primary field (`result` / `data`).
315
+ */
316
+ export function buildRunSnapshot<TEnv>(
317
+ ctx: RequestContext<TEnv>,
318
+ thrown: unknown,
319
+ stateCookieName: string,
320
+ ): {
321
+ thrown: unknown;
322
+ response: Response;
323
+ cookies: Record<string, string>;
324
+ headers: Record<string, string>;
325
+ locationState: Record<string, unknown>;
326
+ stateCookieName: string;
327
+ } {
328
+ const { cookies, locationState } = snapshotRunEffects(ctx);
329
+ const response = buildRunResponse(ctx, thrown);
330
+ const headers = headersToObject(response.headers);
331
+ return { thrown, response, cookies, headers, locationState, stateCookieName };
332
+ }
333
+
334
+ /**
335
+ * Build a seeded RequestContext (via {@link createTestRequestContext}) and run
336
+ * `fn` inside it, so code under test that calls `getRequestContext()`,
337
+ * `cookies()`, or reads/mutates request headers resolves exactly as in
338
+ * production.
339
+ *
340
+ * This is the entry point for the advanced cases the unit wrappers
341
+ * (`runLoader` / `runMiddleware`) do not model — most notably a server ACTION
342
+ * that authenticates off the request cookie or sets a session cookie / flash:
343
+ * an action has no loader context, so `runLoader` is the wrong shape, yet it
344
+ * still needs a real request context to read the cookie and resolve
345
+ * `getRequestContext()`.
346
+ *
347
+ * Returns `{ result, thrown, response, cookies, headers, locationState }` so the
348
+ * action's OUTPUT (Set-Cookie, response headers, flash) is assertable without
349
+ * casting through the `@internal` `ctx.res` / `ctx.cookies()`. `fn` may be async — the context stays
350
+ * active across its awaits (AsyncLocalStorage), and the snapshot is captured
351
+ * whether `fn` returns OR throws. The throw path matters: the most common
352
+ * cookie+flash case is an auth action that sets a cookie + flash then
353
+ * `throw redirect(...)` on success — the thrown redirect is on `thrown` (NOT
354
+ * re-thrown) and its Location plus the cookies are on `response`/`cookies`.
355
+ *
356
+ * @example
357
+ * ```ts
358
+ * const { result, cookies, response, thrown } = await runInRequestContext(
359
+ * () => loginAction(input), // sets a session cookie, then `throw redirect("/app")`
360
+ * {
361
+ * env,
362
+ * request: new Request("https://app.test/", {
363
+ * headers: { Cookie: "sid=abc" },
364
+ * }),
365
+ * },
366
+ * );
367
+ * expect(cookies.session).toBe("new-token");
368
+ * expect(headers.location).toBe("/app"); // response headers as a plain object
369
+ * expect((thrown as Response).headers.get("Location")).toBe("/app");
370
+ * expect(response.headers.getSetCookie()).toContainEqual(
371
+ * expect.stringContaining("session="),
372
+ * );
373
+ * ```
374
+ */
375
+ export async function runInRequestContext<T, TEnv = unknown>(
376
+ fn: (ctx: RequestContext<TEnv>) => T | Promise<T>,
377
+ opts: CreateTestContextOptions<TEnv> = {},
378
+ ): Promise<RunInRequestContextResult<T>> {
379
+ const { ctx, stateCookieName } = createTestRequestContext<TEnv>(opts);
380
+ let result: T | undefined;
381
+ let thrown: unknown;
382
+ try {
383
+ result = (await runWithRequestContext(ctx, () => fn(ctx))) as T;
384
+ } catch (error) {
385
+ // Capture (do NOT re-throw): a redirect/notFound action throws its Response
386
+ // on the SUCCESS path, and its cookie/flash output must stay observable.
387
+ thrown = error;
388
+ }
389
+ return { result, ...buildRunSnapshot(ctx, thrown, stateCookieName) };
390
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Side-effect module: define the webpack-style globals the vendored
3
+ * react-server-dom CLIENT deserializer reads at module-eval time.
4
+ *
5
+ * In a real app the plugin-rsc Vite plugin rewrites `__webpack_require__` ->
6
+ * `__vite_rsc_require__` and `__webpack_require__.u` -> `({}).u`
7
+ * (@vitejs/plugin-rsc `core/plugin.js`). That transform does NOT run in a bare
8
+ * Vitest process, so the vendored client's free `__webpack_require__` /
9
+ * `__webpack_chunk_load__` references would be undefined. We provide minimal
10
+ * shims: `__webpack_require__` routes to the loader installed via
11
+ * `setRequireModule`, and `__webpack_chunk_load__` is a no-op (renderServerTree
12
+ * serializes with empty `chunks`, so no chunk fetch ever happens).
13
+ *
14
+ * MUST be imported (for side effect) BEFORE `@vitejs/plugin-rsc/react/browser`,
15
+ * which is why flight-tree.ts lists it first.
16
+ */
17
+ const g = globalThis as unknown as {
18
+ __webpack_require__?: ((id: string) => unknown) & { u?: unknown };
19
+ __webpack_chunk_load__?: (chunkId: string) => Promise<unknown>;
20
+ __vite_rsc_client_require__?: (id: string) => unknown;
21
+ };
22
+
23
+ if (!g.__webpack_require__) {
24
+ g.__webpack_require__ = (id: string) => g.__vite_rsc_client_require__!(id);
25
+ }
26
+ if (!g.__webpack_chunk_load__) {
27
+ g.__webpack_chunk_load__ = async () => {};
28
+ }
29
+
30
+ export {};
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Variable seeding shared by the node/DOM testing tier (internal/context.ts)
3
+ * AND the react-server Flight tier (flight.ts). Depends only on the
4
+ * dependency-free `context-var` module and the env-agnostic state-cookie-name
5
+ * composition (no window/document), so it is safe to import under the
6
+ * `react-server` condition (unlike internal/context.ts, which pulls
7
+ * client/browser modules).
8
+ */
9
+ import { contextSet, type ContextVar } from "../../context-var.js";
10
+ import { resolveStateCookieName } from "../../router/state-cookie-name.js";
11
+
12
+ /**
13
+ * Seed for the rango state cookie a handler/action/loader rotates when it calls
14
+ * `invalidateClientCache()`. Production always resolves a name at router init
15
+ * (so rotation always fires); the test stub did not, so the call silently
16
+ * no-opped. Supplying this (or accepting the defaults) closes that gap. Lives in
17
+ * the react-server-safe seed module so both the node tier (createTestRequestContext)
18
+ * and the Flight tier (renderHandler) share one shape and one default.
19
+ */
20
+ export interface StateCookieSeed {
21
+ /**
22
+ * Cookie-name prefix, sanitized then composed with `routerId` exactly like
23
+ * `createRouter({ stateCookiePrefix })`. Defaults to `"rango-state"`.
24
+ */
25
+ prefix?: string;
26
+ /**
27
+ * Router id; the resolved name is `{sanitizedPrefix}_{sanitizedRouterId}`.
28
+ * Defaults to `"router_0"` (the name a single default router resolves to), so
29
+ * the default name is `rango-state_router_0`.
30
+ */
31
+ routerId?: string;
32
+ /**
33
+ * Build version used as the rotated value's prefix (`{version}:{timestamp}`).
34
+ * Defaults to `"0"` (resolved inside createRequestContext).
35
+ */
36
+ version?: string;
37
+ }
38
+
39
+ /**
40
+ * Resolve the state cookie name a seed maps to, mirroring `createRouter`'s
41
+ * `resolveStateCookieName` so a test asserts the SAME name production writes.
42
+ * The default routerId `"router_0"` matches a single default router.
43
+ */
44
+ export function resolveSeededStateCookieName(seed?: StateCookieSeed): string {
45
+ return resolveStateCookieName(seed?.prefix, seed?.routerId ?? "router_0");
46
+ }
47
+
48
+ /**
49
+ * Initializer for seeded context variables (as a prior middleware would have
50
+ * set, or a server component would read during render). Either a plain object
51
+ * keyed by var name (the common, best-inferring form: `{ user: u }`) or a list
52
+ * of `[key, value]` tuples where the key may be a `createVar()` handle or a
53
+ * string (`[[userVar, u], ["flag", true]]`).
54
+ */
55
+ export type VarsInit =
56
+ | Record<string, unknown>
57
+ | ReadonlyArray<readonly [ContextVar<unknown> | string, unknown]>;
58
+
59
+ /**
60
+ * Preload variables as if set by upstream middleware (or visible to a rendered
61
+ * server tree). Accepts entries keyed by either a ContextVar (from createVar) or
62
+ * a string, matching ctx.set().
63
+ */
64
+ export function seedVariables(
65
+ variables: Record<string, unknown>,
66
+ vars?: VarsInit,
67
+ ): Record<string, unknown> {
68
+ if (!vars) return variables;
69
+ // Array/iterable form -> use the tuples as-is; plain object -> its entries.
70
+ const entries: Iterable<readonly [ContextVar<unknown> | string, unknown]> =
71
+ Symbol.iterator in (vars as object)
72
+ ? (vars as ReadonlyArray<
73
+ readonly [ContextVar<unknown> | string, unknown]
74
+ >)
75
+ : Object.entries(vars as Record<string, unknown>);
76
+ for (const [key, value] of entries) {
77
+ contextSet(variables, key as ContextVar<unknown>, value);
78
+ }
79
+ return variables;
80
+ }