@rangojs/router 0.4.1 → 0.4.2

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 (827) hide show
  1. package/dist/__internal.d.ts +83 -0
  2. package/dist/__internal.d.ts.map +1 -0
  3. package/dist/__internal.js +19 -0
  4. package/dist/__internal.js.map +1 -0
  5. package/dist/__mocks__/version.d.ts +7 -0
  6. package/dist/__mocks__/version.d.ts.map +1 -0
  7. package/dist/__mocks__/version.js +7 -0
  8. package/dist/__mocks__/version.js.map +1 -0
  9. package/dist/__tests__/client-href.test.d.ts +2 -0
  10. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  11. package/dist/__tests__/client-href.test.js +74 -0
  12. package/dist/__tests__/client-href.test.js.map +1 -0
  13. package/dist/__tests__/component-utils.test.d.ts +2 -0
  14. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  15. package/dist/__tests__/component-utils.test.js +51 -0
  16. package/dist/__tests__/component-utils.test.js.map +1 -0
  17. package/dist/__tests__/event-controller.test.d.ts +2 -0
  18. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  19. package/dist/__tests__/event-controller.test.js +538 -0
  20. package/dist/__tests__/event-controller.test.js.map +1 -0
  21. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  22. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.js +374 -0
  24. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  25. package/dist/__tests__/match-result.test.d.ts +2 -0
  26. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  27. package/dist/__tests__/match-result.test.js +154 -0
  28. package/dist/__tests__/match-result.test.js.map +1 -0
  29. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  30. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  31. package/dist/__tests__/navigation-store.test.js +440 -0
  32. package/dist/__tests__/navigation-store.test.js.map +1 -0
  33. package/dist/__tests__/partial-update.test.d.ts +2 -0
  34. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  35. package/dist/__tests__/partial-update.test.js +1009 -0
  36. package/dist/__tests__/partial-update.test.js.map +1 -0
  37. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  38. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  39. package/dist/__tests__/reverse-types.test.js +656 -0
  40. package/dist/__tests__/reverse-types.test.js.map +1 -0
  41. package/dist/__tests__/route-definition.test.d.ts +2 -0
  42. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  43. package/dist/__tests__/route-definition.test.js +55 -0
  44. package/dist/__tests__/route-definition.test.js.map +1 -0
  45. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  46. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  47. package/dist/__tests__/router-helpers.test.js +377 -0
  48. package/dist/__tests__/router-helpers.test.js.map +1 -0
  49. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  50. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.js +426 -0
  52. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  53. package/dist/__tests__/router-integration.test.d.ts +2 -0
  54. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  55. package/dist/__tests__/router-integration.test.js +1051 -0
  56. package/dist/__tests__/router-integration.test.js.map +1 -0
  57. package/dist/__tests__/search-params.test.d.ts +5 -0
  58. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  59. package/dist/__tests__/search-params.test.js +306 -0
  60. package/dist/__tests__/search-params.test.js.map +1 -0
  61. package/dist/__tests__/segment-system.test.d.ts +2 -0
  62. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  63. package/dist/__tests__/segment-system.test.js +627 -0
  64. package/dist/__tests__/segment-system.test.js.map +1 -0
  65. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  66. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.js +63 -0
  68. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  69. package/dist/__tests__/urls.test.d.ts +2 -0
  70. package/dist/__tests__/urls.test.d.ts.map +1 -0
  71. package/dist/__tests__/urls.test.js +421 -0
  72. package/dist/__tests__/urls.test.js.map +1 -0
  73. package/dist/__tests__/use-mount.test.d.ts +2 -0
  74. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  75. package/dist/__tests__/use-mount.test.js +35 -0
  76. package/dist/__tests__/use-mount.test.js.map +1 -0
  77. package/dist/bin/rango.d.ts +2 -0
  78. package/dist/bin/rango.d.ts.map +1 -0
  79. package/dist/bin/rango.js.map +1 -0
  80. package/dist/browser/event-controller.d.ts +191 -0
  81. package/dist/browser/event-controller.d.ts.map +1 -0
  82. package/dist/browser/event-controller.js +559 -0
  83. package/dist/browser/event-controller.js.map +1 -0
  84. package/dist/browser/index.d.ts +2 -0
  85. package/dist/browser/index.d.ts.map +1 -0
  86. package/dist/browser/index.js +14 -0
  87. package/dist/browser/index.js.map +1 -0
  88. package/dist/browser/link-interceptor.d.ts +38 -0
  89. package/dist/browser/link-interceptor.d.ts.map +1 -0
  90. package/dist/browser/link-interceptor.js +99 -0
  91. package/dist/browser/link-interceptor.js.map +1 -0
  92. package/dist/browser/logging.d.ts +10 -0
  93. package/dist/browser/logging.d.ts.map +1 -0
  94. package/dist/browser/logging.js +29 -0
  95. package/dist/browser/logging.js.map +1 -0
  96. package/dist/browser/lru-cache.d.ts +17 -0
  97. package/dist/browser/lru-cache.d.ts.map +1 -0
  98. package/dist/browser/lru-cache.js +50 -0
  99. package/dist/browser/lru-cache.js.map +1 -0
  100. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  101. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  102. package/dist/browser/merge-segment-loaders.js +102 -0
  103. package/dist/browser/merge-segment-loaders.js.map +1 -0
  104. package/dist/browser/navigation-bridge.d.ts +102 -0
  105. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  106. package/dist/browser/navigation-bridge.js +708 -0
  107. package/dist/browser/navigation-bridge.js.map +1 -0
  108. package/dist/browser/navigation-client.d.ts +25 -0
  109. package/dist/browser/navigation-client.d.ts.map +1 -0
  110. package/dist/browser/navigation-client.js +157 -0
  111. package/dist/browser/navigation-client.js.map +1 -0
  112. package/dist/browser/navigation-store.d.ts +101 -0
  113. package/dist/browser/navigation-store.d.ts.map +1 -0
  114. package/dist/browser/navigation-store.js +625 -0
  115. package/dist/browser/navigation-store.js.map +1 -0
  116. package/dist/browser/partial-update.d.ts +75 -0
  117. package/dist/browser/partial-update.d.ts.map +1 -0
  118. package/dist/browser/partial-update.js +426 -0
  119. package/dist/browser/partial-update.js.map +1 -0
  120. package/dist/browser/react/Link.d.ts +86 -0
  121. package/dist/browser/react/Link.d.ts.map +1 -0
  122. package/dist/browser/react/Link.js +128 -0
  123. package/dist/browser/react/Link.js.map +1 -0
  124. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  125. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  126. package/dist/browser/react/NavigationProvider.js +216 -0
  127. package/dist/browser/react/NavigationProvider.js.map +1 -0
  128. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  129. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  130. package/dist/browser/react/ScrollRestoration.js +57 -0
  131. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  132. package/dist/browser/react/context.d.ts +46 -0
  133. package/dist/browser/react/context.d.ts.map +1 -0
  134. package/dist/browser/react/context.js +10 -0
  135. package/dist/browser/react/context.js.map +1 -0
  136. package/dist/browser/react/index.d.ts +11 -0
  137. package/dist/browser/react/index.d.ts.map +1 -0
  138. package/dist/browser/react/index.js +22 -0
  139. package/dist/browser/react/index.js.map +1 -0
  140. package/dist/browser/react/location-state-shared.d.ts +63 -0
  141. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  142. package/dist/browser/react/location-state-shared.js +81 -0
  143. package/dist/browser/react/location-state-shared.js.map +1 -0
  144. package/dist/browser/react/location-state.d.ts +23 -0
  145. package/dist/browser/react/location-state.d.ts.map +1 -0
  146. package/dist/browser/react/location-state.js +29 -0
  147. package/dist/browser/react/location-state.js.map +1 -0
  148. package/dist/browser/react/mount-context.d.ts +24 -0
  149. package/dist/browser/react/mount-context.d.ts.map +1 -0
  150. package/dist/browser/react/mount-context.js +24 -0
  151. package/dist/browser/react/mount-context.js.map +1 -0
  152. package/dist/browser/react/use-action.d.ts +64 -0
  153. package/dist/browser/react/use-action.d.ts.map +1 -0
  154. package/dist/browser/react/use-action.js +134 -0
  155. package/dist/browser/react/use-action.js.map +1 -0
  156. package/dist/browser/react/use-client-cache.d.ts +41 -0
  157. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  158. package/dist/browser/react/use-client-cache.js +39 -0
  159. package/dist/browser/react/use-client-cache.js.map +1 -0
  160. package/dist/browser/react/use-handle.d.ts +31 -0
  161. package/dist/browser/react/use-handle.d.ts.map +1 -0
  162. package/dist/browser/react/use-handle.js +144 -0
  163. package/dist/browser/react/use-handle.js.map +1 -0
  164. package/dist/browser/react/use-href.d.ts +33 -0
  165. package/dist/browser/react/use-href.d.ts.map +1 -0
  166. package/dist/browser/react/use-href.js +39 -0
  167. package/dist/browser/react/use-href.js.map +1 -0
  168. package/dist/browser/react/use-link-status.d.ts +37 -0
  169. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  170. package/dist/browser/react/use-link-status.js +99 -0
  171. package/dist/browser/react/use-link-status.js.map +1 -0
  172. package/dist/browser/react/use-mount.d.ts +25 -0
  173. package/dist/browser/react/use-mount.d.ts.map +1 -0
  174. package/dist/browser/react/use-mount.js +30 -0
  175. package/dist/browser/react/use-mount.js.map +1 -0
  176. package/dist/browser/react/use-navigation.d.ts +27 -0
  177. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  178. package/dist/browser/react/use-navigation.js +87 -0
  179. package/dist/browser/react/use-navigation.js.map +1 -0
  180. package/dist/browser/react/use-segments.d.ts +38 -0
  181. package/dist/browser/react/use-segments.d.ts.map +1 -0
  182. package/dist/browser/react/use-segments.js +130 -0
  183. package/dist/browser/react/use-segments.js.map +1 -0
  184. package/dist/browser/request-controller.d.ts +26 -0
  185. package/dist/browser/request-controller.d.ts.map +1 -0
  186. package/dist/browser/request-controller.js +147 -0
  187. package/dist/browser/request-controller.js.map +1 -0
  188. package/dist/browser/rsc-router.d.ts +129 -0
  189. package/dist/browser/rsc-router.d.ts.map +1 -0
  190. package/dist/browser/rsc-router.js +195 -0
  191. package/dist/browser/rsc-router.js.map +1 -0
  192. package/dist/browser/scroll-restoration.d.ts +93 -0
  193. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  194. package/dist/browser/scroll-restoration.js +321 -0
  195. package/dist/browser/scroll-restoration.js.map +1 -0
  196. package/dist/browser/segment-structure-assert.d.ts +17 -0
  197. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  198. package/dist/browser/segment-structure-assert.js +59 -0
  199. package/dist/browser/segment-structure-assert.js.map +1 -0
  200. package/dist/browser/server-action-bridge.d.ts +26 -0
  201. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  202. package/dist/browser/server-action-bridge.js +668 -0
  203. package/dist/browser/server-action-bridge.js.map +1 -0
  204. package/dist/browser/shallow.d.ts +12 -0
  205. package/dist/browser/shallow.d.ts.map +1 -0
  206. package/dist/browser/shallow.js +34 -0
  207. package/dist/browser/shallow.js.map +1 -0
  208. package/dist/browser/types.d.ts +369 -0
  209. package/dist/browser/types.d.ts.map +1 -0
  210. package/dist/browser/types.js +2 -0
  211. package/dist/browser/types.js.map +1 -0
  212. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  213. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  214. package/dist/build/__tests__/generate-cli.test.js +237 -0
  215. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  216. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  217. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  218. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  219. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  220. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  221. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  222. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  223. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  224. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  225. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  226. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  227. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  228. package/dist/build/generate-manifest.d.ts +81 -0
  229. package/dist/build/generate-manifest.d.ts.map +1 -0
  230. package/dist/build/generate-manifest.js +276 -0
  231. package/dist/build/generate-manifest.js.map +1 -0
  232. package/dist/build/generate-route-types.d.ts +115 -0
  233. package/dist/build/generate-route-types.d.ts.map +1 -0
  234. package/dist/build/generate-route-types.js +740 -0
  235. package/dist/build/generate-route-types.js.map +1 -0
  236. package/dist/build/index.d.ts +21 -0
  237. package/dist/build/index.d.ts.map +1 -0
  238. package/dist/build/index.js +21 -0
  239. package/dist/build/index.js.map +1 -0
  240. package/dist/build/route-trie.d.ts +71 -0
  241. package/dist/build/route-trie.d.ts.map +1 -0
  242. package/dist/build/route-trie.js +175 -0
  243. package/dist/build/route-trie.js.map +1 -0
  244. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  245. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  246. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  247. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  248. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  249. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  250. package/dist/cache/__tests__/document-cache.test.js +345 -0
  251. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  252. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  253. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  254. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  256. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  257. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  258. package/dist/cache/__tests__/memory-store.test.js +367 -0
  259. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  260. package/dist/cache/cache-scope.d.ts +102 -0
  261. package/dist/cache/cache-scope.d.ts.map +1 -0
  262. package/dist/cache/cache-scope.js +440 -0
  263. package/dist/cache/cache-scope.js.map +1 -0
  264. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  265. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  266. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  268. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  269. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  270. package/dist/cache/cf/cf-cache-store.js +242 -0
  271. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  272. package/dist/cache/cf/index.d.ts +14 -0
  273. package/dist/cache/cf/index.d.ts.map +1 -0
  274. package/dist/cache/cf/index.js +17 -0
  275. package/dist/cache/cf/index.js.map +1 -0
  276. package/dist/cache/document-cache.d.ts +64 -0
  277. package/dist/cache/document-cache.d.ts.map +1 -0
  278. package/dist/cache/document-cache.js +228 -0
  279. package/dist/cache/document-cache.js.map +1 -0
  280. package/dist/cache/index.d.ts +19 -0
  281. package/dist/cache/index.d.ts.map +1 -0
  282. package/dist/cache/index.js +21 -0
  283. package/dist/cache/index.js.map +1 -0
  284. package/dist/cache/memory-segment-store.d.ts +110 -0
  285. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  286. package/dist/cache/memory-segment-store.js +117 -0
  287. package/dist/cache/memory-segment-store.js.map +1 -0
  288. package/dist/cache/memory-store.d.ts +41 -0
  289. package/dist/cache/memory-store.d.ts.map +1 -0
  290. package/dist/cache/memory-store.js +191 -0
  291. package/dist/cache/memory-store.js.map +1 -0
  292. package/dist/cache/types.d.ts +317 -0
  293. package/dist/cache/types.d.ts.map +1 -0
  294. package/dist/cache/types.js +12 -0
  295. package/dist/cache/types.js.map +1 -0
  296. package/dist/client.d.ts +248 -0
  297. package/dist/client.d.ts.map +1 -0
  298. package/dist/client.js +367 -0
  299. package/dist/client.js.map +1 -0
  300. package/dist/client.rsc.d.ts +26 -0
  301. package/dist/client.rsc.d.ts.map +1 -0
  302. package/dist/client.rsc.js +46 -0
  303. package/dist/client.rsc.js.map +1 -0
  304. package/dist/component-utils.d.ts +36 -0
  305. package/dist/component-utils.d.ts.map +1 -0
  306. package/dist/component-utils.js +61 -0
  307. package/dist/component-utils.js.map +1 -0
  308. package/dist/components/DefaultDocument.d.ts +13 -0
  309. package/dist/components/DefaultDocument.d.ts.map +1 -0
  310. package/dist/components/DefaultDocument.js +15 -0
  311. package/dist/components/DefaultDocument.js.map +1 -0
  312. package/dist/debug.d.ts +58 -0
  313. package/dist/debug.d.ts.map +1 -0
  314. package/dist/debug.js +157 -0
  315. package/dist/debug.js.map +1 -0
  316. package/dist/default-error-boundary.d.ts +11 -0
  317. package/dist/default-error-boundary.d.ts.map +1 -0
  318. package/dist/default-error-boundary.js +45 -0
  319. package/dist/default-error-boundary.js.map +1 -0
  320. package/dist/deps/browser.d.ts +2 -0
  321. package/dist/deps/browser.d.ts.map +1 -0
  322. package/dist/deps/browser.js +3 -0
  323. package/dist/deps/browser.js.map +1 -0
  324. package/dist/deps/html-stream-client.d.ts +2 -0
  325. package/dist/deps/html-stream-client.d.ts.map +1 -0
  326. package/dist/deps/html-stream-client.js +3 -0
  327. package/dist/deps/html-stream-client.js.map +1 -0
  328. package/dist/deps/html-stream-server.d.ts +2 -0
  329. package/dist/deps/html-stream-server.d.ts.map +1 -0
  330. package/dist/deps/html-stream-server.js +3 -0
  331. package/dist/deps/html-stream-server.js.map +1 -0
  332. package/dist/deps/rsc.d.ts +2 -0
  333. package/dist/deps/rsc.d.ts.map +1 -0
  334. package/dist/deps/rsc.js +4 -0
  335. package/dist/deps/rsc.js.map +1 -0
  336. package/dist/deps/ssr.d.ts +2 -0
  337. package/dist/deps/ssr.d.ts.map +1 -0
  338. package/dist/deps/ssr.js +3 -0
  339. package/dist/deps/ssr.js.map +1 -0
  340. package/dist/errors.d.ts +174 -0
  341. package/dist/errors.d.ts.map +1 -0
  342. package/dist/errors.js +241 -0
  343. package/dist/errors.js.map +1 -0
  344. package/dist/handle.d.ts +78 -0
  345. package/dist/handle.d.ts.map +1 -0
  346. package/dist/handle.js +82 -0
  347. package/dist/handle.js.map +1 -0
  348. package/dist/handles/MetaTags.d.ts +14 -0
  349. package/dist/handles/MetaTags.d.ts.map +1 -0
  350. package/dist/handles/MetaTags.js +136 -0
  351. package/dist/handles/MetaTags.js.map +1 -0
  352. package/dist/handles/index.d.ts +6 -0
  353. package/dist/handles/index.d.ts.map +1 -0
  354. package/dist/handles/index.js +6 -0
  355. package/dist/handles/index.js.map +1 -0
  356. package/dist/handles/meta.d.ts +39 -0
  357. package/dist/handles/meta.d.ts.map +1 -0
  358. package/dist/handles/meta.js +202 -0
  359. package/dist/handles/meta.js.map +1 -0
  360. package/dist/host/__tests__/errors.test.d.ts +2 -0
  361. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  362. package/dist/host/__tests__/errors.test.js +76 -0
  363. package/dist/host/__tests__/errors.test.js.map +1 -0
  364. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  365. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  366. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  368. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  369. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  370. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  371. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  372. package/dist/host/__tests__/router.test.d.ts +2 -0
  373. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  374. package/dist/host/__tests__/router.test.js +241 -0
  375. package/dist/host/__tests__/router.test.js.map +1 -0
  376. package/dist/host/__tests__/testing.test.d.ts +2 -0
  377. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  378. package/dist/host/__tests__/testing.test.js +64 -0
  379. package/dist/host/__tests__/testing.test.js.map +1 -0
  380. package/dist/host/__tests__/utils.test.d.ts +2 -0
  381. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  382. package/dist/host/__tests__/utils.test.js +29 -0
  383. package/dist/host/__tests__/utils.test.js.map +1 -0
  384. package/dist/host/cookie-handler.d.ts +34 -0
  385. package/dist/host/cookie-handler.d.ts.map +1 -0
  386. package/dist/host/cookie-handler.js +124 -0
  387. package/dist/host/cookie-handler.js.map +1 -0
  388. package/dist/host/errors.d.ts +56 -0
  389. package/dist/host/errors.d.ts.map +1 -0
  390. package/dist/host/errors.js +79 -0
  391. package/dist/host/errors.js.map +1 -0
  392. package/dist/host/index.d.ts +29 -0
  393. package/dist/host/index.d.ts.map +1 -0
  394. package/dist/host/index.js +32 -0
  395. package/dist/host/index.js.map +1 -0
  396. package/dist/host/pattern-matcher.d.ts +36 -0
  397. package/dist/host/pattern-matcher.d.ts.map +1 -0
  398. package/dist/host/pattern-matcher.js +172 -0
  399. package/dist/host/pattern-matcher.js.map +1 -0
  400. package/dist/host/router.d.ts +26 -0
  401. package/dist/host/router.d.ts.map +1 -0
  402. package/dist/host/router.js +218 -0
  403. package/dist/host/router.js.map +1 -0
  404. package/dist/host/testing.d.ts +36 -0
  405. package/dist/host/testing.d.ts.map +1 -0
  406. package/dist/host/testing.js +55 -0
  407. package/dist/host/testing.js.map +1 -0
  408. package/dist/host/types.d.ts +115 -0
  409. package/dist/host/types.d.ts.map +1 -0
  410. package/dist/host/types.js +7 -0
  411. package/dist/host/types.js.map +1 -0
  412. package/dist/host/utils.d.ts +21 -0
  413. package/dist/host/utils.d.ts.map +1 -0
  414. package/dist/host/utils.js +23 -0
  415. package/dist/host/utils.js.map +1 -0
  416. package/dist/href-client.d.ts +131 -0
  417. package/dist/href-client.d.ts.map +1 -0
  418. package/dist/href-client.js +64 -0
  419. package/dist/href-client.js.map +1 -0
  420. package/dist/href-context.d.ts +29 -0
  421. package/dist/href-context.d.ts.map +1 -0
  422. package/dist/href-context.js +21 -0
  423. package/dist/href-context.js.map +1 -0
  424. package/dist/index.d.ts +73 -0
  425. package/dist/index.d.ts.map +1 -0
  426. package/dist/index.js +91 -0
  427. package/dist/index.js.map +1 -0
  428. package/dist/index.rsc.d.ts +32 -0
  429. package/dist/index.rsc.d.ts.map +1 -0
  430. package/dist/index.rsc.js +40 -0
  431. package/dist/index.rsc.js.map +1 -0
  432. package/dist/internal-debug.d.ts +2 -0
  433. package/dist/internal-debug.d.ts.map +1 -0
  434. package/dist/internal-debug.js +5 -0
  435. package/dist/internal-debug.js.map +1 -0
  436. package/dist/loader.d.ts +14 -0
  437. package/dist/loader.d.ts.map +1 -0
  438. package/dist/loader.js +20 -0
  439. package/dist/loader.js.map +1 -0
  440. package/dist/loader.rsc.d.ts +19 -0
  441. package/dist/loader.rsc.d.ts.map +1 -0
  442. package/dist/loader.rsc.js +99 -0
  443. package/dist/loader.rsc.js.map +1 -0
  444. package/dist/network-error-thrower.d.ts +17 -0
  445. package/dist/network-error-thrower.d.ts.map +1 -0
  446. package/dist/network-error-thrower.js +14 -0
  447. package/dist/network-error-thrower.js.map +1 -0
  448. package/dist/outlet-context.d.ts +13 -0
  449. package/dist/outlet-context.d.ts.map +1 -0
  450. package/dist/outlet-context.js +3 -0
  451. package/dist/outlet-context.js.map +1 -0
  452. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  453. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  454. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  455. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  456. package/dist/prerender/param-hash.d.ts +16 -0
  457. package/dist/prerender/param-hash.d.ts.map +1 -0
  458. package/dist/prerender/param-hash.js +36 -0
  459. package/dist/prerender/param-hash.js.map +1 -0
  460. package/dist/prerender/store.d.ts +38 -0
  461. package/dist/prerender/store.d.ts.map +1 -0
  462. package/dist/prerender/store.js +61 -0
  463. package/dist/prerender/store.js.map +1 -0
  464. package/dist/prerender.d.ts +66 -0
  465. package/dist/prerender.d.ts.map +1 -0
  466. package/dist/prerender.js +57 -0
  467. package/dist/prerender.js.map +1 -0
  468. package/dist/reverse.d.ts +196 -0
  469. package/dist/reverse.d.ts.map +1 -0
  470. package/dist/reverse.js +78 -0
  471. package/dist/reverse.js.map +1 -0
  472. package/dist/root-error-boundary.d.ts +33 -0
  473. package/dist/root-error-boundary.d.ts.map +1 -0
  474. package/dist/root-error-boundary.js +165 -0
  475. package/dist/root-error-boundary.js.map +1 -0
  476. package/dist/route-content-wrapper.d.ts +46 -0
  477. package/dist/route-content-wrapper.d.ts.map +1 -0
  478. package/dist/route-content-wrapper.js +77 -0
  479. package/dist/route-content-wrapper.js.map +1 -0
  480. package/dist/route-definition.d.ts +421 -0
  481. package/dist/route-definition.d.ts.map +1 -0
  482. package/dist/route-definition.js +868 -0
  483. package/dist/route-definition.js.map +1 -0
  484. package/dist/route-map-builder.d.ts +155 -0
  485. package/dist/route-map-builder.d.ts.map +1 -0
  486. package/dist/route-map-builder.js +237 -0
  487. package/dist/route-map-builder.js.map +1 -0
  488. package/dist/route-types.d.ts +165 -0
  489. package/dist/route-types.d.ts.map +1 -0
  490. package/dist/route-types.js +7 -0
  491. package/dist/route-types.js.map +1 -0
  492. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  493. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  494. package/dist/router/__tests__/handler-context.test.js +65 -0
  495. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  496. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  497. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  498. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  500. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  501. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  502. package/dist/router/__tests__/match-context.test.js +92 -0
  503. package/dist/router/__tests__/match-context.test.js.map +1 -0
  504. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  505. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  506. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  507. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  508. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  509. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  510. package/dist/router/__tests__/match-result.test.js +457 -0
  511. package/dist/router/__tests__/match-result.test.js.map +1 -0
  512. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  513. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  514. package/dist/router/__tests__/on-error.test.js +678 -0
  515. package/dist/router/__tests__/on-error.test.js.map +1 -0
  516. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  517. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  518. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  519. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  520. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  521. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  522. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  524. package/dist/router/error-handling.d.ts +77 -0
  525. package/dist/router/error-handling.d.ts.map +1 -0
  526. package/dist/router/error-handling.js +202 -0
  527. package/dist/router/error-handling.js.map +1 -0
  528. package/dist/router/handler-context.d.ts +20 -0
  529. package/dist/router/handler-context.d.ts.map +1 -0
  530. package/dist/router/handler-context.js +198 -0
  531. package/dist/router/handler-context.js.map +1 -0
  532. package/dist/router/intercept-resolution.d.ts +66 -0
  533. package/dist/router/intercept-resolution.d.ts.map +1 -0
  534. package/dist/router/intercept-resolution.js +246 -0
  535. package/dist/router/intercept-resolution.js.map +1 -0
  536. package/dist/router/loader-resolution.d.ts +64 -0
  537. package/dist/router/loader-resolution.d.ts.map +1 -0
  538. package/dist/router/loader-resolution.js +284 -0
  539. package/dist/router/loader-resolution.js.map +1 -0
  540. package/dist/router/logging.d.ts +15 -0
  541. package/dist/router/logging.d.ts.map +1 -0
  542. package/dist/router/logging.js +99 -0
  543. package/dist/router/logging.js.map +1 -0
  544. package/dist/router/manifest.d.ts +22 -0
  545. package/dist/router/manifest.d.ts.map +1 -0
  546. package/dist/router/manifest.js +181 -0
  547. package/dist/router/manifest.js.map +1 -0
  548. package/dist/router/match-api.d.ts +35 -0
  549. package/dist/router/match-api.d.ts.map +1 -0
  550. package/dist/router/match-api.js +406 -0
  551. package/dist/router/match-api.js.map +1 -0
  552. package/dist/router/match-context.d.ts +206 -0
  553. package/dist/router/match-context.d.ts.map +1 -0
  554. package/dist/router/match-context.js +17 -0
  555. package/dist/router/match-context.js.map +1 -0
  556. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  557. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  558. package/dist/router/match-middleware/background-revalidation.js +75 -0
  559. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  560. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  561. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  562. package/dist/router/match-middleware/cache-lookup.js +257 -0
  563. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  564. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  565. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  566. package/dist/router/match-middleware/cache-store.js +108 -0
  567. package/dist/router/match-middleware/cache-store.js.map +1 -0
  568. package/dist/router/match-middleware/index.d.ts +81 -0
  569. package/dist/router/match-middleware/index.d.ts.map +1 -0
  570. package/dist/router/match-middleware/index.js +80 -0
  571. package/dist/router/match-middleware/index.js.map +1 -0
  572. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  573. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  574. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  575. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  576. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  577. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  578. package/dist/router/match-middleware/segment-resolution.js +53 -0
  579. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  580. package/dist/router/match-pipelines.d.ts +147 -0
  581. package/dist/router/match-pipelines.d.ts.map +1 -0
  582. package/dist/router/match-pipelines.js +82 -0
  583. package/dist/router/match-pipelines.js.map +1 -0
  584. package/dist/router/match-result.d.ts +126 -0
  585. package/dist/router/match-result.d.ts.map +1 -0
  586. package/dist/router/match-result.js +93 -0
  587. package/dist/router/match-result.js.map +1 -0
  588. package/dist/router/metrics.d.ts +20 -0
  589. package/dist/router/metrics.d.ts.map +1 -0
  590. package/dist/router/metrics.js +47 -0
  591. package/dist/router/metrics.js.map +1 -0
  592. package/dist/router/middleware.d.ts +249 -0
  593. package/dist/router/middleware.d.ts.map +1 -0
  594. package/dist/router/middleware.js +434 -0
  595. package/dist/router/middleware.js.map +1 -0
  596. package/dist/router/middleware.test.d.ts +2 -0
  597. package/dist/router/middleware.test.d.ts.map +1 -0
  598. package/dist/router/middleware.test.js +816 -0
  599. package/dist/router/middleware.test.js.map +1 -0
  600. package/dist/router/pattern-matching.d.ts +149 -0
  601. package/dist/router/pattern-matching.d.ts.map +1 -0
  602. package/dist/router/pattern-matching.js +349 -0
  603. package/dist/router/pattern-matching.js.map +1 -0
  604. package/dist/router/revalidation.d.ts +44 -0
  605. package/dist/router/revalidation.d.ts.map +1 -0
  606. package/dist/router/revalidation.js +147 -0
  607. package/dist/router/revalidation.js.map +1 -0
  608. package/dist/router/router-context.d.ts +135 -0
  609. package/dist/router/router-context.d.ts.map +1 -0
  610. package/dist/router/router-context.js +36 -0
  611. package/dist/router/router-context.js.map +1 -0
  612. package/dist/router/segment-resolution.d.ts +127 -0
  613. package/dist/router/segment-resolution.d.ts.map +1 -0
  614. package/dist/router/segment-resolution.js +919 -0
  615. package/dist/router/segment-resolution.js.map +1 -0
  616. package/dist/router/trie-matching.d.ts +40 -0
  617. package/dist/router/trie-matching.d.ts.map +1 -0
  618. package/dist/router/trie-matching.js +127 -0
  619. package/dist/router/trie-matching.js.map +1 -0
  620. package/dist/router/types.d.ts +136 -0
  621. package/dist/router/types.d.ts.map +1 -0
  622. package/dist/router/types.js +7 -0
  623. package/dist/router/types.js.map +1 -0
  624. package/dist/router.d.ts +753 -0
  625. package/dist/router.d.ts.map +1 -0
  626. package/dist/router.gen.d.ts +6 -0
  627. package/dist/router.gen.d.ts.map +1 -0
  628. package/dist/router.gen.js +6 -0
  629. package/dist/router.gen.js.map +1 -0
  630. package/dist/router.js +1304 -0
  631. package/dist/router.js.map +1 -0
  632. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  633. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  634. package/dist/rsc/__tests__/helpers.test.js +140 -0
  635. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  636. package/dist/rsc/handler.d.ts +45 -0
  637. package/dist/rsc/handler.d.ts.map +1 -0
  638. package/dist/rsc/handler.js +1172 -0
  639. package/dist/rsc/handler.js.map +1 -0
  640. package/dist/rsc/helpers.d.ts +16 -0
  641. package/dist/rsc/helpers.d.ts.map +1 -0
  642. package/dist/rsc/helpers.js +55 -0
  643. package/dist/rsc/helpers.js.map +1 -0
  644. package/dist/rsc/index.d.ts +22 -0
  645. package/dist/rsc/index.d.ts.map +1 -0
  646. package/dist/rsc/index.js +23 -0
  647. package/dist/rsc/index.js.map +1 -0
  648. package/dist/rsc/nonce.d.ts +9 -0
  649. package/dist/rsc/nonce.d.ts.map +1 -0
  650. package/dist/rsc/nonce.js +18 -0
  651. package/dist/rsc/nonce.js.map +1 -0
  652. package/dist/rsc/types.d.ts +206 -0
  653. package/dist/rsc/types.d.ts.map +1 -0
  654. package/dist/rsc/types.js +8 -0
  655. package/dist/rsc/types.js.map +1 -0
  656. package/dist/search-params.d.ts +103 -0
  657. package/dist/search-params.d.ts.map +1 -0
  658. package/dist/search-params.js +74 -0
  659. package/dist/search-params.js.map +1 -0
  660. package/dist/segment-system.d.ts +75 -0
  661. package/dist/segment-system.d.ts.map +1 -0
  662. package/dist/segment-system.js +336 -0
  663. package/dist/segment-system.js.map +1 -0
  664. package/dist/server/context.d.ts +245 -0
  665. package/dist/server/context.d.ts.map +1 -0
  666. package/dist/server/context.js +197 -0
  667. package/dist/server/context.js.map +1 -0
  668. package/dist/server/fetchable-loader-store.d.ts +18 -0
  669. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  670. package/dist/server/fetchable-loader-store.js +18 -0
  671. package/dist/server/fetchable-loader-store.js.map +1 -0
  672. package/dist/server/handle-store.d.ts +85 -0
  673. package/dist/server/handle-store.d.ts.map +1 -0
  674. package/dist/server/handle-store.js +142 -0
  675. package/dist/server/handle-store.js.map +1 -0
  676. package/dist/server/loader-registry.d.ts +55 -0
  677. package/dist/server/loader-registry.d.ts.map +1 -0
  678. package/dist/server/loader-registry.js +132 -0
  679. package/dist/server/loader-registry.js.map +1 -0
  680. package/dist/server/request-context.d.ts +226 -0
  681. package/dist/server/request-context.d.ts.map +1 -0
  682. package/dist/server/request-context.js +290 -0
  683. package/dist/server/request-context.js.map +1 -0
  684. package/dist/server/root-layout.d.ts +4 -0
  685. package/dist/server/root-layout.d.ts.map +1 -0
  686. package/dist/server/root-layout.js +5 -0
  687. package/dist/server/root-layout.js.map +1 -0
  688. package/dist/server.d.ts +15 -0
  689. package/dist/server.d.ts.map +1 -0
  690. package/dist/server.js +20 -0
  691. package/dist/server.js.map +1 -0
  692. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  693. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  694. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  696. package/dist/ssr/index.d.ts +98 -0
  697. package/dist/ssr/index.d.ts.map +1 -0
  698. package/dist/ssr/index.js +158 -0
  699. package/dist/ssr/index.js.map +1 -0
  700. package/dist/static-handler.d.ts +50 -0
  701. package/dist/static-handler.d.ts.map +1 -0
  702. package/dist/static-handler.gen.d.ts +5 -0
  703. package/dist/static-handler.gen.d.ts.map +1 -0
  704. package/dist/static-handler.gen.js +5 -0
  705. package/dist/static-handler.gen.js.map +1 -0
  706. package/dist/static-handler.js +29 -0
  707. package/dist/static-handler.js.map +1 -0
  708. package/dist/theme/ThemeProvider.d.ts +20 -0
  709. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  710. package/dist/theme/ThemeProvider.js +240 -0
  711. package/dist/theme/ThemeProvider.js.map +1 -0
  712. package/dist/theme/ThemeScript.d.ts +48 -0
  713. package/dist/theme/ThemeScript.d.ts.map +1 -0
  714. package/dist/theme/ThemeScript.js +13 -0
  715. package/dist/theme/ThemeScript.js.map +1 -0
  716. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  717. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  718. package/dist/theme/__tests__/theme.test.js +103 -0
  719. package/dist/theme/__tests__/theme.test.js.map +1 -0
  720. package/dist/theme/constants.d.ts +29 -0
  721. package/dist/theme/constants.d.ts.map +1 -0
  722. package/dist/theme/constants.js +48 -0
  723. package/dist/theme/constants.js.map +1 -0
  724. package/dist/theme/index.d.ts +31 -0
  725. package/dist/theme/index.d.ts.map +1 -0
  726. package/dist/theme/index.js +36 -0
  727. package/dist/theme/index.js.map +1 -0
  728. package/dist/theme/theme-context.d.ts +40 -0
  729. package/dist/theme/theme-context.d.ts.map +1 -0
  730. package/dist/theme/theme-context.js +60 -0
  731. package/dist/theme/theme-context.js.map +1 -0
  732. package/dist/theme/theme-script.d.ts +27 -0
  733. package/dist/theme/theme-script.d.ts.map +1 -0
  734. package/dist/theme/theme-script.js +147 -0
  735. package/dist/theme/theme-script.js.map +1 -0
  736. package/dist/theme/types.d.ts +163 -0
  737. package/dist/theme/types.d.ts.map +1 -0
  738. package/dist/theme/types.js +11 -0
  739. package/dist/theme/types.js.map +1 -0
  740. package/dist/theme/use-theme.d.ts +12 -0
  741. package/dist/theme/use-theme.d.ts.map +1 -0
  742. package/dist/theme/use-theme.js +40 -0
  743. package/dist/theme/use-theme.js.map +1 -0
  744. package/dist/types/browser/navigation-client.d.ts +1 -1
  745. package/dist/types/browser/prefetch/cache.d.ts +9 -0
  746. package/dist/types/cache/cf/cf-cache-store.d.ts +19 -8
  747. package/dist/types/cache/cf/cf-cache-types.d.ts +4 -2
  748. package/dist/types/rsc/shell-capture.d.ts +10 -8
  749. package/dist/types/segment-fragments.d.ts +27 -4
  750. package/dist/types/server/request-context.d.ts +21 -8
  751. package/dist/types.d.ts +1479 -0
  752. package/dist/types.d.ts.map +1 -0
  753. package/dist/types.js +10 -0
  754. package/dist/types.js.map +1 -0
  755. package/dist/urls.d.ts +441 -0
  756. package/dist/urls.d.ts.map +1 -0
  757. package/dist/urls.gen.d.ts +8 -0
  758. package/dist/urls.gen.d.ts.map +1 -0
  759. package/dist/urls.gen.js +8 -0
  760. package/dist/urls.gen.js.map +1 -0
  761. package/dist/urls.js +443 -0
  762. package/dist/urls.js.map +1 -0
  763. package/dist/use-loader.d.ts +127 -0
  764. package/dist/use-loader.d.ts.map +1 -0
  765. package/dist/use-loader.js +237 -0
  766. package/dist/use-loader.js.map +1 -0
  767. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  768. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  769. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  770. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  771. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  772. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  773. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  774. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  775. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  776. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  777. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  778. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  779. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  780. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  781. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  782. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  783. package/dist/vite/ast-handler-extract.d.ts +49 -0
  784. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  785. package/dist/vite/ast-handler-extract.js +249 -0
  786. package/dist/vite/ast-handler-extract.js.map +1 -0
  787. package/dist/vite/expose-action-id.d.ts +19 -0
  788. package/dist/vite/expose-action-id.d.ts.map +1 -0
  789. package/dist/vite/expose-action-id.js +250 -0
  790. package/dist/vite/expose-action-id.js.map +1 -0
  791. package/dist/vite/expose-id-utils.d.ts +69 -0
  792. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  793. package/dist/vite/expose-id-utils.js +289 -0
  794. package/dist/vite/expose-id-utils.js.map +1 -0
  795. package/dist/vite/expose-internal-ids.d.ts +22 -0
  796. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  797. package/dist/vite/expose-internal-ids.js +886 -0
  798. package/dist/vite/expose-internal-ids.js.map +1 -0
  799. package/dist/vite/index.d.ts +149 -0
  800. package/dist/vite/index.d.ts.map +1 -0
  801. package/dist/vite/index.js +1 -1
  802. package/dist/vite/index.js.bak +5448 -0
  803. package/dist/vite/index.js.map +1 -0
  804. package/dist/vite/index.named-routes.gen.ts +103 -0
  805. package/dist/vite/package-resolution.d.ts +43 -0
  806. package/dist/vite/package-resolution.d.ts.map +1 -0
  807. package/dist/vite/package-resolution.js +112 -0
  808. package/dist/vite/package-resolution.js.map +1 -0
  809. package/dist/vite/virtual-entries.d.ts +25 -0
  810. package/dist/vite/virtual-entries.d.ts.map +1 -0
  811. package/dist/vite/virtual-entries.js +110 -0
  812. package/dist/vite/virtual-entries.js.map +1 -0
  813. package/package.json +1 -1
  814. package/skills/cloudflare/SKILL.md +4 -2
  815. package/skills/ppr/SKILL.md +25 -9
  816. package/src/browser/navigation-client.ts +77 -27
  817. package/src/browser/prefetch/cache.ts +18 -0
  818. package/src/browser/prefetch/fetch.ts +5 -0
  819. package/src/browser/rsc-router.tsx +12 -6
  820. package/src/cache/cache-scope.ts +5 -1
  821. package/src/cache/cf/cf-cache-store.ts +423 -90
  822. package/src/cache/cf/cf-cache-types.ts +4 -2
  823. package/src/cache/document-cache.ts +24 -2
  824. package/src/rsc/rsc-rendering.ts +61 -6
  825. package/src/rsc/shell-capture.ts +19 -19
  826. package/src/segment-fragments.ts +45 -4
  827. package/src/server/request-context.ts +21 -8
