@rangojs/router 0.0.0-experimental.tapabs3 → 0.1.0

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 (1319) hide show
  1. package/dist/bin/rango.js +8 -40
  2. package/dist/types/__internal.d.ts +127 -0
  3. package/dist/types/bin/rango.d.ts +1 -0
  4. package/dist/types/browser/action-coordinator.d.ts +57 -0
  5. package/dist/types/browser/action-fence.d.ts +33 -0
  6. package/dist/types/browser/app-shell.d.ts +34 -0
  7. package/dist/types/browser/app-version.d.ts +6 -0
  8. package/dist/types/browser/connection-warmup.d.ts +31 -0
  9. package/dist/types/browser/cookie-name.d.ts +66 -0
  10. package/dist/types/browser/event-controller.d.ts +221 -0
  11. package/dist/types/browser/history-state.d.ts +26 -0
  12. package/dist/types/browser/index.d.ts +1 -0
  13. package/dist/types/browser/intercept-utils.d.ts +30 -0
  14. package/dist/types/browser/invalidate-client-cache.d.ts +17 -0
  15. package/dist/types/browser/link-interceptor.d.ts +43 -0
  16. package/dist/types/browser/logging.d.ts +33 -0
  17. package/dist/types/browser/merge-segment-loaders.d.ts +38 -0
  18. package/dist/types/browser/navigation-bridge.d.ts +27 -0
  19. package/dist/types/browser/navigation-client.d.ts +17 -0
  20. package/dist/types/browser/navigation-store-handle.d.ts +25 -0
  21. package/dist/types/browser/navigation-store.d.ts +95 -0
  22. package/dist/types/browser/navigation-transaction.d.ts +75 -0
  23. package/dist/types/browser/network-error-handler.d.ts +35 -0
  24. package/dist/types/browser/partial-update.d.ts +61 -0
  25. package/dist/types/browser/prefetch/cache.d.ts +183 -0
  26. package/dist/types/browser/prefetch/fetch.d.ts +52 -0
  27. package/dist/types/browser/prefetch/observer.d.ts +27 -0
  28. package/dist/types/browser/prefetch/policy.d.ts +13 -0
  29. package/dist/types/browser/prefetch/queue.d.ts +48 -0
  30. package/dist/types/browser/prefetch/resource-ready.d.ts +28 -0
  31. package/dist/types/browser/rango-state.d.ts +52 -0
  32. package/dist/types/browser/react/Link.d.ts +140 -0
  33. package/dist/types/browser/react/NavigationProvider.d.ts +88 -0
  34. package/dist/types/browser/react/ScrollRestoration.d.ts +78 -0
  35. package/dist/types/browser/react/context.d.ts +54 -0
  36. package/dist/types/browser/react/filter-segment-order.d.ts +35 -0
  37. package/dist/types/browser/react/index.d.ts +1 -0
  38. package/dist/types/browser/react/location-state-shared.d.ts +162 -0
  39. package/dist/types/browser/react/location-state.d.ts +29 -0
  40. package/dist/types/browser/react/mount-context.d.ts +23 -0
  41. package/dist/types/browser/react/nonce-context.d.ts +14 -0
  42. package/dist/types/browser/react/shallow-equal.d.ts +5 -0
  43. package/dist/types/browser/react/use-action.d.ts +61 -0
  44. package/dist/types/browser/react/use-handle.d.ts +21 -0
  45. package/dist/types/browser/react/use-href.d.ts +32 -0
  46. package/dist/types/browser/react/use-link-status.d.ts +36 -0
  47. package/dist/types/browser/react/use-mount.d.ts +24 -0
  48. package/dist/types/browser/react/use-navigation.d.ts +15 -0
  49. package/dist/types/browser/react/use-params.d.ts +21 -0
  50. package/dist/types/browser/react/use-pathname.d.ts +13 -0
  51. package/dist/types/browser/react/use-reverse.d.ts +40 -0
  52. package/dist/types/browser/react/use-router.d.ts +23 -0
  53. package/dist/types/browser/react/use-search-params.d.ts +19 -0
  54. package/dist/types/browser/react/use-segments.d.ts +29 -0
  55. package/dist/types/browser/response-adapter.d.ts +58 -0
  56. package/dist/types/browser/rsc-router.d.ts +141 -0
  57. package/dist/types/browser/scroll-restoration.d.ts +103 -0
  58. package/dist/types/browser/segment-reconciler.d.ts +74 -0
  59. package/dist/types/browser/segment-structure-assert.d.ts +16 -0
  60. package/dist/types/browser/server-action-bridge.d.ts +29 -0
  61. package/dist/types/browser/types.d.ts +530 -0
  62. package/dist/types/browser/validate-redirect-origin.d.ts +28 -0
  63. package/dist/types/build/collect-fallback-refs.d.ts +5 -0
  64. package/dist/types/build/generate-manifest.d.ts +100 -0
  65. package/dist/types/build/generate-route-types.d.ts +8 -0
  66. package/dist/types/build/index.d.ts +21 -0
  67. package/dist/types/build/prefix-tree-utils.d.ts +56 -0
  68. package/dist/types/build/route-trie.d.ts +89 -0
  69. package/dist/types/build/route-types/ast-helpers.d.ts +3 -0
  70. package/dist/types/build/route-types/ast-route-extraction.d.ts +13 -0
  71. package/dist/types/build/route-types/codegen.d.ts +16 -0
  72. package/dist/types/build/route-types/include-resolution.d.ts +74 -0
  73. package/dist/types/build/route-types/param-extraction.d.ts +13 -0
  74. package/dist/types/build/route-types/per-module-writer.d.ts +18 -0
  75. package/dist/types/build/route-types/router-processing.d.ts +82 -0
  76. package/dist/types/build/route-types/scan-filter.d.ts +17 -0
  77. package/dist/types/build/route-types/source-scan.d.ts +13 -0
  78. package/dist/types/build/runtime-discovery.d.ts +24 -0
  79. package/dist/types/cache/background-task.d.ts +21 -0
  80. package/dist/types/cache/cache-error.d.ts +71 -0
  81. package/dist/types/cache/cache-key-utils.d.ts +35 -0
  82. package/dist/types/cache/cache-policy.d.ts +59 -0
  83. package/dist/types/cache/cache-runtime.d.ts +51 -0
  84. package/dist/types/cache/cache-scope.d.ts +134 -0
  85. package/dist/types/cache/cache-tag.d.ts +79 -0
  86. package/dist/types/cache/cf/cf-base64.d.ts +4 -0
  87. package/dist/types/cache/cf/cf-cache-constants.d.ts +105 -0
  88. package/dist/types/cache/cf/cf-cache-store.d.ts +588 -0
  89. package/dist/types/cache/cf/cf-cache-types.d.ts +363 -0
  90. package/dist/types/cache/cf/cf-kv-utils.d.ts +22 -0
  91. package/dist/types/cache/cf/cf-tag-marker-memo.d.ts +15 -0
  92. package/dist/types/cache/cf/cf-zone-purge.d.ts +31 -0
  93. package/dist/types/cache/cf/index.d.ts +4 -0
  94. package/dist/types/cache/document-cache.d.ts +69 -0
  95. package/dist/types/cache/handle-capture.d.ts +23 -0
  96. package/dist/types/cache/handle-snapshot.d.ts +39 -0
  97. package/dist/types/cache/index.d.ts +7 -0
  98. package/dist/types/cache/memory-segment-store.d.ts +163 -0
  99. package/dist/types/cache/profile-registry.d.ts +40 -0
  100. package/dist/types/cache/read-through-swr.d.ts +60 -0
  101. package/dist/types/cache/segment-codec.d.ts +78 -0
  102. package/dist/types/cache/shell-snapshot.d.ts +173 -0
  103. package/dist/types/cache/tag-invalidation.d.ts +74 -0
  104. package/dist/types/cache/taint.d.ts +71 -0
  105. package/dist/types/cache/types.d.ts +418 -0
  106. package/dist/types/cache/vercel/index.d.ts +1 -0
  107. package/dist/types/cache/vercel/vercel-cache-store.d.ts +267 -0
  108. package/dist/types/client.d.ts +184 -0
  109. package/dist/types/client.rsc.d.ts +39 -0
  110. package/dist/types/cloudflare/index.d.ts +7 -0
  111. package/dist/types/cloudflare/tracing.d.ts +53 -0
  112. package/dist/types/component-utils.d.ts +46 -0
  113. package/dist/types/components/DefaultDocument.d.ts +13 -0
  114. package/dist/types/context-var.d.ts +84 -0
  115. package/dist/types/debug.d.ts +57 -0
  116. package/dist/types/decode-loader-results.d.ts +5 -0
  117. package/dist/types/default-error-boundary.d.ts +10 -0
  118. package/dist/types/defer.d.ts +89 -0
  119. package/dist/types/deps/browser.d.ts +1 -0
  120. package/dist/types/deps/html-stream-client.d.ts +1 -0
  121. package/dist/types/deps/html-stream-server.d.ts +1 -0
  122. package/dist/types/deps/rsc.d.ts +1 -0
  123. package/dist/types/deps/ssr.d.ts +1 -0
  124. package/dist/types/encode-kv.d.ts +35 -0
  125. package/dist/types/errors.d.ts +226 -0
  126. package/dist/types/escape-script.d.ts +44 -0
  127. package/dist/types/handle.d.ts +93 -0
  128. package/dist/types/handles/MetaTags.d.ts +17 -0
  129. package/dist/types/handles/Scripts.d.ts +38 -0
  130. package/dist/types/handles/breadcrumbs.d.ts +43 -0
  131. package/dist/types/handles/deferred-resolution.d.ts +53 -0
  132. package/dist/types/handles/is-thenable.d.ts +12 -0
  133. package/dist/types/handles/meta.d.ts +43 -0
  134. package/dist/types/handles/script.d.ts +139 -0
  135. package/dist/types/host/cookie-handler.d.ts +8 -0
  136. package/dist/types/host/errors.d.ts +40 -0
  137. package/dist/types/host/index.d.ts +33 -0
  138. package/dist/types/host/pattern-matcher.d.ts +30 -0
  139. package/dist/types/host/router.d.ts +12 -0
  140. package/dist/types/host/testing.d.ts +41 -0
  141. package/dist/types/host/types.d.ts +148 -0
  142. package/dist/types/host/utils.d.ts +20 -0
  143. package/dist/types/href-client.d.ts +214 -0
  144. package/dist/types/index.d.ts +112 -0
  145. package/dist/types/index.rsc.d.ts +51 -0
  146. package/dist/types/internal-debug.d.ts +1 -0
  147. package/dist/types/loader-store.d.ts +193 -0
  148. package/dist/types/loader.d.ts +18 -0
  149. package/dist/types/loader.rsc.d.ts +18 -0
  150. package/dist/types/missing-id-error.d.ts +1 -0
  151. package/dist/types/outlet-context.d.ts +12 -0
  152. package/dist/types/outlet-provider.d.ts +12 -0
  153. package/dist/types/prerender/build-shell-capture.d.ts +104 -0
  154. package/dist/types/prerender/param-hash.d.ts +6 -0
  155. package/dist/types/prerender/shell-manifest-key.d.ts +18 -0
  156. package/dist/types/prerender/store.d.ts +62 -0
  157. package/dist/types/prerender.d.ts +292 -0
  158. package/dist/types/redirect-origin.d.ts +67 -0
  159. package/dist/types/regex-escape.d.ts +6 -0
  160. package/dist/types/render-error-thrower.d.ts +13 -0
  161. package/dist/types/response-utils.d.ts +35 -0
  162. package/dist/types/reverse.d.ts +206 -0
  163. package/dist/types/root-error-boundary.d.ts +32 -0
  164. package/dist/types/route-content-wrapper.d.ts +40 -0
  165. package/dist/types/route-definition/dsl-helpers.d.ts +130 -0
  166. package/dist/types/route-definition/helper-factories.d.ts +22 -0
  167. package/dist/types/route-definition/helpers-types.d.ts +392 -0
  168. package/dist/types/route-definition/index.d.ts +7 -0
  169. package/dist/types/route-definition/redirect.d.ts +48 -0
  170. package/dist/types/route-definition/resolve-handler-use.d.ts +19 -0
  171. package/dist/types/route-definition/use-item-types.d.ts +1 -0
  172. package/dist/types/route-definition.d.ts +1 -0
  173. package/dist/types/route-map-builder.d.ts +127 -0
  174. package/dist/types/route-name.d.ts +27 -0
  175. package/dist/types/route-types.d.ts +172 -0
  176. package/dist/types/router/basename.d.ts +10 -0
  177. package/dist/types/router/content-negotiation.d.ts +91 -0
  178. package/dist/types/router/debug-manifest.d.ts +7 -0
  179. package/dist/types/router/error-handling.d.ts +76 -0
  180. package/dist/types/router/find-match.d.ts +19 -0
  181. package/dist/types/router/handler-context.d.ts +41 -0
  182. package/dist/types/router/instrument.d.ts +161 -0
  183. package/dist/types/router/intercept-resolution.d.ts +79 -0
  184. package/dist/types/router/lazy-includes.d.ts +26 -0
  185. package/dist/types/router/loader-resolution.d.ts +63 -0
  186. package/dist/types/router/logging.d.ts +41 -0
  187. package/dist/types/router/manifest.d.ts +8 -0
  188. package/dist/types/router/match-api.d.ts +19 -0
  189. package/dist/types/router/match-context.d.ts +184 -0
  190. package/dist/types/router/match-handlers.d.ts +49 -0
  191. package/dist/types/router/match-middleware/background-revalidation.d.ts +113 -0
  192. package/dist/types/router/match-middleware/cache-lookup.d.ts +113 -0
  193. package/dist/types/router/match-middleware/cache-store.d.ts +112 -0
  194. package/dist/types/router/match-middleware/index.d.ts +80 -0
  195. package/dist/types/router/match-middleware/intercept-resolution.d.ts +116 -0
  196. package/dist/types/router/match-middleware/segment-resolution.d.ts +94 -0
  197. package/dist/types/router/match-pipelines.d.ts +103 -0
  198. package/dist/types/router/match-result.d.ts +114 -0
  199. package/dist/types/router/metrics.d.ts +6 -0
  200. package/dist/types/router/middleware-types.d.ts +74 -0
  201. package/dist/types/router/middleware.d.ts +116 -0
  202. package/dist/types/router/navigation-snapshot.d.ts +22 -0
  203. package/dist/types/router/params-util.d.ts +8 -0
  204. package/dist/types/router/parse-pattern.d.ts +38 -0
  205. package/dist/types/router/pattern-matching.d.ts +169 -0
  206. package/dist/types/router/prefetch-cache-ttl.d.ts +27 -0
  207. package/dist/types/router/prefetch-limits.d.ts +20 -0
  208. package/dist/types/router/prerender-match.d.ts +50 -0
  209. package/dist/types/router/preview-match.d.ts +22 -0
  210. package/dist/types/router/request-classification.d.ts +104 -0
  211. package/dist/types/router/revalidation.d.ts +57 -0
  212. package/dist/types/router/route-snapshot.d.ts +112 -0
  213. package/dist/types/router/router-context.d.ts +137 -0
  214. package/dist/types/router/router-interfaces.d.ts +432 -0
  215. package/dist/types/router/router-options.d.ts +738 -0
  216. package/dist/types/router/router-registry.d.ts +15 -0
  217. package/dist/types/router/segment-resolution/fresh.d.ts +55 -0
  218. package/dist/types/router/segment-resolution/helpers.d.ts +93 -0
  219. package/dist/types/router/segment-resolution/loader-cache.d.ts +33 -0
  220. package/dist/types/router/segment-resolution/loader-mask.d.ts +44 -0
  221. package/dist/types/router/segment-resolution/loader-snapshot.d.ts +90 -0
  222. package/dist/types/router/segment-resolution/mask-nested.d.ts +53 -0
  223. package/dist/types/router/segment-resolution/revalidation.d.ts +85 -0
  224. package/dist/types/router/segment-resolution/static-store.d.ts +17 -0
  225. package/dist/types/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
  226. package/dist/types/router/segment-resolution/view-transition-default.d.ts +28 -0
  227. package/dist/types/router/segment-resolution.d.ts +3 -0
  228. package/dist/types/router/segment-wrappers.d.ts +53 -0
  229. package/dist/types/router/state-cookie-name.d.ts +1 -0
  230. package/dist/types/router/substitute-pattern-params.d.ts +23 -0
  231. package/dist/types/router/telemetry-otel.d.ts +113 -0
  232. package/dist/types/router/telemetry.d.ts +216 -0
  233. package/dist/types/router/timeout.d.ts +96 -0
  234. package/dist/types/router/tracing.d.ts +125 -0
  235. package/dist/types/router/trie-matching.d.ts +32 -0
  236. package/dist/types/router/types.d.ts +98 -0
  237. package/dist/types/router/url-params.d.ts +26 -0
  238. package/dist/types/router.d.ts +7 -0
  239. package/dist/types/rsc/capture-queue.d.ts +6 -0
  240. package/dist/types/rsc/full-payload.d.ts +22 -0
  241. package/dist/types/rsc/handler-context.d.ts +31 -0
  242. package/dist/types/rsc/handler.d.ts +9 -0
  243. package/dist/types/rsc/helpers.d.ts +124 -0
  244. package/dist/types/rsc/index.d.ts +17 -0
  245. package/dist/types/rsc/json-route-result.d.ts +20 -0
  246. package/dist/types/rsc/loader-fetch.d.ts +14 -0
  247. package/dist/types/rsc/manifest-init.d.ts +18 -0
  248. package/dist/types/rsc/nonce.d.ts +28 -0
  249. package/dist/types/rsc/origin-guard.d.ts +50 -0
  250. package/dist/types/rsc/progressive-enhancement.d.ts +19 -0
  251. package/dist/types/rsc/redirect-guard.d.ts +37 -0
  252. package/dist/types/rsc/render-pipeline.d.ts +138 -0
  253. package/dist/types/rsc/response-cache-serve.d.ts +46 -0
  254. package/dist/types/rsc/response-error.d.ts +19 -0
  255. package/dist/types/rsc/response-route-handler.d.ts +29 -0
  256. package/dist/types/rsc/rsc-rendering.d.ts +23 -0
  257. package/dist/types/rsc/runtime-warnings.d.ts +22 -0
  258. package/dist/types/rsc/server-action.d.ts +68 -0
  259. package/dist/types/rsc/shell-build-manifest.d.ts +84 -0
  260. package/dist/types/rsc/shell-capture-constants.d.ts +27 -0
  261. package/dist/types/rsc/shell-capture.d.ts +374 -0
  262. package/dist/types/rsc/shell-serve.d.ts +174 -0
  263. package/dist/types/rsc/ssr-setup.d.ts +73 -0
  264. package/dist/types/rsc/transition-gate.d.ts +27 -0
  265. package/dist/types/rsc/types.d.ts +290 -0
  266. package/dist/types/runtime-env.d.ts +1 -0
  267. package/dist/types/search-params.d.ts +125 -0
  268. package/dist/types/segment-content-promise.d.ts +13 -0
  269. package/dist/types/segment-fragments.d.ts +56 -0
  270. package/dist/types/segment-loader-promise.d.ts +22 -0
  271. package/dist/types/segment-system.d.ts +84 -0
  272. package/dist/types/serialize.d.ts +164 -0
  273. package/dist/types/server/context.d.ts +494 -0
  274. package/dist/types/server/cookie-parse.d.ts +10 -0
  275. package/dist/types/server/cookie-store.d.ts +107 -0
  276. package/dist/types/server/fetchable-loader-store.d.ts +20 -0
  277. package/dist/types/server/handle-store.d.ts +100 -0
  278. package/dist/types/server/loader-registry.d.ts +32 -0
  279. package/dist/types/server/request-context.d.ts +618 -0
  280. package/dist/types/server/root-layout.d.ts +3 -0
  281. package/dist/types/server.d.ts +15 -0
  282. package/dist/types/ssr/index.d.ts +233 -0
  283. package/dist/types/ssr/inject-rsc-eager.d.ts +3 -0
  284. package/dist/types/ssr/preinit-client-references.d.ts +71 -0
  285. package/dist/types/ssr/ssr-root.d.ts +69 -0
  286. package/dist/types/static-handler.d.ts +57 -0
  287. package/dist/types/testing/cache-status.d.ts +63 -0
  288. package/dist/types/testing/collect-handle.d.ts +20 -0
  289. package/dist/types/testing/dispatch.d.ts +127 -0
  290. package/dist/types/testing/dom.entry.d.ts +15 -0
  291. package/dist/types/testing/e2e/fixture.d.ts +37 -0
  292. package/dist/types/testing/e2e/index.d.ts +31 -0
  293. package/dist/types/testing/e2e/matchers.d.ts +17 -0
  294. package/dist/types/testing/e2e/page-helpers.d.ts +62 -0
  295. package/dist/types/testing/e2e/parity.d.ts +111 -0
  296. package/dist/types/testing/e2e/server.d.ts +35 -0
  297. package/dist/types/testing/flight-matchers.d.ts +55 -0
  298. package/dist/types/testing/flight-normalize.d.ts +1 -0
  299. package/dist/types/testing/flight-tree.d.ts +192 -0
  300. package/dist/types/testing/flight.d.ts +115 -0
  301. package/dist/types/testing/flight.entry.d.ts +27 -0
  302. package/dist/types/testing/generated-routes.d.ts +66 -0
  303. package/dist/types/testing/index.d.ts +54 -0
  304. package/dist/types/testing/internal/context.d.ts +225 -0
  305. package/dist/types/testing/internal/flight-client-globals.d.ts +1 -0
  306. package/dist/types/testing/internal/seed-vars.d.ts +30 -0
  307. package/dist/types/testing/render-handler.d.ts +160 -0
  308. package/dist/types/testing/render-route.d.ts +246 -0
  309. package/dist/types/testing/run-loader.d.ts +186 -0
  310. package/dist/types/testing/run-middleware.d.ts +132 -0
  311. package/dist/types/testing/run-transition-when.d.ts +77 -0
  312. package/dist/types/testing/shell-status.d.ts +58 -0
  313. package/dist/types/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
  314. package/dist/types/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
  315. package/dist/types/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
  316. package/dist/types/testing/vitest-stubs/version.d.ts +1 -0
  317. package/dist/types/testing/vitest.d.ts +205 -0
  318. package/dist/types/theme/ThemeProvider.d.ts +13 -0
  319. package/dist/types/theme/ThemeScript.d.ts +45 -0
  320. package/dist/types/theme/constants.d.ts +39 -0
  321. package/dist/types/theme/index.d.ts +29 -0
  322. package/dist/types/theme/theme-context.d.ts +21 -0
  323. package/dist/types/theme/theme-script.d.ts +26 -0
  324. package/dist/types/theme/types.d.ts +162 -0
  325. package/dist/types/theme/use-theme.d.ts +8 -0
  326. package/dist/types/types/boundaries.d.ts +93 -0
  327. package/dist/types/types/cache-types.d.ts +191 -0
  328. package/dist/types/types/error-types.d.ts +114 -0
  329. package/dist/types/types/global-namespace.d.ts +90 -0
  330. package/dist/types/types/handler-context.d.ts +658 -0
  331. package/dist/types/types/index.d.ts +11 -0
  332. package/dist/types/types/loader-types.d.ts +182 -0
  333. package/dist/types/types/request-scope.d.ts +93 -0
  334. package/dist/types/types/route-config.d.ts +105 -0
  335. package/dist/types/types/route-entry.d.ts +95 -0
  336. package/dist/types/types/segments.d.ts +234 -0
  337. package/dist/types/types.d.ts +1 -0
  338. package/dist/types/urls/include-helper.d.ts +17 -0
  339. package/dist/types/urls/include-provider.d.ts +27 -0
  340. package/dist/types/urls/index.d.ts +6 -0
  341. package/dist/types/urls/path-helper-types.d.ts +197 -0
  342. package/dist/types/urls/path-helper.d.ts +12 -0
  343. package/dist/types/urls/pattern-types.d.ts +166 -0
  344. package/dist/types/urls/response-types.d.ts +67 -0
  345. package/dist/types/urls/type-extraction.d.ts +157 -0
  346. package/dist/types/urls/urls-function.d.ts +24 -0
  347. package/dist/types/urls.d.ts +1 -0
  348. package/dist/types/use-loader.d.ts +150 -0
  349. package/dist/types/vercel/index.d.ts +10 -0
  350. package/dist/types/vercel/tracing.d.ts +70 -0
  351. package/dist/types/vite/debug.d.ts +80 -0
  352. package/dist/types/vite/discovery/bundle-postprocess.d.ts +12 -0
  353. package/dist/types/vite/discovery/dev-prerender-cache.d.ts +65 -0
  354. package/dist/types/vite/discovery/discover-routers.d.ts +17 -0
  355. package/dist/types/vite/discovery/discovery-errors.d.ts +113 -0
  356. package/dist/types/vite/discovery/gate-state.d.ts +79 -0
  357. package/dist/types/vite/discovery/prerender-collection.d.ts +24 -0
  358. package/dist/types/vite/discovery/route-types-writer.d.ts +32 -0
  359. package/dist/types/vite/discovery/self-gen-tracking.d.ts +22 -0
  360. package/dist/types/vite/discovery/shell-prerender-phase.d.ts +40 -0
  361. package/dist/types/vite/discovery/state.d.ts +162 -0
  362. package/dist/types/vite/discovery/virtual-module-codegen.d.ts +15 -0
  363. package/dist/types/vite/index.d.ts +11 -0
  364. package/dist/types/vite/inject-client-debug.d.ts +56 -0
  365. package/dist/types/vite/plugin-types.d.ts +298 -0
  366. package/dist/types/vite/plugins/cjs-to-esm.d.ts +6 -0
  367. package/dist/types/vite/plugins/client-ref-dedup.d.ts +40 -0
  368. package/dist/types/vite/plugins/client-ref-hashing.d.ts +35 -0
  369. package/dist/types/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
  370. package/dist/types/vite/plugins/expose-action-id.d.ts +18 -0
  371. package/dist/types/vite/plugins/expose-id-utils.d.ts +37 -0
  372. package/dist/types/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
  373. package/dist/types/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
  374. package/dist/types/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
  375. package/dist/types/vite/plugins/expose-ids/router-transform.d.ts +13 -0
  376. package/dist/types/vite/plugins/expose-ids/types.d.ts +29 -0
  377. package/dist/types/vite/plugins/expose-internal-ids.d.ts +6 -0
  378. package/dist/types/vite/plugins/performance-tracks.d.ts +25 -0
  379. package/dist/types/vite/plugins/refresh-cmd.d.ts +20 -0
  380. package/dist/types/vite/plugins/use-cache-transform.d.ts +20 -0
  381. package/dist/types/vite/plugins/vercel-output.d.ts +85 -0
  382. package/dist/types/vite/plugins/version-injector.d.ts +21 -0
  383. package/dist/types/vite/plugins/version-plugin.d.ts +19 -0
  384. package/dist/types/vite/plugins/virtual-entries.d.ts +36 -0
  385. package/dist/types/vite/plugins/virtual-stub-plugin.d.ts +7 -0
  386. package/dist/types/vite/rango.d.ts +29 -0
  387. package/dist/types/vite/router-discovery.d.ts +23 -0
  388. package/dist/types/vite/utils/ast-handler-extract.d.ts +64 -0
  389. package/dist/types/vite/utils/banner.d.ts +2 -0
  390. package/dist/types/vite/utils/bundle-analysis.d.ts +28 -0
  391. package/dist/types/vite/utils/client-chunks.d.ts +55 -0
  392. package/dist/types/vite/utils/directive-prologue.d.ts +16 -0
  393. package/dist/types/vite/utils/forward-user-plugins.d.ts +37 -0
  394. package/dist/types/vite/utils/manifest-utils.d.ts +7 -0
  395. package/dist/types/vite/utils/package-resolution.d.ts +6 -0
  396. package/dist/types/vite/utils/prerender-utils.d.ts +32 -0
  397. package/dist/types/vite/utils/shared-utils.d.ts +55 -0
  398. package/dist/vite/index.js +1051 -361
  399. package/package.json +39 -33
  400. package/skills/catalog.json +6 -0
  401. package/skills/cloudflare/SKILL.md +149 -0
  402. package/skills/cloudflare/agents/openai.yaml +4 -0
  403. package/skills/cloudflare/references/d1-and-local-dev.md +131 -0
  404. package/skills/cloudflare/references/streaming-and-deploy.md +107 -0
  405. package/skills/cloudflare/references/webhooks-and-crypto.md +147 -0
  406. package/skills/composability/SKILL.md +14 -0
  407. package/skills/debug-manifest/SKILL.md +2 -10
  408. package/skills/links/SKILL.md +12 -0
  409. package/skills/middleware/SKILL.md +33 -0
  410. package/skills/migrate-nextjs/SKILL.md +65 -16
  411. package/skills/migrate-nextjs/backend-host-swap.md +120 -0
  412. package/skills/migrate-react-router/SKILL.md +6 -6
  413. package/skills/mime-routes/SKILL.md +25 -17
  414. package/skills/ppr/SKILL.md +100 -15
  415. package/skills/prerender/SKILL.md +44 -1
  416. package/skills/rango/SKILL.md +10 -10
  417. package/skills/response-routes/SKILL.md +41 -4
  418. package/skills/route/SKILL.md +6 -0
  419. package/skills/testing/SKILL.md +1 -0
  420. package/skills/testing/cache-prerender.md +43 -2
  421. package/skills/testing/response-routes.md +2 -2
  422. package/src/browser/event-controller.ts +16 -2
  423. package/src/browser/rsc-router.tsx +11 -0
  424. package/src/build/generate-manifest.ts +5 -36
  425. package/src/build/route-trie.ts +5 -50
  426. package/src/cache/cache-key-utils.ts +0 -1
  427. package/src/cache/cache-scope.ts +41 -3
  428. package/src/cache/cf/cf-cache-store.ts +465 -56
  429. package/src/cache/cf/cf-cache-types.ts +66 -0
  430. package/src/cache/cf/cf-tag-marker-memo.ts +5 -2
  431. package/src/cache/cf/cf-zone-purge.ts +101 -0
  432. package/src/cache/cf/index.ts +5 -0
  433. package/src/cache/handle-snapshot.ts +22 -1
  434. package/src/cache/index.ts +2 -0
  435. package/src/cache/memory-segment-store.ts +32 -0
  436. package/src/cache/segment-codec.ts +47 -0
  437. package/src/cache/shell-snapshot.ts +79 -14
  438. package/src/cache/types.ts +38 -0
  439. package/src/cache/vercel/vercel-cache-store.ts +71 -2
  440. package/src/deps/ssr.ts +4 -1
  441. package/src/index.rsc.ts +7 -0
  442. package/src/index.ts +1 -0
  443. package/src/prerender/build-shell-capture.ts +447 -0
  444. package/src/prerender/shell-manifest-key.ts +20 -0
  445. package/src/prerender/store.ts +10 -1
  446. package/src/prerender.ts +3 -3
  447. package/src/redirect-origin.ts +37 -8
  448. package/src/route-map-builder.ts +8 -8
  449. package/src/router/content-negotiation.ts +47 -5
  450. package/src/router/handler-context.ts +18 -10
  451. package/src/router/intercept-resolution.ts +30 -1
  452. package/src/router/loader-resolution.ts +16 -0
  453. package/src/router/match-api.ts +9 -2
  454. package/src/router/match-middleware/cache-lookup.ts +12 -1
  455. package/src/router/metrics.ts +17 -2
  456. package/src/router/middleware-types.ts +17 -0
  457. package/src/router/middleware.ts +4 -0
  458. package/src/router/prerender-match.ts +28 -0
  459. package/src/router/router-interfaces.ts +7 -6
  460. package/src/router/router-options.ts +13 -8
  461. package/src/router/segment-resolution/fresh.ts +21 -2
  462. package/src/router/segment-resolution/helpers.ts +1 -1
  463. package/src/router/segment-resolution/loader-cache.ts +38 -7
  464. package/src/router/segment-resolution/mask-nested.ts +19 -3
  465. package/src/router/segment-resolution/revalidation.ts +9 -0
  466. package/src/router/telemetry-otel.ts +11 -0
  467. package/src/router/telemetry.ts +1 -0
  468. package/src/router/timeout.ts +41 -1
  469. package/src/router.ts +5 -4
  470. package/src/rsc/capture-queue.ts +67 -0
  471. package/src/rsc/handler.ts +151 -77
  472. package/src/rsc/helpers.ts +67 -4
  473. package/src/rsc/progressive-enhancement.ts +66 -54
  474. package/src/rsc/redirect-guard.ts +3 -1
  475. package/src/rsc/render-pipeline.ts +559 -0
  476. package/src/rsc/response-cache-serve.ts +39 -18
  477. package/src/rsc/response-route-handler.ts +9 -45
  478. package/src/rsc/rsc-rendering.ts +303 -103
  479. package/src/rsc/server-action.ts +50 -42
  480. package/src/rsc/shell-build-manifest.ts +316 -0
  481. package/src/rsc/shell-capture-constants.ts +27 -0
  482. package/src/rsc/shell-capture.ts +595 -69
  483. package/src/rsc/shell-serve.ts +133 -3
  484. package/src/rsc/ssr-setup.ts +102 -23
  485. package/src/segment-fragments.ts +124 -0
  486. package/src/server/context.ts +184 -8
  487. package/src/server/request-context.ts +297 -45
  488. package/src/ssr/index.tsx +167 -32
  489. package/src/ssr/preinit-client-references.ts +106 -0
  490. package/src/ssr/ssr-root.tsx +35 -2
  491. package/src/testing/dispatch.ts +132 -67
  492. package/src/testing/e2e/index.ts +8 -0
  493. package/src/testing/index.ts +9 -1
  494. package/src/testing/internal/context.ts +9 -0
  495. package/src/testing/render-handler.ts +15 -1
  496. package/src/testing/run-middleware.ts +14 -0
  497. package/src/testing/shell-status.ts +100 -0
  498. package/src/types/handler-context.ts +13 -2
  499. package/src/urls/path-helper-types.ts +1 -1
  500. package/src/urls/pattern-types.ts +29 -0
  501. package/src/vite/discovery/discover-routers.ts +71 -52
  502. package/src/vite/discovery/prerender-collection.ts +16 -0
  503. package/src/vite/discovery/shell-prerender-phase.ts +397 -0
  504. package/src/vite/discovery/state.ts +44 -0
  505. package/src/vite/discovery/virtual-module-codegen.ts +126 -20
  506. package/src/vite/index.ts +1 -0
  507. package/src/vite/plugin-types.ts +33 -0
  508. package/src/vite/plugins/version-plugin.ts +8 -0
  509. package/src/vite/plugins/virtual-entries.ts +37 -4
  510. package/src/vite/rango.ts +42 -2
  511. package/src/vite/router-discovery.ts +432 -21
  512. package/src/vite/utils/package-resolution.ts +1 -0
  513. package/src/vite/utils/prerender-utils.ts +25 -6
  514. package/src/vite/utils/shared-utils.ts +4 -2
  515. package/dist/__internal.d.ts +0 -83
  516. package/dist/__internal.d.ts.map +0 -1
  517. package/dist/__internal.js +0 -19
  518. package/dist/__internal.js.map +0 -1
  519. package/dist/__mocks__/version.d.ts +0 -7
  520. package/dist/__mocks__/version.d.ts.map +0 -1
  521. package/dist/__mocks__/version.js +0 -7
  522. package/dist/__mocks__/version.js.map +0 -1
  523. package/dist/__tests__/client-href.test.d.ts +0 -2
  524. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  525. package/dist/__tests__/client-href.test.js +0 -74
  526. package/dist/__tests__/client-href.test.js.map +0 -1
  527. package/dist/__tests__/component-utils.test.d.ts +0 -2
  528. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  529. package/dist/__tests__/component-utils.test.js +0 -51
  530. package/dist/__tests__/component-utils.test.js.map +0 -1
  531. package/dist/__tests__/event-controller.test.d.ts +0 -2
  532. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  533. package/dist/__tests__/event-controller.test.js +0 -538
  534. package/dist/__tests__/event-controller.test.js.map +0 -1
  535. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  536. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  537. package/dist/__tests__/helpers/route-tree.js +0 -374
  538. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  539. package/dist/__tests__/match-result.test.d.ts +0 -2
  540. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  541. package/dist/__tests__/match-result.test.js +0 -154
  542. package/dist/__tests__/match-result.test.js.map +0 -1
  543. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  544. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  545. package/dist/__tests__/navigation-store.test.js +0 -440
  546. package/dist/__tests__/navigation-store.test.js.map +0 -1
  547. package/dist/__tests__/partial-update.test.d.ts +0 -2
  548. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  549. package/dist/__tests__/partial-update.test.js +0 -1009
  550. package/dist/__tests__/partial-update.test.js.map +0 -1
  551. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  552. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  553. package/dist/__tests__/reverse-types.test.js +0 -656
  554. package/dist/__tests__/reverse-types.test.js.map +0 -1
  555. package/dist/__tests__/route-definition.test.d.ts +0 -2
  556. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  557. package/dist/__tests__/route-definition.test.js +0 -55
  558. package/dist/__tests__/route-definition.test.js.map +0 -1
  559. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  560. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  561. package/dist/__tests__/router-helpers.test.js +0 -377
  562. package/dist/__tests__/router-helpers.test.js.map +0 -1
  563. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  564. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  565. package/dist/__tests__/router-integration-2.test.js +0 -426
  566. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  567. package/dist/__tests__/router-integration.test.d.ts +0 -2
  568. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  569. package/dist/__tests__/router-integration.test.js +0 -1051
  570. package/dist/__tests__/router-integration.test.js.map +0 -1
  571. package/dist/__tests__/search-params.test.d.ts +0 -5
  572. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  573. package/dist/__tests__/search-params.test.js +0 -306
  574. package/dist/__tests__/search-params.test.js.map +0 -1
  575. package/dist/__tests__/segment-system.test.d.ts +0 -2
  576. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  577. package/dist/__tests__/segment-system.test.js +0 -627
  578. package/dist/__tests__/segment-system.test.js.map +0 -1
  579. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  580. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  581. package/dist/__tests__/static-handler-types.test.js +0 -63
  582. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  583. package/dist/__tests__/urls.test.d.ts +0 -2
  584. package/dist/__tests__/urls.test.d.ts.map +0 -1
  585. package/dist/__tests__/urls.test.js +0 -421
  586. package/dist/__tests__/urls.test.js.map +0 -1
  587. package/dist/__tests__/use-mount.test.d.ts +0 -2
  588. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  589. package/dist/__tests__/use-mount.test.js +0 -35
  590. package/dist/__tests__/use-mount.test.js.map +0 -1
  591. package/dist/bin/rango.d.ts +0 -2
  592. package/dist/bin/rango.d.ts.map +0 -1
  593. package/dist/bin/rango.js.map +0 -1
  594. package/dist/browser/event-controller.d.ts +0 -191
  595. package/dist/browser/event-controller.d.ts.map +0 -1
  596. package/dist/browser/event-controller.js +0 -559
  597. package/dist/browser/event-controller.js.map +0 -1
  598. package/dist/browser/index.d.ts +0 -2
  599. package/dist/browser/index.d.ts.map +0 -1
  600. package/dist/browser/index.js +0 -14
  601. package/dist/browser/index.js.map +0 -1
  602. package/dist/browser/link-interceptor.d.ts +0 -38
  603. package/dist/browser/link-interceptor.d.ts.map +0 -1
  604. package/dist/browser/link-interceptor.js +0 -99
  605. package/dist/browser/link-interceptor.js.map +0 -1
  606. package/dist/browser/logging.d.ts +0 -10
  607. package/dist/browser/logging.d.ts.map +0 -1
  608. package/dist/browser/logging.js +0 -29
  609. package/dist/browser/logging.js.map +0 -1
  610. package/dist/browser/lru-cache.d.ts +0 -17
  611. package/dist/browser/lru-cache.d.ts.map +0 -1
  612. package/dist/browser/lru-cache.js +0 -50
  613. package/dist/browser/lru-cache.js.map +0 -1
  614. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  615. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  616. package/dist/browser/merge-segment-loaders.js +0 -102
  617. package/dist/browser/merge-segment-loaders.js.map +0 -1
  618. package/dist/browser/navigation-bridge.d.ts +0 -102
  619. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  620. package/dist/browser/navigation-bridge.js +0 -708
  621. package/dist/browser/navigation-bridge.js.map +0 -1
  622. package/dist/browser/navigation-client.d.ts +0 -25
  623. package/dist/browser/navigation-client.d.ts.map +0 -1
  624. package/dist/browser/navigation-client.js +0 -157
  625. package/dist/browser/navigation-client.js.map +0 -1
  626. package/dist/browser/navigation-store.d.ts +0 -101
  627. package/dist/browser/navigation-store.d.ts.map +0 -1
  628. package/dist/browser/navigation-store.js +0 -625
  629. package/dist/browser/navigation-store.js.map +0 -1
  630. package/dist/browser/partial-update.d.ts +0 -75
  631. package/dist/browser/partial-update.d.ts.map +0 -1
  632. package/dist/browser/partial-update.js +0 -426
  633. package/dist/browser/partial-update.js.map +0 -1
  634. package/dist/browser/react/Link.d.ts +0 -86
  635. package/dist/browser/react/Link.d.ts.map +0 -1
  636. package/dist/browser/react/Link.js +0 -128
  637. package/dist/browser/react/Link.js.map +0 -1
  638. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  639. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  640. package/dist/browser/react/NavigationProvider.js +0 -216
  641. package/dist/browser/react/NavigationProvider.js.map +0 -1
  642. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  643. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  644. package/dist/browser/react/ScrollRestoration.js +0 -57
  645. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  646. package/dist/browser/react/context.d.ts +0 -46
  647. package/dist/browser/react/context.d.ts.map +0 -1
  648. package/dist/browser/react/context.js +0 -10
  649. package/dist/browser/react/context.js.map +0 -1
  650. package/dist/browser/react/index.d.ts +0 -11
  651. package/dist/browser/react/index.d.ts.map +0 -1
  652. package/dist/browser/react/index.js +0 -22
  653. package/dist/browser/react/index.js.map +0 -1
  654. package/dist/browser/react/location-state-shared.d.ts +0 -63
  655. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  656. package/dist/browser/react/location-state-shared.js +0 -81
  657. package/dist/browser/react/location-state-shared.js.map +0 -1
  658. package/dist/browser/react/location-state.d.ts +0 -23
  659. package/dist/browser/react/location-state.d.ts.map +0 -1
  660. package/dist/browser/react/location-state.js +0 -29
  661. package/dist/browser/react/location-state.js.map +0 -1
  662. package/dist/browser/react/mount-context.d.ts +0 -24
  663. package/dist/browser/react/mount-context.d.ts.map +0 -1
  664. package/dist/browser/react/mount-context.js +0 -24
  665. package/dist/browser/react/mount-context.js.map +0 -1
  666. package/dist/browser/react/use-action.d.ts +0 -64
  667. package/dist/browser/react/use-action.d.ts.map +0 -1
  668. package/dist/browser/react/use-action.js +0 -134
  669. package/dist/browser/react/use-action.js.map +0 -1
  670. package/dist/browser/react/use-client-cache.d.ts +0 -41
  671. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  672. package/dist/browser/react/use-client-cache.js +0 -39
  673. package/dist/browser/react/use-client-cache.js.map +0 -1
  674. package/dist/browser/react/use-handle.d.ts +0 -31
  675. package/dist/browser/react/use-handle.d.ts.map +0 -1
  676. package/dist/browser/react/use-handle.js +0 -144
  677. package/dist/browser/react/use-handle.js.map +0 -1
  678. package/dist/browser/react/use-href.d.ts +0 -33
  679. package/dist/browser/react/use-href.d.ts.map +0 -1
  680. package/dist/browser/react/use-href.js +0 -39
  681. package/dist/browser/react/use-href.js.map +0 -1
  682. package/dist/browser/react/use-link-status.d.ts +0 -37
  683. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  684. package/dist/browser/react/use-link-status.js +0 -99
  685. package/dist/browser/react/use-link-status.js.map +0 -1
  686. package/dist/browser/react/use-mount.d.ts +0 -25
  687. package/dist/browser/react/use-mount.d.ts.map +0 -1
  688. package/dist/browser/react/use-mount.js +0 -30
  689. package/dist/browser/react/use-mount.js.map +0 -1
  690. package/dist/browser/react/use-navigation.d.ts +0 -27
  691. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  692. package/dist/browser/react/use-navigation.js +0 -87
  693. package/dist/browser/react/use-navigation.js.map +0 -1
  694. package/dist/browser/react/use-segments.d.ts +0 -38
  695. package/dist/browser/react/use-segments.d.ts.map +0 -1
  696. package/dist/browser/react/use-segments.js +0 -130
  697. package/dist/browser/react/use-segments.js.map +0 -1
  698. package/dist/browser/request-controller.d.ts +0 -26
  699. package/dist/browser/request-controller.d.ts.map +0 -1
  700. package/dist/browser/request-controller.js +0 -147
  701. package/dist/browser/request-controller.js.map +0 -1
  702. package/dist/browser/rsc-router.d.ts +0 -129
  703. package/dist/browser/rsc-router.d.ts.map +0 -1
  704. package/dist/browser/rsc-router.js +0 -195
  705. package/dist/browser/rsc-router.js.map +0 -1
  706. package/dist/browser/scroll-restoration.d.ts +0 -93
  707. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  708. package/dist/browser/scroll-restoration.js +0 -321
  709. package/dist/browser/scroll-restoration.js.map +0 -1
  710. package/dist/browser/segment-structure-assert.d.ts +0 -17
  711. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  712. package/dist/browser/segment-structure-assert.js +0 -59
  713. package/dist/browser/segment-structure-assert.js.map +0 -1
  714. package/dist/browser/server-action-bridge.d.ts +0 -26
  715. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  716. package/dist/browser/server-action-bridge.js +0 -668
  717. package/dist/browser/server-action-bridge.js.map +0 -1
  718. package/dist/browser/shallow.d.ts +0 -12
  719. package/dist/browser/shallow.d.ts.map +0 -1
  720. package/dist/browser/shallow.js +0 -34
  721. package/dist/browser/shallow.js.map +0 -1
  722. package/dist/browser/types.d.ts +0 -369
  723. package/dist/browser/types.d.ts.map +0 -1
  724. package/dist/browser/types.js +0 -2
  725. package/dist/browser/types.js.map +0 -1
  726. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  727. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  728. package/dist/build/__tests__/generate-cli.test.js +0 -237
  729. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  730. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  731. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  732. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  733. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  734. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  735. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  736. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  737. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  738. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  739. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  740. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  741. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  742. package/dist/build/generate-manifest.d.ts +0 -81
  743. package/dist/build/generate-manifest.d.ts.map +0 -1
  744. package/dist/build/generate-manifest.js +0 -276
  745. package/dist/build/generate-manifest.js.map +0 -1
  746. package/dist/build/generate-route-types.d.ts +0 -115
  747. package/dist/build/generate-route-types.d.ts.map +0 -1
  748. package/dist/build/generate-route-types.js +0 -740
  749. package/dist/build/generate-route-types.js.map +0 -1
  750. package/dist/build/index.d.ts +0 -21
  751. package/dist/build/index.d.ts.map +0 -1
  752. package/dist/build/index.js +0 -21
  753. package/dist/build/index.js.map +0 -1
  754. package/dist/build/route-trie.d.ts +0 -71
  755. package/dist/build/route-trie.d.ts.map +0 -1
  756. package/dist/build/route-trie.js +0 -175
  757. package/dist/build/route-trie.js.map +0 -1
  758. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  759. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  760. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  761. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  762. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  763. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  764. package/dist/cache/__tests__/document-cache.test.js +0 -345
  765. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  766. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  767. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  768. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  769. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  770. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  771. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  772. package/dist/cache/__tests__/memory-store.test.js +0 -367
  773. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  774. package/dist/cache/cache-scope.d.ts +0 -102
  775. package/dist/cache/cache-scope.d.ts.map +0 -1
  776. package/dist/cache/cache-scope.js +0 -440
  777. package/dist/cache/cache-scope.js.map +0 -1
  778. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  779. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  780. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  781. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  782. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  783. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  784. package/dist/cache/cf/cf-cache-store.js +0 -242
  785. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  786. package/dist/cache/cf/index.d.ts +0 -14
  787. package/dist/cache/cf/index.d.ts.map +0 -1
  788. package/dist/cache/cf/index.js +0 -17
  789. package/dist/cache/cf/index.js.map +0 -1
  790. package/dist/cache/document-cache.d.ts +0 -64
  791. package/dist/cache/document-cache.d.ts.map +0 -1
  792. package/dist/cache/document-cache.js +0 -228
  793. package/dist/cache/document-cache.js.map +0 -1
  794. package/dist/cache/index.d.ts +0 -19
  795. package/dist/cache/index.d.ts.map +0 -1
  796. package/dist/cache/index.js +0 -21
  797. package/dist/cache/index.js.map +0 -1
  798. package/dist/cache/memory-segment-store.d.ts +0 -110
  799. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  800. package/dist/cache/memory-segment-store.js +0 -117
  801. package/dist/cache/memory-segment-store.js.map +0 -1
  802. package/dist/cache/memory-store.d.ts +0 -41
  803. package/dist/cache/memory-store.d.ts.map +0 -1
  804. package/dist/cache/memory-store.js +0 -191
  805. package/dist/cache/memory-store.js.map +0 -1
  806. package/dist/cache/types.d.ts +0 -317
  807. package/dist/cache/types.d.ts.map +0 -1
  808. package/dist/cache/types.js +0 -12
  809. package/dist/cache/types.js.map +0 -1
  810. package/dist/client.d.ts +0 -248
  811. package/dist/client.d.ts.map +0 -1
  812. package/dist/client.js +0 -367
  813. package/dist/client.js.map +0 -1
  814. package/dist/client.rsc.d.ts +0 -26
  815. package/dist/client.rsc.d.ts.map +0 -1
  816. package/dist/client.rsc.js +0 -46
  817. package/dist/client.rsc.js.map +0 -1
  818. package/dist/component-utils.d.ts +0 -36
  819. package/dist/component-utils.d.ts.map +0 -1
  820. package/dist/component-utils.js +0 -61
  821. package/dist/component-utils.js.map +0 -1
  822. package/dist/components/DefaultDocument.d.ts +0 -13
  823. package/dist/components/DefaultDocument.d.ts.map +0 -1
  824. package/dist/components/DefaultDocument.js +0 -15
  825. package/dist/components/DefaultDocument.js.map +0 -1
  826. package/dist/debug.d.ts +0 -58
  827. package/dist/debug.d.ts.map +0 -1
  828. package/dist/debug.js +0 -157
  829. package/dist/debug.js.map +0 -1
  830. package/dist/default-error-boundary.d.ts +0 -11
  831. package/dist/default-error-boundary.d.ts.map +0 -1
  832. package/dist/default-error-boundary.js +0 -45
  833. package/dist/default-error-boundary.js.map +0 -1
  834. package/dist/deps/browser.d.ts +0 -2
  835. package/dist/deps/browser.d.ts.map +0 -1
  836. package/dist/deps/browser.js +0 -3
  837. package/dist/deps/browser.js.map +0 -1
  838. package/dist/deps/html-stream-client.d.ts +0 -2
  839. package/dist/deps/html-stream-client.d.ts.map +0 -1
  840. package/dist/deps/html-stream-client.js +0 -3
  841. package/dist/deps/html-stream-client.js.map +0 -1
  842. package/dist/deps/html-stream-server.d.ts +0 -2
  843. package/dist/deps/html-stream-server.d.ts.map +0 -1
  844. package/dist/deps/html-stream-server.js +0 -3
  845. package/dist/deps/html-stream-server.js.map +0 -1
  846. package/dist/deps/rsc.d.ts +0 -2
  847. package/dist/deps/rsc.d.ts.map +0 -1
  848. package/dist/deps/rsc.js +0 -4
  849. package/dist/deps/rsc.js.map +0 -1
  850. package/dist/deps/ssr.d.ts +0 -2
  851. package/dist/deps/ssr.d.ts.map +0 -1
  852. package/dist/deps/ssr.js +0 -3
  853. package/dist/deps/ssr.js.map +0 -1
  854. package/dist/errors.d.ts +0 -174
  855. package/dist/errors.d.ts.map +0 -1
  856. package/dist/errors.js +0 -241
  857. package/dist/errors.js.map +0 -1
  858. package/dist/handle.d.ts +0 -78
  859. package/dist/handle.d.ts.map +0 -1
  860. package/dist/handle.js +0 -82
  861. package/dist/handle.js.map +0 -1
  862. package/dist/handles/MetaTags.d.ts +0 -14
  863. package/dist/handles/MetaTags.d.ts.map +0 -1
  864. package/dist/handles/MetaTags.js +0 -136
  865. package/dist/handles/MetaTags.js.map +0 -1
  866. package/dist/handles/index.d.ts +0 -6
  867. package/dist/handles/index.d.ts.map +0 -1
  868. package/dist/handles/index.js +0 -6
  869. package/dist/handles/index.js.map +0 -1
  870. package/dist/handles/meta.d.ts +0 -39
  871. package/dist/handles/meta.d.ts.map +0 -1
  872. package/dist/handles/meta.js +0 -202
  873. package/dist/handles/meta.js.map +0 -1
  874. package/dist/host/__tests__/errors.test.d.ts +0 -2
  875. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  876. package/dist/host/__tests__/errors.test.js +0 -76
  877. package/dist/host/__tests__/errors.test.js.map +0 -1
  878. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  879. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  880. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  881. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  882. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  883. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  884. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  885. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  886. package/dist/host/__tests__/router.test.d.ts +0 -2
  887. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  888. package/dist/host/__tests__/router.test.js +0 -241
  889. package/dist/host/__tests__/router.test.js.map +0 -1
  890. package/dist/host/__tests__/testing.test.d.ts +0 -2
  891. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  892. package/dist/host/__tests__/testing.test.js +0 -64
  893. package/dist/host/__tests__/testing.test.js.map +0 -1
  894. package/dist/host/__tests__/utils.test.d.ts +0 -2
  895. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  896. package/dist/host/__tests__/utils.test.js +0 -29
  897. package/dist/host/__tests__/utils.test.js.map +0 -1
  898. package/dist/host/cookie-handler.d.ts +0 -34
  899. package/dist/host/cookie-handler.d.ts.map +0 -1
  900. package/dist/host/cookie-handler.js +0 -124
  901. package/dist/host/cookie-handler.js.map +0 -1
  902. package/dist/host/errors.d.ts +0 -56
  903. package/dist/host/errors.d.ts.map +0 -1
  904. package/dist/host/errors.js +0 -79
  905. package/dist/host/errors.js.map +0 -1
  906. package/dist/host/index.d.ts +0 -29
  907. package/dist/host/index.d.ts.map +0 -1
  908. package/dist/host/index.js +0 -32
  909. package/dist/host/index.js.map +0 -1
  910. package/dist/host/pattern-matcher.d.ts +0 -36
  911. package/dist/host/pattern-matcher.d.ts.map +0 -1
  912. package/dist/host/pattern-matcher.js +0 -172
  913. package/dist/host/pattern-matcher.js.map +0 -1
  914. package/dist/host/router.d.ts +0 -26
  915. package/dist/host/router.d.ts.map +0 -1
  916. package/dist/host/router.js +0 -218
  917. package/dist/host/router.js.map +0 -1
  918. package/dist/host/testing.d.ts +0 -36
  919. package/dist/host/testing.d.ts.map +0 -1
  920. package/dist/host/testing.js +0 -55
  921. package/dist/host/testing.js.map +0 -1
  922. package/dist/host/types.d.ts +0 -115
  923. package/dist/host/types.d.ts.map +0 -1
  924. package/dist/host/types.js +0 -7
  925. package/dist/host/types.js.map +0 -1
  926. package/dist/host/utils.d.ts +0 -21
  927. package/dist/host/utils.d.ts.map +0 -1
  928. package/dist/host/utils.js +0 -23
  929. package/dist/host/utils.js.map +0 -1
  930. package/dist/href-client.d.ts +0 -131
  931. package/dist/href-client.d.ts.map +0 -1
  932. package/dist/href-client.js +0 -64
  933. package/dist/href-client.js.map +0 -1
  934. package/dist/href-context.d.ts +0 -29
  935. package/dist/href-context.d.ts.map +0 -1
  936. package/dist/href-context.js +0 -21
  937. package/dist/href-context.js.map +0 -1
  938. package/dist/index.d.ts +0 -73
  939. package/dist/index.d.ts.map +0 -1
  940. package/dist/index.js +0 -91
  941. package/dist/index.js.map +0 -1
  942. package/dist/index.rsc.d.ts +0 -32
  943. package/dist/index.rsc.d.ts.map +0 -1
  944. package/dist/index.rsc.js +0 -40
  945. package/dist/index.rsc.js.map +0 -1
  946. package/dist/internal-debug.d.ts +0 -2
  947. package/dist/internal-debug.d.ts.map +0 -1
  948. package/dist/internal-debug.js +0 -5
  949. package/dist/internal-debug.js.map +0 -1
  950. package/dist/loader.d.ts +0 -14
  951. package/dist/loader.d.ts.map +0 -1
  952. package/dist/loader.js +0 -20
  953. package/dist/loader.js.map +0 -1
  954. package/dist/loader.rsc.d.ts +0 -19
  955. package/dist/loader.rsc.d.ts.map +0 -1
  956. package/dist/loader.rsc.js +0 -99
  957. package/dist/loader.rsc.js.map +0 -1
  958. package/dist/network-error-thrower.d.ts +0 -17
  959. package/dist/network-error-thrower.d.ts.map +0 -1
  960. package/dist/network-error-thrower.js +0 -14
  961. package/dist/network-error-thrower.js.map +0 -1
  962. package/dist/outlet-context.d.ts +0 -13
  963. package/dist/outlet-context.d.ts.map +0 -1
  964. package/dist/outlet-context.js +0 -3
  965. package/dist/outlet-context.js.map +0 -1
  966. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  967. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  968. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  969. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  970. package/dist/prerender/param-hash.d.ts +0 -16
  971. package/dist/prerender/param-hash.d.ts.map +0 -1
  972. package/dist/prerender/param-hash.js +0 -36
  973. package/dist/prerender/param-hash.js.map +0 -1
  974. package/dist/prerender/store.d.ts +0 -38
  975. package/dist/prerender/store.d.ts.map +0 -1
  976. package/dist/prerender/store.js +0 -61
  977. package/dist/prerender/store.js.map +0 -1
  978. package/dist/prerender.d.ts +0 -66
  979. package/dist/prerender.d.ts.map +0 -1
  980. package/dist/prerender.js +0 -57
  981. package/dist/prerender.js.map +0 -1
  982. package/dist/reverse.d.ts +0 -196
  983. package/dist/reverse.d.ts.map +0 -1
  984. package/dist/reverse.js +0 -78
  985. package/dist/reverse.js.map +0 -1
  986. package/dist/root-error-boundary.d.ts +0 -33
  987. package/dist/root-error-boundary.d.ts.map +0 -1
  988. package/dist/root-error-boundary.js +0 -165
  989. package/dist/root-error-boundary.js.map +0 -1
  990. package/dist/route-content-wrapper.d.ts +0 -46
  991. package/dist/route-content-wrapper.d.ts.map +0 -1
  992. package/dist/route-content-wrapper.js +0 -77
  993. package/dist/route-content-wrapper.js.map +0 -1
  994. package/dist/route-definition.d.ts +0 -421
  995. package/dist/route-definition.d.ts.map +0 -1
  996. package/dist/route-definition.js +0 -868
  997. package/dist/route-definition.js.map +0 -1
  998. package/dist/route-map-builder.d.ts +0 -155
  999. package/dist/route-map-builder.d.ts.map +0 -1
  1000. package/dist/route-map-builder.js +0 -237
  1001. package/dist/route-map-builder.js.map +0 -1
  1002. package/dist/route-types.d.ts +0 -165
  1003. package/dist/route-types.d.ts.map +0 -1
  1004. package/dist/route-types.js +0 -7
  1005. package/dist/route-types.js.map +0 -1
  1006. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  1007. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  1008. package/dist/router/__tests__/handler-context.test.js +0 -65
  1009. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  1010. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  1011. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  1012. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  1013. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  1014. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  1015. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  1016. package/dist/router/__tests__/match-context.test.js +0 -92
  1017. package/dist/router/__tests__/match-context.test.js.map +0 -1
  1018. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  1019. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  1020. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  1021. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  1022. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  1023. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  1024. package/dist/router/__tests__/match-result.test.js +0 -457
  1025. package/dist/router/__tests__/match-result.test.js.map +0 -1
  1026. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  1027. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  1028. package/dist/router/__tests__/on-error.test.js +0 -678
  1029. package/dist/router/__tests__/on-error.test.js.map +0 -1
  1030. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  1031. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  1032. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  1033. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  1034. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  1035. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  1036. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  1037. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  1038. package/dist/router/error-handling.d.ts +0 -77
  1039. package/dist/router/error-handling.d.ts.map +0 -1
  1040. package/dist/router/error-handling.js +0 -202
  1041. package/dist/router/error-handling.js.map +0 -1
  1042. package/dist/router/handler-context.d.ts +0 -20
  1043. package/dist/router/handler-context.d.ts.map +0 -1
  1044. package/dist/router/handler-context.js +0 -198
  1045. package/dist/router/handler-context.js.map +0 -1
  1046. package/dist/router/intercept-resolution.d.ts +0 -66
  1047. package/dist/router/intercept-resolution.d.ts.map +0 -1
  1048. package/dist/router/intercept-resolution.js +0 -246
  1049. package/dist/router/intercept-resolution.js.map +0 -1
  1050. package/dist/router/loader-resolution.d.ts +0 -64
  1051. package/dist/router/loader-resolution.d.ts.map +0 -1
  1052. package/dist/router/loader-resolution.js +0 -284
  1053. package/dist/router/loader-resolution.js.map +0 -1
  1054. package/dist/router/logging.d.ts +0 -15
  1055. package/dist/router/logging.d.ts.map +0 -1
  1056. package/dist/router/logging.js +0 -99
  1057. package/dist/router/logging.js.map +0 -1
  1058. package/dist/router/manifest.d.ts +0 -22
  1059. package/dist/router/manifest.d.ts.map +0 -1
  1060. package/dist/router/manifest.js +0 -181
  1061. package/dist/router/manifest.js.map +0 -1
  1062. package/dist/router/match-api.d.ts +0 -35
  1063. package/dist/router/match-api.d.ts.map +0 -1
  1064. package/dist/router/match-api.js +0 -406
  1065. package/dist/router/match-api.js.map +0 -1
  1066. package/dist/router/match-context.d.ts +0 -206
  1067. package/dist/router/match-context.d.ts.map +0 -1
  1068. package/dist/router/match-context.js +0 -17
  1069. package/dist/router/match-context.js.map +0 -1
  1070. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  1071. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  1072. package/dist/router/match-middleware/background-revalidation.js +0 -75
  1073. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  1074. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  1075. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  1076. package/dist/router/match-middleware/cache-lookup.js +0 -257
  1077. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  1078. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  1079. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  1080. package/dist/router/match-middleware/cache-store.js +0 -108
  1081. package/dist/router/match-middleware/cache-store.js.map +0 -1
  1082. package/dist/router/match-middleware/index.d.ts +0 -81
  1083. package/dist/router/match-middleware/index.d.ts.map +0 -1
  1084. package/dist/router/match-middleware/index.js +0 -80
  1085. package/dist/router/match-middleware/index.js.map +0 -1
  1086. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  1087. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  1088. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  1089. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  1090. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  1091. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  1092. package/dist/router/match-middleware/segment-resolution.js +0 -53
  1093. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  1094. package/dist/router/match-pipelines.d.ts +0 -147
  1095. package/dist/router/match-pipelines.d.ts.map +0 -1
  1096. package/dist/router/match-pipelines.js +0 -82
  1097. package/dist/router/match-pipelines.js.map +0 -1
  1098. package/dist/router/match-result.d.ts +0 -126
  1099. package/dist/router/match-result.d.ts.map +0 -1
  1100. package/dist/router/match-result.js +0 -93
  1101. package/dist/router/match-result.js.map +0 -1
  1102. package/dist/router/metrics.d.ts +0 -20
  1103. package/dist/router/metrics.d.ts.map +0 -1
  1104. package/dist/router/metrics.js +0 -47
  1105. package/dist/router/metrics.js.map +0 -1
  1106. package/dist/router/middleware.d.ts +0 -249
  1107. package/dist/router/middleware.d.ts.map +0 -1
  1108. package/dist/router/middleware.js +0 -434
  1109. package/dist/router/middleware.js.map +0 -1
  1110. package/dist/router/middleware.test.d.ts +0 -2
  1111. package/dist/router/middleware.test.d.ts.map +0 -1
  1112. package/dist/router/middleware.test.js +0 -816
  1113. package/dist/router/middleware.test.js.map +0 -1
  1114. package/dist/router/pattern-matching.d.ts +0 -149
  1115. package/dist/router/pattern-matching.d.ts.map +0 -1
  1116. package/dist/router/pattern-matching.js +0 -349
  1117. package/dist/router/pattern-matching.js.map +0 -1
  1118. package/dist/router/revalidation.d.ts +0 -44
  1119. package/dist/router/revalidation.d.ts.map +0 -1
  1120. package/dist/router/revalidation.js +0 -147
  1121. package/dist/router/revalidation.js.map +0 -1
  1122. package/dist/router/router-context.d.ts +0 -135
  1123. package/dist/router/router-context.d.ts.map +0 -1
  1124. package/dist/router/router-context.js +0 -36
  1125. package/dist/router/router-context.js.map +0 -1
  1126. package/dist/router/segment-resolution.d.ts +0 -127
  1127. package/dist/router/segment-resolution.d.ts.map +0 -1
  1128. package/dist/router/segment-resolution.js +0 -919
  1129. package/dist/router/segment-resolution.js.map +0 -1
  1130. package/dist/router/trie-matching.d.ts +0 -40
  1131. package/dist/router/trie-matching.d.ts.map +0 -1
  1132. package/dist/router/trie-matching.js +0 -127
  1133. package/dist/router/trie-matching.js.map +0 -1
  1134. package/dist/router/types.d.ts +0 -136
  1135. package/dist/router/types.d.ts.map +0 -1
  1136. package/dist/router/types.js +0 -7
  1137. package/dist/router/types.js.map +0 -1
  1138. package/dist/router.d.ts +0 -753
  1139. package/dist/router.d.ts.map +0 -1
  1140. package/dist/router.gen.d.ts +0 -6
  1141. package/dist/router.gen.d.ts.map +0 -1
  1142. package/dist/router.gen.js +0 -6
  1143. package/dist/router.gen.js.map +0 -1
  1144. package/dist/router.js +0 -1304
  1145. package/dist/router.js.map +0 -1
  1146. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  1147. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  1148. package/dist/rsc/__tests__/helpers.test.js +0 -140
  1149. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  1150. package/dist/rsc/handler.d.ts +0 -45
  1151. package/dist/rsc/handler.d.ts.map +0 -1
  1152. package/dist/rsc/handler.js +0 -1172
  1153. package/dist/rsc/handler.js.map +0 -1
  1154. package/dist/rsc/helpers.d.ts +0 -16
  1155. package/dist/rsc/helpers.d.ts.map +0 -1
  1156. package/dist/rsc/helpers.js +0 -55
  1157. package/dist/rsc/helpers.js.map +0 -1
  1158. package/dist/rsc/index.d.ts +0 -22
  1159. package/dist/rsc/index.d.ts.map +0 -1
  1160. package/dist/rsc/index.js +0 -23
  1161. package/dist/rsc/index.js.map +0 -1
  1162. package/dist/rsc/nonce.d.ts +0 -9
  1163. package/dist/rsc/nonce.d.ts.map +0 -1
  1164. package/dist/rsc/nonce.js +0 -18
  1165. package/dist/rsc/nonce.js.map +0 -1
  1166. package/dist/rsc/types.d.ts +0 -206
  1167. package/dist/rsc/types.d.ts.map +0 -1
  1168. package/dist/rsc/types.js +0 -8
  1169. package/dist/rsc/types.js.map +0 -1
  1170. package/dist/search-params.d.ts +0 -103
  1171. package/dist/search-params.d.ts.map +0 -1
  1172. package/dist/search-params.js +0 -74
  1173. package/dist/search-params.js.map +0 -1
  1174. package/dist/segment-system.d.ts +0 -75
  1175. package/dist/segment-system.d.ts.map +0 -1
  1176. package/dist/segment-system.js +0 -336
  1177. package/dist/segment-system.js.map +0 -1
  1178. package/dist/server/context.d.ts +0 -245
  1179. package/dist/server/context.d.ts.map +0 -1
  1180. package/dist/server/context.js +0 -197
  1181. package/dist/server/context.js.map +0 -1
  1182. package/dist/server/fetchable-loader-store.d.ts +0 -18
  1183. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  1184. package/dist/server/fetchable-loader-store.js +0 -18
  1185. package/dist/server/fetchable-loader-store.js.map +0 -1
  1186. package/dist/server/handle-store.d.ts +0 -85
  1187. package/dist/server/handle-store.d.ts.map +0 -1
  1188. package/dist/server/handle-store.js +0 -142
  1189. package/dist/server/handle-store.js.map +0 -1
  1190. package/dist/server/loader-registry.d.ts +0 -55
  1191. package/dist/server/loader-registry.d.ts.map +0 -1
  1192. package/dist/server/loader-registry.js +0 -132
  1193. package/dist/server/loader-registry.js.map +0 -1
  1194. package/dist/server/request-context.d.ts +0 -226
  1195. package/dist/server/request-context.d.ts.map +0 -1
  1196. package/dist/server/request-context.js +0 -290
  1197. package/dist/server/request-context.js.map +0 -1
  1198. package/dist/server/root-layout.d.ts +0 -4
  1199. package/dist/server/root-layout.d.ts.map +0 -1
  1200. package/dist/server/root-layout.js +0 -5
  1201. package/dist/server/root-layout.js.map +0 -1
  1202. package/dist/server.d.ts +0 -15
  1203. package/dist/server.d.ts.map +0 -1
  1204. package/dist/server.js +0 -20
  1205. package/dist/server.js.map +0 -1
  1206. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  1207. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  1208. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  1209. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  1210. package/dist/ssr/index.d.ts +0 -98
  1211. package/dist/ssr/index.d.ts.map +0 -1
  1212. package/dist/ssr/index.js +0 -158
  1213. package/dist/ssr/index.js.map +0 -1
  1214. package/dist/static-handler.d.ts +0 -50
  1215. package/dist/static-handler.d.ts.map +0 -1
  1216. package/dist/static-handler.gen.d.ts +0 -5
  1217. package/dist/static-handler.gen.d.ts.map +0 -1
  1218. package/dist/static-handler.gen.js +0 -5
  1219. package/dist/static-handler.gen.js.map +0 -1
  1220. package/dist/static-handler.js +0 -29
  1221. package/dist/static-handler.js.map +0 -1
  1222. package/dist/theme/ThemeProvider.d.ts +0 -20
  1223. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  1224. package/dist/theme/ThemeProvider.js +0 -240
  1225. package/dist/theme/ThemeProvider.js.map +0 -1
  1226. package/dist/theme/ThemeScript.d.ts +0 -48
  1227. package/dist/theme/ThemeScript.d.ts.map +0 -1
  1228. package/dist/theme/ThemeScript.js +0 -13
  1229. package/dist/theme/ThemeScript.js.map +0 -1
  1230. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  1231. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  1232. package/dist/theme/__tests__/theme.test.js +0 -103
  1233. package/dist/theme/__tests__/theme.test.js.map +0 -1
  1234. package/dist/theme/constants.d.ts +0 -29
  1235. package/dist/theme/constants.d.ts.map +0 -1
  1236. package/dist/theme/constants.js +0 -48
  1237. package/dist/theme/constants.js.map +0 -1
  1238. package/dist/theme/index.d.ts +0 -31
  1239. package/dist/theme/index.d.ts.map +0 -1
  1240. package/dist/theme/index.js +0 -36
  1241. package/dist/theme/index.js.map +0 -1
  1242. package/dist/theme/theme-context.d.ts +0 -40
  1243. package/dist/theme/theme-context.d.ts.map +0 -1
  1244. package/dist/theme/theme-context.js +0 -60
  1245. package/dist/theme/theme-context.js.map +0 -1
  1246. package/dist/theme/theme-script.d.ts +0 -27
  1247. package/dist/theme/theme-script.d.ts.map +0 -1
  1248. package/dist/theme/theme-script.js +0 -147
  1249. package/dist/theme/theme-script.js.map +0 -1
  1250. package/dist/theme/types.d.ts +0 -163
  1251. package/dist/theme/types.d.ts.map +0 -1
  1252. package/dist/theme/types.js +0 -11
  1253. package/dist/theme/types.js.map +0 -1
  1254. package/dist/theme/use-theme.d.ts +0 -12
  1255. package/dist/theme/use-theme.d.ts.map +0 -1
  1256. package/dist/theme/use-theme.js +0 -40
  1257. package/dist/theme/use-theme.js.map +0 -1
  1258. package/dist/types.d.ts +0 -1479
  1259. package/dist/types.d.ts.map +0 -1
  1260. package/dist/types.js +0 -10
  1261. package/dist/types.js.map +0 -1
  1262. package/dist/urls.d.ts +0 -441
  1263. package/dist/urls.d.ts.map +0 -1
  1264. package/dist/urls.gen.d.ts +0 -8
  1265. package/dist/urls.gen.d.ts.map +0 -1
  1266. package/dist/urls.gen.js +0 -8
  1267. package/dist/urls.gen.js.map +0 -1
  1268. package/dist/urls.js +0 -443
  1269. package/dist/urls.js.map +0 -1
  1270. package/dist/use-loader.d.ts +0 -127
  1271. package/dist/use-loader.d.ts.map +0 -1
  1272. package/dist/use-loader.js +0 -237
  1273. package/dist/use-loader.js.map +0 -1
  1274. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  1275. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  1276. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  1277. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  1278. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  1279. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  1280. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  1281. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  1282. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  1283. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  1284. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  1285. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  1286. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  1287. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  1288. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  1289. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  1290. package/dist/vite/ast-handler-extract.d.ts +0 -49
  1291. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  1292. package/dist/vite/ast-handler-extract.js +0 -249
  1293. package/dist/vite/ast-handler-extract.js.map +0 -1
  1294. package/dist/vite/expose-action-id.d.ts +0 -19
  1295. package/dist/vite/expose-action-id.d.ts.map +0 -1
  1296. package/dist/vite/expose-action-id.js +0 -250
  1297. package/dist/vite/expose-action-id.js.map +0 -1
  1298. package/dist/vite/expose-id-utils.d.ts +0 -69
  1299. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  1300. package/dist/vite/expose-id-utils.js +0 -289
  1301. package/dist/vite/expose-id-utils.js.map +0 -1
  1302. package/dist/vite/expose-internal-ids.d.ts +0 -22
  1303. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  1304. package/dist/vite/expose-internal-ids.js +0 -886
  1305. package/dist/vite/expose-internal-ids.js.map +0 -1
  1306. package/dist/vite/index.d.ts +0 -149
  1307. package/dist/vite/index.d.ts.map +0 -1
  1308. package/dist/vite/index.js.bak +0 -5448
  1309. package/dist/vite/index.js.map +0 -1
  1310. package/dist/vite/index.named-routes.gen.ts +0 -103
  1311. package/dist/vite/package-resolution.d.ts +0 -43
  1312. package/dist/vite/package-resolution.d.ts.map +0 -1
  1313. package/dist/vite/package-resolution.js +0 -112
  1314. package/dist/vite/package-resolution.js.map +0 -1
  1315. package/dist/vite/virtual-entries.d.ts +0 -25
  1316. package/dist/vite/virtual-entries.d.ts.map +0 -1
  1317. package/dist/vite/virtual-entries.js +0 -110
  1318. package/dist/vite/virtual-entries.js.map +0 -1
  1319. package/skills/migrate-react-router/cloudflare-workers.md +0 -129
