@rangojs/router 0.0.0-experimental.23 → 0.0.0-experimental.24535dcb

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 (1250) hide show
  1. package/AGENTS.md +11 -3
  2. package/README.md +303 -740
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/dist/__mocks__/version.js +7 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +730 -184
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -28
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/dist/handles/index.d.ts +6 -0
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/{src/handles/index.ts → dist/handles/index.js} +1 -1
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/dist/href-context.d.ts +29 -0
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/{src/network-error-thrower.tsx → dist/network-error-thrower.d.ts} +4 -10
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/testing/vitest.js +82 -0
  712. package/dist/theme/ThemeProvider.d.ts +20 -0
  713. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  714. package/dist/theme/ThemeProvider.js +240 -0
  715. package/dist/theme/ThemeProvider.js.map +1 -0
  716. package/dist/theme/ThemeScript.d.ts +48 -0
  717. package/dist/theme/ThemeScript.d.ts.map +1 -0
  718. package/dist/theme/ThemeScript.js +13 -0
  719. package/dist/theme/ThemeScript.js.map +1 -0
  720. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  721. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  722. package/dist/theme/__tests__/theme.test.js +103 -0
  723. package/dist/theme/__tests__/theme.test.js.map +1 -0
  724. package/dist/theme/constants.d.ts +29 -0
  725. package/dist/theme/constants.d.ts.map +1 -0
  726. package/dist/theme/constants.js +48 -0
  727. package/dist/theme/constants.js.map +1 -0
  728. package/dist/theme/index.d.ts +31 -0
  729. package/dist/theme/index.d.ts.map +1 -0
  730. package/dist/theme/index.js +36 -0
  731. package/dist/theme/index.js.map +1 -0
  732. package/dist/theme/theme-context.d.ts +40 -0
  733. package/dist/theme/theme-context.d.ts.map +1 -0
  734. package/dist/theme/theme-context.js +60 -0
  735. package/dist/theme/theme-context.js.map +1 -0
  736. package/dist/theme/theme-script.d.ts +27 -0
  737. package/dist/theme/theme-script.d.ts.map +1 -0
  738. package/dist/theme/theme-script.js +147 -0
  739. package/dist/theme/theme-script.js.map +1 -0
  740. package/dist/theme/types.d.ts +163 -0
  741. package/dist/theme/types.d.ts.map +1 -0
  742. package/dist/theme/types.js +11 -0
  743. package/dist/theme/types.js.map +1 -0
  744. package/dist/theme/use-theme.d.ts +12 -0
  745. package/dist/theme/use-theme.d.ts.map +1 -0
  746. package/dist/theme/use-theme.js +40 -0
  747. package/dist/theme/use-theme.js.map +1 -0
  748. package/dist/types.d.ts +1479 -0
  749. package/dist/types.d.ts.map +1 -0
  750. package/dist/types.js +10 -0
  751. package/dist/types.js.map +1 -0
  752. package/dist/urls.d.ts +441 -0
  753. package/dist/urls.d.ts.map +1 -0
  754. package/dist/urls.gen.d.ts +8 -0
  755. package/dist/urls.gen.d.ts.map +1 -0
  756. package/dist/urls.gen.js +8 -0
  757. package/dist/urls.gen.js.map +1 -0
  758. package/dist/urls.js +443 -0
  759. package/dist/urls.js.map +1 -0
  760. package/dist/use-loader.d.ts +127 -0
  761. package/dist/use-loader.d.ts.map +1 -0
  762. package/dist/use-loader.js +237 -0
  763. package/dist/use-loader.js.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  767. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  771. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  775. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  777. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  779. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  780. package/dist/vite/ast-handler-extract.d.ts +49 -0
  781. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  782. package/dist/vite/ast-handler-extract.js +249 -0
  783. package/dist/vite/ast-handler-extract.js.map +1 -0
  784. package/dist/vite/expose-action-id.d.ts +19 -0
  785. package/dist/vite/expose-action-id.d.ts.map +1 -0
  786. package/dist/vite/expose-action-id.js +250 -0
  787. package/dist/vite/expose-action-id.js.map +1 -0
  788. package/dist/vite/expose-id-utils.d.ts +69 -0
  789. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  790. package/dist/vite/expose-id-utils.js +289 -0
  791. package/dist/vite/expose-id-utils.js.map +1 -0
  792. package/dist/vite/expose-internal-ids.d.ts +22 -0
  793. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  794. package/dist/vite/expose-internal-ids.js +886 -0
  795. package/dist/vite/expose-internal-ids.js.map +1 -0
  796. package/dist/vite/index.d.ts +149 -0
  797. package/dist/vite/index.d.ts.map +1 -0
  798. package/dist/vite/index.js +4373 -1328
  799. package/dist/vite/index.js.bak +5448 -0
  800. package/dist/vite/index.js.map +1 -0
  801. package/dist/vite/index.named-routes.gen.ts +103 -0
  802. package/dist/vite/package-resolution.d.ts +43 -0
  803. package/dist/vite/package-resolution.d.ts.map +1 -0
  804. package/dist/vite/package-resolution.js +112 -0
  805. package/dist/vite/package-resolution.js.map +1 -0
  806. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  807. package/dist/vite/virtual-entries.d.ts +25 -0
  808. package/dist/vite/virtual-entries.d.ts.map +1 -0
  809. package/dist/vite/virtual-entries.js +110 -0
  810. package/dist/vite/virtual-entries.js.map +1 -0
  811. package/package.json +96 -24
  812. package/skills/api-client/SKILL.md +211 -0
  813. package/skills/breadcrumbs/SKILL.md +329 -0
  814. package/skills/bundle-analysis/SKILL.md +159 -0
  815. package/skills/cache-guide/SKILL.md +251 -24
  816. package/skills/caching/SKILL.md +375 -17
  817. package/skills/catalog.json +271 -0
  818. package/skills/comparison/SKILL.md +50 -0
  819. package/skills/comparison/agents/openai.yaml +4 -0
  820. package/skills/comparison/references/framework-comparison.md +837 -0
  821. package/skills/composability/SKILL.md +110 -4
  822. package/skills/css/SKILL.md +76 -0
  823. package/skills/debug-manifest/SKILL.md +5 -3
  824. package/skills/defer-hydration/SKILL.md +235 -0
  825. package/skills/document-cache/SKILL.md +87 -56
  826. package/skills/fonts/SKILL.md +1 -1
  827. package/skills/handler-use/SKILL.md +364 -0
  828. package/skills/hooks/SKILL.md +73 -690
  829. package/skills/hooks/data.md +273 -0
  830. package/skills/hooks/handle-and-actions.md +103 -0
  831. package/skills/hooks/navigation.md +110 -0
  832. package/skills/hooks/outlets.md +41 -0
  833. package/skills/hooks/state.md +228 -0
  834. package/skills/hooks/urls.md +135 -0
  835. package/skills/host-router/SKILL.md +129 -27
  836. package/skills/i18n/SKILL.md +276 -0
  837. package/skills/intercept/SKILL.md +94 -18
  838. package/skills/layout/SKILL.md +62 -19
  839. package/skills/links/SKILL.md +249 -17
  840. package/skills/loader/SKILL.md +319 -31
  841. package/skills/middleware/SKILL.md +59 -16
  842. package/skills/migrate-nextjs/SKILL.md +745 -0
  843. package/skills/migrate-react-router/SKILL.md +153 -0
  844. package/skills/migrate-react-router/cloudflare-workers.md +129 -0
  845. package/skills/migrate-react-router/component-migration.md +196 -0
  846. package/skills/migrate-react-router/data-and-actions.md +225 -0
  847. package/skills/migrate-react-router/route-mapping.md +271 -0
  848. package/skills/mime-routes/SKILL.md +29 -2
  849. package/skills/observability/SKILL.md +202 -0
  850. package/skills/parallel/SKILL.md +225 -10
  851. package/skills/ppr/SKILL.md +616 -0
  852. package/skills/prerender/SKILL.md +178 -124
  853. package/skills/rango/SKILL.md +318 -24
  854. package/skills/react-compiler/SKILL.md +168 -0
  855. package/skills/response-routes/SKILL.md +138 -49
  856. package/skills/route/SKILL.md +175 -13
  857. package/skills/router-setup/SKILL.md +137 -12
  858. package/skills/scripts/SKILL.md +179 -0
  859. package/skills/server-actions/SKILL.md +776 -0
  860. package/skills/shell-manifest/SKILL.md +185 -0
  861. package/skills/streams-and-websockets/SKILL.md +283 -0
  862. package/skills/tailwind/SKILL.md +28 -4
  863. package/skills/testing/SKILL.md +130 -0
  864. package/skills/testing/bindings.md +103 -0
  865. package/skills/testing/cache-prerender.md +127 -0
  866. package/skills/testing/client-components.md +124 -0
  867. package/skills/testing/e2e-parity.md +125 -0
  868. package/skills/testing/flight.md +91 -0
  869. package/skills/testing/handles.md +131 -0
  870. package/skills/testing/loader.md +128 -0
  871. package/skills/testing/middleware.md +99 -0
  872. package/skills/testing/render-handler.md +122 -0
  873. package/skills/testing/response-routes.md +95 -0
  874. package/skills/testing/reverse-and-types.md +85 -0
  875. package/skills/testing/server-actions.md +107 -0
  876. package/skills/testing/server-tree.md +128 -0
  877. package/skills/testing/setup.md +123 -0
  878. package/skills/theme/SKILL.md +1 -1
  879. package/skills/typesafety/SKILL.md +45 -614
  880. package/skills/typesafety/env-and-bindings.md +254 -0
  881. package/skills/typesafety/generated-files-and-cli.md +335 -0
  882. package/skills/typesafety/params-and-search.md +153 -0
  883. package/skills/typesafety/route-types.md +209 -0
  884. package/skills/use-cache/SKILL.md +74 -15
  885. package/skills/vercel/SKILL.md +128 -0
  886. package/skills/view-transitions/SKILL.md +337 -0
  887. package/src/__augment-tests__/augment.ts +81 -0
  888. package/src/__augment-tests__/augmented.check.ts +116 -0
  889. package/src/__internal.ts +67 -40
  890. package/src/browser/action-coordinator.ts +53 -36
  891. package/src/browser/action-fence.ts +47 -0
  892. package/src/browser/app-shell.ts +39 -0
  893. package/src/browser/app-version.ts +14 -0
  894. package/src/browser/connection-warmup.ts +134 -0
  895. package/src/browser/cookie-name.ts +140 -0
  896. package/src/browser/event-controller.ts +257 -158
  897. package/src/browser/history-state.ts +21 -0
  898. package/src/browser/index.ts +3 -3
  899. package/src/browser/invalidate-client-cache.ts +52 -0
  900. package/src/browser/link-interceptor.ts +4 -0
  901. package/src/browser/logging.ts +28 -0
  902. package/src/browser/merge-segment-loaders.ts +6 -4
  903. package/src/browser/navigation-bridge.ts +212 -34
  904. package/src/browser/navigation-client.ts +233 -58
  905. package/src/browser/navigation-store-handle.ts +38 -0
  906. package/src/browser/navigation-store.ts +203 -80
  907. package/src/browser/navigation-transaction.ts +18 -66
  908. package/src/browser/network-error-handler.ts +34 -7
  909. package/src/browser/partial-update.ts +242 -126
  910. package/src/browser/prefetch/cache.ts +344 -30
  911. package/src/browser/prefetch/fetch.ts +373 -48
  912. package/src/browser/prefetch/policy.ts +6 -0
  913. package/src/browser/prefetch/queue.ts +144 -23
  914. package/src/browser/prefetch/resource-ready.ts +77 -0
  915. package/src/browser/rango-state.ts +158 -76
  916. package/src/browser/react/Link.tsx +135 -18
  917. package/src/browser/react/NavigationProvider.tsx +240 -122
  918. package/src/browser/react/ScrollRestoration.tsx +10 -6
  919. package/src/browser/react/context.ts +7 -2
  920. package/src/browser/react/filter-segment-order.ts +66 -7
  921. package/src/browser/react/index.ts +0 -48
  922. package/src/browser/react/location-state-shared.ts +178 -8
  923. package/src/browser/react/location-state.ts +39 -14
  924. package/src/browser/react/use-action.ts +6 -15
  925. package/src/browser/react/use-handle.ts +23 -69
  926. package/src/browser/react/use-href.tsx +8 -1
  927. package/src/browser/react/use-link-status.ts +33 -8
  928. package/src/browser/react/use-navigation.ts +32 -7
  929. package/src/browser/react/use-params.ts +20 -10
  930. package/src/browser/react/use-reverse.ts +106 -0
  931. package/src/browser/react/use-router.ts +46 -11
  932. package/src/browser/react/use-search-params.ts +0 -5
  933. package/src/browser/react/use-segments.ts +11 -21
  934. package/src/browser/response-adapter.ts +99 -8
  935. package/src/browser/rsc-router.tsx +276 -76
  936. package/src/browser/scroll-restoration.ts +61 -47
  937. package/src/browser/segment-reconciler.ts +44 -7
  938. package/src/browser/segment-structure-assert.ts +2 -2
  939. package/src/browser/server-action-bridge.ts +244 -71
  940. package/src/browser/types.ts +160 -12
  941. package/src/browser/validate-redirect-origin.ts +43 -16
  942. package/src/build/collect-fallback-refs.ts +107 -0
  943. package/src/build/generate-manifest.ts +207 -158
  944. package/src/build/generate-route-types.ts +6 -1
  945. package/src/build/index.ts +11 -3
  946. package/src/build/prefix-tree-utils.ts +123 -0
  947. package/src/build/route-trie.ts +215 -42
  948. package/src/build/route-types/ast-route-extraction.ts +15 -8
  949. package/src/build/route-types/codegen.ts +16 -5
  950. package/src/build/route-types/include-resolution.ts +464 -63
  951. package/src/build/route-types/param-extraction.ts +6 -3
  952. package/src/build/route-types/per-module-writer.ts +22 -6
  953. package/src/build/route-types/router-processing.ts +336 -110
  954. package/src/build/route-types/scan-filter.ts +9 -2
  955. package/src/build/route-types/source-scan.ts +216 -0
  956. package/src/build/runtime-discovery.ts +13 -21
  957. package/src/cache/cache-error.ts +104 -0
  958. package/src/cache/cache-key-utils.ts +58 -13
  959. package/src/cache/cache-policy.ts +108 -34
  960. package/src/cache/cache-runtime.ts +436 -69
  961. package/src/cache/cache-scope.ts +235 -103
  962. package/src/cache/cache-tag.ts +149 -0
  963. package/src/cache/cf/cf-base64.ts +33 -0
  964. package/src/cache/cf/cf-cache-constants.ts +127 -0
  965. package/src/cache/cf/cf-cache-store.ts +2442 -170
  966. package/src/cache/cf/cf-cache-types.ts +349 -0
  967. package/src/cache/cf/cf-kv-utils.ts +46 -0
  968. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  969. package/src/cache/cf/index.ts +11 -17
  970. package/src/cache/document-cache.ts +144 -49
  971. package/src/cache/handle-snapshot.ts +70 -0
  972. package/src/cache/index.ts +24 -20
  973. package/src/cache/memory-segment-store.ts +243 -37
  974. package/src/cache/profile-registry.ts +46 -31
  975. package/src/cache/read-through-swr.ts +56 -12
  976. package/src/cache/segment-codec.ts +13 -21
  977. package/src/cache/shell-snapshot.ts +417 -0
  978. package/src/cache/tag-invalidation.ts +230 -0
  979. package/src/cache/taint.ts +55 -0
  980. package/src/cache/types.ts +180 -99
  981. package/src/cache/vercel/index.ts +11 -0
  982. package/src/cache/vercel/vercel-cache-store.ts +1127 -0
  983. package/src/client.rsc.tsx +42 -21
  984. package/src/client.tsx +117 -336
  985. package/src/cloudflare/index.ts +11 -0
  986. package/src/cloudflare/tracing.ts +108 -0
  987. package/src/component-utils.ts +19 -0
  988. package/src/components/DefaultDocument.tsx +8 -2
  989. package/src/context-var.ts +84 -2
  990. package/src/debug.ts +2 -2
  991. package/src/decode-loader-results.ts +52 -0
  992. package/src/defer.ts +185 -0
  993. package/src/deps/ssr.ts +0 -1
  994. package/src/encode-kv.ts +49 -0
  995. package/src/errors.ts +30 -4
  996. package/src/escape-script.ts +52 -0
  997. package/src/handle.ts +104 -34
  998. package/src/handles/MetaTags.tsx +24 -53
  999. package/src/handles/Scripts.tsx +183 -0
  1000. package/src/handles/breadcrumbs.ts +93 -0
  1001. package/src/handles/deferred-resolution.ts +127 -0
  1002. package/src/handles/is-thenable.ts +18 -0
  1003. package/src/handles/meta.ts +14 -40
  1004. package/src/handles/script.ts +244 -0
  1005. package/src/host/cookie-handler.ts +9 -60
  1006. package/src/host/errors.ts +13 -22
  1007. package/src/host/index.ts +9 -2
  1008. package/src/host/pattern-matcher.ts +23 -52
  1009. package/src/host/router.ts +107 -99
  1010. package/src/host/testing.ts +40 -27
  1011. package/src/host/types.ts +37 -4
  1012. package/src/host/utils.ts +1 -1
  1013. package/src/href-client.ts +137 -22
  1014. package/src/index.rsc.ts +84 -29
  1015. package/src/index.ts +134 -43
  1016. package/src/internal-debug.ts +11 -10
  1017. package/src/loader-store.ts +500 -0
  1018. package/src/loader.rsc.ts +20 -13
  1019. package/src/loader.ts +12 -11
  1020. package/src/missing-id-error.ts +68 -0
  1021. package/src/outlet-context.ts +1 -1
  1022. package/src/outlet-provider.tsx +1 -5
  1023. package/src/prerender/param-hash.ts +16 -16
  1024. package/src/prerender/store.ts +37 -41
  1025. package/src/prerender.ts +215 -86
  1026. package/src/redirect-origin.ts +114 -0
  1027. package/src/regex-escape.ts +8 -0
  1028. package/src/render-error-thrower.tsx +20 -0
  1029. package/src/response-utils.ts +62 -0
  1030. package/src/reverse.ts +65 -15
  1031. package/src/root-error-boundary.tsx +1 -19
  1032. package/src/route-content-wrapper.tsx +19 -77
  1033. package/src/route-definition/dsl-helpers.ts +485 -303
  1034. package/src/route-definition/helper-factories.ts +28 -140
  1035. package/src/route-definition/helpers-types.ts +153 -77
  1036. package/src/route-definition/index.ts +4 -2
  1037. package/src/route-definition/redirect.ts +53 -12
  1038. package/src/route-definition/resolve-handler-use.ts +160 -0
  1039. package/src/route-definition/use-item-types.ts +29 -0
  1040. package/src/route-map-builder.ts +48 -21
  1041. package/src/route-types.ts +37 -46
  1042. package/src/router/basename.ts +14 -0
  1043. package/src/router/content-negotiation.ts +164 -17
  1044. package/src/router/error-handling.ts +45 -18
  1045. package/src/router/find-match.ts +130 -29
  1046. package/src/router/handler-context.ts +110 -39
  1047. package/src/router/instrument.ts +355 -0
  1048. package/src/router/intercept-resolution.ts +50 -24
  1049. package/src/router/lazy-includes.ts +89 -63
  1050. package/src/router/loader-resolution.ts +286 -56
  1051. package/src/router/logging.ts +5 -8
  1052. package/src/router/manifest.ts +105 -56
  1053. package/src/router/match-api.ts +179 -219
  1054. package/src/router/match-context.ts +0 -22
  1055. package/src/router/match-handlers.ts +211 -165
  1056. package/src/router/match-middleware/background-revalidation.ts +66 -22
  1057. package/src/router/match-middleware/cache-lookup.ts +214 -263
  1058. package/src/router/match-middleware/cache-store.ts +105 -50
  1059. package/src/router/match-middleware/intercept-resolution.ts +8 -28
  1060. package/src/router/match-middleware/segment-resolution.ts +52 -18
  1061. package/src/router/match-pipelines.ts +1 -42
  1062. package/src/router/match-result.ts +127 -52
  1063. package/src/router/metrics.ts +158 -47
  1064. package/src/router/middleware-types.ts +22 -120
  1065. package/src/router/middleware.ts +398 -231
  1066. package/src/router/navigation-snapshot.ts +133 -0
  1067. package/src/router/params-util.ts +23 -0
  1068. package/src/router/parse-pattern.ts +115 -0
  1069. package/src/router/pattern-matching.ts +183 -137
  1070. package/src/router/prefetch-cache-ttl.ts +51 -0
  1071. package/src/router/prefetch-limits.ts +37 -0
  1072. package/src/router/prerender-match.ts +207 -58
  1073. package/src/router/preview-match.ts +35 -103
  1074. package/src/router/request-classification.ts +291 -0
  1075. package/src/router/revalidation.ts +144 -74
  1076. package/src/router/route-snapshot.ts +256 -0
  1077. package/src/router/router-context.ts +11 -29
  1078. package/src/router/router-interfaces.ts +160 -36
  1079. package/src/router/router-options.ts +214 -22
  1080. package/src/router/router-registry.ts +2 -5
  1081. package/src/router/segment-resolution/fresh.ts +301 -78
  1082. package/src/router/segment-resolution/helpers.ts +116 -31
  1083. package/src/router/segment-resolution/loader-cache.ts +140 -39
  1084. package/src/router/segment-resolution/loader-mask.ts +67 -0
  1085. package/src/router/segment-resolution/loader-snapshot.ts +251 -0
  1086. package/src/router/segment-resolution/revalidation.ts +478 -388
  1087. package/src/router/segment-resolution/static-store.ts +19 -5
  1088. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1089. package/src/router/segment-resolution/view-transition-default.ts +56 -0
  1090. package/src/router/segment-resolution.ts +5 -1
  1091. package/src/router/segment-wrappers.ts +8 -5
  1092. package/src/router/state-cookie-name.ts +33 -0
  1093. package/src/router/substitute-pattern-params.ts +75 -0
  1094. package/src/router/telemetry-otel.ts +160 -200
  1095. package/src/router/telemetry.ts +105 -20
  1096. package/src/router/timeout.ts +0 -20
  1097. package/src/router/tracing.ts +215 -0
  1098. package/src/router/trie-matching.ts +188 -58
  1099. package/src/router/types.ts +10 -63
  1100. package/src/router/url-params.ts +57 -0
  1101. package/src/router.ts +222 -67
  1102. package/src/rsc/full-payload.ts +70 -0
  1103. package/src/rsc/handler-context.ts +3 -2
  1104. package/src/rsc/handler.ts +726 -457
  1105. package/src/rsc/helpers.ts +168 -46
  1106. package/src/rsc/index.ts +2 -5
  1107. package/src/rsc/json-route-result.ts +38 -0
  1108. package/src/rsc/loader-fetch.ts +127 -31
  1109. package/src/rsc/manifest-init.ts +33 -42
  1110. package/src/rsc/nonce.ts +10 -1
  1111. package/src/rsc/origin-guard.ts +39 -25
  1112. package/src/rsc/progressive-enhancement.ts +159 -23
  1113. package/src/rsc/redirect-guard.ts +100 -0
  1114. package/src/rsc/response-cache-serve.ts +238 -0
  1115. package/src/rsc/response-error.ts +79 -12
  1116. package/src/rsc/response-route-handler.ts +99 -189
  1117. package/src/rsc/rsc-rendering.ts +479 -104
  1118. package/src/rsc/runtime-warnings.ts +23 -10
  1119. package/src/rsc/server-action.ts +293 -115
  1120. package/src/rsc/shell-capture.ts +1158 -0
  1121. package/src/rsc/shell-serve.ts +150 -0
  1122. package/src/rsc/ssr-setup.ts +144 -0
  1123. package/src/rsc/transition-gate.ts +89 -0
  1124. package/src/rsc/types.ts +64 -6
  1125. package/src/runtime-env.ts +18 -0
  1126. package/src/search-params.ts +49 -41
  1127. package/src/segment-content-promise.ts +67 -0
  1128. package/src/segment-loader-promise.ts +167 -0
  1129. package/src/segment-system.tsx +418 -131
  1130. package/src/serialize.ts +243 -0
  1131. package/src/server/context.ts +367 -61
  1132. package/src/server/cookie-parse.ts +32 -0
  1133. package/src/server/cookie-store.ts +152 -5
  1134. package/src/server/handle-store.ts +40 -38
  1135. package/src/server/loader-registry.ts +38 -46
  1136. package/src/server/request-context.ts +576 -176
  1137. package/src/ssr/index.tsx +467 -174
  1138. package/src/ssr/inject-rsc-eager.ts +167 -0
  1139. package/src/ssr/ssr-root.tsx +228 -0
  1140. package/src/static-handler.ts +27 -18
  1141. package/src/testing/cache-status.ts +162 -0
  1142. package/src/testing/collect-handle.ts +46 -0
  1143. package/src/testing/dispatch.ts +813 -0
  1144. package/src/testing/dom.entry.ts +22 -0
  1145. package/src/testing/e2e/fixture.ts +188 -0
  1146. package/src/testing/e2e/index.ts +128 -0
  1147. package/src/testing/e2e/matchers.ts +35 -0
  1148. package/src/testing/e2e/page-helpers.ts +272 -0
  1149. package/src/testing/e2e/parity.ts +387 -0
  1150. package/src/testing/e2e/server.ts +195 -0
  1151. package/src/testing/flight-matchers.ts +97 -0
  1152. package/src/testing/flight-normalize.ts +11 -0
  1153. package/src/testing/flight-runtime.d.ts +57 -0
  1154. package/src/testing/flight-tree.ts +682 -0
  1155. package/src/testing/flight.entry.ts +52 -0
  1156. package/src/testing/flight.ts +257 -0
  1157. package/src/testing/generated-routes.ts +199 -0
  1158. package/src/testing/index.ts +105 -0
  1159. package/src/testing/internal/context.ts +371 -0
  1160. package/src/testing/internal/flight-client-globals.ts +30 -0
  1161. package/src/testing/internal/seed-vars.ts +54 -0
  1162. package/src/testing/render-handler.ts +357 -0
  1163. package/src/testing/render-route.tsx +584 -0
  1164. package/src/testing/run-loader.ts +385 -0
  1165. package/src/testing/run-middleware.ts +205 -0
  1166. package/src/testing/run-transition-when.ts +164 -0
  1167. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1168. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1169. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1170. package/src/testing/vitest-stubs/version.ts +5 -0
  1171. package/src/testing/vitest.ts +305 -0
  1172. package/src/theme/ThemeProvider.tsx +56 -84
  1173. package/src/theme/ThemeScript.tsx +7 -9
  1174. package/src/theme/constants.ts +52 -13
  1175. package/src/theme/index.ts +0 -7
  1176. package/src/theme/theme-context.ts +1 -5
  1177. package/src/theme/theme-script.ts +22 -21
  1178. package/src/theme/use-theme.ts +0 -3
  1179. package/src/types/boundaries.ts +0 -35
  1180. package/src/types/cache-types.ts +17 -8
  1181. package/src/types/error-types.ts +30 -90
  1182. package/src/types/global-namespace.ts +54 -41
  1183. package/src/types/handler-context.ts +237 -89
  1184. package/src/types/index.ts +3 -10
  1185. package/src/types/loader-types.ts +44 -15
  1186. package/src/types/request-scope.ts +112 -0
  1187. package/src/types/route-config.ts +23 -46
  1188. package/src/types/route-entry.ts +19 -7
  1189. package/src/types/segments.ts +137 -19
  1190. package/src/urls/include-helper.ts +40 -75
  1191. package/src/urls/include-provider.ts +71 -0
  1192. package/src/urls/index.ts +2 -11
  1193. package/src/urls/path-helper-types.ts +102 -23
  1194. package/src/urls/path-helper.ts +62 -111
  1195. package/src/urls/pattern-types.ts +84 -19
  1196. package/src/urls/response-types.ts +25 -22
  1197. package/src/urls/type-extraction.ts +98 -154
  1198. package/src/urls/urls-function.ts +1 -19
  1199. package/src/use-loader.tsx +346 -89
  1200. package/src/vercel/index.ts +11 -0
  1201. package/src/vercel/tracing.ts +88 -0
  1202. package/src/vite/debug.ts +185 -0
  1203. package/src/vite/discovery/bundle-postprocess.ts +36 -38
  1204. package/src/vite/discovery/dev-prerender-cache.ts +117 -0
  1205. package/src/vite/discovery/discover-routers.ts +130 -85
  1206. package/src/vite/discovery/discovery-errors.ts +255 -0
  1207. package/src/vite/discovery/gate-state.ts +171 -0
  1208. package/src/vite/discovery/prerender-collection.ts +214 -132
  1209. package/src/vite/discovery/route-types-writer.ts +40 -84
  1210. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  1211. package/src/vite/discovery/state.ts +57 -6
  1212. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  1213. package/src/vite/index.ts +19 -3
  1214. package/src/vite/inject-client-debug.ts +88 -0
  1215. package/src/vite/plugin-types.ts +234 -62
  1216. package/src/vite/plugins/cjs-to-esm.ts +16 -19
  1217. package/src/vite/plugins/client-ref-dedup.ts +16 -11
  1218. package/src/vite/plugins/client-ref-hashing.ts +28 -15
  1219. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1220. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1221. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  1222. package/src/vite/plugins/expose-action-id.ts +49 -98
  1223. package/src/vite/plugins/expose-id-utils.ts +96 -51
  1224. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  1225. package/src/vite/plugins/expose-ids/handler-transform.ts +15 -64
  1226. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  1227. package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
  1228. package/src/vite/plugins/expose-internal-ids.ts +553 -317
  1229. package/src/vite/plugins/performance-tracks.ts +89 -0
  1230. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1231. package/src/vite/plugins/use-cache-transform.ts +73 -83
  1232. package/src/vite/plugins/vercel-output.ts +384 -0
  1233. package/src/vite/plugins/version-injector.ts +40 -29
  1234. package/src/vite/plugins/version-plugin.ts +46 -37
  1235. package/src/vite/plugins/virtual-entries.ts +138 -27
  1236. package/src/vite/rango.ts +353 -303
  1237. package/src/vite/router-discovery.ts +1090 -166
  1238. package/src/vite/utils/ast-handler-extract.ts +26 -35
  1239. package/src/vite/utils/banner.ts +4 -4
  1240. package/src/vite/utils/bundle-analysis.ts +10 -15
  1241. package/src/vite/utils/client-chunks.ts +184 -0
  1242. package/src/vite/utils/directive-prologue.ts +40 -0
  1243. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1244. package/src/vite/utils/manifest-utils.ts +4 -59
  1245. package/src/vite/utils/package-resolution.ts +20 -52
  1246. package/src/vite/utils/prerender-utils.ts +98 -38
  1247. package/src/vite/utils/shared-utils.ts +144 -44
  1248. package/src/browser/action-response-classifier.ts +0 -99
  1249. package/src/browser/shallow.ts +0 -40
  1250. package/src/router/middleware-cookies.ts +0 -55
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Integrated PPR shell serving (Axis 2, see docs/design/ppr-shell-resume.md).
3
+ *
4
+ * PPR is opt-in per PAGE ROUTE via the `ppr` path option
5
+ * (`path(pattern, Handler, { name, ppr: true | PartialPrerenderProps })`) and the
6
+ * serving logic is INTEGRAL to the render pipeline — there is no middleware to
7
+ * mount. This module owns the config/key/store plumbing the render layer
8
+ * (rsc-rendering.ts) uses at its COMMIT POINT, which sits after the WHOLE
9
+ * middleware chain (global `router.use()` chain AND route DSL `middleware()`,
10
+ * both of which wrap the render pass): any middleware rejection/redirect wins
11
+ * before a single shell byte is written.
12
+ *
13
+ * The shell store is the app-level `createRouter({ cache })` store
14
+ * (`requestCtx._cacheStore`). A store without the `getShell`/`putShell` family
15
+ * degrades a ppr route to axis 1 with a once-per-key warning (the declared
16
+ * intent cannot be honored — unlike an undeclared route, which is silent).
17
+ */
18
+
19
+ import React from "react";
20
+ import type { EntryData } from "../server/context.js";
21
+ import { sortedSearchString } from "../cache/cache-key-utils.js";
22
+ import type { ShellCacheEntry, SegmentCacheStore } from "../cache/types.js";
23
+
24
+ /** Debug/status header the browser (and e2e assertions) can read: HIT | MISS. */
25
+ export const SHELL_STATUS_HEADER = "x-rango-shell";
26
+
27
+ /**
28
+ * Default shell ttl (seconds) for `ppr: true` and for a PartialPrerenderProps
29
+ * that omits `ttl`.
30
+ */
31
+ export const DEFAULT_PPR_TTL_SECONDS = 300;
32
+
33
+ /** The route's ppr option normalized to a concrete policy. */
34
+ export interface ResolvedPprConfig {
35
+ ttl: number;
36
+ swr?: number;
37
+ tags?: string[];
38
+ }
39
+
40
+ /**
41
+ * Normalize the matched page route's `ppr` path option. Returns null when the
42
+ * route does not declare `ppr` (or declares `ppr: false`) — the caller then does
43
+ * NOTHING: no store read, no capture, no logs. Pure axis 1, zero cost.
44
+ *
45
+ * PPR is a DOCUMENT-level property of the page route; there is no subtree
46
+ * inheritance (declaring it on a layout is not supported — a follow-up).
47
+ */
48
+ export function resolvePprConfig(
49
+ entry: EntryData | undefined | null,
50
+ ): ResolvedPprConfig | null {
51
+ if (!entry || entry.type !== "route") return null;
52
+ const ppr = entry.ppr;
53
+ if (ppr === undefined || ppr === false) return null;
54
+ if (ppr === true) return { ttl: DEFAULT_PPR_TTL_SECONDS };
55
+ return {
56
+ ttl: ppr.ttl ?? DEFAULT_PPR_TTL_SECONDS,
57
+ swr: ppr.swr,
58
+ tags: ppr.tags,
59
+ };
60
+ }
61
+
62
+ /**
63
+ * Shell cache key: host + pathname + sorted search + a `:shell` namespace suffix
64
+ * (so it can never collide with a document-cache key; the store further isolates
65
+ * the shell family internally).
66
+ *
67
+ * The key includes the request HOST: in a multi-tenant host-router deployment
68
+ * (one worker, one shared KV/runtime-cache store) a host-less key would serve
69
+ * tenant A's captured shell to tenant B's users.
70
+ */
71
+ export function buildShellKey(url: URL): string {
72
+ const sorted = sortedSearchString(url.searchParams);
73
+ const searchSuffix = sorted ? `?${sorted}` : "";
74
+ return `${url.host}${url.pathname}${searchSuffix}:shell`;
75
+ }
76
+
77
+ /**
78
+ * React version captured at prerender time is the invalidation gate: a stored
79
+ * shell whose reactVersion differs from the running React cannot be resumed (the
80
+ * postponed blob is build-coupled), so it is treated as a miss — the recapture
81
+ * overwrites the same key and the entry otherwise ages out via TTL.
82
+ */
83
+ export function isValidShellHit(entry: ShellCacheEntry): boolean {
84
+ return entry.reactVersion === React.version;
85
+ }
86
+
87
+ /** Decode a base64 prelude back into bytes for stream composition. */
88
+ export function base64ToBytes(b64: string): Uint8Array {
89
+ const binary = atob(b64);
90
+ const bytes = new Uint8Array(binary.length);
91
+ for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);
92
+ return bytes;
93
+ }
94
+
95
+ /** True when the store implements the shell entry family. */
96
+ export function hasShellFamily(
97
+ store: SegmentCacheStore | undefined,
98
+ ): store is SegmentCacheStore & {
99
+ getShell: NonNullable<SegmentCacheStore["getShell"]>;
100
+ putShell: NonNullable<SegmentCacheStore["putShell"]>;
101
+ } {
102
+ return !!store?.getShell && !!store?.putShell;
103
+ }
104
+
105
+ /** Keys already warned about a missing shell store family (once per key). */
106
+ const warnedMissingStore = new Set<string>();
107
+
108
+ /**
109
+ * Warn once per key that a route declared `ppr` but the app-level cache store
110
+ * does not implement the shell family (getShell/putShell), so the route stays on
111
+ * axis 1. Unlike an undeclared route (silent), a declared route that cannot be
112
+ * honored deserves a diagnostic.
113
+ */
114
+ export function warnShellStoreMissingOnce(key: string): void {
115
+ if (warnedMissingStore.has(key)) return;
116
+ warnedMissingStore.add(key);
117
+ console.warn(
118
+ `[rango] Route for "${key}" declares the ppr path option, but the app-level ` +
119
+ "cache store does not implement the shell family (getShell/putShell), so " +
120
+ "the route is served on axis 1 without a shell. Use MemorySegmentCacheStore, " +
121
+ "CFCacheStore, or VercelCacheStore (or add the family to your custom store) " +
122
+ "via createRouter({ cache }).",
123
+ );
124
+ }
125
+
126
+ /** Keys already warned about an active per-request nonce (once per key). */
127
+ const warnedNonceActive = new Set<string>();
128
+
129
+ /**
130
+ * Warn once per key that a route declared `ppr` but a per-request CSP nonce is
131
+ * active for the request, so the route stays on axis 1 (a shared shell would
132
+ * freeze one request's nonce for every visitor — useNonce() renders it into every
133
+ * nonced script/style/meta and the browser's CSP would then reject the frozen
134
+ * nonce for all but the capture request). The nonce blocks capture whether it came
135
+ * from the `createRouter({ nonce })` provider or from a direct `ctx.set(nonce, …)`
136
+ * token write in middleware. Same declared-intent-cannot-be-honored doctrine as
137
+ * the missing-store warning above (an undeclared route stays silent).
138
+ */
139
+ export function warnPprNonceActiveOnce(key: string): void {
140
+ if (warnedNonceActive.has(key)) return;
141
+ warnedNonceActive.add(key);
142
+ console.warn(
143
+ `[rango] Route for "${key}" declares the ppr path option, but a per-request ` +
144
+ "CSP nonce is active for this request (from createRouter({ nonce }) or a " +
145
+ "ctx.set(nonce, …) token write in middleware), so the route is served on " +
146
+ "axis 1 without a shell. A shell is shared per host+URL; baking one " +
147
+ "request's nonce into it would break CSP for every other visitor. Drop the " +
148
+ "ppr option on this route, or stop setting a per-request nonce for it.",
149
+ );
150
+ }
@@ -0,0 +1,144 @@
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
+ }
129
+
130
+ // Final render-time decision: is the response an RSC stream (vs HTML)? Distinct
131
+ // from mayNeedSSR, which is a conservative pre-classifier (it treats a missing
132
+ // Accept header as needing SSR; this treats it as RSC).
133
+ export function isRscRequest(
134
+ request: Request,
135
+ url: URL,
136
+ isPartial: boolean,
137
+ ): boolean {
138
+ return (
139
+ isPartial ||
140
+ (!request.headers.get("accept")?.includes("text/html") &&
141
+ !url.searchParams.has("__html")) ||
142
+ url.searchParams.has("__rsc")
143
+ );
144
+ }
@@ -0,0 +1,89 @@
1
+ import type { MatchResult } from "../types.js";
2
+ import type { TransitionWhenContext } from "../types/segments.js";
3
+ import type { getRequestContext } from "../server/request-context.js";
4
+ import { invokeOnError } from "../router/error-handling.js";
5
+ import type { OnErrorCallback } from "../types/error-types.js";
6
+
7
+ /**
8
+ * Apply transition({ when }) gates to a payload's segments.
9
+ *
10
+ * The predicates were collected during resolution (keyed by segment id) and
11
+ * stripped from the serialized config; here — after handlers ran and outside any
12
+ * cache scope — we evaluate each and drop the segment's transition when the
13
+ * predicate does not hold, so the navigation streams its loading fallback
14
+ * instead of holding the previous content. A predicate that throws is reported
15
+ * to the router's onError (phase "rendering") and then treated as "do not hold"
16
+ * (conservative), so a buggy predicate degrades to no transition rather than
17
+ * failing the response.
18
+ *
19
+ * Mutating the segments here is safe: the segment cache stores a serialized copy
20
+ * (segment-codec), written during match() BEFORE this gate runs, so dropping a
21
+ * transition never corrupts a cache entry. The flip side is that a cache hit
22
+ * skips resolution, collects no predicate, and replays the cached transition
23
+ * as-is (it was serialized before the gate) — combining transition({ when })
24
+ * with cache() on the same segment freezes the gate to its cached state, so
25
+ * avoid caching a route whose transition decision is request-dependent.
26
+ *
27
+ * Returns the same array (mutated) for inline use at the payload's `segments`
28
+ * field.
29
+ */
30
+ export function gateTransitions(
31
+ segments: MatchResult["segments"],
32
+ ctx: ReturnType<typeof getRequestContext>,
33
+ onError?: OnErrorCallback,
34
+ ): MatchResult["segments"] {
35
+ const predicates = ctx._transitionWhen;
36
+ if (predicates && predicates.length) {
37
+ for (const { id, when } of predicates) {
38
+ let drop: boolean;
39
+ try {
40
+ // Assemble the ShouldRevalidateFn-shaped predicate context from the
41
+ // request context. Source fields (currentUrl/currentParams/fromRouteName)
42
+ // were stashed at match time from the navigation snapshot; action fields
43
+ // at the action-bearing gate call sites. nextUrl/nextParams/toRouteName/
44
+ // method/get/env come straight off ctx (setRequestContextParams ran
45
+ // before the gate). Source/action fields are undefined when absent —
46
+ // never fabricated (see TransitionWhenContext).
47
+ const whenCtx: TransitionWhenContext = {
48
+ currentUrl: ctx._gateCurrentUrl,
49
+ currentParams: ctx._gateCurrentParams,
50
+ fromRouteName:
51
+ ctx._prevRouteKey as TransitionWhenContext["fromRouteName"],
52
+ nextUrl: ctx.url,
53
+ nextParams: ctx.params,
54
+ toRouteName: ctx.routeName,
55
+ actionId: ctx._gateActionId,
56
+ actionUrl: ctx._gateActionUrl,
57
+ actionResult: ctx._gateActionResult,
58
+ formData: ctx._gateFormData,
59
+ method: ctx.request.method,
60
+ get: ctx.get,
61
+ env: ctx.env,
62
+ };
63
+ drop = when(whenCtx) === false;
64
+ } catch (error) {
65
+ // A throwing predicate must not fail the response: report it and treat
66
+ // the transition as gated off (do not hold). invokeOnError no-ops when
67
+ // onError is undefined.
68
+ drop = true;
69
+ invokeOnError(
70
+ onError,
71
+ error,
72
+ "rendering",
73
+ {
74
+ request: ctx.request,
75
+ url: ctx.url,
76
+ params: ctx.params,
77
+ segmentId: id,
78
+ },
79
+ "RSC",
80
+ );
81
+ }
82
+ if (drop) {
83
+ const seg = segments.find((s) => s.id === id);
84
+ if (seg) seg.transition = undefined;
85
+ }
86
+ }
87
+ }
88
+ return segments;
89
+ }
package/src/rsc/types.ts CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  import type { ResolvedSegment, SlotState } from "../types.js";
9
9
  import type { HandleData } from "../server/handle-store.js";
