@rangojs/router 0.0.0-experimental.35 → 0.0.0-experimental.358c376d

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 (1311) hide show
  1. package/AGENTS.md +11 -3
  2. package/README.md +320 -735
  3. package/dist/bin/rango.js +983 -241
  4. package/dist/testing/vitest.js +82 -0
  5. package/dist/types/__internal.d.ts +127 -0
  6. package/dist/types/bin/rango.d.ts +1 -0
  7. package/dist/types/browser/action-coordinator.d.ts +57 -0
  8. package/dist/types/browser/action-fence.d.ts +33 -0
  9. package/dist/types/browser/app-shell.d.ts +34 -0
  10. package/dist/types/browser/app-version.d.ts +6 -0
  11. package/dist/types/browser/connection-warmup.d.ts +31 -0
  12. package/dist/types/browser/cookie-name.d.ts +66 -0
  13. package/dist/types/browser/dev-discovery.d.ts +11 -0
  14. package/dist/types/browser/event-controller.d.ts +231 -0
  15. package/dist/types/browser/history-state.d.ts +26 -0
  16. package/dist/types/browser/index.d.ts +1 -0
  17. package/dist/types/browser/intercept-utils.d.ts +30 -0
  18. package/dist/types/browser/invalidate-client-cache.d.ts +17 -0
  19. package/dist/types/browser/link-interceptor.d.ts +53 -0
  20. package/dist/types/browser/logging.d.ts +33 -0
  21. package/dist/types/browser/merge-segment-loaders.d.ts +38 -0
  22. package/dist/types/browser/navigation-bridge.d.ts +39 -0
  23. package/dist/types/browser/navigation-client.d.ts +17 -0
  24. package/dist/types/browser/navigation-store-handle.d.ts +25 -0
  25. package/dist/types/browser/navigation-store.d.ts +85 -0
  26. package/dist/types/browser/navigation-transaction.d.ts +75 -0
  27. package/dist/types/browser/network-error-handler.d.ts +35 -0
  28. package/dist/types/browser/notify-listeners.d.ts +2 -0
  29. package/dist/types/browser/partial-update.d.ts +61 -0
  30. package/dist/types/browser/prefetch/cache.d.ts +224 -0
  31. package/dist/types/browser/prefetch/default-strategy.d.ts +31 -0
  32. package/dist/types/browser/prefetch/fetch.d.ts +52 -0
  33. package/dist/types/browser/prefetch/invalidation.d.ts +6 -0
  34. package/dist/types/browser/prefetch/loader.d.ts +12 -0
  35. package/dist/types/browser/prefetch/observer.d.ts +24 -0
  36. package/dist/types/browser/prefetch/policy.d.ts +13 -0
  37. package/dist/types/browser/prefetch/queue.d.ts +48 -0
  38. package/dist/types/browser/prefetch/resource-ready.d.ts +28 -0
  39. package/dist/types/browser/prefetch/runtime.d.ts +2 -0
  40. package/dist/types/browser/rango-state.d.ts +56 -0
  41. package/dist/types/browser/react/Link.d.ts +132 -0
  42. package/dist/types/browser/react/NavigationProvider.d.ts +88 -0
  43. package/dist/types/browser/react/ScrollRestoration.d.ts +78 -0
  44. package/dist/types/browser/react/context.d.ts +57 -0
  45. package/dist/types/browser/react/filter-segment-order.d.ts +35 -0
  46. package/dist/types/browser/react/index.d.ts +1 -0
  47. package/dist/types/browser/react/location-state-shared.d.ts +162 -0
  48. package/dist/types/browser/react/location-state.d.ts +29 -0
  49. package/dist/types/browser/react/mount-context.d.ts +23 -0
  50. package/dist/types/browser/react/nonce-context.d.ts +14 -0
  51. package/dist/types/browser/react/shallow-equal.d.ts +5 -0
  52. package/dist/types/browser/react/use-action.d.ts +61 -0
  53. package/dist/types/browser/react/use-handle.d.ts +21 -0
  54. package/dist/types/browser/react/use-href.d.ts +32 -0
  55. package/dist/types/browser/react/use-link-status.d.ts +36 -0
  56. package/dist/types/browser/react/use-mount.d.ts +24 -0
  57. package/dist/types/browser/react/use-navigation.d.ts +15 -0
  58. package/dist/types/browser/react/use-params.d.ts +21 -0
  59. package/dist/types/browser/react/use-pathname.d.ts +13 -0
  60. package/dist/types/browser/react/use-reverse.d.ts +40 -0
  61. package/dist/types/browser/react/use-router.d.ts +23 -0
  62. package/dist/types/browser/react/use-search-params.d.ts +19 -0
  63. package/dist/types/browser/react/use-segments.d.ts +29 -0
  64. package/dist/types/browser/response-adapter.d.ts +58 -0
  65. package/dist/types/browser/rsc-router.d.ts +146 -0
  66. package/dist/types/browser/scroll-restoration.d.ts +103 -0
  67. package/dist/types/browser/segment-reconciler.d.ts +74 -0
  68. package/dist/types/browser/segment-structure-assert.d.ts +16 -0
  69. package/dist/types/browser/server-action-bridge.d.ts +29 -0
  70. package/dist/types/browser/types.d.ts +546 -0
  71. package/dist/types/browser/validate-redirect-origin.d.ts +28 -0
  72. package/dist/types/build/collect-fallback-refs.d.ts +5 -0
  73. package/dist/types/build/generate-manifest.d.ts +106 -0
  74. package/dist/types/build/generate-route-types.d.ts +8 -0
  75. package/dist/types/build/index.d.ts +21 -0
  76. package/dist/types/build/merge-full-manifests.d.ts +3 -0
  77. package/dist/types/build/prefix-tree-utils.d.ts +56 -0
  78. package/dist/types/build/route-trie.d.ts +20 -0
  79. package/dist/types/build/route-types/ast-helpers.d.ts +3 -0
  80. package/dist/types/build/route-types/ast-route-extraction.d.ts +13 -0
  81. package/dist/types/build/route-types/codegen.d.ts +16 -0
  82. package/dist/types/build/route-types/include-resolution.d.ts +74 -0
  83. package/dist/types/build/route-types/param-extraction.d.ts +13 -0
  84. package/dist/types/build/route-types/per-module-writer.d.ts +20 -0
  85. package/dist/types/build/route-types/router-processing.d.ts +81 -0
  86. package/dist/types/build/route-types/scan-filter.d.ts +17 -0
  87. package/dist/types/build/route-types/source-scan.d.ts +13 -0
  88. package/dist/types/build/runtime-discovery.d.ts +24 -0
  89. package/dist/types/cache/background-task.d.ts +21 -0
  90. package/dist/types/cache/cache-error.d.ts +71 -0
  91. package/dist/types/cache/cache-exec-scope.d.ts +31 -0
  92. package/dist/types/cache/cache-key-utils.d.ts +43 -0
  93. package/dist/types/cache/cache-policy.d.ts +59 -0
  94. package/dist/types/cache/cache-runtime.d.ts +51 -0
  95. package/dist/types/cache/cache-scope.d.ts +215 -0
  96. package/dist/types/cache/cache-tag.d.ts +79 -0
  97. package/dist/types/cache/cf/cf-base64.d.ts +4 -0
  98. package/dist/types/cache/cf/cf-cache-constants.d.ts +112 -0
  99. package/dist/types/cache/cf/cf-cache-store.d.ts +616 -0
  100. package/dist/types/cache/cf/cf-cache-types.d.ts +365 -0
  101. package/dist/types/cache/cf/cf-kv-utils.d.ts +43 -0
  102. package/dist/types/cache/cf/cf-tag-marker-memo.d.ts +15 -0
  103. package/dist/types/cache/cf/cf-zone-purge.d.ts +31 -0
  104. package/dist/types/cache/cf/index.d.ts +4 -0
  105. package/dist/types/cache/document-cache.d.ts +71 -0
  106. package/dist/types/cache/handle-capture.d.ts +23 -0
  107. package/dist/types/cache/handle-snapshot.d.ts +39 -0
  108. package/dist/types/cache/index.d.ts +9 -0
  109. package/dist/types/cache/memory-segment-store.d.ts +163 -0
  110. package/dist/types/cache/profile-registry.d.ts +40 -0
  111. package/dist/types/cache/read-through-swr.d.ts +61 -0
  112. package/dist/types/cache/search-params-filter.d.ts +64 -0
  113. package/dist/types/cache/segment-codec.d.ts +78 -0
  114. package/dist/types/cache/shell-snapshot.d.ts +186 -0
  115. package/dist/types/cache/tag-invalidation.d.ts +74 -0
  116. package/dist/types/cache/taint.d.ts +77 -0
  117. package/dist/types/cache/types.d.ts +503 -0
  118. package/dist/types/cache/vercel/index.d.ts +1 -0
  119. package/dist/types/cache/vercel/vercel-cache-store.d.ts +268 -0
  120. package/dist/types/client-urls/client-root.d.ts +38 -0
  121. package/dist/types/client-urls/client-urls.d.ts +5 -0
  122. package/dist/types/client-urls/navigation.d.ts +38 -0
  123. package/dist/types/client-urls/revalidation-protocol.d.ts +25 -0
  124. package/dist/types/client-urls/server-projection.d.ts +62 -0
  125. package/dist/types/client-urls/types.d.ts +144 -0
  126. package/dist/types/client.d.ts +191 -0
  127. package/dist/types/client.rsc.d.ts +41 -0
  128. package/dist/types/cloudflare/index.d.ts +7 -0
  129. package/dist/types/cloudflare/tracing.d.ts +57 -0
  130. package/dist/types/component-utils.d.ts +46 -0
  131. package/dist/types/components/DefaultDocument.d.ts +13 -0
  132. package/dist/types/context-var.d.ts +84 -0
  133. package/dist/types/debug.d.ts +57 -0
  134. package/dist/types/decode-loader-results.d.ts +42 -0
  135. package/dist/types/default-error-boundary.d.ts +10 -0
  136. package/dist/types/defer.d.ts +89 -0
  137. package/dist/types/deps/browser.d.ts +1 -0
  138. package/dist/types/deps/html-stream-client.d.ts +1 -0
  139. package/dist/types/deps/html-stream-server.d.ts +1 -0
  140. package/dist/types/deps/rsc.d.ts +1 -0
  141. package/dist/types/deps/ssr.d.ts +1 -0
  142. package/dist/types/dev-discovery-protocol.d.ts +5 -0
  143. package/dist/types/encode-kv.d.ts +35 -0
  144. package/dist/types/errors.d.ts +227 -0
  145. package/dist/types/escape-script.d.ts +44 -0
  146. package/dist/types/handle.d.ts +93 -0
  147. package/dist/types/handles/MetaTags.d.ts +17 -0
  148. package/dist/types/handles/Scripts.d.ts +38 -0
  149. package/dist/types/handles/breadcrumbs.d.ts +43 -0
  150. package/dist/types/handles/deferred-resolution.d.ts +53 -0
  151. package/dist/types/handles/is-thenable.d.ts +10 -0
  152. package/dist/types/handles/meta.d.ts +43 -0
  153. package/dist/types/handles/script.d.ts +139 -0
  154. package/dist/types/host/cookie-handler.d.ts +8 -0
  155. package/dist/types/host/errors.d.ts +40 -0
  156. package/dist/types/host/index.d.ts +33 -0
  157. package/dist/types/host/pattern-matcher.d.ts +30 -0
  158. package/dist/types/host/router.d.ts +12 -0
  159. package/dist/types/host/testing.d.ts +41 -0
  160. package/dist/types/host/types.d.ts +148 -0
  161. package/dist/types/host/utils.d.ts +20 -0
  162. package/dist/types/href-client.d.ts +214 -0
  163. package/dist/types/index.d.ts +113 -0
  164. package/dist/types/index.rsc.d.ts +52 -0
  165. package/dist/types/internal-debug.d.ts +1 -0
  166. package/dist/types/loader-redirect.d.ts +18 -0
  167. package/dist/types/loader-store.d.ts +193 -0
  168. package/dist/types/loader.d.ts +18 -0
  169. package/dist/types/loader.rsc.d.ts +18 -0
  170. package/dist/types/missing-id-error.d.ts +1 -0
  171. package/dist/types/outlet-context.d.ts +24 -0
  172. package/dist/types/outlet-provider.d.ts +14 -0
  173. package/dist/types/prerender/build-shell-capture.d.ts +104 -0
  174. package/dist/types/prerender/param-hash.d.ts +6 -0
  175. package/dist/types/prerender/shell-manifest-key.d.ts +18 -0
  176. package/dist/types/prerender/store.d.ts +63 -0
  177. package/dist/types/prerender.d.ts +292 -0
  178. package/dist/types/redirect-origin.d.ts +67 -0
  179. package/dist/types/regex-escape.d.ts +6 -0
  180. package/dist/types/render-error-thrower.d.ts +13 -0
  181. package/dist/types/response-utils.d.ts +35 -0
  182. package/dist/types/reverse.d.ts +206 -0
  183. package/dist/types/root-error-boundary.d.ts +32 -0
  184. package/dist/types/route-content-wrapper.d.ts +81 -0
  185. package/dist/types/route-definition/dsl-helpers.d.ts +130 -0
  186. package/dist/types/route-definition/helper-factories.d.ts +22 -0
  187. package/dist/types/route-definition/helpers-types.d.ts +404 -0
  188. package/dist/types/route-definition/index.d.ts +7 -0
  189. package/dist/types/route-definition/redirect.d.ts +48 -0
  190. package/dist/types/route-definition/resolve-handler-use.d.ts +19 -0
  191. package/dist/types/route-definition/use-item-types.d.ts +1 -0
  192. package/dist/types/route-definition.d.ts +1 -0
  193. package/dist/types/route-map-builder.d.ts +102 -0
  194. package/dist/types/route-name.d.ts +27 -0
  195. package/dist/types/route-types.d.ts +172 -0
  196. package/dist/types/router/basename.d.ts +10 -0
  197. package/dist/types/router/content-negotiation.d.ts +91 -0
  198. package/dist/types/router/debug-manifest.d.ts +7 -0
  199. package/dist/types/router/error-handling.d.ts +110 -0
  200. package/dist/types/router/find-match.d.ts +19 -0
  201. package/dist/types/router/handler-context.d.ts +41 -0
  202. package/dist/types/router/instrument.d.ts +191 -0
  203. package/dist/types/router/intercept-resolution.d.ts +91 -0
  204. package/dist/types/router/lazy-includes.d.ts +26 -0
  205. package/dist/types/router/loader-resolution.d.ts +85 -0
  206. package/dist/types/router/logging.d.ts +41 -0
  207. package/dist/types/router/manifest.d.ts +8 -0
  208. package/dist/types/router/match-api.d.ts +19 -0
  209. package/dist/types/router/match-context.d.ts +184 -0
  210. package/dist/types/router/match-handlers.d.ts +48 -0
  211. package/dist/types/router/match-middleware/background-revalidation.d.ts +113 -0
  212. package/dist/types/router/match-middleware/cache-lookup.d.ts +126 -0
  213. package/dist/types/router/match-middleware/cache-store.d.ts +112 -0
  214. package/dist/types/router/match-middleware/index.d.ts +80 -0
  215. package/dist/types/router/match-middleware/intercept-resolution.d.ts +116 -0
  216. package/dist/types/router/match-middleware/segment-resolution.d.ts +94 -0
  217. package/dist/types/router/match-pipelines.d.ts +103 -0
  218. package/dist/types/router/match-result.d.ts +114 -0
  219. package/dist/types/router/metrics.d.ts +6 -0
  220. package/dist/types/router/middleware-types.d.ts +74 -0
  221. package/dist/types/router/middleware.d.ts +116 -0
  222. package/dist/types/router/navigation-snapshot.d.ts +51 -0
  223. package/dist/types/router/params-util.d.ts +8 -0
  224. package/dist/types/router/parse-pattern.d.ts +38 -0
  225. package/dist/types/router/pattern-matching.d.ts +169 -0
  226. package/dist/types/router/prefetch-cache-ttl.d.ts +27 -0
  227. package/dist/types/router/prefetch-default.d.ts +28 -0
  228. package/dist/types/router/prefetch-limits.d.ts +20 -0
  229. package/dist/types/router/prerender-match.d.ts +53 -0
  230. package/dist/types/router/preview-match.d.ts +22 -0
  231. package/dist/types/router/request-classification.d.ts +104 -0
  232. package/dist/types/router/revalidation.d.ts +64 -0
  233. package/dist/types/router/route-snapshot.d.ts +112 -0
  234. package/dist/types/router/route-trie-builder.d.ts +77 -0
  235. package/dist/types/router/router-context.d.ts +137 -0
  236. package/dist/types/router/router-interfaces.d.ts +461 -0
  237. package/dist/types/router/router-options.d.ts +792 -0
  238. package/dist/types/router/router-registry.d.ts +15 -0
  239. package/dist/types/router/segment-resolution/fresh.d.ts +55 -0
  240. package/dist/types/router/segment-resolution/helpers.d.ts +93 -0
  241. package/dist/types/router/segment-resolution/loader-cache.d.ts +33 -0
  242. package/dist/types/router/segment-resolution/loader-mask.d.ts +44 -0
  243. package/dist/types/router/segment-resolution/loader-snapshot.d.ts +90 -0
  244. package/dist/types/router/segment-resolution/mask-nested.d.ts +53 -0
  245. package/dist/types/router/segment-resolution/revalidation.d.ts +85 -0
  246. package/dist/types/router/segment-resolution/static-store.d.ts +17 -0
  247. package/dist/types/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
  248. package/dist/types/router/segment-resolution/view-transition-default.d.ts +27 -0
  249. package/dist/types/router/segment-resolution.d.ts +3 -0
  250. package/dist/types/router/segment-wrappers.d.ts +53 -0
  251. package/dist/types/router/state-cookie-name.d.ts +1 -0
  252. package/dist/types/router/substitute-pattern-params.d.ts +23 -0
  253. package/dist/types/router/telemetry-otel.d.ts +113 -0
  254. package/dist/types/router/telemetry.d.ts +216 -0
  255. package/dist/types/router/timeout.d.ts +107 -0
  256. package/dist/types/router/tracing.d.ts +139 -0
  257. package/dist/types/router/transition-when.d.ts +13 -0
  258. package/dist/types/router/trie-matching.d.ts +32 -0
  259. package/dist/types/router/types.d.ts +98 -0
  260. package/dist/types/router/url-params.d.ts +26 -0
  261. package/dist/types/router.d.ts +7 -0
  262. package/dist/types/rsc/capture-queue.d.ts +49 -0
  263. package/dist/types/rsc/full-payload.d.ts +22 -0
  264. package/dist/types/rsc/handler-context.d.ts +32 -0
  265. package/dist/types/rsc/handler.d.ts +9 -0
  266. package/dist/types/rsc/helpers.d.ts +127 -0
  267. package/dist/types/rsc/index.d.ts +17 -0
  268. package/dist/types/rsc/json-route-result.d.ts +20 -0
  269. package/dist/types/rsc/loader-fetch.d.ts +14 -0
  270. package/dist/types/rsc/manifest-init.d.ts +18 -0
  271. package/dist/types/rsc/nonce.d.ts +28 -0
  272. package/dist/types/rsc/origin-guard.d.ts +50 -0
  273. package/dist/types/rsc/progressive-enhancement.d.ts +19 -0
  274. package/dist/types/rsc/redirect-guard.d.ts +37 -0
  275. package/dist/types/rsc/render-pipeline.d.ts +148 -0
  276. package/dist/types/rsc/response-cache-serve.d.ts +46 -0
  277. package/dist/types/rsc/response-error.d.ts +19 -0
  278. package/dist/types/rsc/response-route-handler.d.ts +29 -0
  279. package/dist/types/rsc/routine-plan.d.ts +124 -0
  280. package/dist/types/rsc/rsc-rendering.d.ts +18 -0
  281. package/dist/types/rsc/runtime-warnings.d.ts +22 -0
  282. package/dist/types/rsc/server-action.d.ts +68 -0
  283. package/dist/types/rsc/shell-build-manifest.d.ts +90 -0
  284. package/dist/types/rsc/shell-capture-constants.d.ts +44 -0
  285. package/dist/types/rsc/shell-capture.d.ts +406 -0
  286. package/dist/types/rsc/shell-serve.d.ts +189 -0
  287. package/dist/types/rsc/ssr-setup.d.ts +73 -0
  288. package/dist/types/rsc/stream-idle.d.ts +60 -0
  289. package/dist/types/rsc/transition-gate.d.ts +23 -0
  290. package/dist/types/rsc/types.d.ts +328 -0
  291. package/dist/types/runtime-env.d.ts +1 -0
  292. package/dist/types/search-params.d.ts +125 -0
  293. package/dist/types/segment-content-promise.d.ts +13 -0
  294. package/dist/types/segment-fragments.d.ts +79 -0
  295. package/dist/types/segment-loader-promise.d.ts +22 -0
  296. package/dist/types/segment-system.d.ts +86 -0
  297. package/dist/types/serialize.d.ts +164 -0
  298. package/dist/types/server/context.d.ts +520 -0
  299. package/dist/types/server/cookie-parse.d.ts +10 -0
  300. package/dist/types/server/cookie-store.d.ts +107 -0
  301. package/dist/types/server/fetchable-loader-store.d.ts +20 -0
  302. package/dist/types/server/handle-store.d.ts +131 -0
  303. package/dist/types/server/loader-registry.d.ts +32 -0
  304. package/dist/types/server/request-context.d.ts +717 -0
  305. package/dist/types/server/root-layout.d.ts +3 -0
  306. package/dist/types/server.d.ts +16 -0
  307. package/dist/types/ssr/index.d.ts +233 -0
  308. package/dist/types/ssr/inject-rsc-eager.d.ts +3 -0
  309. package/dist/types/ssr/preinit-client-references.d.ts +71 -0
  310. package/dist/types/ssr/ssr-root.d.ts +69 -0
  311. package/dist/types/static-handler.d.ts +71 -0
  312. package/dist/types/testing/cache-status.d.ts +63 -0
  313. package/dist/types/testing/collect-handle.d.ts +20 -0
  314. package/dist/types/testing/dispatch.d.ts +127 -0
  315. package/dist/types/testing/dom.entry.d.ts +15 -0
  316. package/dist/types/testing/e2e/fixture.d.ts +37 -0
  317. package/dist/types/testing/e2e/index.d.ts +31 -0
  318. package/dist/types/testing/e2e/matchers.d.ts +17 -0
  319. package/dist/types/testing/e2e/page-helpers.d.ts +86 -0
  320. package/dist/types/testing/e2e/parity.d.ts +111 -0
  321. package/dist/types/testing/e2e/server.d.ts +35 -0
  322. package/dist/types/testing/flight-matchers.d.ts +55 -0
  323. package/dist/types/testing/flight-normalize.d.ts +1 -0
  324. package/dist/types/testing/flight-tree.d.ts +192 -0
  325. package/dist/types/testing/flight.d.ts +115 -0
  326. package/dist/types/testing/flight.entry.d.ts +27 -0
  327. package/dist/types/testing/generated-routes.d.ts +66 -0
  328. package/dist/types/testing/index.d.ts +54 -0
  329. package/dist/types/testing/internal/context.d.ts +225 -0
  330. package/dist/types/testing/internal/flight-client-globals.d.ts +1 -0
  331. package/dist/types/testing/internal/seed-vars.d.ts +30 -0
  332. package/dist/types/testing/render-handler.d.ts +160 -0
  333. package/dist/types/testing/render-route.d.ts +265 -0
  334. package/dist/types/testing/run-loader.d.ts +195 -0
  335. package/dist/types/testing/run-middleware.d.ts +132 -0
  336. package/dist/types/testing/run-transition-when.d.ts +78 -0
  337. package/dist/types/testing/shell-status.d.ts +81 -0
  338. package/dist/types/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
  339. package/dist/types/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
  340. package/dist/types/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
  341. package/dist/types/testing/vitest-stubs/version.d.ts +1 -0
  342. package/dist/types/testing/vitest.d.ts +205 -0
  343. package/dist/types/theme/ThemeProvider.d.ts +13 -0
  344. package/dist/types/theme/ThemeScript.d.ts +45 -0
  345. package/dist/types/theme/constants.d.ts +39 -0
  346. package/dist/types/theme/index.d.ts +29 -0
  347. package/dist/types/theme/theme-context.d.ts +21 -0
  348. package/dist/types/theme/theme-script.d.ts +26 -0
  349. package/dist/types/theme/types.d.ts +162 -0
  350. package/dist/types/theme/use-theme.d.ts +8 -0
  351. package/dist/types/types/boundaries.d.ts +110 -0
  352. package/dist/types/types/cache-types.d.ts +191 -0
  353. package/dist/types/types/error-types.d.ts +114 -0
  354. package/dist/types/types/global-namespace.d.ts +90 -0
  355. package/dist/types/types/handler-context.d.ts +658 -0
  356. package/dist/types/types/index.d.ts +11 -0
  357. package/dist/types/types/loader-types.d.ts +234 -0
  358. package/dist/types/types/request-scope.d.ts +93 -0
  359. package/dist/types/types/route-config.d.ts +105 -0
  360. package/dist/types/types/route-entry.d.ts +98 -0
  361. package/dist/types/types/segments.d.ts +246 -0
  362. package/dist/types/types.d.ts +1 -0
  363. package/dist/types/urls/include-helper.d.ts +17 -0
  364. package/dist/types/urls/include-provider.d.ts +27 -0
  365. package/dist/types/urls/index.d.ts +6 -0
  366. package/dist/types/urls/path-helper-types.d.ts +203 -0
  367. package/dist/types/urls/path-helper.d.ts +12 -0
  368. package/dist/types/urls/pattern-types.d.ts +166 -0
  369. package/dist/types/urls/response-types.d.ts +67 -0
  370. package/dist/types/urls/type-extraction.d.ts +157 -0
  371. package/dist/types/urls/urls-function.d.ts +24 -0
  372. package/dist/types/urls.d.ts +1 -0
  373. package/dist/types/use-loader.d.ts +150 -0
  374. package/dist/types/vercel/index.d.ts +10 -0
  375. package/dist/types/vercel/tracing.d.ts +71 -0
  376. package/dist/types/vite/debug.d.ts +80 -0
  377. package/dist/types/vite/discovery/bundle-postprocess.d.ts +12 -0
  378. package/dist/types/vite/discovery/client-urls-projection.d.ts +53 -0
  379. package/dist/types/vite/discovery/dev-prerender-cache.d.ts +65 -0
  380. package/dist/types/vite/discovery/discover-routers.d.ts +17 -0
  381. package/dist/types/vite/discovery/discovery-errors.d.ts +113 -0
  382. package/dist/types/vite/discovery/gate-state.d.ts +79 -0
  383. package/dist/types/vite/discovery/prerender-collection.d.ts +24 -0
  384. package/dist/types/vite/discovery/route-types-writer.d.ts +32 -0
  385. package/dist/types/vite/discovery/self-gen-tracking.d.ts +22 -0
  386. package/dist/types/vite/discovery/shell-prerender-phase.d.ts +40 -0
  387. package/dist/types/vite/discovery/state.d.ts +170 -0
  388. package/dist/types/vite/discovery/virtual-module-codegen.d.ts +15 -0
  389. package/dist/types/vite/encryption-key.d.ts +2 -0
  390. package/dist/types/vite/index.d.ts +11 -0
  391. package/dist/types/vite/inject-client-debug.d.ts +56 -0
  392. package/dist/types/vite/plugin-types.d.ts +298 -0
  393. package/dist/types/vite/plugins/cjs-to-esm.d.ts +6 -0
  394. package/dist/types/vite/plugins/client-ref-dedup.d.ts +40 -0
  395. package/dist/types/vite/plugins/client-ref-hashing.d.ts +35 -0
  396. package/dist/types/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
  397. package/dist/types/vite/plugins/expose-action-id.d.ts +18 -0
  398. package/dist/types/vite/plugins/expose-id-utils.d.ts +37 -0
  399. package/dist/types/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
  400. package/dist/types/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
  401. package/dist/types/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
  402. package/dist/types/vite/plugins/expose-ids/router-transform.d.ts +13 -0
  403. package/dist/types/vite/plugins/expose-ids/types.d.ts +29 -0
  404. package/dist/types/vite/plugins/expose-internal-ids.d.ts +16 -0
  405. package/dist/types/vite/plugins/performance-tracks.d.ts +25 -0
  406. package/dist/types/vite/plugins/refresh-cmd.d.ts +20 -0
  407. package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
  408. package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
  409. package/dist/types/vite/plugins/use-cache-transform.d.ts +20 -0
  410. package/dist/types/vite/plugins/vercel-output.d.ts +85 -0
  411. package/dist/types/vite/plugins/version-injector.d.ts +21 -0
  412. package/dist/types/vite/plugins/version-plugin.d.ts +19 -0
  413. package/dist/types/vite/plugins/virtual-entries.d.ts +36 -0
  414. package/dist/types/vite/plugins/virtual-stub-plugin.d.ts +7 -0
  415. package/dist/types/vite/rango.d.ts +29 -0
  416. package/dist/types/vite/router-discovery.d.ts +23 -0
  417. package/dist/types/vite/utils/ast-handler-extract.d.ts +64 -0
  418. package/dist/types/vite/utils/banner.d.ts +2 -0
  419. package/dist/types/vite/utils/bundle-analysis.d.ts +28 -0
  420. package/dist/types/vite/utils/client-chunks.d.ts +55 -0
  421. package/dist/types/vite/utils/directive-prologue.d.ts +16 -0
  422. package/dist/types/vite/utils/forward-user-plugins.d.ts +37 -0
  423. package/dist/types/vite/utils/manifest-utils.d.ts +7 -0
  424. package/dist/types/vite/utils/package-resolution.d.ts +6 -0
  425. package/dist/types/vite/utils/prerender-utils.d.ts +32 -0
  426. package/dist/types/vite/utils/shared-utils.d.ts +67 -0
  427. package/dist/types.backup/__internal.d.ts +127 -0
  428. package/dist/types.backup/bin/rango.d.ts +1 -0
  429. package/dist/types.backup/browser/action-coordinator.d.ts +57 -0
  430. package/dist/types.backup/browser/action-fence.d.ts +33 -0
  431. package/dist/types.backup/browser/app-shell.d.ts +34 -0
  432. package/dist/types.backup/browser/app-version.d.ts +6 -0
  433. package/dist/types.backup/browser/connection-warmup.d.ts +31 -0
  434. package/dist/types.backup/browser/cookie-name.d.ts +66 -0
  435. package/dist/types.backup/browser/event-controller.d.ts +221 -0
  436. package/dist/types.backup/browser/history-state.d.ts +26 -0
  437. package/dist/types.backup/browser/index.d.ts +1 -0
  438. package/dist/types.backup/browser/intercept-utils.d.ts +30 -0
  439. package/dist/types.backup/browser/invalidate-client-cache.d.ts +17 -0
  440. package/dist/types.backup/browser/link-interceptor.d.ts +43 -0
  441. package/dist/types.backup/browser/logging.d.ts +33 -0
  442. package/dist/types.backup/browser/merge-segment-loaders.d.ts +38 -0
  443. package/dist/types.backup/browser/navigation-bridge.d.ts +27 -0
  444. package/dist/types.backup/browser/navigation-client.d.ts +17 -0
  445. package/dist/types.backup/browser/navigation-store-handle.d.ts +25 -0
  446. package/dist/types.backup/browser/navigation-store.d.ts +95 -0
  447. package/dist/types.backup/browser/navigation-transaction.d.ts +75 -0
  448. package/dist/types.backup/browser/network-error-handler.d.ts +35 -0
  449. package/dist/types.backup/browser/partial-update.d.ts +61 -0
  450. package/dist/types.backup/browser/prefetch/cache.d.ts +183 -0
  451. package/dist/types.backup/browser/prefetch/fetch.d.ts +52 -0
  452. package/dist/types.backup/browser/prefetch/observer.d.ts +27 -0
  453. package/dist/types.backup/browser/prefetch/policy.d.ts +13 -0
  454. package/dist/types.backup/browser/prefetch/queue.d.ts +48 -0
  455. package/dist/types.backup/browser/prefetch/resource-ready.d.ts +28 -0
  456. package/dist/types.backup/browser/rango-state.d.ts +52 -0
  457. package/dist/types.backup/browser/react/Link.d.ts +140 -0
  458. package/dist/types.backup/browser/react/NavigationProvider.d.ts +88 -0
  459. package/dist/types.backup/browser/react/ScrollRestoration.d.ts +78 -0
  460. package/dist/types.backup/browser/react/context.d.ts +54 -0
  461. package/dist/types.backup/browser/react/filter-segment-order.d.ts +35 -0
  462. package/dist/types.backup/browser/react/index.d.ts +1 -0
  463. package/dist/types.backup/browser/react/location-state-shared.d.ts +162 -0
  464. package/dist/types.backup/browser/react/location-state.d.ts +29 -0
  465. package/dist/types.backup/browser/react/mount-context.d.ts +23 -0
  466. package/dist/types.backup/browser/react/nonce-context.d.ts +14 -0
  467. package/dist/types.backup/browser/react/shallow-equal.d.ts +5 -0
  468. package/dist/types.backup/browser/react/use-action.d.ts +61 -0
  469. package/dist/types.backup/browser/react/use-handle.d.ts +21 -0
  470. package/dist/types.backup/browser/react/use-href.d.ts +32 -0
  471. package/dist/types.backup/browser/react/use-link-status.d.ts +36 -0
  472. package/dist/types.backup/browser/react/use-mount.d.ts +24 -0
  473. package/dist/types.backup/browser/react/use-navigation.d.ts +15 -0
  474. package/dist/types.backup/browser/react/use-params.d.ts +21 -0
  475. package/dist/types.backup/browser/react/use-pathname.d.ts +13 -0
  476. package/dist/types.backup/browser/react/use-reverse.d.ts +40 -0
  477. package/dist/types.backup/browser/react/use-router.d.ts +23 -0
  478. package/dist/types.backup/browser/react/use-search-params.d.ts +19 -0
  479. package/dist/types.backup/browser/react/use-segments.d.ts +29 -0
  480. package/dist/types.backup/browser/response-adapter.d.ts +58 -0
  481. package/dist/types.backup/browser/rsc-router.d.ts +141 -0
  482. package/dist/types.backup/browser/scroll-restoration.d.ts +103 -0
  483. package/dist/types.backup/browser/segment-reconciler.d.ts +74 -0
  484. package/dist/types.backup/browser/segment-structure-assert.d.ts +16 -0
  485. package/dist/types.backup/browser/server-action-bridge.d.ts +29 -0
  486. package/dist/types.backup/browser/types.d.ts +530 -0
  487. package/dist/types.backup/browser/validate-redirect-origin.d.ts +28 -0
  488. package/dist/types.backup/build/collect-fallback-refs.d.ts +5 -0
  489. package/dist/types.backup/build/generate-manifest.d.ts +100 -0
  490. package/dist/types.backup/build/generate-route-types.d.ts +8 -0
  491. package/dist/types.backup/build/index.d.ts +21 -0
  492. package/dist/types.backup/build/prefix-tree-utils.d.ts +56 -0
  493. package/dist/types.backup/build/route-trie.d.ts +89 -0
  494. package/dist/types.backup/build/route-types/ast-helpers.d.ts +3 -0
  495. package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +13 -0
  496. package/dist/types.backup/build/route-types/codegen.d.ts +16 -0
  497. package/dist/types.backup/build/route-types/include-resolution.d.ts +74 -0
  498. package/dist/types.backup/build/route-types/param-extraction.d.ts +13 -0
  499. package/dist/types.backup/build/route-types/per-module-writer.d.ts +18 -0
  500. package/dist/types.backup/build/route-types/router-processing.d.ts +82 -0
  501. package/dist/types.backup/build/route-types/scan-filter.d.ts +17 -0
  502. package/dist/types.backup/build/route-types/source-scan.d.ts +13 -0
  503. package/dist/types.backup/build/runtime-discovery.d.ts +24 -0
  504. package/dist/types.backup/cache/background-task.d.ts +21 -0
  505. package/dist/types.backup/cache/cache-error.d.ts +71 -0
  506. package/dist/types.backup/cache/cache-key-utils.d.ts +35 -0
  507. package/dist/types.backup/cache/cache-policy.d.ts +59 -0
  508. package/dist/types.backup/cache/cache-runtime.d.ts +51 -0
  509. package/dist/types.backup/cache/cache-scope.d.ts +134 -0
  510. package/dist/types.backup/cache/cache-tag.d.ts +79 -0
  511. package/dist/types.backup/cache/cf/cf-base64.d.ts +4 -0
  512. package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +105 -0
  513. package/dist/types.backup/cache/cf/cf-cache-store.d.ts +481 -0
  514. package/dist/types.backup/cache/cf/cf-cache-types.d.ts +300 -0
  515. package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +22 -0
  516. package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +15 -0
  517. package/dist/types.backup/cache/cf/index.d.ts +3 -0
  518. package/dist/types.backup/cache/document-cache.d.ts +69 -0
  519. package/dist/types.backup/cache/handle-capture.d.ts +23 -0
  520. package/dist/types.backup/cache/handle-snapshot.d.ts +39 -0
  521. package/dist/types.backup/cache/index.d.ts +7 -0
  522. package/dist/types.backup/cache/memory-segment-store.d.ts +163 -0
  523. package/dist/types.backup/cache/profile-registry.d.ts +40 -0
  524. package/dist/types.backup/cache/read-through-swr.d.ts +60 -0
  525. package/dist/types.backup/cache/segment-codec.d.ts +78 -0
  526. package/dist/types.backup/cache/shell-snapshot.d.ts +162 -0
  527. package/dist/types.backup/cache/tag-invalidation.d.ts +74 -0
  528. package/dist/types.backup/cache/taint.d.ts +71 -0
  529. package/dist/types.backup/cache/types.d.ts +407 -0
  530. package/dist/types.backup/cache/vercel/index.d.ts +1 -0
  531. package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +267 -0
  532. package/dist/types.backup/client.d.ts +184 -0
  533. package/dist/types.backup/client.rsc.d.ts +39 -0
  534. package/dist/types.backup/cloudflare/index.d.ts +7 -0
  535. package/dist/types.backup/cloudflare/tracing.d.ts +53 -0
  536. package/dist/types.backup/component-utils.d.ts +46 -0
  537. package/dist/types.backup/components/DefaultDocument.d.ts +13 -0
  538. package/dist/types.backup/context-var.d.ts +84 -0
  539. package/dist/types.backup/debug.d.ts +57 -0
  540. package/dist/types.backup/decode-loader-results.d.ts +5 -0
  541. package/dist/types.backup/default-error-boundary.d.ts +10 -0
  542. package/dist/types.backup/defer.d.ts +89 -0
  543. package/dist/types.backup/deps/browser.d.ts +1 -0
  544. package/dist/types.backup/deps/html-stream-client.d.ts +1 -0
  545. package/dist/types.backup/deps/html-stream-server.d.ts +1 -0
  546. package/dist/types.backup/deps/rsc.d.ts +1 -0
  547. package/dist/types.backup/deps/ssr.d.ts +1 -0
  548. package/dist/types.backup/encode-kv.d.ts +35 -0
  549. package/dist/types.backup/errors.d.ts +226 -0
  550. package/dist/types.backup/escape-script.d.ts +44 -0
  551. package/dist/types.backup/handle.d.ts +93 -0
  552. package/dist/types.backup/handles/MetaTags.d.ts +17 -0
  553. package/dist/types.backup/handles/Scripts.d.ts +38 -0
  554. package/dist/types.backup/handles/breadcrumbs.d.ts +43 -0
  555. package/dist/types.backup/handles/deferred-resolution.d.ts +53 -0
  556. package/dist/types.backup/handles/is-thenable.d.ts +12 -0
  557. package/dist/types.backup/handles/meta.d.ts +43 -0
  558. package/dist/types.backup/handles/script.d.ts +139 -0
  559. package/dist/types.backup/host/cookie-handler.d.ts +8 -0
  560. package/dist/types.backup/host/errors.d.ts +40 -0
  561. package/dist/types.backup/host/index.d.ts +33 -0
  562. package/dist/types.backup/host/pattern-matcher.d.ts +30 -0
  563. package/dist/types.backup/host/router.d.ts +12 -0
  564. package/dist/types.backup/host/testing.d.ts +41 -0
  565. package/dist/types.backup/host/types.d.ts +148 -0
  566. package/dist/types.backup/host/utils.d.ts +20 -0
  567. package/dist/types.backup/href-client.d.ts +214 -0
  568. package/dist/types.backup/index.d.ts +112 -0
  569. package/dist/types.backup/index.rsc.d.ts +51 -0
  570. package/dist/types.backup/internal-debug.d.ts +1 -0
  571. package/dist/types.backup/loader-store.d.ts +193 -0
  572. package/dist/types.backup/loader.d.ts +18 -0
  573. package/dist/types.backup/loader.rsc.d.ts +18 -0
  574. package/dist/types.backup/missing-id-error.d.ts +1 -0
  575. package/dist/types.backup/outlet-context.d.ts +12 -0
  576. package/dist/types.backup/outlet-provider.d.ts +12 -0
  577. package/dist/types.backup/prerender/build-shell-capture.d.ts +104 -0
  578. package/dist/types.backup/prerender/param-hash.d.ts +6 -0
  579. package/dist/types.backup/prerender/shell-manifest-key.d.ts +18 -0
  580. package/dist/types.backup/prerender/store.d.ts +62 -0
  581. package/dist/types.backup/prerender.d.ts +292 -0
  582. package/dist/types.backup/redirect-origin.d.ts +55 -0
  583. package/dist/types.backup/regex-escape.d.ts +6 -0
  584. package/dist/types.backup/render-error-thrower.d.ts +13 -0
  585. package/dist/types.backup/response-utils.d.ts +35 -0
  586. package/dist/types.backup/reverse.d.ts +206 -0
  587. package/dist/types.backup/root-error-boundary.d.ts +32 -0
  588. package/dist/types.backup/route-content-wrapper.d.ts +40 -0
  589. package/dist/types.backup/route-definition/dsl-helpers.d.ts +130 -0
  590. package/dist/types.backup/route-definition/helper-factories.d.ts +22 -0
  591. package/dist/types.backup/route-definition/helpers-types.d.ts +392 -0
  592. package/dist/types.backup/route-definition/index.d.ts +7 -0
  593. package/dist/types.backup/route-definition/redirect.d.ts +48 -0
  594. package/dist/types.backup/route-definition/resolve-handler-use.d.ts +19 -0
  595. package/dist/types.backup/route-definition/use-item-types.d.ts +1 -0
  596. package/dist/types.backup/route-definition.d.ts +1 -0
  597. package/dist/types.backup/route-map-builder.d.ts +127 -0
  598. package/dist/types.backup/route-name.d.ts +27 -0
  599. package/dist/types.backup/route-types.d.ts +172 -0
  600. package/dist/types.backup/router/basename.d.ts +10 -0
  601. package/dist/types.backup/router/content-negotiation.d.ts +91 -0
  602. package/dist/types.backup/router/debug-manifest.d.ts +7 -0
  603. package/dist/types.backup/router/error-handling.d.ts +76 -0
  604. package/dist/types.backup/router/find-match.d.ts +19 -0
  605. package/dist/types.backup/router/handler-context.d.ts +41 -0
  606. package/dist/types.backup/router/instrument.d.ts +161 -0
  607. package/dist/types.backup/router/intercept-resolution.d.ts +79 -0
  608. package/dist/types.backup/router/lazy-includes.d.ts +26 -0
  609. package/dist/types.backup/router/loader-resolution.d.ts +63 -0
  610. package/dist/types.backup/router/logging.d.ts +41 -0
  611. package/dist/types.backup/router/manifest.d.ts +8 -0
  612. package/dist/types.backup/router/match-api.d.ts +19 -0
  613. package/dist/types.backup/router/match-context.d.ts +184 -0
  614. package/dist/types.backup/router/match-handlers.d.ts +49 -0
  615. package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +113 -0
  616. package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +113 -0
  617. package/dist/types.backup/router/match-middleware/cache-store.d.ts +112 -0
  618. package/dist/types.backup/router/match-middleware/index.d.ts +80 -0
  619. package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +116 -0
  620. package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +94 -0
  621. package/dist/types.backup/router/match-pipelines.d.ts +103 -0
  622. package/dist/types.backup/router/match-result.d.ts +114 -0
  623. package/dist/types.backup/router/metrics.d.ts +6 -0
  624. package/dist/types.backup/router/middleware-types.d.ts +74 -0
  625. package/dist/types.backup/router/middleware.d.ts +116 -0
  626. package/dist/types.backup/router/navigation-snapshot.d.ts +22 -0
  627. package/dist/types.backup/router/params-util.d.ts +8 -0
  628. package/dist/types.backup/router/parse-pattern.d.ts +38 -0
  629. package/dist/types.backup/router/pattern-matching.d.ts +169 -0
  630. package/dist/types.backup/router/prefetch-cache-ttl.d.ts +27 -0
  631. package/dist/types.backup/router/prefetch-limits.d.ts +20 -0
  632. package/dist/types.backup/router/prerender-match.d.ts +50 -0
  633. package/dist/types.backup/router/preview-match.d.ts +22 -0
  634. package/dist/types.backup/router/request-classification.d.ts +104 -0
  635. package/dist/types.backup/router/revalidation.d.ts +57 -0
  636. package/dist/types.backup/router/route-snapshot.d.ts +112 -0
  637. package/dist/types.backup/router/router-context.d.ts +137 -0
  638. package/dist/types.backup/router/router-interfaces.d.ts +432 -0
  639. package/dist/types.backup/router/router-options.d.ts +738 -0
  640. package/dist/types.backup/router/router-registry.d.ts +15 -0
  641. package/dist/types.backup/router/segment-resolution/fresh.d.ts +55 -0
  642. package/dist/types.backup/router/segment-resolution/helpers.d.ts +93 -0
  643. package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +33 -0
  644. package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +44 -0
  645. package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +90 -0
  646. package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +53 -0
  647. package/dist/types.backup/router/segment-resolution/revalidation.d.ts +85 -0
  648. package/dist/types.backup/router/segment-resolution/static-store.d.ts +17 -0
  649. package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
  650. package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +28 -0
  651. package/dist/types.backup/router/segment-resolution.d.ts +3 -0
  652. package/dist/types.backup/router/segment-wrappers.d.ts +53 -0
  653. package/dist/types.backup/router/state-cookie-name.d.ts +1 -0
  654. package/dist/types.backup/router/substitute-pattern-params.d.ts +23 -0
  655. package/dist/types.backup/router/telemetry-otel.d.ts +113 -0
  656. package/dist/types.backup/router/telemetry.d.ts +215 -0
  657. package/dist/types.backup/router/timeout.d.ts +68 -0
  658. package/dist/types.backup/router/tracing.d.ts +125 -0
  659. package/dist/types.backup/router/trie-matching.d.ts +32 -0
  660. package/dist/types.backup/router/types.d.ts +98 -0
  661. package/dist/types.backup/router/url-params.d.ts +26 -0
  662. package/dist/types.backup/router.d.ts +7 -0
  663. package/dist/types.backup/rsc/capture-queue.d.ts +6 -0
  664. package/dist/types.backup/rsc/full-payload.d.ts +22 -0
  665. package/dist/types.backup/rsc/handler-context.d.ts +31 -0
  666. package/dist/types.backup/rsc/handler.d.ts +9 -0
  667. package/dist/types.backup/rsc/helpers.d.ts +213 -0
  668. package/dist/types.backup/rsc/index.d.ts +17 -0
  669. package/dist/types.backup/rsc/json-route-result.d.ts +20 -0
  670. package/dist/types.backup/rsc/loader-fetch.d.ts +14 -0
  671. package/dist/types.backup/rsc/manifest-init.d.ts +18 -0
  672. package/dist/types.backup/rsc/nonce.d.ts +28 -0
  673. package/dist/types.backup/rsc/origin-guard.d.ts +50 -0
  674. package/dist/types.backup/rsc/progressive-enhancement.d.ts +19 -0
  675. package/dist/types.backup/rsc/redirect-guard.d.ts +35 -0
  676. package/dist/types.backup/rsc/response-cache-serve.d.ts +46 -0
  677. package/dist/types.backup/rsc/response-error.d.ts +19 -0
  678. package/dist/types.backup/rsc/response-route-handler.d.ts +29 -0
  679. package/dist/types.backup/rsc/rsc-rendering.d.ts +23 -0
  680. package/dist/types.backup/rsc/runtime-warnings.d.ts +22 -0
  681. package/dist/types.backup/rsc/server-action.d.ts +68 -0
  682. package/dist/types.backup/rsc/shell-build-manifest.d.ts +84 -0
  683. package/dist/types.backup/rsc/shell-capture-constants.d.ts +27 -0
  684. package/dist/types.backup/rsc/shell-capture.d.ts +374 -0
  685. package/dist/types.backup/rsc/shell-serve.d.ts +136 -0
  686. package/dist/types.backup/rsc/ssr-setup.d.ts +48 -0
  687. package/dist/types.backup/rsc/transition-gate.d.ts +27 -0
  688. package/dist/types.backup/rsc/types.d.ts +290 -0
  689. package/dist/types.backup/runtime-env.d.ts +1 -0
  690. package/dist/types.backup/search-params.d.ts +125 -0
  691. package/dist/types.backup/segment-content-promise.d.ts +13 -0
  692. package/dist/types.backup/segment-fragments.d.ts +56 -0
  693. package/dist/types.backup/segment-loader-promise.d.ts +22 -0
  694. package/dist/types.backup/segment-system.d.ts +84 -0
  695. package/dist/types.backup/serialize.d.ts +164 -0
  696. package/dist/types.backup/server/context.d.ts +494 -0
  697. package/dist/types.backup/server/cookie-parse.d.ts +10 -0
  698. package/dist/types.backup/server/cookie-store.d.ts +107 -0
  699. package/dist/types.backup/server/fetchable-loader-store.d.ts +20 -0
  700. package/dist/types.backup/server/handle-store.d.ts +100 -0
  701. package/dist/types.backup/server/loader-registry.d.ts +32 -0
  702. package/dist/types.backup/server/request-context.d.ts +596 -0
  703. package/dist/types.backup/server/root-layout.d.ts +3 -0
  704. package/dist/types.backup/server.d.ts +15 -0
  705. package/dist/types.backup/ssr/index.d.ts +233 -0
  706. package/dist/types.backup/ssr/inject-rsc-eager.d.ts +3 -0
  707. package/dist/types.backup/ssr/preinit-client-references.d.ts +71 -0
  708. package/dist/types.backup/ssr/ssr-root.d.ts +69 -0
  709. package/dist/types.backup/static-handler.d.ts +57 -0
  710. package/dist/types.backup/testing/cache-status.d.ts +63 -0
  711. package/dist/types.backup/testing/collect-handle.d.ts +20 -0
  712. package/dist/types.backup/testing/dispatch.d.ts +123 -0
  713. package/dist/types.backup/testing/dom.entry.d.ts +15 -0
  714. package/dist/types.backup/testing/e2e/fixture.d.ts +37 -0
  715. package/dist/types.backup/testing/e2e/index.d.ts +30 -0
  716. package/dist/types.backup/testing/e2e/matchers.d.ts +17 -0
  717. package/dist/types.backup/testing/e2e/page-helpers.d.ts +62 -0
  718. package/dist/types.backup/testing/e2e/parity.d.ts +111 -0
  719. package/dist/types.backup/testing/e2e/server.d.ts +35 -0
  720. package/dist/types.backup/testing/flight-matchers.d.ts +55 -0
  721. package/dist/types.backup/testing/flight-normalize.d.ts +1 -0
  722. package/dist/types.backup/testing/flight-tree.d.ts +192 -0
  723. package/dist/types.backup/testing/flight.d.ts +115 -0
  724. package/dist/types.backup/testing/flight.entry.d.ts +27 -0
  725. package/dist/types.backup/testing/generated-routes.d.ts +66 -0
  726. package/dist/types.backup/testing/index.d.ts +52 -0
  727. package/dist/types.backup/testing/internal/context.d.ts +225 -0
  728. package/dist/types.backup/testing/internal/flight-client-globals.d.ts +1 -0
  729. package/dist/types.backup/testing/internal/seed-vars.d.ts +30 -0
  730. package/dist/types.backup/testing/render-handler.d.ts +160 -0
  731. package/dist/types.backup/testing/render-route.d.ts +246 -0
  732. package/dist/types.backup/testing/run-loader.d.ts +186 -0
  733. package/dist/types.backup/testing/run-middleware.d.ts +132 -0
  734. package/dist/types.backup/testing/run-transition-when.d.ts +77 -0
  735. package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
  736. package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
  737. package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
  738. package/dist/types.backup/testing/vitest-stubs/version.d.ts +1 -0
  739. package/dist/types.backup/testing/vitest.d.ts +205 -0
  740. package/dist/types.backup/theme/ThemeProvider.d.ts +13 -0
  741. package/dist/types.backup/theme/ThemeScript.d.ts +45 -0
  742. package/dist/types.backup/theme/constants.d.ts +39 -0
  743. package/dist/types.backup/theme/index.d.ts +29 -0
  744. package/dist/types.backup/theme/theme-context.d.ts +21 -0
  745. package/dist/types.backup/theme/theme-script.d.ts +26 -0
  746. package/dist/types.backup/theme/types.d.ts +162 -0
  747. package/dist/types.backup/theme/use-theme.d.ts +8 -0
  748. package/dist/types.backup/types/boundaries.d.ts +93 -0
  749. package/dist/types.backup/types/cache-types.d.ts +191 -0
  750. package/dist/types.backup/types/error-types.d.ts +114 -0
  751. package/dist/types.backup/types/global-namespace.d.ts +90 -0
  752. package/dist/types.backup/types/handler-context.d.ts +658 -0
  753. package/dist/types.backup/types/index.d.ts +11 -0
  754. package/dist/types.backup/types/loader-types.d.ts +182 -0
  755. package/dist/types.backup/types/request-scope.d.ts +93 -0
  756. package/dist/types.backup/types/route-config.d.ts +105 -0
  757. package/dist/types.backup/types/route-entry.d.ts +95 -0
  758. package/dist/types.backup/types/segments.d.ts +234 -0
  759. package/dist/types.backup/types.d.ts +1 -0
  760. package/dist/types.backup/urls/include-helper.d.ts +17 -0
  761. package/dist/types.backup/urls/include-provider.d.ts +27 -0
  762. package/dist/types.backup/urls/index.d.ts +6 -0
  763. package/dist/types.backup/urls/path-helper-types.d.ts +197 -0
  764. package/dist/types.backup/urls/path-helper.d.ts +12 -0
  765. package/dist/types.backup/urls/pattern-types.d.ts +166 -0
  766. package/dist/types.backup/urls/response-types.d.ts +67 -0
  767. package/dist/types.backup/urls/type-extraction.d.ts +157 -0
  768. package/dist/types.backup/urls/urls-function.d.ts +24 -0
  769. package/dist/types.backup/urls.d.ts +1 -0
  770. package/dist/types.backup/use-loader.d.ts +150 -0
  771. package/dist/types.backup/vercel/index.d.ts +10 -0
  772. package/dist/types.backup/vercel/tracing.d.ts +70 -0
  773. package/dist/types.backup/vite/debug.d.ts +80 -0
  774. package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +12 -0
  775. package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +65 -0
  776. package/dist/types.backup/vite/discovery/discover-routers.d.ts +17 -0
  777. package/dist/types.backup/vite/discovery/discovery-errors.d.ts +113 -0
  778. package/dist/types.backup/vite/discovery/gate-state.d.ts +79 -0
  779. package/dist/types.backup/vite/discovery/prerender-collection.d.ts +24 -0
  780. package/dist/types.backup/vite/discovery/route-types-writer.d.ts +32 -0
  781. package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +22 -0
  782. package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +40 -0
  783. package/dist/types.backup/vite/discovery/state.d.ts +162 -0
  784. package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +15 -0
  785. package/dist/types.backup/vite/index.d.ts +11 -0
  786. package/dist/types.backup/vite/inject-client-debug.d.ts +56 -0
  787. package/dist/types.backup/vite/plugin-types.d.ts +298 -0
  788. package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +6 -0
  789. package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +40 -0
  790. package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +35 -0
  791. package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
  792. package/dist/types.backup/vite/plugins/expose-action-id.d.ts +18 -0
  793. package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +37 -0
  794. package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
  795. package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
  796. package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
  797. package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +13 -0
  798. package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +29 -0
  799. package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +6 -0
  800. package/dist/types.backup/vite/plugins/performance-tracks.d.ts +25 -0
  801. package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +20 -0
  802. package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +20 -0
  803. package/dist/types.backup/vite/plugins/vercel-output.d.ts +85 -0
  804. package/dist/types.backup/vite/plugins/version-injector.d.ts +21 -0
  805. package/dist/types.backup/vite/plugins/version-plugin.d.ts +19 -0
  806. package/dist/types.backup/vite/plugins/virtual-entries.d.ts +36 -0
  807. package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +7 -0
  808. package/dist/types.backup/vite/rango.d.ts +29 -0
  809. package/dist/types.backup/vite/router-discovery.d.ts +23 -0
  810. package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +64 -0
  811. package/dist/types.backup/vite/utils/banner.d.ts +2 -0
  812. package/dist/types.backup/vite/utils/bundle-analysis.d.ts +28 -0
  813. package/dist/types.backup/vite/utils/client-chunks.d.ts +55 -0
  814. package/dist/types.backup/vite/utils/directive-prologue.d.ts +16 -0
  815. package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +37 -0
  816. package/dist/types.backup/vite/utils/manifest-utils.d.ts +7 -0
  817. package/dist/types.backup/vite/utils/package-resolution.d.ts +6 -0
  818. package/dist/types.backup/vite/utils/prerender-utils.d.ts +32 -0
  819. package/dist/types.backup/vite/utils/shared-utils.d.ts +55 -0
  820. package/dist/vite/index.js +10725 -3898
  821. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  822. package/package.json +129 -46
  823. package/skills/api-client/SKILL.md +211 -0
  824. package/skills/breadcrumbs/SKILL.md +117 -8
  825. package/skills/bundle-analysis/SKILL.md +159 -0
  826. package/skills/cache-guide/SKILL.md +255 -25
  827. package/skills/caching/SKILL.md +414 -17
  828. package/skills/catalog.json +289 -0
  829. package/skills/client-urls/SKILL.md +307 -0
  830. package/skills/cloudflare/SKILL.md +151 -0
  831. package/skills/cloudflare/agents/openai.yaml +4 -0
  832. package/skills/cloudflare/references/d1-and-local-dev.md +131 -0
  833. package/skills/cloudflare/references/streaming-and-deploy.md +107 -0
  834. package/skills/cloudflare/references/webhooks-and-crypto.md +147 -0
  835. package/skills/comparison/SKILL.md +50 -0
  836. package/skills/comparison/agents/openai.yaml +4 -0
  837. package/skills/comparison/references/framework-comparison.md +858 -0
  838. package/skills/composability/SKILL.md +124 -4
  839. package/skills/css/SKILL.md +76 -0
  840. package/skills/debug-manifest/SKILL.md +5 -11
  841. package/skills/defer-hydration/SKILL.md +235 -0
  842. package/skills/deployment-caching/SKILL.md +176 -0
  843. package/skills/document-cache/SKILL.md +116 -58
  844. package/skills/fonts/SKILL.md +1 -1
  845. package/skills/handler-use/SKILL.md +364 -0
  846. package/skills/hooks/SKILL.md +73 -691
  847. package/skills/hooks/data.md +282 -0
  848. package/skills/hooks/handle-and-actions.md +110 -0
  849. package/skills/hooks/navigation.md +110 -0
  850. package/skills/hooks/outlets.md +62 -0
  851. package/skills/hooks/state.md +228 -0
  852. package/skills/hooks/urls.md +135 -0
  853. package/skills/host-router/SKILL.md +129 -27
  854. package/skills/i18n/SKILL.md +276 -0
  855. package/skills/intercept/SKILL.md +94 -18
  856. package/skills/layout/SKILL.md +62 -19
  857. package/skills/links/SKILL.md +285 -17
  858. package/skills/loader/SKILL.md +415 -55
  859. package/skills/middleware/SKILL.md +92 -16
  860. package/skills/migrate-nextjs/SKILL.md +852 -0
  861. package/skills/migrate-nextjs/backend-host-swap.md +120 -0
  862. package/skills/migrate-react-router/SKILL.md +189 -0
  863. package/skills/migrate-react-router/component-migration.md +201 -0
  864. package/skills/migrate-react-router/data-and-actions.md +236 -0
  865. package/skills/migrate-react-router/route-mapping.md +284 -0
  866. package/skills/mime-routes/SKILL.md +55 -18
  867. package/skills/observability/SKILL.md +231 -0
  868. package/skills/parallel/SKILL.md +245 -10
  869. package/skills/ppr/SKILL.md +914 -0
  870. package/skills/prerender/SKILL.md +243 -135
  871. package/skills/rango/SKILL.md +325 -24
  872. package/skills/react-compiler/SKILL.md +168 -0
  873. package/skills/response-routes/SKILL.md +180 -52
  874. package/skills/route/SKILL.md +181 -9
  875. package/skills/router-setup/SKILL.md +154 -11
  876. package/skills/scripts/SKILL.md +189 -0
  877. package/skills/server-actions/SKILL.md +776 -0
  878. package/skills/shell-manifest/SKILL.md +194 -0
  879. package/skills/streams-and-websockets/SKILL.md +283 -0
  880. package/skills/tailwind/SKILL.md +28 -4
  881. package/skills/testing/SKILL.md +131 -0
  882. package/skills/testing/bindings.md +103 -0
  883. package/skills/testing/cache-prerender.md +172 -0
  884. package/skills/testing/client-components.md +131 -0
  885. package/skills/testing/e2e-parity.md +125 -0
  886. package/skills/testing/flight.md +91 -0
  887. package/skills/testing/handles.md +153 -0
  888. package/skills/testing/loader.md +130 -0
  889. package/skills/testing/middleware.md +99 -0
  890. package/skills/testing/render-handler.md +122 -0
  891. package/skills/testing/response-routes.md +95 -0
  892. package/skills/testing/reverse-and-types.md +85 -0
  893. package/skills/testing/server-actions.md +107 -0
  894. package/skills/testing/server-tree.md +128 -0
  895. package/skills/testing/setup.md +123 -0
  896. package/skills/theme/SKILL.md +9 -6
  897. package/skills/typesafety/SKILL.md +45 -616
  898. package/skills/typesafety/env-and-bindings.md +254 -0
  899. package/skills/typesafety/generated-files-and-cli.md +342 -0
  900. package/skills/typesafety/params-and-search.md +153 -0
  901. package/skills/typesafety/route-types.md +213 -0
  902. package/skills/use-cache/SKILL.md +121 -15
  903. package/skills/vercel/SKILL.md +149 -0
  904. package/skills/view-transitions/SKILL.md +341 -0
  905. package/src/__augment-tests__/augment.ts +81 -0
  906. package/src/__augment-tests__/augmented.check.ts +116 -0
  907. package/src/__internal.ts +1 -66
  908. package/src/browser/action-coordinator.ts +53 -36
  909. package/src/browser/action-fence.ts +47 -0
  910. package/src/browser/app-shell.ts +39 -0
  911. package/src/browser/app-version.ts +14 -0
  912. package/src/browser/connection-warmup.ts +134 -0
  913. package/src/browser/cookie-name.ts +140 -0
  914. package/src/browser/dev-discovery.ts +66 -0
  915. package/src/browser/event-controller.ts +405 -168
  916. package/src/browser/history-state.ts +21 -0
  917. package/src/browser/index.ts +3 -3
  918. package/src/browser/invalidate-client-cache.ts +52 -0
  919. package/src/browser/link-interceptor.ts +469 -20
  920. package/src/browser/logging.ts +28 -0
  921. package/src/browser/merge-segment-loaders.ts +6 -4
  922. package/src/browser/navigation-bridge.ts +209 -40
  923. package/src/browser/navigation-client.ts +284 -73
  924. package/src/browser/navigation-store-handle.ts +38 -0
  925. package/src/browser/navigation-store.ts +208 -329
  926. package/src/browser/navigation-transaction.ts +18 -66
  927. package/src/browser/network-error-handler.ts +34 -7
  928. package/src/browser/notify-listeners.ts +22 -0
  929. package/src/browser/partial-update.ts +278 -126
  930. package/src/browser/prefetch/cache.ts +362 -51
  931. package/src/browser/prefetch/default-strategy.ts +74 -0
  932. package/src/browser/prefetch/fetch.ts +453 -40
  933. package/src/browser/prefetch/invalidation.ts +30 -0
  934. package/src/browser/prefetch/loader.ts +111 -0
  935. package/src/browser/prefetch/observer.ts +50 -22
  936. package/src/browser/prefetch/policy.ts +6 -0
  937. package/src/browser/prefetch/queue.ts +144 -23
  938. package/src/browser/prefetch/resource-ready.ts +77 -0
  939. package/src/browser/prefetch/runtime.ts +6 -0
  940. package/src/browser/rango-state.ts +178 -75
  941. package/src/browser/react/Link.tsx +187 -75
  942. package/src/browser/react/NavigationProvider.tsx +249 -123
  943. package/src/browser/react/ScrollRestoration.tsx +10 -6
  944. package/src/browser/react/context.ts +11 -2
  945. package/src/browser/react/filter-segment-order.ts +66 -7
  946. package/src/browser/react/index.ts +0 -48
  947. package/src/browser/react/location-state-shared.ts +178 -8
  948. package/src/browser/react/location-state.ts +39 -14
  949. package/src/browser/react/use-action.ts +6 -15
  950. package/src/browser/react/use-handle.ts +23 -69
  951. package/src/browser/react/use-href.tsx +8 -1
  952. package/src/browser/react/use-link-status.ts +33 -8
  953. package/src/browser/react/use-navigation.ts +32 -7
  954. package/src/browser/react/use-params.ts +20 -10
  955. package/src/browser/react/use-reverse.ts +106 -0
  956. package/src/browser/react/use-router.ts +47 -12
  957. package/src/browser/react/use-search-params.ts +0 -5
  958. package/src/browser/react/use-segments.ts +11 -21
  959. package/src/browser/response-adapter.ts +99 -8
  960. package/src/browser/rsc-router.tsx +375 -84
  961. package/src/browser/scroll-restoration.ts +61 -47
  962. package/src/browser/segment-reconciler.ts +44 -7
  963. package/src/browser/segment-structure-assert.ts +2 -2
  964. package/src/browser/server-action-bridge.ts +270 -71
  965. package/src/browser/types.ts +166 -37
  966. package/src/browser/validate-redirect-origin.ts +43 -16
  967. package/src/build/collect-fallback-refs.ts +107 -0
  968. package/src/build/generate-manifest.ts +217 -188
  969. package/src/build/generate-route-types.ts +6 -1
  970. package/src/build/index.ts +11 -3
  971. package/src/build/merge-full-manifests.ts +161 -0
  972. package/src/build/prefix-tree-utils.ts +123 -0
  973. package/src/build/route-trie.ts +43 -254
  974. package/src/build/route-types/ast-route-extraction.ts +15 -8
  975. package/src/build/route-types/codegen.ts +16 -5
  976. package/src/build/route-types/include-resolution.ts +521 -65
  977. package/src/build/route-types/param-extraction.ts +6 -3
  978. package/src/build/route-types/per-module-writer.ts +33 -12
  979. package/src/build/route-types/router-processing.ts +411 -154
  980. package/src/build/route-types/scan-filter.ts +9 -2
  981. package/src/build/route-types/source-scan.ts +216 -0
  982. package/src/build/runtime-discovery.ts +32 -29
  983. package/src/cache/cache-error.ts +104 -0
  984. package/src/cache/cache-exec-scope.ts +47 -0
  985. package/src/cache/cache-key-utils.ts +73 -15
  986. package/src/cache/cache-policy.ts +108 -34
  987. package/src/cache/cache-runtime.ts +566 -117
  988. package/src/cache/cache-scope.ts +431 -112
  989. package/src/cache/cache-tag.ts +149 -0
  990. package/src/cache/cf/cf-base64.ts +33 -0
  991. package/src/cache/cf/cf-cache-constants.ts +134 -0
  992. package/src/cache/cf/cf-cache-store.ts +3250 -173
  993. package/src/cache/cf/cf-cache-types.ts +417 -0
  994. package/src/cache/cf/cf-kv-utils.ts +84 -0
  995. package/src/cache/cf/cf-tag-marker-memo.ts +108 -0
  996. package/src/cache/cf/cf-zone-purge.ts +101 -0
  997. package/src/cache/cf/index.ts +16 -17
  998. package/src/cache/document-cache.ts +202 -61
  999. package/src/cache/handle-snapshot.ts +92 -1
  1000. package/src/cache/index.ts +33 -20
  1001. package/src/cache/memory-segment-store.ts +286 -37
  1002. package/src/cache/profile-registry.ts +46 -31
  1003. package/src/cache/read-through-swr.ts +66 -16
  1004. package/src/cache/search-params-filter.ts +118 -0
  1005. package/src/cache/segment-codec.ts +80 -25
  1006. package/src/cache/shell-snapshot.ts +516 -0
  1007. package/src/cache/tag-invalidation.ts +230 -0
  1008. package/src/cache/taint.ts +83 -9
  1009. package/src/cache/types.ts +323 -100
  1010. package/src/cache/vercel/index.ts +11 -0
  1011. package/src/cache/vercel/vercel-cache-store.ts +1264 -0
  1012. package/src/client-urls/client-root.tsx +161 -0
  1013. package/src/client-urls/client-urls.ts +698 -0
  1014. package/src/client-urls/navigation.ts +237 -0
  1015. package/src/client-urls/revalidation-protocol.ts +56 -0
  1016. package/src/client-urls/server-projection.ts +579 -0
  1017. package/src/client-urls/types.ts +195 -0
  1018. package/src/client.rsc.tsx +48 -21
  1019. package/src/client.tsx +158 -294
  1020. package/src/cloudflare/index.ts +11 -0
  1021. package/src/cloudflare/tracing.ts +112 -0
  1022. package/src/component-utils.ts +19 -0
  1023. package/src/components/DefaultDocument.tsx +8 -2
  1024. package/src/context-var.ts +84 -2
  1025. package/src/debug.ts +2 -2
  1026. package/src/decode-loader-results.ts +160 -0
  1027. package/src/defer.ts +185 -0
  1028. package/src/deps/ssr.ts +4 -2
  1029. package/src/dev-discovery-protocol.ts +11 -0
  1030. package/src/encode-kv.ts +49 -0
  1031. package/src/errors.ts +44 -4
  1032. package/src/escape-script.ts +52 -0
  1033. package/src/handle.ts +104 -34
  1034. package/src/handles/MetaTags.tsx +24 -53
  1035. package/src/handles/Scripts.tsx +183 -0
  1036. package/src/handles/breadcrumbs.ts +35 -8
  1037. package/src/handles/deferred-resolution.ts +134 -0
  1038. package/src/handles/is-thenable.ts +16 -0
  1039. package/src/handles/meta.ts +14 -40
  1040. package/src/handles/script.ts +244 -0
  1041. package/src/host/cookie-handler.ts +9 -60
  1042. package/src/host/errors.ts +13 -22
  1043. package/src/host/index.ts +9 -2
  1044. package/src/host/pattern-matcher.ts +23 -52
  1045. package/src/host/router.ts +107 -99
  1046. package/src/host/testing.ts +40 -27
  1047. package/src/host/types.ts +37 -4
  1048. package/src/host/utils.ts +1 -1
  1049. package/src/href-client.ts +137 -22
  1050. package/src/index.rsc.ts +111 -13
  1051. package/src/index.ts +151 -19
  1052. package/src/internal-debug.ts +11 -10
  1053. package/src/loader-redirect.tsx +47 -0
  1054. package/src/loader-store.ts +500 -0
  1055. package/src/loader.rsc.ts +20 -13
  1056. package/src/loader.ts +12 -11
  1057. package/src/missing-id-error.ts +68 -0
  1058. package/src/outlet-context.ts +13 -1
  1059. package/src/outlet-provider.tsx +16 -6
  1060. package/src/prerender/build-shell-capture.ts +453 -0
  1061. package/src/prerender/param-hash.ts +16 -16
  1062. package/src/prerender/shell-manifest-key.ts +20 -0
  1063. package/src/prerender/store.ts +52 -42
  1064. package/src/prerender.ts +215 -86
  1065. package/src/redirect-origin.ts +143 -0
  1066. package/src/regex-escape.ts +8 -0
  1067. package/src/render-error-thrower.tsx +20 -0
  1068. package/src/response-utils.ts +62 -0
  1069. package/src/reverse.ts +65 -15
  1070. package/src/root-error-boundary.tsx +1 -19
  1071. package/src/route-content-wrapper.tsx +112 -78
  1072. package/src/route-definition/dsl-helpers.ts +519 -307
  1073. package/src/route-definition/helper-factories.ts +28 -140
  1074. package/src/route-definition/helpers-types.ts +169 -78
  1075. package/src/route-definition/index.ts +4 -2
  1076. package/src/route-definition/redirect.ts +53 -12
  1077. package/src/route-definition/resolve-handler-use.ts +160 -0
  1078. package/src/route-definition/use-item-types.ts +29 -0
  1079. package/src/route-map-builder.ts +102 -68
  1080. package/src/route-types.ts +37 -46
  1081. package/src/router/basename.ts +14 -0
  1082. package/src/router/content-negotiation.ts +211 -22
  1083. package/src/router/error-handling.ts +110 -29
  1084. package/src/router/find-match.ts +130 -29
  1085. package/src/router/handler-context.ts +105 -45
  1086. package/src/router/instrument.ts +401 -0
  1087. package/src/router/intercept-resolution.ts +108 -24
  1088. package/src/router/lazy-includes.ts +90 -63
  1089. package/src/router/loader-resolution.ts +529 -57
  1090. package/src/router/logging.ts +5 -8
  1091. package/src/router/manifest.ts +105 -56
  1092. package/src/router/match-api.ts +190 -219
  1093. package/src/router/match-context.ts +0 -22
  1094. package/src/router/match-handlers.ts +268 -171
  1095. package/src/router/match-middleware/background-revalidation.ts +66 -22
  1096. package/src/router/match-middleware/cache-lookup.ts +368 -277
  1097. package/src/router/match-middleware/cache-store.ts +175 -50
  1098. package/src/router/match-middleware/intercept-resolution.ts +8 -28
  1099. package/src/router/match-middleware/segment-resolution.ts +52 -18
  1100. package/src/router/match-pipelines.ts +1 -42
  1101. package/src/router/match-result.ts +135 -44
  1102. package/src/router/metrics.ts +22 -36
  1103. package/src/router/middleware-types.ts +26 -138
  1104. package/src/router/middleware.ts +305 -177
  1105. package/src/router/navigation-snapshot.ts +173 -0
  1106. package/src/router/params-util.ts +23 -0
  1107. package/src/router/parse-pattern.ts +115 -0
  1108. package/src/router/pattern-matching.ts +181 -150
  1109. package/src/router/prefetch-cache-ttl.ts +51 -0
  1110. package/src/router/prefetch-default.ts +59 -0
  1111. package/src/router/prefetch-limits.ts +37 -0
  1112. package/src/router/prerender-match.ts +250 -60
  1113. package/src/router/preview-match.ts +35 -103
  1114. package/src/router/request-classification.ts +291 -0
  1115. package/src/router/revalidation.ts +146 -83
  1116. package/src/router/route-snapshot.ts +256 -0
  1117. package/src/router/route-trie-builder.ts +334 -0
  1118. package/src/router/router-context.ts +11 -29
  1119. package/src/router/router-interfaces.ts +199 -37
  1120. package/src/router/router-options.ts +271 -21
  1121. package/src/router/router-registry.ts +2 -5
  1122. package/src/router/segment-resolution/fresh.ts +367 -78
  1123. package/src/router/segment-resolution/helpers.ts +116 -33
  1124. package/src/router/segment-resolution/loader-cache.ts +188 -39
  1125. package/src/router/segment-resolution/loader-mask.ts +60 -0
  1126. package/src/router/segment-resolution/loader-snapshot.ts +259 -0
  1127. package/src/router/segment-resolution/mask-nested.ts +99 -0
  1128. package/src/router/segment-resolution/revalidation.ts +520 -385
  1129. package/src/router/segment-resolution/static-store.ts +55 -15
  1130. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1131. package/src/router/segment-resolution/view-transition-default.ts +60 -0
  1132. package/src/router/segment-resolution.ts +5 -1
  1133. package/src/router/segment-wrappers.ts +8 -5
  1134. package/src/router/state-cookie-name.ts +33 -0
  1135. package/src/router/substitute-pattern-params.ts +75 -0
  1136. package/src/router/telemetry-otel.ts +171 -200
  1137. package/src/router/telemetry.ts +106 -20
  1138. package/src/router/timeout.ts +53 -22
  1139. package/src/router/tracing.ts +235 -0
  1140. package/src/router/transition-when.ts +76 -0
  1141. package/src/router/trie-matching.ts +171 -59
  1142. package/src/router/types.ts +10 -63
  1143. package/src/router/url-params.ts +57 -0
  1144. package/src/router.ts +301 -78
  1145. package/src/rsc/capture-queue.ts +218 -0
  1146. package/src/rsc/full-payload.ts +77 -0
  1147. package/src/rsc/handler-context.ts +4 -2
  1148. package/src/rsc/handler.ts +901 -519
  1149. package/src/rsc/helpers.ts +245 -47
  1150. package/src/rsc/index.ts +2 -5
  1151. package/src/rsc/json-route-result.ts +38 -0
  1152. package/src/rsc/loader-fetch.ts +129 -33
  1153. package/src/rsc/manifest-init.ts +55 -52
  1154. package/src/rsc/nonce.ts +10 -1
  1155. package/src/rsc/origin-guard.ts +39 -25
  1156. package/src/rsc/progressive-enhancement.ts +381 -74
  1157. package/src/rsc/redirect-guard.ts +102 -0
  1158. package/src/rsc/render-pipeline.ts +611 -0
  1159. package/src/rsc/response-cache-serve.ts +259 -0
  1160. package/src/rsc/response-error.ts +79 -12
  1161. package/src/rsc/response-route-handler.ts +80 -206
  1162. package/src/rsc/routine-plan.ts +359 -0
  1163. package/src/rsc/rsc-rendering.ts +1625 -156
  1164. package/src/rsc/runtime-warnings.ts +23 -10
  1165. package/src/rsc/server-action.ts +424 -133
  1166. package/src/rsc/shell-build-manifest.ts +336 -0
  1167. package/src/rsc/shell-capture-constants.ts +45 -0
  1168. package/src/rsc/shell-capture.ts +2063 -0
  1169. package/src/rsc/shell-serve.ts +337 -0
  1170. package/src/rsc/ssr-setup.ts +113 -18
  1171. package/src/rsc/stream-idle.ts +137 -0
  1172. package/src/rsc/transition-gate.ts +86 -0
  1173. package/src/rsc/types.ts +100 -6
  1174. package/src/runtime-env.ts +18 -0
  1175. package/src/search-params.ts +35 -30
  1176. package/src/segment-content-promise.ts +67 -0
  1177. package/src/segment-fragments.ts +165 -0
  1178. package/src/segment-loader-promise.ts +167 -0
  1179. package/src/segment-system.tsx +507 -133
  1180. package/src/serialize.ts +243 -0
  1181. package/src/server/context.ts +581 -61
  1182. package/src/server/cookie-parse.ts +32 -0
  1183. package/src/server/cookie-store.ts +162 -15
  1184. package/src/server/handle-store.ts +209 -70
  1185. package/src/server/loader-registry.ts +38 -46
  1186. package/src/server/request-context.ts +961 -186
  1187. package/src/server.ts +7 -2
  1188. package/src/ssr/index.tsx +631 -179
  1189. package/src/ssr/inject-rsc-eager.ts +167 -0
  1190. package/src/ssr/preinit-client-references.ts +106 -0
  1191. package/src/ssr/ssr-root.tsx +262 -0
  1192. package/src/static-handler.ts +45 -20
  1193. package/src/testing/cache-status.ts +162 -0
  1194. package/src/testing/collect-handle.ts +46 -0
  1195. package/src/testing/dispatch.ts +951 -0
  1196. package/src/testing/dom.entry.ts +22 -0
  1197. package/src/testing/e2e/fixture.ts +188 -0
  1198. package/src/testing/e2e/index.ts +147 -0
  1199. package/src/testing/e2e/matchers.ts +35 -0
  1200. package/src/testing/e2e/page-helpers.ts +319 -0
  1201. package/src/testing/e2e/parity.ts +400 -0
  1202. package/src/testing/e2e/server.ts +195 -0
  1203. package/src/testing/flight-matchers.ts +97 -0
  1204. package/src/testing/flight-normalize.ts +11 -0
  1205. package/src/testing/flight-runtime.d.ts +57 -0
  1206. package/src/testing/flight-tree.ts +682 -0
  1207. package/src/testing/flight.entry.ts +52 -0
  1208. package/src/testing/flight.ts +257 -0
  1209. package/src/testing/generated-routes.ts +199 -0
  1210. package/src/testing/index.ts +121 -0
  1211. package/src/testing/internal/context.ts +380 -0
  1212. package/src/testing/internal/flight-client-globals.ts +30 -0
  1213. package/src/testing/internal/seed-vars.ts +54 -0
  1214. package/src/testing/render-handler.ts +371 -0
  1215. package/src/testing/render-route.tsx +667 -0
  1216. package/src/testing/run-loader.ts +423 -0
  1217. package/src/testing/run-middleware.ts +219 -0
  1218. package/src/testing/run-transition-when.ts +197 -0
  1219. package/src/testing/shell-status.ts +206 -0
  1220. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1221. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1222. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1223. package/src/testing/vitest-stubs/version.ts +5 -0
  1224. package/src/testing/vitest.ts +305 -0
  1225. package/src/theme/ThemeProvider.tsx +56 -84
  1226. package/src/theme/ThemeScript.tsx +7 -9
  1227. package/src/theme/constants.ts +52 -13
  1228. package/src/theme/index.ts +0 -7
  1229. package/src/theme/theme-context.ts +1 -5
  1230. package/src/theme/theme-script.ts +22 -21
  1231. package/src/theme/use-theme.ts +0 -3
  1232. package/src/types/boundaries.ts +15 -35
  1233. package/src/types/cache-types.ts +17 -8
  1234. package/src/types/error-types.ts +30 -90
  1235. package/src/types/global-namespace.ts +54 -41
  1236. package/src/types/handler-context.ts +244 -81
  1237. package/src/types/index.ts +4 -10
  1238. package/src/types/loader-types.ts +99 -15
  1239. package/src/types/request-scope.ts +112 -0
  1240. package/src/types/route-config.ts +20 -52
  1241. package/src/types/route-entry.ts +22 -7
  1242. package/src/types/segments.ts +149 -14
  1243. package/src/urls/include-helper.ts +59 -75
  1244. package/src/urls/include-provider.ts +71 -0
  1245. package/src/urls/index.ts +2 -11
  1246. package/src/urls/path-helper-types.ts +118 -26
  1247. package/src/urls/path-helper.ts +70 -115
  1248. package/src/urls/pattern-types.ts +113 -19
  1249. package/src/urls/response-types.ts +25 -22
  1250. package/src/urls/type-extraction.ts +98 -154
  1251. package/src/urls/urls-function.ts +1 -19
  1252. package/src/use-loader.tsx +404 -86
  1253. package/src/vercel/index.ts +11 -0
  1254. package/src/vercel/tracing.ts +89 -0
  1255. package/src/vite/debug.ts +185 -0
  1256. package/src/vite/discovery/bundle-postprocess.ts +46 -45
  1257. package/src/vite/discovery/client-urls-projection.ts +322 -0
  1258. package/src/vite/discovery/dev-prerender-cache.ts +117 -0
  1259. package/src/vite/discovery/discover-routers.ts +178 -147
  1260. package/src/vite/discovery/discovery-errors.ts +255 -0
  1261. package/src/vite/discovery/gate-state.ts +171 -0
  1262. package/src/vite/discovery/prerender-collection.ts +243 -134
  1263. package/src/vite/discovery/route-types-writer.ts +40 -84
  1264. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  1265. package/src/vite/discovery/shell-prerender-phase.ts +397 -0
  1266. package/src/vite/discovery/state.ts +116 -11
  1267. package/src/vite/discovery/virtual-module-codegen.ts +226 -87
  1268. package/src/vite/encryption-key.ts +29 -0
  1269. package/src/vite/index.ts +16 -0
  1270. package/src/vite/inject-client-debug.ts +88 -0
  1271. package/src/vite/plugin-types.ts +267 -62
  1272. package/src/vite/plugins/cjs-to-esm.ts +16 -19
  1273. package/src/vite/plugins/client-ref-dedup.ts +16 -11
  1274. package/src/vite/plugins/client-ref-hashing.ts +28 -15
  1275. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1276. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1277. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  1278. package/src/vite/plugins/expose-action-id.ts +51 -100
  1279. package/src/vite/plugins/expose-id-utils.ts +96 -51
  1280. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  1281. package/src/vite/plugins/expose-ids/handler-transform.ts +15 -64
  1282. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  1283. package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
  1284. package/src/vite/plugins/expose-internal-ids.ts +599 -317
  1285. package/src/vite/plugins/performance-tracks.ts +89 -0
  1286. package/src/vite/plugins/refresh-cmd.ts +89 -27
  1287. package/src/vite/plugins/server-ref-hashing.ts +74 -0
  1288. package/src/vite/plugins/server-reference-pattern.ts +10 -0
  1289. package/src/vite/plugins/use-cache-transform.ts +73 -83
  1290. package/src/vite/plugins/vercel-output.ts +384 -0
  1291. package/src/vite/plugins/version-injector.ts +39 -29
  1292. package/src/vite/plugins/version-plugin.ts +54 -37
  1293. package/src/vite/plugins/virtual-entries.ts +193 -30
  1294. package/src/vite/rango.ts +403 -304
  1295. package/src/vite/router-discovery.ts +1802 -187
  1296. package/src/vite/utils/ast-handler-extract.ts +26 -35
  1297. package/src/vite/utils/banner.ts +4 -4
  1298. package/src/vite/utils/bundle-analysis.ts +10 -15
  1299. package/src/vite/utils/client-chunks.ts +184 -0
  1300. package/src/vite/utils/directive-prologue.ts +40 -0
  1301. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1302. package/src/vite/utils/manifest-utils.ts +1 -59
  1303. package/src/vite/utils/package-resolution.ts +21 -52
  1304. package/src/vite/utils/prerender-utils.ts +123 -44
  1305. package/src/vite/utils/shared-utils.ts +158 -44
  1306. package/src/browser/action-response-classifier.ts +0 -99
  1307. package/src/browser/react/use-client-cache.ts +0 -58
  1308. package/src/browser/shallow.ts +0 -40
  1309. package/src/handles/index.ts +0 -7
  1310. package/src/network-error-thrower.tsx +0 -23
  1311. package/src/router/middleware-cookies.ts +0 -55
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Cloudflare custom-spans integration.
3
+ *
4
+ * Bridges the router's observable phases (request, middleware, action, loaders,
5
+ * handler, render, ssr, response, background) onto Cloudflare Workers custom
6
+ * spans so they show up in the trace waterfall and OpenTelemetry exports next
7
+ * to the platform's automatic spans (KV reads, D1 queries, fetch calls), with
8
+ * correct nesting.
9
+ *
10
+ * Usage (Cloudflare preset only):
11
+ *
12
+ * import { createRouter } from "@rangojs/router";
13
+ * import { createCloudflareTracing } from "@rangojs/router/cloudflare";
14
+ *
15
+ * export const router = createRouter({
16
+ * tracing: createCloudflareTracing(),
17
+ * });
18
+ *
19
+ * The runner reads `executionContext.tracing` (the same object as
20
+ * `import { tracing } from "cloudflare:workers"`) at call time. It is therefore
21
+ * dependency-free: no `cloudflare:workers` import and no hard dependency on
22
+ * `@cloudflare/workers-types`, matching the convention in cache/cf. When the
23
+ * worker is not running on a tracing-enabled Cloudflare runtime — Node, dev
24
+ * without a tracing destination, an older runtime — `executionContext.tracing`
25
+ * is undefined and every span call falls through to the work directly, so the
26
+ * request behaves exactly as if tracing were off. Whether spans are actually
27
+ * recorded is governed by the `observability`/tracing block in wrangler config.
28
+ *
29
+ * Span duration note: enterSpan ends a span when its callback's returned value
30
+ * (or promise) settles. For the streaming phases (request/render/ssr) that is at
31
+ * stream CONSTRUCTION, not body-drain; rango.response marks that handoff
32
+ * boundary explicitly (it wraps only response finalization, never the body).
33
+ * Instrumentation is best-effort and never wraps or buffers the response body,
34
+ * so it cannot regress streaming or latency. A loader/Suspense child that
35
+ * resolves mid-stream therefore keeps a rango.loader span that can extend past
36
+ * its render parent — overlapping spans are valid. Uses only the typed enterSpan
37
+ * API; spans bound work up to stream-handoff, matching the co-emitted perf
38
+ * metric. On deployed Workers a rango.response span may report 0 ms (non-I/O
39
+ * timers are frozen); its position and attributes are the value.
40
+ */
41
+
42
+ import { _getRequestContext } from "../server/request-context.js";
43
+ import {
44
+ type RouterTracingConfig,
45
+ type SpanRunner,
46
+ type TracingToggleOptions,
47
+ NOOP_TRACE_SPAN,
48
+ } from "../router/tracing.js";
49
+
50
+ /**
51
+ * Minimal local view of Cloudflare's `Span`. Declared here (not imported from
52
+ * `@cloudflare/workers-types`) to avoid a hard type dependency.
53
+ */
54
+ interface CloudflareSpan {
55
+ readonly isTraced: boolean;
56
+ setAttribute(key: string, value?: boolean | number | string): void;
57
+ }
58
+
59
+ /** Minimal local view of Cloudflare's `Tracing` (only enterSpan is used). */
60
+ interface CloudflareTracing {
61
+ enterSpan<T>(name: string, callback: (span: CloudflareSpan) => T): T;
62
+ }
63
+
64
+ /**
65
+ * Options for createCloudflareTracing. Alias of the shared
66
+ * {@link TracingToggleOptions} (`enabled` master switch + per-phase `spans`
67
+ * toggles); the name is public API.
68
+ */
69
+ export type CloudflareTracingOptions = TracingToggleOptions;
70
+
71
+ /**
72
+ * Resolve the per-request Cloudflare tracer from the active execution context.
73
+ * Returns undefined off-Cloudflare or when tracing is not enabled for the
74
+ * worker, in which case the caller runs the work without a span.
75
+ */
76
+ function getRequestTracer(): CloudflareTracing | undefined {
77
+ const executionContext = _getRequestContext()?.executionContext as
78
+ | { tracing?: CloudflareTracing }
79
+ | undefined;
80
+ const tracing = executionContext?.tracing;
81
+ return tracing && typeof tracing.enterSpan === "function"
82
+ ? tracing
83
+ : undefined;
84
+ }
85
+
86
+ const cloudflareSpanRunner: SpanRunner = (name, fn) => {
87
+ const tracer = getRequestTracer();
88
+ if (!tracer) return fn(NOOP_TRACE_SPAN);
89
+ // enterSpan runs the callback now and ends the span when its return value
90
+ // (or returned promise) settles; spans nest by JS async context. fn's param
91
+ // is the narrower TraceSpan, so the wider CloudflareSpan satisfies it directly.
92
+ return tracer.enterSpan(name, fn);
93
+ };
94
+
95
+ /**
96
+ * Create the tracing config for a Cloudflare router. Pass the result to
97
+ * `createRouter({ tracing })`. Spans are emitted for the request, middleware,
98
+ * action, loaders, handler, render, ssr, response, and background phases; pass
99
+ * `spans` to turn individual phases off.
100
+ *
101
+ * @see createOTelTracing (`@rangojs/router`) for the same slot on any platform
102
+ * with an OpenTelemetry SDK.
103
+ */
104
+ export function createCloudflareTracing(
105
+ options: CloudflareTracingOptions = {},
106
+ ): RouterTracingConfig {
107
+ return {
108
+ runner: cloudflareSpanRunner,
109
+ enabled: options.enabled ?? true,
110
+ spans: options.spans,
111
+ };
112
+ }
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import type { ComponentType } from "react";
8
+ import { isUnderTestRunner } from "./runtime-env.js";
8
9
 