@@ -1,1009 +0,0 @@
1
- import { describe, it, expect, vi } from "vitest";
2
- // Mock startTransition to run callbacks synchronously
3
- vi.mock("react", async () => {
4
- const actual = await vi.importActual("react");
5
- return {
6
- ...actual,
7
- startTransition: (fn) => fn(),
8
- };
9
- });
10
- // Let merge helpers run as real code (pure logic)
11
- // Mock assertSegmentStructure to suppress dev warnings
12
- vi.mock("../browser/segment-structure-assert.js", () => ({
13
- assertSegmentStructure: vi.fn(),
14
- }));
15
- import { createPartialUpdater } from "../browser/partial-update";
16
- // ---------------------------------------------------------------------------
17
- // Test helpers
18
- // ---------------------------------------------------------------------------
19
- function seg(id, overrides) {
20
- return {
21
- id,
22
- namespace: "",
23
- index: 0,
24
- type: "route",
25
- component: `component-${id}`,
26
- ...overrides,
27
- };
28
- }
29
- function createMockStore(opts) {
30
- const cache = new Map();
31
- const historyKey = opts?.historyKey ?? "/";
32
- if (opts?.cachedSegments) {
33
- cache.set(historyKey, { segments: opts.cachedSegments, stale: false });
34
- }
35
- let currentHistoryKey = historyKey;
36
- let interceptSourceUrl = null;
37
- return {
38
- getHistoryKey: vi.fn(() => currentHistoryKey),
39
- setHistoryKey: vi.fn((k) => {
40
- currentHistoryKey = k;
41
- }),
42
- getCachedSegments: vi.fn((key) => cache.get(key)),
43
- getSegmentState: vi.fn(() => ({
44
- path: "/",
45
- currentUrl: opts?.currentUrl ?? "http://localhost/",
46
- currentSegmentIds: opts?.segmentIds ?? [],
47
- })),
48
- setInterceptSourceUrl: vi.fn((url) => {
49
- interceptSourceUrl = url;
50
- }),
51
- getInterceptSourceUrl: vi.fn(() => interceptSourceUrl),
52
- // Stubs for methods not directly used in partial-update
53
- getState: vi.fn(() => ({ state: "idle" })),
54
- setState: vi.fn(),
55
- subscribe: vi.fn(),
56
- cacheSegmentsForHistory: vi.fn(),
57
- hasHistoryCache: vi.fn(() => false),
58
- setPath: vi.fn(),
59
- setCurrentUrl: vi.fn(),
60
- setSegmentIds: vi.fn(),
61
- markCacheAsStale: vi.fn(),
62
- clearHistoryCache: vi.fn(),
63
- markCacheAsStaleAndBroadcast: vi.fn(),
64
- broadcastCacheInvalidation: vi.fn(),
65
- setCrossTabRefreshCallback: vi.fn(),
66
- addInflightAction: vi.fn(),
67
- removeInflightAction: vi.fn(),
68
- isActionInProgress: vi.fn(() => false),
69
- setActionInProgress: vi.fn(),
70
- updateCacheHandleData: vi.fn(),
71
- onUpdate: vi.fn(),
72
- emitUpdate: vi.fn(),
73
- getActionState: vi.fn(),
74
- setActionState: vi.fn(),
75
- subscribeToAction: vi.fn(),
76
- };
77
- }
78
- function createMockClient(payload, opts) {
79
- let resolveStream;
80
- // By default, streamComplete resolves immediately.
81
- // The async function's return Promise adopts streamComplete (JS promise flattening),
82
- // so a hanging stream would hang the entire await.
83
- const streamComplete = opts?.hangStream
84
- ? new Promise((resolve) => {
85
- resolveStream = resolve;
86
- })
87
- : Promise.resolve();
88
- return {
89
- client: {
90
- fetchPartial: vi.fn(async () => ({
91
- payload,
92
- streamComplete,
93
- })),
94
- },
95
- resolveStream: () => resolveStream(),
96
- };
97
- }
98
- function createMockTx(currentUrl = "http://localhost/") {
99
- return {
100
- currentUrl,
101
- startStreaming: vi.fn(() => ({ end: vi.fn() })),
102
- commit: vi.fn(),
103
- };
104
- }
105
- // ---------------------------------------------------------------------------
106
- // Tests
107
- // ---------------------------------------------------------------------------
108
- describe("partial-update", () => {
109
- describe("partial update (isPartial=true)", () => {
110
- it("merges server diff segments with cached segments", async () => {
111
- const cachedLayout = seg("L0", { type: "layout", component: "cached-layout" });
112
- const cachedRoute = seg("L0R0", { component: "cached-route" });
113
- const newRoute = seg("L0R0", { component: "new-route" });
114
- const store = createMockStore({
115
- cachedSegments: [cachedLayout, cachedRoute],
116
- });
117
- const { client } = createMockClient({
118
- metadata: {
119
- isPartial: true,
120
- segments: [newRoute],
121
- matched: ["L0", "L0R0"],
122
- diff: ["L0R0"],
123
- },
124
- });
125
- const renderSegments = vi.fn(async (segs) => `tree-${segs.length}`);
126
- const onUpdate = vi.fn();
127
- const tx = createMockTx();
128
- const updater = createPartialUpdater({
129
- store: store,
130
- client: client,
131
- onUpdate,
132
- renderSegments,
133
- });
134
- await updater("http://localhost/page", ["L0", "L0R0"], false, undefined, tx);
135
- // renderSegments should be called with merged segments
136
- expect(renderSegments).toHaveBeenCalledTimes(1);
137
- const renderedSegments = renderSegments.mock.calls[0][0];
138
- expect(renderedSegments).toHaveLength(2);
139
- // L0 should come from cache (not in diff)
140
- expect(renderedSegments.find((s) => s.id === "L0").component).toBe("cached-layout");
141
- // L0R0 should come from server (in diff)
142
- expect(renderedSegments.find((s) => s.id === "L0R0").component).toBe("new-route");
143
- // tx.commit called with all segment IDs
144
- expect(tx.commit).toHaveBeenCalledWith(["L0", "L0R0"], expect.any(Array), undefined);
145
- // onUpdate called with rendered tree
146
- expect(onUpdate).toHaveBeenCalledWith({
147
- root: `tree-2`,
148
- metadata: expect.objectContaining({ isPartial: true }),
149
- });
150
- });
151
- it("preserves cached component when server returns null for layout", async () => {
152
- const cachedLayout = seg("L0", { type: "layout", component: "my-layout" });
153
- const newLayout = seg("L0", { type: "layout", component: null });
154
- const cachedRoute = seg("L0R0");
155
- const store = createMockStore({
156
- cachedSegments: [cachedLayout, cachedRoute],
157
- });
158
- const { client } = createMockClient({
159
- metadata: {
160
- isPartial: true,
161
- segments: [newLayout],
162
- matched: ["L0", "L0R0"],
163
- diff: ["L0"],
164
- },
165
- });
166
- const renderSegments = vi.fn(async () => "tree");
167
- const tx = createMockTx();
168
- const updater = createPartialUpdater({
169
- store: store,
170
- client: client,
171
- onUpdate: vi.fn(),
172
- renderSegments,
173
- });
174
- await updater("http://localhost/", ["L0", "L0R0"], false, undefined, tx);
175
- const rendered = renderSegments.mock.calls[0][0];
176
- const layout = rendered.find((s) => s.id === "L0");
177
- // Should preserve cached component, not null
178
- expect(layout.component).toBe("my-layout");
179
- });
180
- it("clears loading state for cached (unchanged) segments", async () => {
181
- const cached = seg("R0", { loading: "skeleton" });
182
- const store = createMockStore({ cachedSegments: [cached] });
183
- const { client } = createMockClient({
184
- metadata: {
185
- isPartial: true,
186
- segments: [],
187
- matched: ["R0"],
188
- diff: ["R0"],
189
- },
190
- });
191
- // No server segment for R0 in newSegmentMap, but it's in matched.
192
- // Since it's not found in newSegmentMap, it falls back to cache.
193
- // Actually, let me fix this: R0 is in diff but not in segments from server.
194
- // So newSegmentMap won't have R0. It'll use cache.
195
- // Actually - let me re-read. segments: [] means newSegmentMap has nothing.
196
- // matched: ["R0"] means we try to find R0 in newSegmentMap (miss) then cache (hit).
197
- // Cache has loading set → should be cleared to undefined.
198
- const renderSegments = vi.fn(async () => "tree");
199
- const tx = createMockTx();
200
- const updater = createPartialUpdater({
201
- store: store,
202
- client: client,
203
- onUpdate: vi.fn(),
204
- renderSegments,
205
- });
206
- await updater("http://localhost/", ["R0"], false, undefined, tx);
207
- const rendered = renderSegments.mock.calls[0][0];
208
- expect(rendered[0].loading).toBeUndefined();
209
- });
210
- // BUG P0-1: cached segment loading cleared from false to undefined
211
- //
212
- // When a cached segment has loading=false (suppressed), navigating to a route
213
- // where the server doesn't re-render that segment (matched but not in diff)
214
- // should preserve loading=false. Instead, the current code unconditionally
215
- // sets it to undefined, which changes the React tree structure:
216
- // loading: false -> LoaderBoundary + OutletProvider (structural boundary)
217
- // loading: undefined -> OutletProvider directly (no boundary)
218
- // This causes React to remount components, destroying client state.
219
- //
220
- // The correct behavior (see server-action-bridge.ts lines 439-445) preserves
221
- // the cached loading value instead of clearing it.
222
- it("preserves loading=false for cached segment (does not clear to undefined)", async () => {
223
- // Layout cached with loading=false (suppressed via { ssr: false } in loading())
224
- const cachedLayout = seg("L0", {
225
- type: "layout",
226
- component: "cached-layout",
227
- loading: false,
228
- });
229
- const cachedRoute = seg("L0R0", { component: "cached-route" });
230
- const store = createMockStore({
231
- cachedSegments: [cachedLayout, cachedRoute],
232
- });
233
- // Server returns a new route segment but NOT the layout.
234
- // The layout is in matched (server expects client to have it) but NOT in diff
235
- // (server decided it doesn't need re-rendering). This triggers the cache
236
- // fallback path where the bug exists.
237
- const newRoute = seg("L0R0", { component: "new-route" });
238
- const { client } = createMockClient({
239
- metadata: {
240
- isPartial: true,
241
- segments: [newRoute],
242
- matched: ["L0", "L0R0"],
243
- diff: ["L0R0"],
244
- },
245
- });
246
- const renderSegments = vi.fn(async (segs) => `tree-${segs.length}`);
247
- const tx = createMockTx();
248
- const updater = createPartialUpdater({
249
- store: store,
250
- client: client,
251
- onUpdate: vi.fn(),
252
- renderSegments,
253
- });
254
- await updater("http://localhost/page", ["L0", "L0R0"], false, undefined, tx);
255
- const rendered = renderSegments.mock.calls[0][0];
256
- const layout = rendered.find((s) => s.id === "L0");
257
- // The layout should preserve loading=false (suppressed boundary).
258
- // BUG: current code clears it to undefined, changing the tree structure.
259
- expect(layout.loading).toBe(false);
260
- });
261
- });
262
- describe("empty diff handling", () => {
263
- it("skips UI update when diff is empty (same-route revalidation)", async () => {
264
- const cached = seg("R0");
265
- const store = createMockStore({ cachedSegments: [cached] });
266
- const { client } = createMockClient({
267
- metadata: {
268
- isPartial: true,
269
- segments: [],
270
- matched: ["R0"],
271
- diff: [],
272
- },
273
- });
274
- const onUpdate = vi.fn();
275
- const tx = createMockTx();
276
- const updater = createPartialUpdater({
277
- store: store,
278
- client: client,
279
- onUpdate,
280
- renderSegments: vi.fn(),
281
- });
282
- await updater("http://localhost/", ["R0"], false, undefined, tx);
283
- // Should commit but NOT call onUpdate (no UI change)
284
- expect(tx.commit).toHaveBeenCalled();
285
- expect(onUpdate).not.toHaveBeenCalled();
286
- });
287
- it("renders cached segments when navigating with targetCacheSegments", async () => {
288
- const targetSegs = [seg("L0", { type: "layout" }), seg("L0R0")];
289
- const store = createMockStore();
290
- const { client } = createMockClient({
291
- metadata: {
292
- isPartial: true,
293
- segments: [],
294
- matched: ["L0", "L0R0"],
295
- diff: [],
296
- },
297
- });
298
- const renderSegments = vi.fn(async () => "cached-tree");
299
- const onUpdate = vi.fn();
300
- const tx = createMockTx();
301
- const updater = createPartialUpdater({
302
- store: store,
303
- client: client,
304
- onUpdate,
305
- renderSegments,
306
- });
307
- await updater("http://localhost/page", undefined, false, undefined, tx, {
308
- targetCacheSegments: targetSegs,
309
- });
310
- // Should render even with empty diff because targetCacheSegments provided
311
- expect(renderSegments).toHaveBeenCalledWith(expect.any(Array), expect.objectContaining({ forceAwait: true }));
312
- expect(onUpdate).toHaveBeenCalled();
313
- });
314
- it("forces re-render when leavingIntercept even with empty diff", async () => {
315
- const cached = seg("L0", { type: "layout" });
316
- const store = createMockStore({
317
- cachedSegments: [cached],
318
- segmentIds: ["L0", "L0.@modal"],
319
- });
320
- const { client } = createMockClient({
321
- metadata: {
322
- isPartial: true,
323
- segments: [],
324
- matched: ["L0"],
325
- diff: [],
326
- },
327
- });
328
- const renderSegments = vi.fn(async () => "tree-no-modal");
329
- const onUpdate = vi.fn();
330
- const tx = createMockTx();
331
- const updater = createPartialUpdater({
332
- store: store,
333
- client: client,
334
- onUpdate,
335
- renderSegments,
336
- });
337
- await updater("http://localhost/", undefined, false, undefined, tx, {
338
- leavingIntercept: true,
339
- });
340
- // Should render and update UI to remove modal
341
- expect(renderSegments).toHaveBeenCalled();
342
- expect(onUpdate).toHaveBeenCalled();
343
- });
344
- });
345
- describe("intercept with target cache segments", () => {
346
- // Regression test for REVIEW #29: The deleted dead-code block attempted to
347
- // rebuild currentSegmentMap from getCurrentSegmentMap() when an intercept
348
- // response arrived with targetCacheSegments. Because the reassignment came
349
- // AFTER all currentSegmentMap reads, it was dead and was removed.
350
- //
351
- // This test confirms: unmodified segments come from targetCacheSegments
352
- // (not the source page's cache) even when the server returns an intercept response.
353
- it("uses targetCacheSegments for unmodified layout when server returns intercept response", async () => {
354
- const sourceLayout = seg("L0", { type: "layout", component: "source-layout" });
355
- const sourceRoute = seg("L0R0", { component: "source-route" });
356
- const targetLayout = seg("L0", { type: "layout", component: "target-layout" });
357
- const targetRoute = seg("L0R0", { component: "target-route" });
358
- const modalSegment = seg("L0.@modal", { type: "parallel", namespace: "intercept:modal" });
359
- // Source page is cached at the current history key
360
- const store = createMockStore({
361
- cachedSegments: [sourceLayout, sourceRoute],
362
- segmentIds: ["L0", "L0R0"],
363
- });
364
- // Server returns an intercept response: only the modal is in diff.
365
- // The layout is in matched but not re-rendered (should come from cache).
366
- const { client } = createMockClient({
367
- metadata: {
368
- isPartial: true,
369
- segments: [modalSegment],
370
- matched: ["L0", "L0.@modal"],
371
- diff: ["L0.@modal"],
372
- slots: { "@modal": { active: true } },
373
- },
374
- });
375
- const renderSegments = vi.fn(async () => "tree");
376
- const tx = createMockTx();
377
- const updater = createPartialUpdater({
378
- store: store,
379
- client: client,
380
- onUpdate: vi.fn(),
381
- renderSegments,
382
- });
383
- await updater("http://localhost/target", ["L0", "L0R0"], false, undefined, tx, { targetCacheSegments: [targetLayout, targetRoute] });
384
- const mainSegs = renderSegments.mock.calls[0][0];
385
- const layout = mainSegs.find((s) => s.id === "L0");
386
- // Layout must come from targetCacheSegments ("target-layout"),
387
- // not the source page's store cache ("source-layout").
388
- expect(layout?.component).toBe("target-layout");
389
- });
390
- });
391
- describe("intercept segment filtering", () => {
392
- it("filters .@ segments from segmentIds when leavingIntercept", async () => {
393
- const store = createMockStore({
394
- segmentIds: ["L0", "L0R0", "L0.@modal"],
395
- });
396
- const { client } = createMockClient({
397
- metadata: {
398
- isPartial: true,
399
- segments: [],
400
- matched: ["L0"],
401
- diff: [],
402
- },
403
- });
404
- const tx = createMockTx();
405
- const updater = createPartialUpdater({
406
- store: store,
407
- client: client,
408
- onUpdate: vi.fn(),
409
- renderSegments: vi.fn(async () => "tree"),
410
- });
411
- await updater("http://localhost/", undefined, false, undefined, tx, {
412
- leavingIntercept: true,
413
- });
414
- // fetchPartial should be called with filtered segments (no .@)
415
- const fetchCall = client.fetchPartial.mock.calls[0][0];
416
- expect(fetchCall.segmentIds).toEqual(["L0", "L0R0"]);
417
- expect(fetchCall.segmentIds).not.toContain("L0.@modal");
418
- });
419
- it("separates intercept segments from main segments for rendering", async () => {
420
- const layout = seg("L0", { type: "layout" });
421
- const route = seg("L0R0");
422
- const modal = seg("L0.@modal", { type: "parallel", namespace: "intercept:modal" });
423
- const store = createMockStore({ cachedSegments: [layout, route] });
424
- const { client } = createMockClient({
425
- metadata: {
426
- isPartial: true,
427
- segments: [layout, route, modal],
428
- matched: ["L0", "L0R0", "L0.@modal"],
429
- diff: ["L0", "L0R0", "L0.@modal"],
430
- slots: { "@modal": { active: true } },
431
- },
432
- });
433
- const renderSegments = vi.fn(async () => "tree");
434
- const tx = createMockTx();
435
- const updater = createPartialUpdater({
436
- store: store,
437
- client: client,
438
- onUpdate: vi.fn(),
439
- renderSegments,
440
- });
441
- await updater("http://localhost/modal", ["L0", "L0R0"], false, undefined, tx);
442
- // renderSegments should receive main segments and intercept segments separately
443
- const call = renderSegments.mock.calls[0];
444
- const mainSegs = call[0];
445
- const opts = call[1];
446
- // Main segments should NOT include the parallel intercept
447
- expect(mainSegs.find((s) => s.id === "L0.@modal")).toBeUndefined();
448
- // Intercept segments should be passed via options
449
- expect(opts?.interceptSegments).toHaveLength(1);
450
- expect(opts?.interceptSegments[0].id).toBe("L0.@modal");
451
- });
452
- });
453
- describe("stale navigation detection", () => {
454
- it("returns early when signal is aborted before processing", async () => {
455
- const store = createMockStore();
456
- const controller = new AbortController();
457
- controller.abort();
458
- const { client } = createMockClient({
459
- metadata: {
460
- isPartial: true,
461
- segments: [],
462
- matched: [],
463
- diff: ["R0"],
464
- },
465
- });
466
- const renderSegments = vi.fn();
467
- const onUpdate = vi.fn();
468
- const tx = createMockTx();
469
- const updater = createPartialUpdater({
470
- store: store,
471
- client: client,
472
- onUpdate,
473
- renderSegments,
474
- });
475
- await updater("http://localhost/", [], false, controller.signal, tx);
476
- // Should not render or update
477
- expect(renderSegments).not.toHaveBeenCalled();
478
- expect(onUpdate).not.toHaveBeenCalled();
479
- });
480
- it("skips UI update for stale revalidation when history key changed", async () => {
481
- const store = createMockStore({ historyKey: "/page1" });
482
- // Simulate history key changing mid-request
483
- let callCount = 0;
484
- store.getHistoryKey.mockImplementation(() => {
485
- callCount++;
486
- return callCount <= 1 ? "/page1" : "/page2";
487
- });
488
- const { client } = createMockClient({
489
- metadata: {
490
- isPartial: true,
491
- segments: [seg("R0")],
492
- matched: ["R0"],
493
- diff: ["R0"],
494
- },
495
- });
496
- const onUpdate = vi.fn();
497
- const tx = createMockTx();
498
- const updater = createPartialUpdater({
499
- store: store,
500
- client: client,
501
- onUpdate,
502
- renderSegments: vi.fn(async () => "tree"),
503
- });
504
- await updater("http://localhost/page1", [], false, undefined, tx, {
505
- staleRevalidation: true,
506
- });
507
- // Should render but NOT call onUpdate because history key changed
508
- expect(onUpdate).not.toHaveBeenCalled();
509
- });
510
- });
511
- describe("full update fallback", () => {
512
- it("renders all segments client-side when isPartial=false", async () => {
513
- const serverSegments = [
514
- seg("L0", { type: "layout" }),
515
- seg("L0R0"),
516
- ];
517
- const store = createMockStore();
518
- const { client } = createMockClient({
519
- metadata: {
520
- isPartial: false,
521
- segments: serverSegments,
522
- },
523
- });
524
- const renderSegments = vi.fn(async () => "full-tree");
525
- const onUpdate = vi.fn();
526
- const tx = createMockTx();
527
- const updater = createPartialUpdater({
528
- store: store,
529
- client: client,
530
- onUpdate,
531
- renderSegments,
532
- });
533
- await updater("http://localhost/new", [], false, undefined, tx);
534
- // Should render ALL segments (not merge with cache)
535
- expect(renderSegments).toHaveBeenCalledWith(serverSegments);
536
- // Commit with segment IDs from server
537
- expect(tx.commit).toHaveBeenCalledWith(["L0", "L0R0"], serverSegments);
538
- expect(onUpdate).toHaveBeenCalledWith({
539
- root: "full-tree",
540
- metadata: expect.objectContaining({ isPartial: false }),
541
- });
542
- });
543
- it("returns early for full update when signal is aborted", async () => {
544
- const controller = new AbortController();
545
- controller.abort();
546
- const store = createMockStore();
547
- const { client } = createMockClient({
548
- metadata: {
549
- isPartial: false,
550
- segments: [seg("R0")],
551
- },
552
- });
553
- const renderSegments = vi.fn();
554
- const onUpdate = vi.fn();
555
- const tx = createMockTx();
556
- const updater = createPartialUpdater({
557
- store: store,
558
- client: client,
559
- onUpdate,
560
- renderSegments,
561
- });
562
- await updater("http://localhost/", [], false, controller.signal, tx);
563
- expect(renderSegments).not.toHaveBeenCalled();
564
- expect(onUpdate).not.toHaveBeenCalled();
565
- });
566
- });
567
- describe("HMR resilience", () => {
568
- it("retries with empty segments when matched IDs are missing from cache", async () => {
569
- // No cached segments → server's matched["L0", "L0R0"] won't be found
570
- const store = createMockStore({ cachedSegments: [] });
571
- // First call: partial with missing segments
572
- // Second call (retry): full update
573
- const { client } = createMockClient({
574
- metadata: {
575
- isPartial: true,
576
- segments: [],
577
- matched: ["L0", "L0R0"],
578
- diff: ["L0R0"],
579
- },
580
- });
581
- // Override to return full update on retry
582
- let callCount = 0;
583
- client.fetchPartial.mockImplementation(async () => {
584
- callCount++;
585
- if (callCount === 1) {
586
- return {
587
- payload: {
588
- metadata: {
589
- isPartial: true,
590
- segments: [],
591
- matched: ["L0", "L0R0"],
592
- diff: ["L0R0"],
593
- },
594
- },
595
- streamComplete: Promise.resolve(),
596
- };
597
- }
598
- return {
599
- payload: {
600
- metadata: {
601
- isPartial: false,
602
- segments: [
603
- seg("L0", { type: "layout" }),
604
- seg("L0R0"),
605
- ],
606
- },
607
- },
608
- streamComplete: Promise.resolve(),
609
- };
610
- });
611
- const renderSegments = vi.fn(async () => "tree");
612
- const tx = createMockTx();
613
- const updater = createPartialUpdater({
614
- store: store,
615
- client: client,
616
- onUpdate: vi.fn(),
617
- renderSegments,
618
- });
619
- await updater("http://localhost/page", [], false, undefined, tx);
620
- // Should have fetched twice: first partial (missing), then retry with empty segments
621
- expect(client.fetchPartial).toHaveBeenCalledTimes(2);
622
- const retryCall = client.fetchPartial.mock.calls[1][0];
623
- expect(retryCall.segmentIds).toEqual([]);
624
- });
625
- it("throws on retry failure", async () => {
626
- const store = createMockStore({ cachedSegments: [] });
627
- const { client } = createMockClient({
628
- metadata: {
629
- isPartial: true,
630
- segments: [],
631
- matched: ["L0"],
632
- diff: ["L0"],
633
- },
634
- });
635
- const tx = createMockTx();
636
- const updater = createPartialUpdater({
637
- store: store,
638
- client: client,
639
- onUpdate: vi.fn(),
640
- renderSegments: vi.fn(async () => "tree"),
641
- });
642
- // isRetry=true, missing segments → should throw
643
- await expect(updater("http://localhost/", [], true, undefined, tx)).rejects.toThrow("Failed to fetch segments after retry");
644
- });
645
- });
646
- describe("isAction and staleRevalidation options", () => {
647
- it("wraps onUpdate in startTransition when isAction=true", async () => {
648
- const store = createMockStore({
649
- cachedSegments: [seg("R0")],
650
- });
651
- const { client } = createMockClient({
652
- metadata: {
653
- isPartial: true,
654
- segments: [seg("R0", { component: "updated" })],
655
- matched: ["R0"],
656
- diff: ["R0"],
657
- },
658
- });
659
- const onUpdate = vi.fn();
660
- const tx = createMockTx();
661
- const updater = createPartialUpdater({
662
- store: store,
663
- client: client,
664
- onUpdate,
665
- renderSegments: vi.fn(async () => "tree"),
666
- });
667
- await updater("http://localhost/", ["R0"], false, undefined, tx, {
668
- isAction: true,
669
- });
670
- // Our mocked startTransition runs synchronously, so onUpdate should be called
671
- expect(onUpdate).toHaveBeenCalled();
672
- });
673
- it("passes forceAwait to renderSegments when staleRevalidation=true", async () => {
674
- const store = createMockStore({
675
- cachedSegments: [seg("R0")],
676
- });
677
- const { client } = createMockClient({
678
- metadata: {
679
- isPartial: true,
680
- segments: [seg("R0", { component: "updated" })],
681
- matched: ["R0"],
682
- diff: ["R0"],
683
- },
684
- });
685
- const renderSegments = vi.fn(async () => "tree");
686
- const tx = createMockTx();
687
- const updater = createPartialUpdater({
688
- store: store,
689
- client: client,
690
- onUpdate: vi.fn(),
691
- renderSegments,
692
- });
693
- await updater("http://localhost/", ["R0"], false, undefined, tx, {
694
- staleRevalidation: true,
695
- });
696
- expect(renderSegments).toHaveBeenCalledWith(expect.any(Array), expect.objectContaining({ forceAwait: true }));
697
- });
698
- });
699
- describe("structural preservation on server-returned segments", () => {
700
- // These tests verify the fromServer path in partial-update preserves
701
- // cached loading/mountPath values when the server returns different ones.
702
- // Without this preservation, the React tree depth changes between SSR
703
- // and action revalidation, causing component remounts that destroy
704
- // useActionState results.
705
- it("preserves cached loading value when server returns different loading", async () => {
706
- // SSR set loading=false (skipSSR route). Server action revalidation
707
- // returns loading=<skeleton> because isSSR=false. Without preservation,
708
- // tree changes from LoaderBoundary+Outlet to LoaderBoundary+Outlet+RouteContentWrapper.
709
- const cachedLayout = seg("L0", {
710
- type: "layout",
711
- component: "my-layout",
712
- loading: false,
713
- });
714
- const cachedRoute = seg("L0R0", { component: "my-route" });
715
- // Server returns the SAME layout but with loading=<skeleton> instead of false
716
- const serverLayout = seg("L0", {
717
- type: "layout",
718
- component: "my-layout",
719
- loading: "skeleton",
720
- });
721
- const serverRoute = seg("L0R0", { component: "updated-route" });
722
- const store = createMockStore({
723
- cachedSegments: [cachedLayout, cachedRoute],
724
- });
725
- const { client } = createMockClient({
726
- metadata: {
727
- isPartial: true,
728
- segments: [serverLayout, serverRoute],
729
- matched: ["L0", "L0R0"],
730
- diff: ["L0", "L0R0"],
731
- },
732
- });
733
- const renderSegments = vi.fn(async () => "tree");
734
- const tx = createMockTx();
735
- const updater = createPartialUpdater({
736
- store: store,
737
- client: client,
738
- onUpdate: vi.fn(),
739
- renderSegments,
740
- });
741
- await updater("http://localhost/page", ["L0", "L0R0"], false, undefined, tx, {
742
- isAction: true,
743
- });
744
- const rendered = renderSegments.mock.calls[0][0];
745
- const layout = rendered.find((s) => s.id === "L0");
746
- // loading must be preserved from cache (false), not server (skeleton)
747
- expect(layout.loading).toBe(false);
748
- // Component should come from server (updated)
749
- const route = rendered.find((s) => s.id === "L0R0");
750
- expect(route.component).toBe("updated-route");
751
- });
752
- it("preserves cached mountPath when server returns different mountPath", async () => {
753
- // SSR may not include mountPath, but action revalidation may include it
754
- // (from include() scope). The conditional MountContextProvider wrapper
755
- // in renderSegments changes tree depth.
756
- const cachedLayout = seg("L0", {
757
- type: "layout",
758
- component: "my-layout",
759
- mountPath: undefined,
760
- });
761
- const cachedRoute = seg("L0R0", { component: "my-route" });
762
- const serverLayout = seg("L0", {
763
- type: "layout",
764
- component: "my-layout",
765
- mountPath: "/shop",
766
- });
767
- const store = createMockStore({
768
- cachedSegments: [cachedLayout, cachedRoute],
769
- });
770
- const { client } = createMockClient({
771
- metadata: {
772
- isPartial: true,
773
- segments: [serverLayout],
774
- matched: ["L0", "L0R0"],
775
- diff: ["L0"],
776
- },
777
- });
778
- const renderSegments = vi.fn(async () => "tree");
779
- const tx = createMockTx();
780
- const updater = createPartialUpdater({
781
- store: store,
782
- client: client,
783
- onUpdate: vi.fn(),
784
- renderSegments,
785
- });
786
- await updater("http://localhost/page", ["L0", "L0R0"], false, undefined, tx);
787
- const rendered = renderSegments.mock.calls[0][0];
788
- const layout = rendered.find((s) => s.id === "L0");
789
- // mountPath must be preserved from cache (undefined), not server ("/shop")
790
- expect(layout.mountPath).toBeUndefined();
791
- });
792
- it("preserves loading + mountPath + null component together during action", async () => {
793
- // Combined scenario: layout has all three structural properties differing
794
- const cachedLayout = seg("L0", {
795
- type: "layout",
796
- component: "my-layout",
797
- loading: false,
798
- mountPath: undefined,
799
- });
800
- const cachedRoute = seg("L0R0", { component: "my-route" });
801
- const serverLayout = seg("L0", {
802
- type: "layout",
803
- component: null, // null = don't re-render
804
- loading: "skeleton", // different from cached
805
- mountPath: "/shop", // different from cached
806
- });
807
- const serverRoute = seg("L0R0", { component: "updated" });
808
- const store = createMockStore({
809
- cachedSegments: [cachedLayout, cachedRoute],
810
- });
811
- const { client } = createMockClient({
812
- metadata: {
813
- isPartial: true,
814
- segments: [serverLayout, serverRoute],
815
- matched: ["L0", "L0R0"],
816
- diff: ["L0", "L0R0"],
817
- },
818
- });
819
- const renderSegments = vi.fn(async () => "tree");
820
- const tx = createMockTx();
821
- const updater = createPartialUpdater({
822
- store: store,
823
- client: client,
824
- onUpdate: vi.fn(),
825
- renderSegments,
826
- });
827
- await updater("http://localhost/page", ["L0", "L0R0"], false, undefined, tx, {
828
- isAction: true,
829
- });
830
- const rendered = renderSegments.mock.calls[0][0];
831
- const layout = rendered.find((s) => s.id === "L0");
832
- // All structural properties preserved from cache
833
- expect(layout.component).toBe("my-layout"); // preserved (server sent null)
834
- expect(layout.loading).toBe(false); // preserved (server sent skeleton)
835
- expect(layout.mountPath).toBeUndefined(); // preserved (server sent /shop)
836
- });
837
- it("does not alter loading when cached and server values match", async () => {
838
- const cachedRoute = seg("R0", {
839
- component: "my-route",
840
- loading: "skeleton",
841
- });
842
- const serverRoute = seg("R0", {
843
- component: "updated",
844
- loading: "skeleton",
845
- });
846
- const store = createMockStore({
847
- cachedSegments: [cachedRoute],
848
- });
849
- const { client } = createMockClient({
850
- metadata: {
851
- isPartial: true,
852
- segments: [serverRoute],
853
- matched: ["R0"],
854
- diff: ["R0"],
855
- },
856
- });
857
- const renderSegments = vi.fn(async () => "tree");
858
- const tx = createMockTx();
859
- const updater = createPartialUpdater({
860
- store: store,
861
- client: client,
862
- onUpdate: vi.fn(),
863
- renderSegments,
864
- });
865
- await updater("http://localhost/", ["R0"], false, undefined, tx);
866
- const rendered = renderSegments.mock.calls[0][0];
867
- expect(rendered[0].loading).toBe("skeleton");
868
- expect(rendered[0].component).toBe("updated");
869
- });
870
- });
871
- describe("intercept context tracking", () => {
872
- it("sets intercept source URL when slots are active", async () => {
873
- const store = createMockStore({
874
- cachedSegments: [seg("L0", { type: "layout" }), seg("L0R0")],
875
- currentUrl: "http://localhost/shop",
876
- });
877
- const { client } = createMockClient({
878
- metadata: {
879
- isPartial: true,
880
- segments: [
881
- seg("L0", { type: "layout" }),
882
- seg("L0R0"),
883
- ],
884
- matched: ["L0", "L0R0"],
885
- diff: ["L0", "L0R0"],
886
- slots: { "@modal": { active: true } },
887
- },
888
- });
889
- const tx = createMockTx();
890
- const updater = createPartialUpdater({
891
- store: store,
892
- client: client,
893
- onUpdate: vi.fn(),
894
- renderSegments: vi.fn(async () => "tree"),
895
- });
896
- await updater("http://localhost/modal", ["L0", "L0R0"], false, undefined, tx);
897
- // Should set intercept source URL from current URL (segmentState.currentUrl)
898
- expect(store.setInterceptSourceUrl).toHaveBeenCalledWith("http://localhost/shop");
899
- });
900
- it("clears intercept source URL for non-intercept navigation", async () => {
901
- const store = createMockStore({
902
- cachedSegments: [seg("R0")],
903
- });
904
- const { client } = createMockClient({
905
- metadata: {
906
- isPartial: true,
907
- segments: [seg("R0", { component: "updated" })],
908
- matched: ["R0"],
909
- diff: ["R0"],
910
- },
911
- });
912
- const tx = createMockTx();
913
- const updater = createPartialUpdater({
914
- store: store,
915
- client: client,
916
- onUpdate: vi.fn(),
917
- renderSegments: vi.fn(async () => "tree"),
918
- });
919
- await updater("http://localhost/page", ["R0"], false, undefined, tx);
920
- expect(store.setInterceptSourceUrl).toHaveBeenCalledWith(null);
921
- });
922
- it("does not update intercept context for actions", async () => {
923
- const store = createMockStore({
924
- cachedSegments: [seg("R0")],
925
- });
926
- const { client } = createMockClient({
927
- metadata: {
928
- isPartial: true,
929
- segments: [seg("R0")],
930
- matched: ["R0"],
931
- diff: ["R0"],
932
- },
933
- });
934
- const tx = createMockTx();
935
- const updater = createPartialUpdater({
936
- store: store,
937
- client: client,
938
- onUpdate: vi.fn(),
939
- renderSegments: vi.fn(async () => "tree"),
940
- });
941
- await updater("http://localhost/", ["R0"], false, undefined, tx, {
942
- isAction: true,
943
- });
944
- expect(store.setInterceptSourceUrl).not.toHaveBeenCalled();
945
- });
946
- });
947
- describe("streaming lifecycle", () => {
948
- it("starts and ends streaming token", async () => {
949
- const store = createMockStore({ cachedSegments: [seg("R0")] });
950
- const endFn = vi.fn();
951
- const { client, resolveStream } = createMockClient({
952
- metadata: {
953
- isPartial: true,
954
- segments: [seg("R0")],
955
- matched: ["R0"],
956
- diff: ["R0"],
957
- },
958
- }, { hangStream: true });
959
- const tx = createMockTx();
960
- tx.startStreaming.mockReturnValue({ end: endFn });
961
- const updater = createPartialUpdater({
962
- store: store,
963
- client: client,
964
- onUpdate: vi.fn(),
965
- renderSegments: vi.fn(async () => "tree"),
966
- });
967
- // Don't await directly since stream hangs (promise flattening blocks it).
968
- // Instead, capture the promise and resolve the stream, then await.
969
- const resultPromise = updater("http://localhost/", ["R0"], false, undefined, tx);
970
- // Let microtasks run so the function progresses to the return statement
971
- await new Promise((r) => setTimeout(r, 10));
972
- // startStreaming called
973
- expect(tx.startStreaming).toHaveBeenCalled();
974
- // end not called yet (stream still open)
975
- expect(endFn).not.toHaveBeenCalled();
976
- // Resolve stream
977
- resolveStream();
978
- await resultPromise;
979
- // end called after stream completes
980
- expect(endFn).toHaveBeenCalled();
981
- });
982
- it("ends streaming token when fetchPartial throws", async () => {
983
- const store = createMockStore({ cachedSegments: [seg("R0")] });
984
- const endFn = vi.fn();
985
- const fetchError = new Error("network failure");
986
- const client = {
987
- fetchPartial: vi.fn(async () => {
988
- throw fetchError;
989
- }),
990
- };
991
- const tx = createMockTx();
992
- tx.startStreaming.mockReturnValue({ end: endFn });
993
- const updater = createPartialUpdater({
994
- store: store,
995
- client: client,
996
- onUpdate: vi.fn(),
997
- renderSegments: vi.fn(async () => "tree"),
998
- });
999
- // fetchPartial throws, so the updater should re-throw
1000
- await expect(updater("http://localhost/", ["R0"], false, undefined, tx)).rejects.toThrow("network failure");
1001
- // startStreaming was called before the fetch
1002
- expect(tx.startStreaming).toHaveBeenCalled();
1003
- // streamingToken.end() must be called even though fetchPartial threw,
1004
- // otherwise isStreaming is permanently stuck as true
1005
- expect(endFn).toHaveBeenCalled();
1006
- });
1007
- });
1008
- });
1009
- //# sourceMappingURL=partial-update.test.js.map