10
- import type { RSCRouterInternal } from "../router/router-interfaces.js";
10
+ import type { RangoInternal } from "../router/router-interfaces.js";
11
11
  import type { ResolvedThemeConfig, Theme } from "../theme/types.js";
12
12
 
13
13
  /**
@@ -19,10 +19,19 @@ export interface RscPayload {
19
19
  metadata?: {
20
20
  pathname: string;
21
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;
22
25
  isPartial?: boolean;
23
26
  isError?: boolean;
24
27
  matched?: string[];
25
28
  diff?: string[];
29
+ /**
30
+ * All segment ids re-resolved on the server, including null-component
31
+ * ones excluded from `segments`/`diff`. Drives client-side handle-bucket
32
+ * cleanup. Superset of `diff`. See MatchResult.resolvedIds.
33
+ */
34
+ resolvedIds?: string[];
26
35
  /** Merged route params from the matched route */
27
36
  params?: Record<string, string>;
28
37
  slots?: Record<string, SlotState>;
@@ -32,19 +41,39 @@ export interface RscPayload {
32
41
  handles?: AsyncGenerator<HandleData, void, unknown>;
33
42
  /** RSC version string for cache invalidation */
34
43
  version?: string;
44
+ /** TTL in milliseconds for the client-side in-memory prefetch cache */
45
+ prefetchCacheTTL?: number;
46
+ /** Max entries in the client-side in-memory prefetch cache (FIFO eviction) */
47
+ prefetchCacheSize?: number;
48
+ /** Max concurrent speculative prefetch requests on the client */
49
+ prefetchConcurrency?: number;
50
+ /** Server-resolved rango state cookie name; the client reads it verbatim. */
51
+ stateCookieName?: string;
35
52
  /** Theme configuration for FOUC prevention */
36
53
  themeConfig?: ResolvedThemeConfig | null;
37
54
  /** Initial theme from cookie (for SSR hydration) */
38
55
  initialTheme?: Theme;
56
+ /** URL prefix for all routes (from createRouter({ basename })). */
57
+ basename?: string;
39
58
  /** Whether connection warmup is enabled */
40
59
  warmupEnabled?: boolean;
41
- /** Server-side redirect with optional state (for partial requests) */
42
- redirect?: { url: string };
60
+ /**
61
+ * Whether the client should hydrate inside React.StrictMode. Carried on
62
+ * the initial full-render payload only; the browser entry reads it once at
63
+ * hydration. Absent on partial (navigation) payloads. Defaults to true on
64
+ * the client when omitted.
65
+ */
66
+ strictMode?: boolean;
67
+ /**
68
+ * Server-side redirect with optional state (for partial requests).
69
+ * `external: true` (from redirect(url, { external: true })) tells the client
70
+ * to hard-navigate to an off-host target instead of validating same-origin.
71
+ */
72
+ redirect?: { url: string; external?: boolean };
43
73
  /** Server-set location state to include in history.pushState */
44
74
  locationState?: Record<string, unknown>;
45
75
  };
