@rangojs/router 0.0.0-experimental.2 → 0.0.0-experimental.20dbba0c

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 (1145) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +972 -4
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/{src/__mocks__/version.ts → dist/__mocks__/version.js} +1 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +1689 -0
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/dist/browser/react/use-client-cache.js +39 -0
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/dist/handles/index.d.ts +6 -0
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/{src/href-context.ts → dist/href-context.d.ts} +7 -11
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/dist/network-error-thrower.d.ts +17 -0
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/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 +5320 -834
  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/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +18 -17
  809. package/dist/vite/virtual-entries.js.map +1 -0
  810. package/package.json +92 -55
  811. package/skills/breadcrumbs/SKILL.md +252 -0
  812. package/skills/cache-guide/SKILL.md +294 -0
  813. package/skills/caching/SKILL.md +173 -231
  814. package/skills/composability/SKILL.md +172 -0
  815. package/skills/debug-manifest/SKILL.md +112 -0
  816. package/skills/document-cache/SKILL.md +88 -58
  817. package/skills/fonts/SKILL.md +167 -0
  818. package/skills/handler-use/SKILL.md +362 -0
  819. package/skills/hooks/SKILL.md +420 -67
  820. package/skills/host-router/SKILL.md +218 -0
  821. package/skills/intercept/SKILL.md +243 -202
  822. package/skills/layout/SKILL.md +262 -146
  823. package/skills/links/SKILL.md +313 -0
  824. package/skills/loader/SKILL.md +525 -251
  825. package/skills/middleware/SKILL.md +248 -320
  826. package/skills/migrate-nextjs/SKILL.md +560 -0
  827. package/skills/migrate-react-router/SKILL.md +765 -0
  828. package/skills/mime-routes/SKILL.md +128 -0
  829. package/skills/parallel/SKILL.md +393 -158
  830. package/skills/prerender/SKILL.md +685 -0
  831. package/skills/rango/SKILL.md +120 -0
  832. package/skills/response-routes/SKILL.md +419 -0
  833. package/skills/route/SKILL.md +388 -89
  834. package/skills/router-setup/SKILL.md +388 -267
  835. package/skills/streams-and-websockets/SKILL.md +283 -0
  836. package/skills/tailwind/SKILL.md +129 -0
  837. package/skills/theme/SKILL.md +36 -11
  838. package/skills/typesafety/SKILL.md +456 -173
  839. package/skills/use-cache/SKILL.md +324 -0
  840. package/src/__internal.ts +273 -0
  841. package/src/bin/rango.ts +321 -0
  842. package/src/browser/action-coordinator.ts +97 -0
  843. package/src/browser/action-response-classifier.ts +99 -0
  844. package/src/browser/app-shell.ts +52 -0
  845. package/src/browser/app-version.ts +14 -0
  846. package/src/browser/event-controller.ts +92 -64
  847. package/src/browser/history-state.ts +80 -0
  848. package/src/browser/intercept-utils.ts +52 -0
  849. package/src/browser/link-interceptor.ts +24 -4
  850. package/src/browser/logging.ts +55 -0
  851. package/src/browser/merge-segment-loaders.ts +20 -12
  852. package/src/browser/navigation-bridge.ts +383 -557
  853. package/src/browser/navigation-client.ts +229 -68
  854. package/src/browser/navigation-store.ts +97 -55
  855. package/src/browser/navigation-transaction.ts +297 -0
  856. package/src/browser/network-error-handler.ts +61 -0
  857. package/src/browser/partial-update.ts +391 -304
  858. package/src/browser/prefetch/cache.ts +314 -0
  859. package/src/browser/prefetch/fetch.ts +282 -0
  860. package/src/browser/prefetch/observer.ts +65 -0
  861. package/src/browser/prefetch/policy.ts +48 -0
  862. package/src/browser/prefetch/queue.ts +191 -0
  863. package/src/browser/prefetch/resource-ready.ts +77 -0
  864. package/src/browser/rango-state.ts +152 -0
  865. package/src/browser/react/Link.tsx +258 -74
  866. package/src/browser/react/NavigationProvider.tsx +219 -33
  867. package/src/browser/react/context.ts +11 -0
  868. package/src/browser/react/filter-segment-order.ts +11 -0
  869. package/src/browser/react/index.ts +12 -12
  870. package/src/browser/react/location-state-shared.ts +95 -53
  871. package/src/browser/react/location-state.ts +60 -15
  872. package/src/browser/react/mount-context.ts +37 -0
  873. package/src/browser/react/nonce-context.ts +23 -0
  874. package/src/browser/react/shallow-equal.ts +27 -0
  875. package/src/browser/react/use-action.ts +29 -51
  876. package/src/browser/react/use-client-cache.ts +5 -3
  877. package/src/browser/react/use-handle.ts +30 -95
  878. package/src/browser/react/use-href.tsx +20 -188
  879. package/src/browser/react/use-link-status.ts +6 -5
  880. package/src/browser/react/use-mount.ts +31 -0
  881. package/src/browser/react/use-navigation.ts +49 -80
  882. package/src/browser/react/use-params.ts +75 -0
  883. package/src/browser/react/use-pathname.ts +47 -0
  884. package/src/browser/react/use-router.ts +83 -0
  885. package/src/browser/react/use-search-params.ts +56 -0
  886. package/src/browser/react/use-segments.ts +80 -97
  887. package/src/browser/response-adapter.ts +73 -0
  888. package/src/browser/rsc-router.tsx +251 -70
  889. package/src/browser/scroll-restoration.ts +127 -52
  890. package/src/browser/segment-reconciler.ts +243 -0
  891. package/src/browser/segment-structure-assert.ts +83 -0
  892. package/src/browser/server-action-bridge.ts +510 -588
  893. package/src/browser/shallow.ts +6 -1
  894. package/src/browser/types.ts +176 -58
  895. package/src/browser/validate-redirect-origin.ts +29 -0
  896. package/src/build/generate-manifest.ts +438 -0
  897. package/src/build/generate-route-types.ts +39 -0
  898. package/src/build/index.ts +35 -0
  899. package/src/build/route-trie.ts +291 -0
  900. package/src/build/route-types/ast-helpers.ts +25 -0
  901. package/src/build/route-types/ast-route-extraction.ts +98 -0
  902. package/src/build/route-types/codegen.ts +102 -0
  903. package/src/build/route-types/include-resolution.ts +418 -0
  904. package/src/build/route-types/param-extraction.ts +48 -0
  905. package/src/build/route-types/per-module-writer.ts +128 -0
  906. package/src/build/route-types/router-processing.ts +618 -0
  907. package/src/build/route-types/scan-filter.ts +85 -0
  908. package/src/build/runtime-discovery.ts +231 -0
  909. package/src/cache/background-task.ts +34 -0
  910. package/src/cache/cache-key-utils.ts +44 -0
  911. package/src/cache/cache-policy.ts +125 -0
  912. package/src/cache/cache-runtime.ts +342 -0
  913. package/src/cache/cache-scope.ts +167 -309
  914. package/src/cache/cf/cf-cache-store.ts +573 -21
  915. package/src/cache/cf/index.ts +13 -3
  916. package/src/cache/document-cache.ts +116 -77
  917. package/src/cache/handle-capture.ts +81 -0
  918. package/src/cache/handle-snapshot.ts +41 -0
  919. package/src/cache/index.ts +1 -15
  920. package/src/cache/memory-segment-store.ts +191 -13
  921. package/src/cache/profile-registry.ts +73 -0
  922. package/src/cache/read-through-swr.ts +134 -0
  923. package/src/cache/segment-codec.ts +256 -0
  924. package/src/cache/taint.ts +153 -0
  925. package/src/cache/types.ts +76 -121
  926. package/src/client.rsc.tsx +12 -15
  927. package/src/client.tsx +142 -308
  928. package/src/component-utils.ts +4 -4
  929. package/src/components/DefaultDocument.tsx +6 -2
  930. package/src/context-var.ts +156 -0
  931. package/src/debug.ts +243 -0
  932. package/src/errors.ts +108 -2
  933. package/src/handle.ts +74 -19
  934. package/src/handles/MetaTags.tsx +76 -23
  935. package/src/handles/breadcrumbs.ts +66 -0
  936. package/src/handles/index.ts +1 -0
  937. package/src/handles/meta.ts +32 -15
  938. package/src/host/cookie-handler.ts +165 -0
  939. package/src/host/errors.ts +97 -0
  940. package/src/host/index.ts +53 -0
  941. package/src/host/pattern-matcher.ts +214 -0
  942. package/src/host/router.ts +352 -0
  943. package/src/host/testing.ts +79 -0
  944. package/src/host/types.ts +146 -0
  945. package/src/host/utils.ts +25 -0
  946. package/src/href-client.ts +141 -47
  947. package/src/index.rsc.ts +187 -28
  948. package/src/index.ts +271 -38
  949. package/src/internal-debug.ts +11 -0
  950. package/src/loader.rsc.ts +27 -142
  951. package/src/loader.ts +27 -10
  952. package/src/network-error-thrower.tsx +3 -1
  953. package/src/outlet-context.ts +1 -1
  954. package/src/outlet-provider.tsx +45 -0
  955. package/src/prerender/param-hash.ts +37 -0
  956. package/src/prerender/store.ts +186 -0
  957. package/src/prerender.ts +524 -0
  958. package/src/response-utils.ts +28 -0
  959. package/src/reverse.ts +355 -0
  960. package/src/root-error-boundary.tsx +41 -29
  961. package/src/route-content-wrapper.tsx +9 -11
  962. package/src/route-definition/dsl-helpers.ts +1134 -0
  963. package/src/route-definition/helper-factories.ts +200 -0
  964. package/src/route-definition/helpers-types.ts +478 -0
  965. package/src/route-definition/index.ts +55 -0
  966. package/src/route-definition/redirect.ts +101 -0
  967. package/src/route-definition/resolve-handler-use.ts +155 -0
  968. package/src/route-definition.ts +1 -1371
  969. package/src/route-map-builder.ts +247 -112
  970. package/src/route-name.ts +53 -0
  971. package/src/route-types.ts +88 -9
  972. package/src/router/content-negotiation.ts +215 -0
  973. package/src/router/debug-manifest.ts +72 -0
  974. package/src/router/error-handling.ts +9 -9
  975. package/src/router/find-match.ts +160 -0
  976. package/src/router/handler-context.ts +457 -88
  977. package/src/router/intercept-resolution.ts +402 -0
  978. package/src/router/lazy-includes.ts +237 -0
  979. package/src/router/loader-resolution.ts +360 -128
  980. package/src/router/logging.ts +251 -0
  981. package/src/router/manifest.ts +187 -43
  982. package/src/router/match-api.ts +555 -0
  983. package/src/router/match-context.ts +6 -4
  984. package/src/router/match-handlers.ts +440 -0
  985. package/src/router/match-middleware/background-revalidation.ts +108 -93
  986. package/src/router/match-middleware/cache-lookup.ts +460 -10
  987. package/src/router/match-middleware/cache-store.ts +98 -26
  988. package/src/router/match-middleware/intercept-resolution.ts +57 -17
  989. package/src/router/match-middleware/segment-resolution.ts +80 -6
  990. package/src/router/match-pipelines.ts +10 -45
  991. package/src/router/match-result.ts +135 -36
  992. package/src/router/metrics.ts +240 -15
  993. package/src/router/middleware-cookies.ts +55 -0
  994. package/src/router/middleware-types.ts +200 -0
  995. package/src/router/middleware.ts +359 -333
  996. package/src/router/navigation-snapshot.ts +182 -0
  997. package/src/router/pattern-matching.ts +375 -33
  998. package/src/router/prerender-match.ts +502 -0
  999. package/src/router/preview-match.ts +98 -0
  1000. package/src/router/request-classification.ts +310 -0
  1001. package/src/router/revalidation.ts +137 -38
  1002. package/src/router/route-snapshot.ts +245 -0
  1003. package/src/router/router-context.ts +45 -23
  1004. package/src/router/router-interfaces.ts +484 -0
  1005. package/src/router/router-options.ts +618 -0
  1006. package/src/router/router-registry.ts +24 -0
  1007. package/src/router/segment-resolution/fresh.ts +748 -0
  1008. package/src/router/segment-resolution/helpers.ts +268 -0
  1009. package/src/router/segment-resolution/loader-cache.ts +199 -0
  1010. package/src/router/segment-resolution/revalidation.ts +1379 -0
  1011. package/src/router/segment-resolution/static-store.ts +67 -0
  1012. package/src/router/segment-resolution.ts +21 -0
  1013. package/src/router/segment-wrappers.ts +291 -0
  1014. package/src/router/telemetry-otel.ts +299 -0
  1015. package/src/router/telemetry.ts +300 -0
  1016. package/src/router/timeout.ts +148 -0
  1017. package/src/router/trie-matching.ts +245 -0
  1018. package/src/router/types.ts +79 -4
  1019. package/src/router/url-params.ts +49 -0
  1020. package/src/router.ts +750 -3572
  1021. package/src/rsc/handler-context.ts +45 -0
  1022. package/src/rsc/handler.ts +934 -801
  1023. package/src/rsc/helpers.ts +181 -19
  1024. package/src/rsc/index.ts +5 -25
  1025. package/src/rsc/loader-fetch.ts +229 -0
  1026. package/src/rsc/manifest-init.ts +90 -0
  1027. package/src/rsc/nonce.ts +14 -0
  1028. package/src/rsc/origin-guard.ts +141 -0
  1029. package/src/rsc/progressive-enhancement.ts +393 -0
  1030. package/src/rsc/response-error.ts +37 -0
  1031. package/src/rsc/response-route-handler.ts +360 -0
  1032. package/src/rsc/rsc-rendering.ts +253 -0
  1033. package/src/rsc/runtime-warnings.ts +42 -0
  1034. package/src/rsc/server-action.ts +358 -0
  1035. package/src/rsc/ssr-setup.ts +128 -0
  1036. package/src/rsc/types.ts +48 -14
  1037. package/src/search-params.ts +230 -0
  1038. package/src/segment-content-promise.ts +67 -0
  1039. package/src/segment-loader-promise.ts +122 -0
  1040. package/src/segment-system.tsx +165 -81
  1041. package/src/server/context.ts +384 -61
  1042. package/src/server/cookie-store.ts +190 -0
  1043. package/src/server/fetchable-loader-store.ts +37 -0
  1044. package/src/server/handle-store.ts +117 -20
  1045. package/src/server/loader-registry.ts +24 -64
  1046. package/src/server/request-context.ts +603 -109
  1047. package/src/server.ts +36 -131
  1048. package/src/ssr/index.tsx +160 -25
  1049. package/src/static-handler.ts +126 -0
  1050. package/src/theme/ThemeProvider.tsx +21 -15
  1051. package/src/theme/ThemeScript.tsx +5 -5
  1052. package/src/theme/constants.ts +11 -4
  1053. package/src/theme/index.ts +4 -14
  1054. package/src/theme/theme-context.ts +5 -31
  1055. package/src/theme/theme-script.ts +21 -18
  1056. package/src/theme/types.ts +1 -1
  1057. package/src/types/boundaries.ts +158 -0
  1058. package/src/types/cache-types.ts +198 -0
  1059. package/src/types/error-types.ts +192 -0
  1060. package/src/types/global-namespace.ts +100 -0
  1061. package/src/types/handler-context.ts +759 -0
  1062. package/src/types/index.ts +88 -0
  1063. package/src/types/loader-types.ts +209 -0
  1064. package/src/types/request-scope.ts +126 -0
  1065. package/src/types/route-config.ts +170 -0
  1066. package/src/types/route-entry.ts +120 -0
  1067. package/src/types/segments.ts +150 -0
  1068. package/src/types.ts +1 -1561
  1069. package/src/urls/include-helper.ts +207 -0
  1070. package/src/urls/index.ts +53 -0
  1071. package/src/urls/path-helper-types.ts +372 -0
  1072. package/src/urls/path-helper.ts +364 -0
  1073. package/src/urls/pattern-types.ts +107 -0
  1074. package/src/urls/response-types.ts +108 -0
  1075. package/src/urls/type-extraction.ts +372 -0
  1076. package/src/urls/urls-function.ts +98 -0
  1077. package/src/urls.ts +1 -726
  1078. package/src/use-loader.tsx +161 -81
  1079. package/src/vite/discovery/bundle-postprocess.ts +181 -0
  1080. package/src/vite/discovery/discover-routers.ts +348 -0
  1081. package/src/vite/discovery/prerender-collection.ts +439 -0
  1082. package/src/vite/discovery/route-types-writer.ts +258 -0
  1083. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1084. package/src/vite/discovery/state.ts +117 -0
  1085. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1086. package/src/vite/index.ts +18 -785
  1087. package/src/vite/plugin-types.ts +103 -0
  1088. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1089. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1090. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1091. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1092. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1093. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  1094. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -53
  1095. package/src/vite/plugins/expose-id-utils.ts +299 -0
  1096. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1097. package/src/vite/plugins/expose-ids/handler-transform.ts +209 -0
  1098. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1099. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1100. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1101. package/src/vite/plugins/expose-internal-ids.ts +786 -0
  1102. package/src/vite/plugins/performance-tracks.ts +88 -0
  1103. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1104. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1105. package/src/vite/plugins/version-injector.ts +83 -0
  1106. package/src/vite/plugins/version-plugin.ts +266 -0
  1107. package/src/vite/plugins/virtual-entries.ts +123 -0
  1108. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1109. package/src/vite/rango.ts +483 -0
  1110. package/src/vite/router-discovery.ts +977 -0
  1111. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1112. package/src/vite/utils/banner.ts +36 -0
  1113. package/src/vite/utils/bundle-analysis.ts +137 -0
  1114. package/src/vite/utils/manifest-utils.ts +70 -0
  1115. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +58 -29
  1116. package/src/vite/utils/prerender-utils.ts +221 -0
  1117. package/src/vite/utils/shared-utils.ts +170 -0
  1118. package/CLAUDE.md +0 -7
  1119. package/src/__tests__/component-utils.test.ts +0 -76
  1120. package/src/__tests__/route-definition.test.ts +0 -63
  1121. package/src/__tests__/urls.test.tsx +0 -436
  1122. package/src/browser/lru-cache.ts +0 -69
  1123. package/src/browser/request-controller.ts +0 -164
  1124. package/src/cache/__tests__/document-cache.test.ts +0 -522
  1125. package/src/cache/__tests__/memory-segment-store.test.ts +0 -487
  1126. package/src/cache/__tests__/memory-store.test.ts +0 -484
  1127. package/src/cache/cf/__tests__/cf-cache-store.test.ts +0 -428
  1128. package/src/cache/memory-store.ts +0 -253
  1129. package/src/href.ts +0 -177
  1130. package/src/route-utils.ts +0 -89
  1131. package/src/router/__tests__/match-context.test.ts +0 -104
  1132. package/src/router/__tests__/match-pipelines.test.ts +0 -537
  1133. package/src/router/__tests__/match-result.test.ts +0 -566
  1134. package/src/router/__tests__/on-error.test.ts +0 -935
  1135. package/src/router/__tests__/pattern-matching.test.ts +0 -577
  1136. package/src/router/middleware.test.ts +0 -1355
  1137. package/src/rsc/__tests__/helpers.test.ts +0 -175
  1138. package/src/server/__tests__/request-context.test.ts +0 -171
  1139. package/src/ssr/__tests__/ssr-handler.test.tsx +0 -188
  1140. package/src/theme/__tests__/theme.test.ts +0 -120
  1141. package/src/vite/__tests__/expose-loader-id.test.ts +0 -117
  1142. package/src/vite/expose-handle-id.ts +0 -209
  1143. package/src/vite/expose-loader-id.ts +0 -357
  1144. package/src/vite/expose-location-state-id.ts +0 -177
  1145. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -0,0 +1,358 @@