9
10
  /**
10
11
  * Symbol used by React to mark client component references.
@@ -48,11 +49,21 @@ export function isClientComponent(
48
49
  *
49
50
  * @param component - The component to check
50
51
  * @param name - Name to use in error message (e.g., "document")
52
+ * @param opts.allowServerInTest - When true AND running under a test runner
53
+ * (`isUnderTestRunner()`), relax ONLY the "use client" requirement: a server
54
+ * component is accepted. The plugin's "use client" transform does not run in a
55
+ * bare unit test, so a real exported `document` (almost every app sets one) has
56
+ * no client marker and would otherwise throw at `createRouter`, blocking
57
+ * `dispatch`/`assertGeneratedRoutesMatch` against the real router. The document
58
+ * reference is irrelevant to those (no Flight render). The "not a JSX element"
59
+ * guard still fires, and a real dev/build still throws (mirrors the runtime
60
+ * fallback-id gating in handle.ts/loader.ts).
51
61
  * @throws Error if the component is not a client component
52
62
  */
53
63
  export function assertClientComponent(
54
64
  component: ComponentType<unknown> | unknown,
55
65
  name: string,
66
+ opts?: { allowServerInTest?: boolean },
56
67
  ): asserts component is ComponentType<unknown> {
57
68
  if (typeof component !== "function") {
58
69
  throw new Error(
@@ -62,6 +73,14 @@ export function assertClientComponent(
62
73
  );
63
74
  }
64
75
 
76
+ // Under a test runner the "use client" transform did not run, so a real
77
+ // server-rendered `document` has no client marker; accept it (the reference is
78
+ // never serialized in dispatch/route-map checks). Outside a test runner this
79
+ // still throws — the build-time safety net is preserved.
80
+ if (opts?.allowServerInTest && isUnderTestRunner()) {
81
+ return;
82
+ }
83
+
65
84
  if (!isClientComponent(component)) {
66
85
  throw new Error(
67
86
  `${name} must be a client component with "use client" directive at the top of the file. ` +
@@ -2,11 +2,13 @@
2
2
 
3
3
  import type { ReactNode, ReactElement } from "react";
4
4
  import { MetaTags } from "../handles/MetaTags.js";
5
+ import { Scripts } from "../handles/Scripts.js";
5
6
 
6
7
  /**
7
8
  * Default document component that provides a basic HTML structure.
8
9
  * Used when no custom document is provided to createRouter.
9
- * Includes MetaTags for automatic charset, viewport, and route meta support.
10
+ * Includes MetaTags for automatic charset, viewport, and route meta support,
11
+ * and Scripts (head + body sites) so the Script handle works out of the box.
10
12
  *
11
13
  * Uses suppressHydrationWarning on <html> because the theme script
12
14
  * may modify class/style attributes before React hydrates.
@@ -20,8 +22,12 @@ export function DefaultDocument({
20
22
  <html lang="en" suppressHydrationWarning>
21
23
  <head>
22
24
  <MetaTags />
25
+ <Scripts />
23
26
  </head>
24
- <body>{children}</body>
27
+ <body>
28
+ <Scripts position="body" />
29
+ {children}
30
+ </body>
25
31
  </html>
26
32
  );
27
33
  }
@@ -12,6 +12,9 @@
12
12
  * interface PaginationData { current: number; total: number }
13
13
  * export const Pagination = createVar<PaginationData>();
14
14
  *
15
+ * // Non-cacheable var — ctx.get(User) throws inside a cache() boundary
16
+ * export const User = createVar<UserData>({ cache: false });
17
+ *
15
18
  * // handler
16
19
  * ctx.set(Pagination, { current: 1, total: 4 });
17
20
  *
@@ -23,18 +26,36 @@
23
26
  export interface ContextVar<T> {
24
27
  readonly __brand: "context-var";
25
28
  readonly key: symbol;
29
+ /** When false, ctx.get(var) throws inside a cache() boundary. */
30
+ readonly cache: boolean;
26
31
  /** Phantom field to carry the type parameter. Never set at runtime. */
27
32
  readonly __type?: T;
28
33
  }
29
34
 
35
+ export interface ContextVarOptions {
36
+ /**
37
+ * When false, marks this variable as non-cacheable.
38
+ * Reading this var with ctx.get() inside a cache() boundary throws. Use for
39
+ * inherently request-specific data (user sessions, auth tokens, etc.) that
40
+ * must never be baked into cached segments.
41
+ *
42
+ * @default true
43
+ */
44
+ cache?: boolean;
45
+ }
46
+
30
47
  /**
31
48
  * Create a typed context variable token.
32
49
  *
33
50
  * The returned object is used with ctx.set(token, value) and ctx.get(token)
34
51
  * for compile-time-checked data flow between handlers, layouts, and middleware.
35
52
  */
36
- export function createVar<T>(): ContextVar<T> {
37
- return { __brand: "context-var" as const, key: Symbol() };
53
+ export function createVar<T>(options?: ContextVarOptions): ContextVar<T> {
54
+ return {
55
+ __brand: "context-var" as const,
56
+ key: Symbol(),
57
+ cache: options?.cache !== false,
58
+ };
38
59
  }
39
60
 
40
61
  /**
@@ -49,6 +70,48 @@ export function isContextVar(value: unknown): value is ContextVar<unknown> {
49
70
  );
50
71
  }
51
72
 
73
+ /**
74
+ * Does a variables object hold any entries? Counts both string keys and the
75
+ * symbol-keyed entries (context vars are stored under symbols), so an object
76
+ * carrying only symbol-keyed vars is still reported as non-empty.
77
+ */
78
+ export function hasContextVars(variables: object): boolean {
79
+ return (
80
+ Object.keys(variables).length > 0 ||
81
+ Object.getOwnPropertySymbols(variables).length > 0
82
+ );
83
+ }
84
+
85
+ /**
86
+ * Symbol used as a Set stored on the variables object to track
87
+ * which keys hold non-cacheable values (from write-level { cache: false }).
88
+ */
89
+ const NON_CACHEABLE_KEYS: unique symbol = Symbol.for(
90
+ "rango:non-cacheable-keys",
91
+ );
92
+
93
+ function getNonCacheableKeys(variables: any): Set<string | symbol> {
94
+ if (!variables[NON_CACHEABLE_KEYS]) {
95
+ variables[NON_CACHEABLE_KEYS] = new Set();
96
+ }
97
+ return variables[NON_CACHEABLE_KEYS];
98
+ }
99
+
100
+ /**
101
+ * Check if a variable value is non-cacheable (either var-level or write-level).
102
+ */
103
+ export function isNonCacheable(
104
+ variables: any,
105
+ keyOrVar: string | ContextVar<any>,
106
+ ): boolean {
107
+ if (typeof keyOrVar !== "string" && !keyOrVar.cache) {
108
+ return true; // var-level policy
109
+ }
110
+ const key = typeof keyOrVar === "string" ? keyOrVar : keyOrVar.key;
111
+ const set = variables[NON_CACHEABLE_KEYS] as Set<string | symbol> | undefined;
112
+ return set?.has(key) ?? false; // write-level policy
113
+ }
114
+
52
115
  /**
53
116
  * Read a variable from the variables store.
54
117
  * Accepts either a string key (legacy) or a ContextVar token (typed).
@@ -64,6 +127,17 @@ export function contextGet(
64
127
  /** Keys that must never be used as string variable names */
65
128
  const FORBIDDEN_KEYS = new Set(["__proto__", "constructor", "prototype"]);
66
129
 
130
+ export interface ContextSetOptions {
131
+ /**
132
+ * When false, marks this specific write as non-cacheable.
133
+ * "Least cacheable wins" — if either the var definition or this option
134
+ * says cache: false, the value is non-cacheable.
135
+ *
136
+ * @default true (inherits from createVar)
137
+ */
138
+ cache?: boolean;
139
+ }
140
+
67
141
  /**
68
142
  * Write a variable to the variables store.
69
143
  * Accepts either a string key (legacy) or a ContextVar token (typed).
@@ -72,6 +146,7 @@ export function contextSet(
72
146
  variables: any,
73
147
  keyOrVar: string | ContextVar<any>,
74
148
  value: any,
149
+ options?: ContextSetOptions,
75
150
  ): void {
76
151
  if (typeof keyOrVar === "string") {
77
152
  if (FORBIDDEN_KEYS.has(keyOrVar)) {
@@ -80,7 +155,14 @@ export function contextSet(
80
155
  );
81
156
  }
82
157
  variables[keyOrVar] = value;
158
+ if (options?.cache === false) {
159
+ getNonCacheableKeys(variables).add(keyOrVar);
160
+ }
83
161
  } else {
84
162
  variables[keyOrVar.key] = value;
163
+ // Track write-level non-cacheable (var-level is checked via keyOrVar.cache)
164
+ if (options?.cache === false) {
165
+ getNonCacheableKeys(variables).add(keyOrVar.key);
166
+ }
85
167
  }
86
168
  }
package/src/debug.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Debug utilities for manifest inspection and comparison
3
3
  */
4
4
 
5
- import type { EntryData } from "./server/context";
5
+ import { getParallelSlotCount, type EntryData } from "./server/context";
6
6
 
7
7
  /**
8
8
  * Serialized entry for debug output
@@ -64,7 +64,7 @@ export function serializeManifest(
64
64
  hasLoader: entry.loader?.length > 0,
65
65
  hasMiddleware: entry.middleware?.length > 0,
66
66
  hasErrorBoundary: entry.errorBoundary?.length > 0,
67
- parallelCount: entry.parallel?.length ?? 0,
67
+ parallelCount: getParallelSlotCount(entry.parallel),
68
68
  interceptCount: entry.intercept?.length ?? 0,
69
69
  };
70
70
 
@@ -0,0 +1,160 @@
1
+ import type { ReactNode } from "react";
2
+ import { createElement } from "react";
3
+ import { isLoaderDataResult } from "./types.js";
4
+ import { LoaderRedirect } from "./loader-redirect.js";
5
+
6
+ /**
7
+ * Markers for loader-thrown AUTHORITY SIGNALS (notFound()/redirect()) on the
8
+ * reconstructed read-site error. Siblings of LOADER_ERROR_FALLBACK, routed
9
+ * differently by StreamedLoaderErrorBoundary: NOT_FOUND renders the
10
+ * server-rendered not-found UI riding the envelope; REDIRECT triggers a
11
+ * client replace-navigation to the (server-resolved, same-origin-guarded)
12
+ * target. Signals are control flow, not failures — they take precedence over
13
+ * the plain error-fallback path.
14
+ *
15
+ * Only decodeLoaderEntry (the read-site path — client components, so the
16
+ * throw lands in the router-owned boundary; during document SSR, Fizz emits
17
+ * the Suspense fallback and replays the throw at hydration) throws these.
18
+ * decodeLoaderResults runs during the SERVER tree build on forceAwait/action
19
+ * lanes, where a throw would collapse the whole payload — it routes signals
20
+ * through the errorFallback slot instead (same visual: the slot replaces the
21
+ * children under OutletProvider).
22
+ */
23
+ export const LOADER_NOT_FOUND_FALLBACK: unique symbol = Symbol(
24
+ "rango.loaderNotFound",
25
+ );
26
+ export const LOADER_REDIRECT: unique symbol = Symbol("rango.loaderRedirect");
27
+
28
+ function throwSignal(result: any): void {
29
+ if (result.notFound === true) {
30
+ const err = new Error(result.error?.message ?? "Not found");
31
+ err.name = result.error?.name ?? "DataNotFoundError";
32
+ (err as any)[LOADER_NOT_FOUND_FALLBACK] = result.fallback ?? null;
33
+ throw err;
34
+ }
35
+ if (result.redirect) {
36
+ const err = new Error(result.error?.message ?? "Loader redirect");
37
+ err.name = "LoaderRedirect";
38
+ (err as any)[LOADER_REDIRECT] = result.redirect;
39
+ throw err;
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Non-throwing signal resolution for the aggregate path. Returns the node to
45
+ * place in the errorFallback slot, or undefined when the result carries no
46
+ * signal.
47
+ */
48
+ function signalFallback(result: any): ReactNode | undefined {
49
+ if (result.notFound === true) {
50
+ return (result.fallback ?? null) as ReactNode;
51
+ }
52
+ if (result.redirect) {
53
+ return createElement(LoaderRedirect, {
54
+ to: (result.redirect as { to: string }).to,
55
+ });
56
+ }
57
+ return undefined;
58
+ }
59
+
60
+ // Shared by segment-system (server) and LoaderResolver (client) so the
61
+ // legacy/ok/error-fallback/throw decode of resolved loader values lives once.
62
+ // Last failing loader wins errorFallback; an error without a fallback throws.
63
+ export function decodeLoaderResults(
64
+ resolvedData: any[],
65
+ loaderIds: string[],
66
+ ): { loaderData: Record<string, any>; errorFallback: ReactNode } {
67
+ const loaderData: Record<string, any> = {};
68
+ let errorFallback: ReactNode = null;
69
+
70
+ for (let i = 0; i < loaderIds.length; i++) {
71
+ const id = loaderIds[i];
72
+ const result = resolvedData[i];
73
+
74
+ if (!isLoaderDataResult(result)) {
75
+ loaderData[id] = result;
76
+ continue;
77
+ }
78
+
79
+ if (result.ok) {
80
+ loaderData[id] = result.data;
81
+ continue;
82
+ }
83
+
84
+ // Authority signals take the errorFallback slot (this decode runs during
85
+ // the server tree build on forceAwait/action lanes — throwing here would
86
+ // collapse the payload). A signal outranks a plain error fallback and
87
+ // stops the scan: notFound renders the server-rendered 404 UI, redirect
88
+ // mounts LoaderRedirect which navigates.
89
+ const signal = signalFallback(result);
90
+ if (signal !== undefined) {
91
+ return { loaderData, errorFallback: signal };
92
+ }
93
+
94
+ // null/undefined is the producer's ONLY "no boundary found" sentinel
95
+ // (loader-resolution.ts sets fallback: null for the no-boundary and the
96
+ // fallback-render-threw cases). A matched boundary's rendered ReactNode can
97
+ // legitimately be falsy (0, "", false), so test for null explicitly rather
98
+ // than truthiness, otherwise a valid falsy fallback is discarded and the
99
+ // original loader error is rethrown.
100
+ if (result.fallback != null) {
101
+ errorFallback = result.fallback;
102
+ } else {
103
+ // No boundary: rethrow preserving the ErrorInfo identity (name/stack/
104
+ // code/cause) instead of a stripped generic Error.
105
+ const info = result.error;
106
+ const err = new Error(
107
+ info.message,
108
+ info.cause !== undefined ? { cause: info.cause } : undefined,
109
+ );
110
+ if (info.name) err.name = info.name;
111
+ if (info.stack) err.stack = info.stack;
112
+ if (info.code !== undefined) (err as { code?: string }).code = info.code;
113
+ throw err;
114
+ }
115
+ }
116
+
117
+ return { loaderData, errorFallback };
118
+ }
119
+
120
+ /**
121
+ * Marker property carrying the errorBoundary() fallback on a read-site loader
122
+ * error. decodeLoaderEntry attaches the pre-rendered boundary node (produced
123
+ * server-side by loader-resolution) to the thrown error; the router-owned
124
+ * StreamedLoaderErrorBoundary above the readers (segment-system wires it for
125
+ * every loader-bearing segment) catches by this marker and renders the
126
+ * fallback — restoring the build-time errorFallback-swap contract for
127
+ * streamed loaders. Errors without the marker rethrow to the app's boundaries.
128
+ */
129
+ export const LOADER_ERROR_FALLBACK: unique symbol = Symbol(
130
+ "rango.loaderErrorFallback",
131
+ );
132
+
133
+ /**
134
+ * Streaming useLoader: single-entry decode for read-site resolution. Mirrors
135
+ * decodeLoaderResults for one result. An error entry throws the reconstructed
136
+ * error (name/stack/code/cause preserved); when the entry carries an
137
+ * errorBoundary() fallback, the node rides the throw via
138
+ * LOADER_ERROR_FALLBACK for the boundary above the readers to render.
139
+ */
140
+ export function decodeLoaderEntry(result: any): any {
141
+ if (!isLoaderDataResult(result)) {
142
+ return result;
143
+ }
144
+ if (result.ok) {
145
+ return result.data;
146
+ }
147
+ throwSignal(result);
148
+ const info = result.error;
149
+ const err = new Error(
150
+ info.message,
151
+ info.cause !== undefined ? { cause: info.cause } : undefined,
152
+ );
153
+ if (info.name) err.name = info.name;
154
+ if (info.stack) err.stack = info.stack;
155
+ if (info.code !== undefined) (err as { code?: string }).code = info.code;
156
+ if (result.fallback != null) {
157
+ (err as any)[LOADER_ERROR_FALLBACK] = result.fallback;
158
+ }
159
+ throw err;
160
+ }
package/src/defer.ts ADDED
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Deferred handle values — "decide synchronously, resolve late".
3
+ *
4
+ * A handle is pushed from code that holds `ctx` (a route/layout handler), so the
5
+ * decision to push lands before the handles stream seals. But the value often
6
+ * isn't known there — it may come from a deep async component far from the
7
+ * handler. `ctx.use(Handle).defer()` reserves the handle's slot now (synchronous,
8
+ * so ordering and the pre-seal timing hold) and returns a resolver with the SAME
9
+ * signature as the push: you call it later, anywhere in the render, with the same
10
+ * value you would have passed to the push.
11
+ *
12
+ * const breadcrumb = ctx.use(Breadcrumbs); // (item) => void & .defer()
13
+ * const resolve = breadcrumb.defer({ timeoutMs: 5000, else: null });
14
+ * // deep async component, far from ctx:
15
+ * resolve({ label, href, content }); // identical call, just deferred
16
+ *
17
+ * Under the hood the reserved slot is a Promise. Handle values are resolved
18
+ * before any consumer sees them (resolve-by-default: the full render resolves
19
+ * server-side, navigation resolves client-side before apply), so `useHandle`
20
+ * receives the resolved value, never the Promise. The hazard that guards against
21
+ * bugs: a deferred slot whose resolver is never called would keep the render —
22
+ * and the HTTP response — waiting forever. So a deferred auto-resolves to `else`
23
+ * after `timeoutMs` (default {@link DEFAULT_DEFER_TIMEOUT_MS}) if the resolver is
24
+ * never called, degrading gracefully (and warning in dev) instead of hanging.
25
+ */
26
+
27
+ /** Default auto-resolve window. Long enough for genuine deep async work, short
28
+ * enough that a forgotten resolve does not hang the response indefinitely. */
29
+ export const DEFAULT_DEFER_TIMEOUT_MS = 10_000;
30
+
31
+ /** Options for `ctx.use(Handle).defer()`. */
32
+ export interface DeferOptions<TData> {
33
+ /**
34
+ * Auto-resolve to `else` after this many ms if the resolver is never called,
35
+ * so a forgotten resolve cannot hold the Flight stream — and thus the HTTP
36
+ * response — open. Defaults to {@link DEFAULT_DEFER_TIMEOUT_MS}. `0` or
37
+ * `Infinity` disable the timeout intentionally (not recommended on a request
38
+ * path). Any other non-finite or negative value is treated as a mistake and
39
+ * falls back to the default rather than silently disabling the safety net.
40
+ * Named `timeoutMs` to match the router's `*Ms` duration convention.
41
+ */
42
+ timeoutMs?: number;
43
+ /**
44
+ * Value the slot resolves to if the timeout fires before the resolver is
45
+ * called. Defaults to `undefined` (the deferred item is skipped/empty). For
46
+ * renderable handle content, `null` is the usual graceful fallback, so the
47
+ * type admits `null` even when `TData` does not.
48
+ */
49
+ else?: TData | null;
50
+ }
51
+
52
+ /**
53
+ * The call signature shared by a handle push and the resolver returned by
54
+ * `.defer()`: a concrete value, a `Promise` of the value (Flight streams it as a
55
+ * late row), or a thunk returning a `Promise` (called immediately).
56
+ */
57
+ export type HandlePushFn<TData> = (
58
+ data: TData | Promise<TData> | (() => Promise<TData>),
59
+ ) => void;
60
+
61
+ /**
62
+ * The push function returned by `ctx.use(Handle)`. Call it to push a value now,
63
+ * or call `.defer()` to reserve the slot now and resolve the value later (e.g.
64
+ * from a deep async component) with a timeout safety net.
65
+ */
66
+ export type HandlePush<TData> = HandlePushFn<TData> & {
67
+ /**
68
+ * Reserve this handle's slot synchronously and return a resolver that is
69
+ * push-equal: it takes the same argument shapes as the push (value, Promise, or
70
+ * thunk) and behaves identically. Two things the resolver adds over a direct
71
+ * push: a timeout (if the resolver is never called, the slot auto-resolves to
72
+ * `options.else` after `options.timeoutMs`; calling the resolver cancels it),
73
+ * and — on the action/revalidation path only — a thunk it runs does NOT
74
+ * re-enter the deadlock-guard push-callback scope a direct push thunk gets,
75
+ * because a deferred resolver fires after the handler phase has closed.
76
+ *
77
+ * The reserved slot is resolved before any consumer reads it
78
+ * (resolve-by-default), so `useHandle` receives the resolved value (or the
79
+ * `else` fallback on timeout), never a Promise.
80
+ */
81
+ defer(options?: DeferOptions<TData>): HandlePushFn<TData>;
82
+ };
83
+
84
+ // Internal: a timeout-bounded { promise, resolve }. Not part of the public API
85
+ // (the public surface is `ctx.use(Handle).defer()`); exported for `withDefer`
86
+ // and unit tests only. Resolves to `T`, the `else` fallback, or `undefined`.
87
+ export function createDeferred<T>(options?: {
88
+ timeoutMs?: number;
89
+ fallback?: T | null;
90
+ }): {
91
+ promise: Promise<T | null | undefined>;
92
+ resolve: (value: T | null | undefined) => void;
93
+ } {
94
+ let resolveInner!: (value: T | null | undefined) => void;
95
+ let settled = false;
96
+ let timer: ReturnType<typeof setTimeout> | undefined;
97
+
98
+ const promise = new Promise<T | null | undefined>((resolve) => {
99
+ resolveInner = resolve;
100
+ });
101
+
102
+ const finish = (value: T | null | undefined): void => {
103
+ if (settled) return;
104
+ settled = true;
105
+ if (timer !== undefined) {
106
+ clearTimeout(timer);
107
+ timer = undefined;
108
+ }
109
+ resolveInner(value);
110
+ };
111
+
112
+ // 0 and Infinity are documented intentional disables. Any other non-finite or
113
+ // negative value (NaN, -1, a bad parsed config/env) is a mistake — fall back to
114
+ // the default rather than SILENTLY disabling the safety net, which would let a
115
+ // forgotten resolve hang the Flight stream and the response forever.
116
+ const requested = options?.timeoutMs ?? DEFAULT_DEFER_TIMEOUT_MS;
117
+ let ms: number;
118
+ if (requested === 0 || requested === Infinity) {
119
+ ms = requested;
120
+ } else if (Number.isFinite(requested) && requested > 0) {
121
+ ms = requested;
122
+ } else {
123
+ if (process.env.NODE_ENV !== "production") {
124
+ console.warn(
125
+ `[rango] defer(): invalid timeout ${String(requested)}; using the ` +
126
+ `${DEFAULT_DEFER_TIMEOUT_MS}ms default so the safety net stays on. ` +
127
+ `Use 0 or Infinity to disable the timeout intentionally.`,
128
+ );
129
+ }
130
+ ms = DEFAULT_DEFER_TIMEOUT_MS;
131
+ }
132
+
133
+ if (ms > 0 && ms !== Infinity) {
134
+ timer = setTimeout(() => {
135
+ if (process.env.NODE_ENV !== "production") {
136
+ console.warn(
137
+ `[rango] A deferred handle value was not resolved within ${ms}ms; ` +
138
+ `resolving to the fallback so the response can flush. Call the ` +
139
+ `resolver from the component that produces the value, or raise timeoutMs.`,
140
+ );
141
+ }
142
+ finish(options?.fallback);
143
+ }, ms);
144
+ // Don't let a pending timer alone keep a Node process alive (no-op on workerd).
145
+ (timer as { unref?: () => void }).unref?.();
146
+ }
147
+
148
+ return { promise, resolve: finish };
149
+ }
150
+
151
+ /**
152
+ * Attach `.defer()` to a handle push function. The deferred slot is reserved by
153
+ * pushing the deferred promise through the same push (so ordering, sealing, and
154
+ * Flight streaming all reuse the existing path); the returned resolver settles it.
155
+ */
156
+ export function withDefer<TData>(push: HandlePushFn<TData>): HandlePush<TData> {
157
+ const handlePush = push as HandlePush<TData>;
158
+ // Safe to mutate push in place: each ctx.use(Handle) call (request-context.ts,
159
+ // loader-resolution.ts) builds a fresh closure, so .defer never leaks across
160
+ // handles or requests.
161
+ handlePush.defer = (options) => {
162
+ const deferred = createDeferred<TData>({
163
+ timeoutMs: options?.timeoutMs,
164
+ fallback: options?.else,
165
+ });
166
+ // Reserve the slot now by pushing the pending promise (the renderer use()s it).
167
+ push(deferred.promise as Promise<TData>);
168
+ // The resolver is push-equal: a thunk is invoked immediately (as push does)
169
+ // and a Promise is adopted by the reserved slot. Calling it settles the slot
170
+ // and cancels the timeout — the timeout only fires if it is never called.
171
+ const resolveSlot = deferred.resolve as (
172
+ value: TData | Promise<TData>,
173
+ ) => void;
174
+ return (data) => {
175
+ // The thunk runs without re-entering the push-callback scope a direct push
176
+ // thunk gets on the action/revalidation path (loader-resolution.ts): a
177
+ // deferred resolver fires from a deep component after the handler phase has
178
+ // closed, so there is no live deadlock-guard window to exempt.
179
+ resolveSlot(
180
+ typeof data === "function" ? (data as () => Promise<TData>)() : data,
181
+ );
182
+ };
183
+ };
184
+ return handlePush;
185
+ }