46
76
  returnValue?: { ok: boolean; data: unknown };
47
- formState?: unknown;
48
77
  }
49
78
 
50
79
  /**
@@ -61,7 +90,10 @@ export interface RSCDependencies {
61
90
  */
62
91
  renderToReadableStream: <T>(
63
92
  payload: T,
64
- options?: { temporaryReferences?: unknown },
93
+ options?: {
94
+ temporaryReferences?: unknown;
95
+ onError?: (error: unknown) => string | void;
96
+ },
65
97
  ) => ReadableStream<Uint8Array>;
66
98
 
67
99
  /**
@@ -132,6 +164,32 @@ export interface SSRModule {
132
164
  rscStream: ReadableStream<Uint8Array>,
133
165
  options?: SSRRenderOptions,
134
166
  ) => Promise<ReadableStream<Uint8Array>>;
167
+
168
+ /**
169
+ * PPR shell CAPTURE strategy (Axis 2). Prerenders the loader-masked shell over
170
+ * the Flight stream, aborts once quiescent, and returns the prelude bytes plus
171
+ * the postponed resume state — or null when the prelude degraded and must not
172
+ * be stored. Present only when the SSR virtual entry wires
173
+ * createShellCaptureHandler; the render layer feature-detects it. See
174
+ * docs/design/ppr-shell-resume.md.
175
+ */
176
+ captureShellHTML?: (
177
+ rscStream: ReadableStream<Uint8Array>,
178
+ options: { quiesce: Promise<void>; maxWaitMs?: number },
179
+ ) => Promise<{ prelude: Uint8Array; postponed: string | null } | null>;
180
+
181
+ /**
182
+ * PPR shell RESUME strategy (Axis 2). Produces the per-request live portion of
183
+ * the document: resumes fizz over a fresh SsrRoot to emit only the postponed
184
+ * holes (or, for the DATA variant with postponed === null, just the fresh Flight
185
+ * payload scripts). The caller prepends the stored prelude bytes to form the
186
+ * composite response. Present only when the SSR virtual entry wires
187
+ * createShellResumeHandler; the render layer feature-detects it.
188
+ */
189
+ resumeShellHTML?: (
190
+ rscStream: ReadableStream<Uint8Array>,
191
+ options: { postponed: string | null; nonce?: string },
192
+ ) => Promise<ReadableStream<Uint8Array>>;
135
193
  }