1
+ /**
2
+ * Server Action Handler
3
+ *
4
+ * Handles server action execution and post-action revalidation as two
5
+ * separate phases:
6
+ *
7
+ * 1. executeServerAction — decodes args, runs the action, handles redirects
8
+ * and error boundaries. Returns either a final Response (redirect/error)
9
+ * or an ActionContinuation for the revalidation phase.
10
+ *
11
+ * 2. revalidateAfterAction — takes the continuation, matches affected
12
+ * segments, builds the RSC payload, and returns the Flight response.
13
+ *
14
+ * The handler (handler.ts) runs the action BEFORE route middleware, then
15
+ * wraps revalidation inside route middleware — identical to a normal render.
16
+ */
17
+
18
+ import {
19
+ requireRequestContext,
20
+ setRequestContextParams,
21
+ getLocationState,
22
+ } from "../server/request-context.js";
23
+ import { resolveLocationStateEntries } from "../browser/react/location-state-shared.js";
24
+ import { appendMetric } from "../router/metrics.js";
25
+ import type { RscPayload } from "./types.js";
26
+ import {
27
+ hasBodyContent,
28
+ createResponseWithMergedHeaders,
29
+ createSimpleRedirectResponse,
30
+ carryOverRedirectHeaders,
31
+ } from "./helpers.js";
32
+ import type { HandlerContext } from "./handler-context.js";
33
+
34
+ /**
35
+ * Attach location state set during the action to a payload's metadata.
36
+ * No-op if no location state was set.
37
+ */
38
+ function attachLocationState(payload: RscPayload): void {
39
+ const locationState = getLocationState();
40
+ if (locationState) {
41
+ payload.metadata!.locationState =
42
+ resolveLocationStateEntries(locationState);
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Data flowing from action execution to the revalidation phase.
48
+ * When the action completes without redirect/error-boundary, the handler
49
+ * passes this to route middleware → revalidateAfterAction.
50
+ */
51
+ export interface ActionContinuation {
52
+ returnValue: { ok: boolean; data: unknown };
53
+ actionStatus: number;
54
+ temporaryReferences: ReturnType<
55
+ HandlerContext["createTemporaryReferenceSet"]
56
+ >;
57
+ actionContext: {
58
+ actionId: string;
59
+ actionUrl: URL;
60
+ actionResult: unknown;
61
+ formData?: FormData;
62
+ };
63
+ }
64
+
65
+ /**
66
+ * Phase 1: Execute the server action.
67
+ *
68
+ * Decodes arguments, runs the action, handles redirects and error
69
+ * boundaries. Returns a final Response (redirect, error boundary render)
70
+ * or an ActionContinuation for the revalidation phase.
71
+ */
72
+ export async function executeServerAction<TEnv>(
73
+ ctx: HandlerContext<TEnv>,
74
+ request: Request,
75
+ env: TEnv,
76
+ url: URL,
77
+ actionId: string,
78
+ handleStore: ReturnType<typeof requireRequestContext>["_handleStore"],
79
+ ): Promise<Response | ActionContinuation> {
80
+ const temporaryReferences = ctx.createTemporaryReferenceSet();
81
+
82
+ // Decode action arguments from request body
83
+ const contentType = request.headers.get("content-type") || "";
84
+ let args: unknown[] = [];
85
+ let actionFormData: FormData | undefined;
86
+
87
+ try {
88
+ const body = contentType.includes("multipart/form-data")
89
+ ? await request.formData()
90
+ : await request.text();
91
+
92
+ if (body instanceof FormData) {
93
+ actionFormData = body;
94
+ }
95
+
96
+ if (hasBodyContent(body)) {
97
+ args = await ctx.decodeReply(body, { temporaryReferences });
98
+ }
99
+ } catch (error) {
100
+ throw new Error(`Failed to decode action arguments: ${error}`, {
101
+ cause: error,
102
+ });
103
+ }
104
+
105
+ // Execute the server action
106
+ let returnValue: { ok: boolean; data: unknown };
107
+ let actionStatus = 200;
108
+ let loadedAction: Function | undefined;
109
+
110
+ try {
111
+ loadedAction = await ctx.loadServerAction(actionId);
112
+ const data = await loadedAction!.apply(null, args);
113
+
114
+ // Intercept redirect responses from actions. Without this, the redirect
115
+ // Response would be serialized as the action returnValue (which fails)
116
+ // and the revalidation step would run unnecessarily.
117
+ if (data instanceof Response) {
118
+ const redirectUrl = data.headers.get("Location");
119
+ const isRedirect = data.status >= 300 && data.status < 400 && redirectUrl;
120
+ if (isRedirect) {
121
+ const locationState = getLocationState();
122
+ let redirect: Response;
123
+ if (locationState) {
124
+ redirect = ctx.createRedirectFlightResponse(
125
+ redirectUrl,
126
+ resolveLocationStateEntries(locationState),
127
+ );
128
+ } else {
129
+ redirect = createSimpleRedirectResponse(redirectUrl);
130
+ }
131
+ carryOverRedirectHeaders(data, redirect);
132
+ return redirect;
133
+ }
134
+ }
135
+
136
+ returnValue = { ok: true, data };
137
+ } catch (error) {
138
+ // Handle thrown redirect (e.g., throw redirect('/path'))
139
+ if (error instanceof Response) {
140
+ const redirectUrl = error.headers.get("Location");
141
+ const isRedirect =
142
+ error.status >= 300 && error.status < 400 && redirectUrl;
143
+ if (isRedirect) {
144
+ const locationState = getLocationState();
145
+ let redirect: Response;
146
+ if (locationState) {
147
+ redirect = ctx.createRedirectFlightResponse(
148
+ redirectUrl,
149
+ resolveLocationStateEntries(locationState),
150
+ );
151
+ } else {
152
+ redirect = createSimpleRedirectResponse(redirectUrl);
153
+ }
154
+ carryOverRedirectHeaders(error, redirect);
155
+ return redirect;
156
+ }
157
+
158
+ // Non-redirect Response thrown from action — this will be treated
159
+ // as a regular error and routed to the error boundary. Warn in dev
160
+ // since the intent is likely a redirect with a missing Location header.
161
+ if (process.env.NODE_ENV !== "production") {
162
+ console.warn(
163
+ `[@rangojs/router] Server action "${actionId}" threw a Response ` +
164
+ `(status ${error.status}) that is not a redirect. ` +
165
+ `Non-redirect Responses are treated as errors. ` +
166
+ `Use \`throw redirect('/path')\` for redirects.`,
167
+ );
168
+ }
169
+ }
170
+
171
+ returnValue = { ok: false, data: error };
172
+ actionStatus = 500;
173
+
174
+ // Try to render error boundary.
175
+ // Report the action error first so it is not lost if matchError throws.
176
+ let errorResult;
177
+ try {
178
+ errorResult = await ctx.router.matchError(
179
+ request,
180
+ { env },
181
+ error,
182
+ "route",
183
+ );
184
+ } catch (matchErr) {
185
+ // matchError failed — report the original action error as unhandled,
186
+ // then let the matchError failure propagate.
187
+ ctx.callOnError(error, "action", {
188
+ request,
189
+ url,
190
+ env,
191
+ actionId,
192
+ handledByBoundary: false,
193
+ });
194
+ throw matchErr;
195
+ }
196
+
197
+ ctx.callOnError(error, "action", {
198
+ request,
199
+ url,
200
+ env,
201
+ actionId,
202
+ handledByBoundary: !!errorResult,
203
+ });
204
+
205
+ if (errorResult) {
206
+ setRequestContextParams(errorResult.params, errorResult.routeName);
207
+
208
+ const payload: RscPayload = {
209
+ metadata: {
210
+ pathname: url.pathname,
211
+ routerId: ctx.router.id,
212
+ segments: errorResult.segments,
213
+ isPartial: true,
214
+ matched: errorResult.matched,
215
+ diff: errorResult.diff,
216
+ params: errorResult.params,
217
+ isError: true,
218
+ handles: handleStore.stream(),
219
+ version: ctx.version,
220
+ },
221
+ returnValue,
222
+ };
223
+
224
+ // Intentionally omit attachLocationState for error payloads:
225
+ // location state is a success-only semantic. Error boundary responses
226
+ // update the error UI but should not mutate browser history state.
227
+
228
+ const rscStream = ctx.renderToReadableStream<RscPayload>(payload, {
229
+ temporaryReferences,
230
+ onError: (error: unknown) => {
231
+ ctx.callOnError(error, "rendering", { request, url, env });
232
+ },
233
+ });
234
+
235
+ return createResponseWithMergedHeaders(rscStream, {
236
+ status: actionStatus,
237
+ headers: { "content-type": "text/x-component;charset=utf-8" },
238
+ });
239
+ }
240
+ }
241
+
242
+ // Build continuation for the revalidation phase
243
+ const resolvedActionId =
244
+ (loadedAction as { $id?: string; $$id?: string } | undefined)?.$id ??
245
+ (loadedAction as { $$id?: string } | undefined)?.$$id ??
246
+ actionId;
247
+
248
+ return {
249
+ returnValue,
250
+ actionStatus,
251
+ temporaryReferences,
252
+ actionContext: {
253
+ actionId: resolvedActionId,
254
+ actionUrl: new URL(request.url),
255
+ actionResult: returnValue.data,
256
+ formData: actionFormData,
257
+ },
258
+ };
259
+ }
260
+
261
+ /**
262
+ * Phase 2: Revalidate after action.
263
+ *
264
+ * Matches affected segments, builds the RSC payload, and returns the
265
+ * Flight response. Called inside route middleware (same as a normal render).
266
+ *
267
+ * Invariant: the response payload MUST have isPartial: true. The client
268
+ * (server-action-bridge) rejects non-partial payloads because partial
269
+ * reconciliation requires matched/diff semantics that full renders don't
270
+ * provide. Redirects are the only non-partial outcome and are handled via
271
+ * X-RSC-Redirect headers before Flight deserialization.
272
+ */
273
+ export async function revalidateAfterAction<TEnv>(
274
+ ctx: HandlerContext<TEnv>,
275
+ request: Request,
276
+ env: TEnv,
277
+ url: URL,
278
+ handleStore: ReturnType<typeof requireRequestContext>["_handleStore"],
279
+ continuation: ActionContinuation,
280
+ ): Promise<Response> {
281
+ const { returnValue, actionStatus, temporaryReferences, actionContext } =
282
+ continuation;
283
+ const reqCtx = requireRequestContext();
284
+ const metricsStore = reqCtx._metricsStore;
285
+
286
+ const matchResult = await ctx.router.matchPartial(
287
+ request,
288
+ { env },
289
+ actionContext,
290
+ );
291
+
292
+ if (!matchResult) {
293
+ // matchPartial returns null when the route is a redirect or the request
294
+ // is missing required headers (previousUrl). Check for redirect first.
295
+ const fullMatch = await ctx.router.match(request, { env });
296
+ setRequestContextParams(fullMatch.params, fullMatch.routeName);
297
+
298
+ if (fullMatch.redirect) {
299
+ // Action context is always partial — use X-RSC-Redirect header so
300
+ // the client can perform SPA navigation instead of fetch auto-following
301
+ // a raw 308 to a URL that would render full HTML.
302
+ return createSimpleRedirectResponse(fullMatch.redirect);
303
+ }
304
+
305
+ // Non-redirect: this branch is only reachable when the action request
306
+ // is missing the X-RSC-Router-Client-Path header (defensive). The
307
+ // client requires isPartial for action responses, so producing a full
308
+ // payload here would be rejected. Return 500 instead.
309
+ throw new Error(
310
+ `[RSC] matchPartial returned null for a non-redirect route ` +
311
+ `during action revalidation (${url.pathname}). This indicates ` +
312
+ `a malformed action request (missing X-RSC-Router-Client-Path header).`,
313
+ );
314
+ }
315
+
316
+ // Return updated segments
317
+ setRequestContextParams(matchResult.params, matchResult.routeName);
318
+
319
+ const payload: RscPayload = {
320
+ metadata: {
321
+ pathname: url.pathname,
322
+ routerId: ctx.router.id,
323
+ segments: matchResult.segments,
324
+ isPartial: true,
325
+ matched: matchResult.matched,
326
+ diff: matchResult.diff,
327
+ params: matchResult.params,
328
+ slots: matchResult.slots,
329
+ handles: handleStore.stream(),
330
+ version: ctx.version,
331
+ },
332
+ returnValue,
333
+ };
334
+
335
+ attachLocationState(payload);
336
+
337
+ const renderStart = performance.now();
338
+ const rscStream = ctx.renderToReadableStream<RscPayload>(payload, {
339
+ temporaryReferences,
340
+ onError: (error: unknown) => {
341
+ ctx.callOnError(error, "rendering", { request, url, env });
342
+ },
343
+ });
344
+ const rscSerializeDur = performance.now() - renderStart;
345
+ // This measures synchronous stream creation, not end-to-end stream consumption.
346
+ appendMetric(metricsStore, "rsc-serialize", renderStart, rscSerializeDur);
347
+ appendMetric(
348
+ metricsStore,
349
+ "render:total",
350
+ renderStart,
351
+ performance.now() - renderStart,
352
+ );
353
+
354
+ return createResponseWithMergedHeaders(rscStream, {
355
+ status: actionStatus,
356
+ headers: { "content-type": "text/x-component;charset=utf-8" },
357
+ });
358
+ }
@@ -0,0 +1,128 @@
1
+ /**
2
+ * SSR Setup Utilities
3
+ *
4
+ * Manages early kickoff and retrieval of SSR module loading and stream mode
5
+ * resolution. Both operations are request-scoped but independent of route
6
+ * matching, so they can run in parallel with segment resolution.
7
+ */
8
+
9
+ import type { HandlerContext } from "./handler-context.js";
10
+ import type { SSRModule } from "./types.js";
11
+ import type { SSRStreamMode } from "../router/router-options.js";
12
+ import type { MetricsStore } from "../server/context.js";
13
+ import { appendMetric } from "../router/metrics.js";
14
+ import { _getRequestContext } from "../server/request-context.js";
15
+
16
+ export type SSRSetup = readonly [SSRModule, SSRStreamMode];
17
+
18
+ /**
19
+ * Key used to stash the early SSR setup promise on request variables.
20
+ * Read back via `getSSRSetup`.
21
+ */
22
+ export const SSR_SETUP_VAR = "__ssrSetup";
23
+
24
+ /**
25
+ * Start loading the SSR module and resolving the stream mode in parallel.
26
+ * When a `getMetricsStore` getter is provided, records individual
27
+ * `ssr:module-load` and `ssr:stream-mode` metrics (the getter is called
28
+ * lazily so stores created after kickoff are still captured). Without a
29
+ * getter the promises run bare — no `.then()` microtasks, no
30
+ * `performance.now()` calls — keeping the non-debug hot path lean.
31
+ */
32
+ export function startSSRSetup<TEnv>(
33
+ ctx: HandlerContext<TEnv>,
34
+ request: Request,
35
+ env: TEnv,
36
+ url: URL,
37
+ getMetricsStore?: () => MetricsStore | undefined,
38
+ ): Promise<SSRSetup> {
39
+ if (!getMetricsStore) {
40
+ return Promise.all([
41
+ ctx.loadSSRModule(),
42
+ ctx.resolveStreamMode(request, env, url),
43
+ ]);
44
+ }
45
+ const start = performance.now();
46
+ return Promise.all([
47
+ ctx.loadSSRModule().then((mod) => {
48
+ appendMetric(
49
+ getMetricsStore(),
50
+ "ssr:module-load",
51
+ start,
52
+ performance.now() - start,
53
+ );
54
+ return mod;
55
+ }),
56
+ ctx.resolveStreamMode(request, env, url).then((mode) => {
57
+ appendMetric(
58
+ getMetricsStore(),
59
+ "ssr:stream-mode",
60
+ start,
61
+ performance.now() - start,
62
+ );
63
+ return mode;
64
+ }),
65
+ ]);
66
+ }
67
+
68
+ /**
69
+ * Retrieve the SSR setup result. Returns the early-kicked-off promise
70
+ * when available (stashed on request variables), otherwise starts a
71
+ * fresh setup.
72
+ */
73
+ export function getSSRSetup<TEnv>(
74
+ ctx: HandlerContext<TEnv>,
75
+ request: Request,
76
+ env: TEnv,
77
+ url: URL,
78
+ metricsStore: MetricsStore | undefined,
79
+ ): Promise<SSRSetup> {
80
+ const early = _getRequestContext()?._variables?.[SSR_SETUP_VAR] as
81
+ | Promise<SSRSetup>
82
+ | undefined;
83
+ if (early) return early;
84
+ return startSSRSetup(
85
+ ctx,
86
+ request,
87
+ env,
88
+ url,
89
+ metricsStore ? () => metricsStore : undefined,
90
+ );
91
+ }
92
+
93
+ /**
94
+ * Classify whether a request may require SSR (HTML rendering).
95
+ *
96
+ * Returns false for requests that are definitively RSC-only, loader fetches,
97
+ * prerender collection, or Accept-based RSC (no text/html). This mirrors
98
+ * the isRscRequest decision in rsc-rendering.ts.
99
+ *
100
+ * Note: response/mime routes are excluded by the caller — this function
101
+ * runs after classifyRequest() determines the request mode.
102
+ */
103
+ export function mayNeedSSR(request: Request, url: URL): boolean {
104
+ if (
105
+ url.searchParams.has("_rsc_partial") ||
106
+ url.searchParams.has("_rsc_action") ||
107
+ request.headers.has("rsc-action") ||
108
+ url.searchParams.has("_rsc_loader") ||
109
+ url.searchParams.has("__rsc") ||
110
+ url.searchParams.has("__prerender_collect")
111
+ ) {
112
+ return false;
113
+ }
114
+
115
+ // Mirror the Accept-based RSC decision from rsc-rendering.ts:
116
+ // if Accept is present and does not include text/html (and no __html override),
117
+ // the response will be RSC, not HTML.
118
+ const accept = request.headers.get("accept");
119
+ if (
120
+ accept &&
121
+ !accept.includes("text/html") &&
122
+ !url.searchParams.has("__html")
123
+ ) {
124
+ return false;
125
+ }
126
+
127
+ return true;
128
+ }
package/src/rsc/types.ts CHANGED
@@ -7,21 +7,27 @@
7
7
 
8
8
  import type { ResolvedSegment, SlotState } from "../types.js";
9
9
  import type { HandleData } from "../server/handle-store.js";
10
- import type { RSCRouter } from "../router.js";
10
+ import type { RSCRouterInternal } from "../router/router-interfaces.js";
11
11
  import type { ResolvedThemeConfig, Theme } from "../theme/types.js";
12
12
 
13
13
  /**
14
- * RSC payload sent to the client
14
+ * RSC payload sent to the client.
15
+ * The tree is always reconstructed from metadata.segments by consumers
16
+ * (SSR via renderSegments, browser via renderSegments in bridges).
15
17
  */
16
18
  export interface RscPayload {
17
- root: React.ReactNode | Promise<React.ReactNode>;
18
19
  metadata?: {
19
20
  pathname: string;
20
21
  segments: ResolvedSegment[];
22
+ /** Router instance ID. When this changes between navigations, the client
23
+ * discards cached segments and does a full tree replacement (app switch). */
24
+ routerId?: string;
21
25
  isPartial?: boolean;
22
26
  isError?: boolean;
23
27
  matched?: string[];
24
28
  diff?: string[];
29
+ /** Merged route params from the matched route */
30
+ params?: Record<string, string>;
25
31
  slots?: Record<string, SlotState>;
26
32
  /** Root layout component for browser-side re-renders (client component reference) */
27
33
  rootLayout?: React.ComponentType<{ children: React.ReactNode }>;
@@ -29,14 +35,20 @@ export interface RscPayload {
29
35
  handles?: AsyncGenerator<HandleData, void, unknown>;
30
36
  /** RSC version string for cache invalidation */
31
37
  version?: string;
38
+ /** TTL in milliseconds for the client-side in-memory prefetch cache */
39
+ prefetchCacheTTL?: number;
32
40
  /** Theme configuration for FOUC prevention */
33
41
  themeConfig?: ResolvedThemeConfig | null;
34
42
  /** Initial theme from cookie (for SSR hydration) */
35
43
  initialTheme?: Theme;
36
- /** Route map for useHref() - maps route names to URL patterns */
37
- routeMap?: Record<string, string>;
38
- /** Current matched route name (for local name resolution in useHref) */
39
- routeName?: string;
44
+ /** URL prefix for all routes (from createRouter({ basename })). */
45
+ basename?: string;
46
+ /** Whether connection warmup is enabled */
47
+ warmupEnabled?: boolean;
48
+ /** Server-side redirect with optional state (for partial requests) */
49
+ redirect?: { url: string };
50
+ /** Server-set location state to include in history.pushState */
51
+ locationState?: Record<string, unknown>;
40
52
  };
41
53
  returnValue?: { ok: boolean; data: unknown };
42
54
  formState?: unknown;
@@ -56,7 +68,10 @@ export interface RSCDependencies {
56
68
  */
57
69
  renderToReadableStream: <T>(
58
70
  payload: T,
59
- options?: { temporaryReferences?: unknown }
71
+ options?: {
72
+ temporaryReferences?: unknown;
73
+ onError?: (error: unknown) => string | void;
74
+ },
60
75
  ) => ReadableStream<Uint8Array>;
61
76
 
62
77
  /**
@@ -64,7 +79,7 @@ export interface RSCDependencies {
64
79
  */
65
80
  decodeReply: (
66
81
  body: FormData | string,
67
- options?: { temporaryReferences?: unknown }
82
+ options?: { temporaryReferences?: unknown },
68
83
  ) => Promise<unknown[]>;
69
84
 
70
85
  /**
@@ -89,7 +104,7 @@ export interface RSCDependencies {
89
104
  */
90
105
  decodeFormState: (
91
106
  actionResult: unknown,
92
- body: FormData
107
+ body: FormData,
93
108
  ) => Promise<ReactFormState | null>;
94
109
  }
95
110
 
@@ -109,6 +124,14 @@ export interface SSRRenderOptions {
109
124
  * Nonce for Content Security Policy (CSP)
110
125
  */
111
126
  nonce?: string;
127
+
128
+ /**
129
+ * SSR stream mode.
130
+ *
131
+ * - `"stream"` (default) — start flushing HTML immediately.
132
+ * - `"allReady"` — await `stream.allReady` before returning.
133
+ */
134
+ streamMode?: import("../router/router-options.js").SSRStreamMode;
112
135
  }
113
136
 
114
137
  /**
@@ -117,7 +140,7 @@ export interface SSRRenderOptions {
117
140
  export interface SSRModule {
118
141
  renderHTML: (
119
142
  rscStream: ReadableStream<Uint8Array>,
120
- options?: SSRRenderOptions
143
+ options?: SSRRenderOptions,
121
144
  ) => Promise<ReadableStream<Uint8Array>>;
122
145
  }
123
146
 
@@ -143,7 +166,7 @@ export interface HandlerCacheConfig {
143
166
  */
144
167
  export type NonceProvider<TEnv = unknown> = (
145
168
  request: Request,
146
- env: TEnv
169
+ env: TEnv,
147
170
  ) => string | true | Promise<string | true>;
148
171
 
149
172
  /**
@@ -156,7 +179,7 @@ export interface CreateRSCHandlerOptions<
156
179
  /**
157
180
  * The RSC router instance
158
181
  */
159
- router: RSCRouter<TEnv, TRoutes>;
182
+ router: RSCRouterInternal<TEnv, TRoutes>;
160
183
 
161
184
  /**
162
185
  * RSC dependencies from @vitejs/plugin-rsc/rsc.
@@ -215,7 +238,8 @@ export interface CreateRSCHandlerOptions<
215
238
  * - Undefined to disable nonce (default)
216
239
  *
217
240
  * The nonce will be applied to inline scripts injected by the RSC payload.
218
- * It's also available to middleware via `ctx.get('nonce')`.
241
+ * It's also available to middleware via the typed `nonce` token:
242
+ * `import { nonce } from "@rangojs/router"; ctx.get(nonce)`
219
243
  *
220
244
  * @example Auto-generate nonce
221
245
  * ```tsx
@@ -232,6 +256,16 @@ export interface CreateRSCHandlerOptions<
232
256
  * nonce: (request, env) => env.nonce,
233
257
  * });
234
258
  * ```
259
+ *
260
+ * @example Access nonce in middleware
261
+ * ```tsx
262
+ * import { nonce } from "@rangojs/router";
263
+ *
264
+ * const cspMiddleware: Middleware = async (ctx, next) => {
265
+ * const value = ctx.get(nonce); // string | undefined
266
+ * await next();
267
+ * };
268
+ * ```
235
269
  */
236
270
  nonce?: NonceProvider<TEnv>;
237
271
  }