@@ -24,6 +24,10 @@ import { mayNeedSSR } from "../rsc/ssr-setup.js";
24
24
  import { cacheKeyBase } from "./cache-key-utils.js";
25
25
  import { runBackground } from "./background-task.js";
26
26
  import { reportCacheError } from "./cache-error.js";
27
+ import {
28
+ SEGMENT_FRAGMENT_CAPABILITY_HEADER,
29
+ SEGMENT_FRAGMENT_RECOVERY_HEADER,
30
+ } from "../segment-fragments.js";
27
31
 
28
32
  const CACHE_STATUS_HEADER = "x-document-cache-status";
29
33
 
@@ -260,6 +264,8 @@ export function createDocumentCacheMiddleware<TEnv = any>(
260
264
  // pipeline (stripInternalParams), so _rsc_partial, _rsc_segments, etc.
261
265
  // are not visible on ctx.url in production.
262
266
  const rawUrl = new URL(ctx.request.url);
267
+ const isFragmentRecovery =
268
+ ctx.request.headers.get(SEGMENT_FRAGMENT_RECOVERY_HEADER) === "1";
263
269
 
264
270
  // Only cache GET requests — mutations and other methods must not be cached
265
271
  if (ctx.request.method !== "GET") {
@@ -317,6 +323,16 @@ export function createDocumentCacheMiddleware<TEnv = any>(
317
323
  const clientSegments = rawUrl.searchParams.get("_rsc_segments") || "";
318
324
  const segmentHash =
319
325
  isPartial && clientSegments ? `:${hashSegmentIds(clientSegments)}` : "";
326
+ // Fragment envelopes require a capable Rango decoder. Keep that wire
327
+ // variant out of the context-less/legacy partial slot; this middleware
328
+ // returns hits before request classification and cannot rely on the
329
+ // match-time capability gate.
330
+ const fragmentSuffix =
331
+ isPartial &&
332
+ (ctx.request.headers.get(SEGMENT_FRAGMENT_CAPABILITY_HEADER) === "1" ||
333
+ isFragmentRecovery)
334
+ ? ":fragments"
335
+ : "";
320
336
  const typeSuffix = isRscRequest ? ":rsc" : ":html";
321
337
 
322
338
  // Default key rides the shared host-namespaced base (cacheKeyBase) so the
@@ -326,7 +342,7 @@ export function createDocumentCacheMiddleware<TEnv = any>(
326
342
  // owns its own namespacing (auto-prefixing host would silently change their
327
343
  // existing keys and double any host they already include).
328
344
  const cacheKey = keyGenerator
329
- ? keyGenerator(url) + segmentHash + typeSuffix
345
+ ? keyGenerator(url) + segmentHash + fragmentSuffix + typeSuffix
330
346
  : cacheKeyBase(
331
347
  url.host,
332
348
  url.pathname,
@@ -335,9 +351,15 @@ export function createDocumentCacheMiddleware<TEnv = any>(
335
351
  requestCtx?._searchParamsFilter,
336
352
  ) +
337
353
  segmentHash +
354
+ fragmentSuffix +
338
355
  typeSuffix;
339
356
  // 1. Check cache
340
- const cached = await store.getResponse(cacheKey);
357
+ // Recovery must reach CacheScope's server decoder so it can evict the bad
358
+ // segment. Treat it as a miss, then let the ordinary write path replace
359
+ // the corrupt fragment-capable response with the valid fallback bytes.
360
+ const cached = isFragmentRecovery
361
+ ? null
362
+ : await store.getResponse(cacheKey);
341
363
 
342
364
  if (cached && cached.response.status === 200) {
343
365
  if (!cached.shouldRevalidate) {
@@ -83,6 +83,10 @@ import type {
83
83
  ShellCacheEntry,
84
84
  ShellSnapshotRecord,
85
85
  } from "../cache/types.js";
86
+ import {
87
+ SEGMENT_FRAGMENT_CAPABILITY_HEADER,
88
+ SEGMENT_FRAGMENT_RECOVERY_HEADER,
89
+ } from "../segment-fragments.js";
86
90
 
87
91
  type PprReplayBypassReason =
88
92
  | "method"
@@ -285,6 +289,7 @@ async function handleRscRenderingInner<TEnv>(
285
289
  let hasInterceptSlots = false;
286
290
  let pprReplayStatus: PprReplayStatus | undefined;
287
291
  let partialCaptureNeeded = false;
292
+ let partialCaptureKey: string | undefined;
288
293
 
289
294
  // --- Axis 2: integrated PPR shell serve (docs/design/ppr-shell-resume.md) ---
290
295
  //
@@ -494,6 +499,7 @@ async function handleRscRenderingInner<TEnv>(
494
499
  pprReplayStatus = replay.status;
495
500
  partialCaptureNeeded =
496
501
  "captureNeeded" in replay && replay.captureNeeded === true;
502
+ partialCaptureKey = "captureKey" in replay ? replay.captureKey : undefined;
497
503
 
498
504
  if (!result) {
499
505
  // Fall back to full render
@@ -612,7 +618,7 @@ async function handleRscRenderingInner<TEnv>(
612
618
 
613
619
  const rscHeaders: Record<string, string> = {
614
620
  "content-type": "text/x-component;charset=utf-8",
615
- vary: "accept, X-Rango-State, X-RSC-Router-Client-Path",
621
+ vary: `accept, X-Rango-State, X-RSC-Router-Client-Path, ${SEGMENT_FRAGMENT_CAPABILITY_HEADER}, ${SEGMENT_FRAGMENT_RECOVERY_HEADER}`,
616
622
  // Router identity, so the client can verify pre-decode (before importing
617
623
  // chunks) that this content payload belongs to its app and refuse a
618
624
  // foreign one (cache/proxy/bug). Control-only reload/redirect responses
@@ -721,7 +727,8 @@ async function handleRscRenderingInner<TEnv>(
721
727
  },
722
728
  createShellCaptureDescriptor(
723
729
  ctx,
724
- buildNavigationShellKey(url, reqCtx._searchParamsFilter),
730
+ partialCaptureKey ??
731
+ buildNavigationShellKey(url, reqCtx._searchParamsFilter),
725
732
  pprConfig,
726
733
  store,
727
734
  true,
@@ -765,8 +772,30 @@ async function matchPartialWithPprReplay<TEnv>(
765
772
  recordReplayStatus(finalStatus);
766
773
  return finalStatus;
767
774
  };
775
+ let armFragments = false;
776
+ /**
777
+ * Every matchPartial in this function runs through this helper so the
778
+ * fragment flag (#700 passthrough, armed below the navigation-context gate)
779
+ * can never outlive a match or miss a lane — a thrown-Response redirect
780
+ * exit included. Mutate-restore on the SHARED reqCtx, never a derived
781
+ * context: the pipeline writes ambient state during the match that must
782
+ * land on reqCtx (_pprReplayPostMatchReason, location state,
783
+ * _treeHasStreaming read by the render-barrier closure). Assign-back
784
+ * restore leaves an own `undefined` after the first arm, matching the
785
+ * _shellImplicitCache idiom.
786
+ */
787
+ const matchPartialForReplay = async () => {
788
+ if (!armFragments) return ctx.router.matchPartial(request, { env });
789
+ const prevFragmentPayload = reqCtx._shellFragmentPayload;
790
+ reqCtx._shellFragmentPayload = true;
791
+ try {
792
+ return await ctx.router.matchPartial(request, { env });
793
+ } finally {
794
+ reqCtx._shellFragmentPayload = prevFragmentPayload;
795
+ }
796
+ };
768
797
  const runMatch = async (status?: PprReplayStatus) => {
769
- const result = await ctx.router.matchPartial(request, { env });
798
+ const result = await matchPartialForReplay();
770
799
  // The match may have settled a fact the pre-match gate could only guess
771
800
  // at (prerender serve, intercept resolution) — report the truth.
772
801
  const finalStatus = status ? finalizeReplayStatus(status) : undefined;
@@ -803,6 +832,14 @@ async function matchPartialWithPprReplay<TEnv>(
803
832
  if (!getNavigationContextHeader(request)) {
804
833
  return runMatch({ outcome: "BYPASS", reason: "no-navigation-context" });
805
834
  }
835
+ // Fragment passthrough (#700), extended to partial replay. Navigation
836
+ // context proves the request can be matched; the separate capability header
837
+ // proves its payload consumer can expand envelopes. Older clients and the
838
+ // one-shot corruption recovery request still replay the same segment record,
839
+ // but through the server decode path.
840
+ armFragments =
841
+ request.headers.get(SEGMENT_FRAGMENT_RECOVERY_HEADER) !== "1" &&
842
+ request.headers.get(SEGMENT_FRAGMENT_CAPABILITY_HEADER) === "1";
806
843
  // The prerender probe and the cache-opt-out gate below both need the
807
844
  // classified snapshot; resolve (and persist) it once.
808
845
  const routeSnapshot = classifiedRouteSnapshot(reqCtx);
@@ -863,11 +900,13 @@ async function matchPartialWithPprReplay<TEnv>(
863
900
 
864
901
  let bypassReason: PprReplayBypassReason | undefined;
865
902
  let snapshot: ShellSnapshotRecord[] | undefined;
903
+ let snapshotStoreKey: string | undefined;
866
904
  let freshness: "fresh" | "stale" = "fresh";
867
905
  if (cached) {
868
906
  const decision = replayableShellSnapshot(cached.entry, ctx.version);
869
907
  if ("snapshot" in decision) {
870
908
  snapshot = decision.snapshot;
909
+ snapshotStoreKey = key;
871
910
  freshness = cached.shouldRevalidate ? "stale" : "fresh";
872
911
  } else {
873
912
  bypassReason = decision.reason;
@@ -895,6 +934,7 @@ async function matchPartialWithPprReplay<TEnv>(
895
934
  );
896
935
  if ("snapshot" in decision) {
897
936
  snapshot = decision.snapshot;
937
+ snapshotStoreKey = navigationKey;
898
938
  freshness = navigationCached.shouldRevalidate ? "stale" : "fresh";
899
939
  } else {
900
940
  bypassReason = decision.reason;
@@ -954,7 +994,7 @@ async function matchPartialWithPprReplay<TEnv>(
954
994
  },
955
995
  };
956
996
  try {
957
- const result = await ctx.router.matchPartial(request, { env });
997
+ const result = await matchPartialForReplay();
958
998
  const provisionalStatus: PprReplayStatus = explicitCacheBypass
959
999
  ? { outcome: "BYPASS", reason: "cache-disabled" }
960
1000
  : explicitCacheHit
@@ -999,6 +1039,7 @@ async function matchPartialWithPprReplay<TEnv>(
999
1039
 
1000
1040
  const previousImplicitCache = reqCtx._shellImplicitCache;
1001
1041
  let segmentReplayHit = false;
1042
+ let segmentReplayCorrupt = false;
1002
1043
  let explicitCacheHit = false;
1003
1044
  let explicitCacheBypass = false;
1004
1045
  reqCtx._shellImplicitCache = {
@@ -1011,6 +1052,9 @@ async function matchPartialWithPprReplay<TEnv>(
1011
1052
  onHit: () => {
1012
1053
  segmentReplayHit = true;
1013
1054
  },
1055
+ onCorrupt: () => {
1056
+ segmentReplayCorrupt = true;
1057
+ },
1014
1058
  // Arms the explicit-scope composition in withCacheLookup: a route-derived
1015
1059
  // cache() scope stays authoritative, the seeded doc record supplies the
1016
1060
  // match only on its miss. An explicit-tier hit must NOT report a replay
@@ -1027,7 +1071,7 @@ async function matchPartialWithPprReplay<TEnv>(
1027
1071
  };
1028
1072
 
1029
1073
  try {
1030
- const result = await ctx.router.matchPartial(request, { env });
1074
+ const result = await matchPartialForReplay();
1031
1075
  const provisionalStatus: PprReplayStatus = segmentReplayHit
1032
1076
  ? { outcome: "HIT", freshness }
1033
1077
  : explicitCacheHit
@@ -1040,7 +1084,18 @@ async function matchPartialWithPprReplay<TEnv>(
1040
1084
  // keep snapshot.cacheScope) — the "snapshot-miss" guess would blame the
1041
1085
  // capture for a lane that was never in play.
1042
1086
  const status = finalizeReplayStatus(provisionalStatus);
1043
- return { result, status };
1087
+ return {
1088
+ result,
1089
+ status,
1090
+ captureNeeded:
1091
+ segmentReplayCorrupt && reqCtx._pprReplayPostMatchReason === undefined,
1092
+ // A corrupt document snapshot must be overwritten at the document key;
1093
+ // writing only the secondary navigation key would leave the preferred
1094
+ // document entry shadowing the repair forever. The capture remains marked
1095
+ // navigationOnly, so a document request ignores it and recaptures a
1096
+ // document-safe shell under the same key.
1097
+ captureKey: segmentReplayCorrupt ? snapshotStoreKey : undefined,
1098
+ };
1044
1099
  } finally {
1045
1100
  reqCtx._shellImplicitCache = previousImplicitCache;
1046
1101
  }
@@ -945,8 +945,9 @@ export function scheduleShellCapture(
945
945
  * I/O failure is reported separately and does NOT make the attempt retryable —
946
946
  * the capture itself worked).
947
947
  * - `redirect`: the matched route redirects, so there is no shell to capture.
948
- * - `no-shell`: the prelude came back trivial (no <body>) OR captureShellHTML
949
- * rejected with our own abort. This is the only RETRYABLE outcome.
948
+ * - `no-shell`: captureShellHTML returned null because the prelude was unusable
949
+ * or its private capture abort landed before the shell completed. This is the
950
+ * only RETRYABLE outcome.
950
951
  */
951
952
  type CaptureAttemptOutcome = "stored" | "redirect" | "no-shell" | "refused";
952
953
 
@@ -995,9 +996,9 @@ type CaptureAttemptStats = Pick<
995
996
  * when we froze the shell; the attempt itself warmed the module graph, so a second
996
997
  * attempt a short beat later usually completes the shell in the SAME background
997
998
  * task. That kills the old multi-request warmup where the caller had to re-issue
998
- * several HTTP requests before a capture stuck. We retry ONLY on `no-shell` (and a
999
- * defensively-caught abort); a genuine render error is NOT retried — it propagates
1000
- * to scheduleShellCapture's reportCacheError. See docs/design/ppr-shell-resume.md.
999
+ * several HTTP requests before a capture stuck. We retry ONLY on `no-shell`; a
1000
+ * genuine render error is NOT retried — it propagates to scheduleShellCapture's
1001
+ * reportCacheError. See docs/design/ppr-shell-resume.md.
1001
1002
  *
1002
1003
  * `retryDelayMs` is a parameter (defaulting to the module const) so unit tests can
1003
1004
  * drive the retry without a real 400ms wall-clock wait.
@@ -1329,6 +1330,10 @@ export function deriveShellCaptureContext(
1329
1330
  derivedCtx._explicitTaggedStores = new Set();
1330
1331
  derivedCtx._transitionWhen = [];
1331
1332
  derivedCtx._shellCaptureRun = true;
1333
+ // Own-property reset: an inherited flag would make serializeSegments store
1334
+ // a double-encoded fragment. No current arming site reaches a capture
1335
+ // render (kept as defense-in-depth for a future one).
1336
+ derivedCtx._shellFragmentPayload = false;
1332
1337
  derivedCtx._metricsStore = undefined;
1333
1338
  // Spans, like perf metrics above, are a FOREGROUND surface: the capture
1334
1339
  // re-render must not emit a second rango.render/loader/ssr set after the
@@ -1395,9 +1400,10 @@ export function deriveShellCaptureContext(
1395
1400
  * capture worked; only the store I/O failed). `ssrModule.captureShellHTML` MUST be
1396
1401
  * present (eligibility is checked before scheduling).
1397
1402
  *
1398
- * A `no-shell` result (trivial prelude, or a defensively-caught abort) is the only
1399
- * retryable outcome; a genuine (non-abort) captureShellHTML error propagates so it
1400
- * reaches reportCacheError and is NOT retried.
1403
+ * A `no-shell` result from captureShellHTML is the only retryable outcome. Every
1404
+ * captureShellHTML error propagates to reportCacheError and is NOT retried. The
1405
+ * capture handler converts only its own private abort sentinel to null before this
1406
+ * layer sees it.
1401
1407
  */
1402
1408
  async function captureAndStoreShell(
1403
1409
  ssrModule: SSRModule,
@@ -1504,19 +1510,13 @@ async function captureAndStoreShell(
1504
1510
  }),
1505
1511
  );
1506
1512
  } catch (error) {
1507
- // Guard-tripped rejection arrives here (not at the drain) refuse
1508
- // BEFORE the AbortError-vs-rethrow decision below.
1513
+ // Guard-tripped rejection arrives here (not at the drain), so refuse it
1514
+ // before propagating other capture errors.
1509
1515
  const refused = refuseOnGuardTrip();
1510
1516
  if (refused) return refused;
1511
- // captureShellHTML normally converts its OWN deliberate abort to a null
1512
- // return (index.tsx). This catch is defensive: if an AbortError still escapes
1513
- // (a runtime where the abort surfaces as a stream rejection outside its
1514
- // guard), treat it as the same retryable "no usable shell" degradation rather
1515
- // than a failure — do NOT report it as an error. A genuine (non-abort) render
1516
- // error is a real failure: rethrow so it reaches reportCacheError (no retry).
1517
- if ((error as { name?: string } | null)?.name === "AbortError") {
1518
- return "no-shell";
1519
- }
1517
+ // captureShellHTML converts its OWN deliberate abort to null by sentinel
1518
+ // identity. An escaped AbortError can therefore be a component's real
1519
+ // cancellation and must not be hidden or retried by name.
1520
1520
  throw error;
1521
1521
  }
1522
1522
 
@@ -6,10 +6,11 @@
6
6
  * fragment STRINGS ride the outgoing payload verbatim inside these envelopes
7
7
  * — the outer Flight render copies a string instead of re-serializing a whole
8
8
  * element tree — and the CONSUMER expands each envelope through its own Flight
9
- * deserializer: the SSR resume pass (ssr/ssr-root.tsx) and browser hydration
10
- * (browser/rsc-router.tsx). Each fragment is its own row space, decoded
11
- * independently, exactly like the segment codec's per-record decode — so
12
- * there is no Flight row-id collision or shared-row dedupe hazard.
9
+ * deserializer: the SSR resume pass (ssr/ssr-root.tsx), browser hydration, and
10
+ * capability-gated partial navigation/prefetch decoders. Each fragment is its
11
+ * own row space, decoded independently, exactly like the segment codec's
12
+ * per-record decode — so there is no Flight row-id collision or shared-row
13
+ * dedupe hazard.
13
14
  *
14
15
  * Envelopes appear ONLY on fields that hold ReactNodes (component / layout /
15
16
  * loading). A plain object is never a valid ReactNode, so the marker cannot
@@ -22,6 +23,25 @@
22
23
 
23
24
  import type { ResolvedSegment } from "./types.js";
24
25
 
26
+ /** Partial-request capability gate for browser-side fragment expansion. */
27
+ export const SEGMENT_FRAGMENT_CAPABILITY_HEADER: string =
28
+ "X-Rango-Fragment-Passthrough";
29
+
30
+ /** One-shot request marker that forces server-side fragment validation. */
31
+ export const SEGMENT_FRAGMENT_RECOVERY_HEADER: string =
32
+ "X-Rango-Fragment-Recovery";
33
+
34
+ /** A stored fragment failed in its consumer-side Flight decoder. */
35
+ export class SegmentFragmentDecodeError extends Error {
36
+ readonly cause: unknown;
37
+
38
+ constructor(cause: unknown) {
39
+ super("Failed to decode a stored RSC segment fragment");
40
+ this.name = "SegmentFragmentDecodeError";
41
+ this.cause = cause;
42
+ }
43
+ }
44
+
25
45
  /**
26
46
  * One RSC-encoded fragment traveling inside an RscPayload segment field.
27
47
  * `f` is the stored Flight document (segment-codec output) for that field.
@@ -107,6 +127,27 @@ export async function expandSegmentFragments(
107
127
  if (decodes.length > 0) await Promise.all(decodes);
108
128
  }
109
129
 
130
+ /**
131
+ * Expand every envelope in an RscPayload-shaped object, in place. Decode
132
+ * failures use a distinct error so partial navigation can retry once through
133
+ * the server's decode-and-evict path. The
134
+ * hasSegmentFragments pre-scan keeps envelope-free payloads — every
135
+ * non-replay response — to one synchronous field walk; this runs on every
136
+ * navigation and prefetch decode.
137
+ */
138
+ export async function expandPayloadFragments(
139
+ payload: { metadata?: { segments?: ResolvedSegment[] } },
140
+ decode: FragmentDecoder,
141
+ ): Promise<void> {
142
+ const segments = payload.metadata?.segments;
143
+ if (!hasSegmentFragments(segments)) return;
144
+ try {
145
+ await expandSegmentFragments(segments, decode);
146
+ } catch (error) {
147
+ throw new SegmentFragmentDecodeError(error);
148
+ }
149
+ }
150
+
110
151
  /**
111
152
  * True when any segment carries an unexpanded envelope. Cheap scan used by
112
153
  * consumers that only need to know whether an expansion pass is required.
@@ -303,6 +303,12 @@ export interface RequestContext<
303
303
  keyPrefix?: "doc";
304
304
  /** @internal Called only after the implicit cache hit decodes successfully. */
305
305
  onHit?: () => void;
306
+ /**
307
+ * @internal Called when the seeded document record fails server-side
308
+ * deserialization. Partial replay uses it to replace the enclosing shell
309
+ * snapshot after serving the fresh fallback.
310
+ */
311
+ onCorrupt?: () => void;
306
312
  /**
307
313
  * @internal The resolved key of the canonical document segment record.
308
314
  * Written during a CAPTURE render by CacheScope.cacheRoute when a
@@ -334,15 +340,22 @@ export interface RequestContext<
334
340
  };
335
341
 
336
342
  /**
337
- * @internal Shell-HIT tail marker: cache/prerender-store hits during THIS
338
- * render emit stored segment fragments VERBATIM into the payload
343
+ * @internal Fragment-passthrough marker: cache/prerender-store hits during
344
+ * THIS render emit stored segment fragments VERBATIM into the payload
339
345
  * (segment-codec fragmentSegments) instead of deserialize -> re-serialize
340
- * per request; the payload consumers (SSR resume + browser hydration)
341
- * expand them (segment-fragments.ts, issue #700). Own property of
342
- * serveShellHit's derived tail context ONLY it must never be visible to a
343
- * capture render: the capture SSR-prerenders the payload AND serializes
344
- * segments into records (cacheRoute), and an envelope reaching
345
- * serializeSegments would store a double-encoded fragment.
346
+ * per request; the payload consumers (SSR resume, browser hydration, and
347
+ * the client partial-navigation decode chokepoints) expand them
348
+ * (segment-fragments.ts, issue #700). Partial requests arm only after the
349
+ * browser advertises `X-Rango-Fragment-Passthrough: 1`; a decode failure
350
+ * retries without it so CacheScope can evict the bad record. Two arming sites,
351
+ * both scoped to a
352
+ * render/match window: serveShellHit's derived tail context (document
353
+ * HIT), and matchPartialWithPprReplay's mutate-restore around the partial
354
+ * match (matchPartialForReplay). It must never be visible to a capture
355
+ * render: the capture SSR-prerenders the payload AND serializes segments
356
+ * into records (cacheRoute), and an envelope reaching serializeSegments
357
+ * would store a double-encoded fragment — deriveShellCaptureContext resets
358
+ * it as an own property for exactly that reason.
346
359
  */
347
360
  _shellFragmentPayload?: boolean;
348
361