136
194
 
137
195
  /**
@@ -169,7 +227,7 @@ export interface CreateRSCHandlerOptions<
169
227
  /**
170
228
  * The RSC router instance
171
229
  */
172
- router: RSCRouterInternal<TEnv, TRoutes>;
230
+ router: RangoInternal<TEnv, TRoutes>;
173
231
 
174
232
  /**
175
233
  * RSC dependencies from @vitejs/plugin-rsc/rsc.
@@ -0,0 +1,18 @@
1
+ // Runtime-safe detection of a test runner (Vitest), used to decide whether a
2
+ // create*() call with no plugin-injected $$id may fall back to a synthetic id (a
3
+ // bare test) or must fail loud (dev / a real build).
4
+ //
5
+ // `process` is absent in some target runtimes (the browser, certain edge/worker
6
+ // RSC environments), so probe it through `globalThis` with optional chaining —
7
+ // NEVER a bare `process.env.VITEST`, which would ReferenceError before the
8
+ // intended error is thrown. Unlike `process.env.NODE_ENV` (folded by the app's
9
+ // build `define`), `VITEST` is not folded, so this stays a small runtime check;
10
+ // it lives only on the create*() error path (id missing), which never runs in a
11
+ // correct production build.
12
+ //
13
+ // Vitest sets `VITEST` in every test process — the node project and the
14
+ // react-server forks alike (the RSC project forces NODE_ENV=production, so NODE_ENV
15
+ // cannot distinguish it from a real build; `VITEST` can). A real build never sets it.
16
+ export function isUnderTestRunner(): boolean {
17
+ return !!globalThis.process?.env?.VITEST;
18
+ }