@rangojs/router 0.1.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/README.md +2 -1
  2. package/dist/types/browser/prefetch/default-strategy.d.ts +22 -0
  3. package/dist/types/browser/prefetch/runtime.d.ts +0 -1
  4. package/dist/types/browser/react/Link.d.ts +8 -11
  5. package/dist/types/browser/types.d.ts +5 -0
  6. package/dist/types/cache/document-cache.d.ts +3 -1
  7. package/dist/types/cache/types.d.ts +10 -3
  8. package/dist/types/route-definition/helpers-types.d.ts +6 -6
  9. package/dist/types/router/match-handlers.d.ts +2 -3
  10. package/dist/types/router/prefetch-default.d.ts +28 -0
  11. package/dist/types/router/router-interfaces.d.ts +7 -0
  12. package/dist/types/router/router-options.d.ts +30 -0
  13. package/dist/types/router/segment-resolution/view-transition-default.d.ts +3 -4
  14. package/dist/types/router/transition-when.d.ts +13 -0
  15. package/dist/types/rsc/capture-queue.d.ts +6 -0
  16. package/dist/types/rsc/shell-capture.d.ts +15 -7
  17. package/dist/types/rsc/shell-serve.d.ts +6 -3
  18. package/dist/types/rsc/transition-gate.d.ts +10 -14
  19. package/dist/types/rsc/types.d.ts +2 -0
  20. package/dist/types/server/request-context.d.ts +5 -1
  21. package/dist/types/testing/e2e/index.d.ts +3 -3
  22. package/dist/types/testing/e2e/page-helpers.d.ts +24 -0
  23. package/dist/types/testing/index.d.ts +2 -2
  24. package/dist/types/testing/run-transition-when.d.ts +6 -5
  25. package/dist/types/testing/shell-status.d.ts +23 -3
  26. package/dist/types/types/segments.d.ts +27 -22
  27. package/dist/types/urls/path-helper-types.d.ts +4 -3
  28. package/dist/types.backup/__internal.d.ts +127 -0
  29. package/dist/types.backup/bin/rango.d.ts +1 -0
  30. package/dist/types.backup/browser/action-coordinator.d.ts +57 -0
  31. package/dist/types.backup/browser/action-fence.d.ts +33 -0
  32. package/dist/types.backup/browser/app-shell.d.ts +34 -0
  33. package/dist/types.backup/browser/app-version.d.ts +6 -0
  34. package/dist/types.backup/browser/connection-warmup.d.ts +31 -0
  35. package/dist/types.backup/browser/cookie-name.d.ts +66 -0
  36. package/dist/types.backup/browser/event-controller.d.ts +221 -0
  37. package/dist/types.backup/browser/history-state.d.ts +26 -0
  38. package/dist/types.backup/browser/index.d.ts +1 -0
  39. package/dist/types.backup/browser/intercept-utils.d.ts +30 -0
  40. package/dist/types.backup/browser/invalidate-client-cache.d.ts +17 -0
  41. package/dist/types.backup/browser/link-interceptor.d.ts +43 -0
  42. package/dist/types.backup/browser/logging.d.ts +33 -0
  43. package/dist/types.backup/browser/merge-segment-loaders.d.ts +38 -0
  44. package/dist/types.backup/browser/navigation-bridge.d.ts +27 -0
  45. package/dist/types.backup/browser/navigation-client.d.ts +17 -0
  46. package/dist/types.backup/browser/navigation-store-handle.d.ts +25 -0
  47. package/dist/types.backup/browser/navigation-store.d.ts +95 -0
  48. package/dist/types.backup/browser/navigation-transaction.d.ts +75 -0
  49. package/dist/types.backup/browser/network-error-handler.d.ts +35 -0
  50. package/dist/types.backup/browser/partial-update.d.ts +61 -0
  51. package/dist/types.backup/browser/prefetch/cache.d.ts +183 -0
  52. package/dist/types.backup/browser/prefetch/fetch.d.ts +52 -0
  53. package/dist/types.backup/browser/prefetch/observer.d.ts +27 -0
  54. package/dist/types.backup/browser/prefetch/policy.d.ts +13 -0
  55. package/dist/types.backup/browser/prefetch/queue.d.ts +48 -0
  56. package/dist/types.backup/browser/prefetch/resource-ready.d.ts +28 -0
  57. package/dist/types.backup/browser/rango-state.d.ts +52 -0
  58. package/dist/types.backup/browser/react/Link.d.ts +140 -0
  59. package/dist/types.backup/browser/react/NavigationProvider.d.ts +88 -0
  60. package/dist/types.backup/browser/react/ScrollRestoration.d.ts +78 -0
  61. package/dist/types.backup/browser/react/context.d.ts +54 -0
  62. package/dist/types.backup/browser/react/filter-segment-order.d.ts +35 -0
  63. package/dist/types.backup/browser/react/index.d.ts +1 -0
  64. package/dist/types.backup/browser/react/location-state-shared.d.ts +162 -0
  65. package/dist/types.backup/browser/react/location-state.d.ts +29 -0
  66. package/dist/types.backup/browser/react/mount-context.d.ts +23 -0
  67. package/dist/types.backup/browser/react/nonce-context.d.ts +14 -0
  68. package/dist/types.backup/browser/react/shallow-equal.d.ts +5 -0
  69. package/dist/types.backup/browser/react/use-action.d.ts +61 -0
  70. package/dist/types.backup/browser/react/use-handle.d.ts +21 -0
  71. package/dist/types.backup/browser/react/use-href.d.ts +32 -0
  72. package/dist/types.backup/browser/react/use-link-status.d.ts +36 -0
  73. package/dist/types.backup/browser/react/use-mount.d.ts +24 -0
  74. package/dist/types.backup/browser/react/use-navigation.d.ts +15 -0
  75. package/dist/types.backup/browser/react/use-params.d.ts +21 -0
  76. package/dist/types.backup/browser/react/use-pathname.d.ts +13 -0
  77. package/dist/types.backup/browser/react/use-reverse.d.ts +40 -0
  78. package/dist/types.backup/browser/react/use-router.d.ts +23 -0
  79. package/dist/types.backup/browser/react/use-search-params.d.ts +19 -0
  80. package/dist/types.backup/browser/react/use-segments.d.ts +29 -0
  81. package/dist/types.backup/browser/response-adapter.d.ts +58 -0
  82. package/dist/types.backup/browser/rsc-router.d.ts +141 -0
  83. package/dist/types.backup/browser/scroll-restoration.d.ts +103 -0
  84. package/dist/types.backup/browser/segment-reconciler.d.ts +74 -0
  85. package/dist/types.backup/browser/segment-structure-assert.d.ts +16 -0
  86. package/dist/types.backup/browser/server-action-bridge.d.ts +29 -0
  87. package/dist/types.backup/browser/types.d.ts +530 -0
  88. package/dist/types.backup/browser/validate-redirect-origin.d.ts +28 -0
  89. package/dist/types.backup/build/collect-fallback-refs.d.ts +5 -0
  90. package/dist/types.backup/build/generate-manifest.d.ts +100 -0
  91. package/dist/types.backup/build/generate-route-types.d.ts +8 -0
  92. package/dist/types.backup/build/index.d.ts +21 -0
  93. package/dist/types.backup/build/prefix-tree-utils.d.ts +56 -0
  94. package/dist/types.backup/build/route-trie.d.ts +89 -0
  95. package/dist/types.backup/build/route-types/ast-helpers.d.ts +3 -0
  96. package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +13 -0
  97. package/dist/types.backup/build/route-types/codegen.d.ts +16 -0
  98. package/dist/types.backup/build/route-types/include-resolution.d.ts +74 -0
  99. package/dist/types.backup/build/route-types/param-extraction.d.ts +13 -0
  100. package/dist/types.backup/build/route-types/per-module-writer.d.ts +18 -0
  101. package/dist/types.backup/build/route-types/router-processing.d.ts +82 -0
  102. package/dist/types.backup/build/route-types/scan-filter.d.ts +17 -0
  103. package/dist/types.backup/build/route-types/source-scan.d.ts +13 -0
  104. package/dist/types.backup/build/runtime-discovery.d.ts +24 -0
  105. package/dist/types.backup/cache/background-task.d.ts +21 -0
  106. package/dist/types.backup/cache/cache-error.d.ts +71 -0
  107. package/dist/types.backup/cache/cache-key-utils.d.ts +35 -0
  108. package/dist/types.backup/cache/cache-policy.d.ts +59 -0
  109. package/dist/types.backup/cache/cache-runtime.d.ts +51 -0
  110. package/dist/types.backup/cache/cache-scope.d.ts +134 -0
  111. package/dist/types.backup/cache/cache-tag.d.ts +79 -0
  112. package/dist/types.backup/cache/cf/cf-base64.d.ts +4 -0
  113. package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +105 -0
  114. package/dist/types.backup/cache/cf/cf-cache-store.d.ts +481 -0
  115. package/dist/types.backup/cache/cf/cf-cache-types.d.ts +300 -0
  116. package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +22 -0
  117. package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +15 -0
  118. package/dist/types.backup/cache/cf/index.d.ts +3 -0
  119. package/dist/types.backup/cache/document-cache.d.ts +69 -0
  120. package/dist/types.backup/cache/handle-capture.d.ts +23 -0
  121. package/dist/types.backup/cache/handle-snapshot.d.ts +39 -0
  122. package/dist/types.backup/cache/index.d.ts +7 -0
  123. package/dist/types.backup/cache/memory-segment-store.d.ts +163 -0
  124. package/dist/types.backup/cache/profile-registry.d.ts +40 -0
  125. package/dist/types.backup/cache/read-through-swr.d.ts +60 -0
  126. package/dist/types.backup/cache/segment-codec.d.ts +78 -0
  127. package/dist/types.backup/cache/shell-snapshot.d.ts +162 -0
  128. package/dist/types.backup/cache/tag-invalidation.d.ts +74 -0
  129. package/dist/types.backup/cache/taint.d.ts +71 -0
  130. package/dist/types.backup/cache/types.d.ts +407 -0
  131. package/dist/types.backup/cache/vercel/index.d.ts +1 -0
  132. package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +267 -0
  133. package/dist/types.backup/client.d.ts +184 -0
  134. package/dist/types.backup/client.rsc.d.ts +39 -0
  135. package/dist/types.backup/cloudflare/index.d.ts +7 -0
  136. package/dist/types.backup/cloudflare/tracing.d.ts +53 -0
  137. package/dist/types.backup/component-utils.d.ts +46 -0
  138. package/dist/types.backup/components/DefaultDocument.d.ts +13 -0
  139. package/dist/types.backup/context-var.d.ts +84 -0
  140. package/dist/types.backup/debug.d.ts +57 -0
  141. package/dist/types.backup/decode-loader-results.d.ts +5 -0
  142. package/dist/types.backup/default-error-boundary.d.ts +10 -0
  143. package/dist/types.backup/defer.d.ts +89 -0
  144. package/dist/types.backup/deps/browser.d.ts +1 -0
  145. package/dist/types.backup/deps/html-stream-client.d.ts +1 -0
  146. package/dist/types.backup/deps/html-stream-server.d.ts +1 -0
  147. package/dist/types.backup/deps/rsc.d.ts +1 -0
  148. package/dist/types.backup/deps/ssr.d.ts +1 -0
  149. package/dist/types.backup/encode-kv.d.ts +35 -0
  150. package/dist/types.backup/errors.d.ts +226 -0
  151. package/dist/types.backup/escape-script.d.ts +44 -0
  152. package/dist/types.backup/handle.d.ts +93 -0
  153. package/dist/types.backup/handles/MetaTags.d.ts +17 -0
  154. package/dist/types.backup/handles/Scripts.d.ts +38 -0
  155. package/dist/types.backup/handles/breadcrumbs.d.ts +43 -0
  156. package/dist/types.backup/handles/deferred-resolution.d.ts +53 -0
  157. package/dist/types.backup/handles/is-thenable.d.ts +12 -0
  158. package/dist/types.backup/handles/meta.d.ts +43 -0
  159. package/dist/types.backup/handles/script.d.ts +139 -0
  160. package/dist/types.backup/host/cookie-handler.d.ts +8 -0
  161. package/dist/types.backup/host/errors.d.ts +40 -0
  162. package/dist/types.backup/host/index.d.ts +33 -0
  163. package/dist/types.backup/host/pattern-matcher.d.ts +30 -0
  164. package/dist/types.backup/host/router.d.ts +12 -0
  165. package/dist/types.backup/host/testing.d.ts +41 -0
  166. package/dist/types.backup/host/types.d.ts +148 -0
  167. package/dist/types.backup/host/utils.d.ts +20 -0
  168. package/dist/types.backup/href-client.d.ts +214 -0
  169. package/dist/types.backup/index.d.ts +112 -0
  170. package/dist/types.backup/index.rsc.d.ts +51 -0
  171. package/dist/types.backup/internal-debug.d.ts +1 -0
  172. package/dist/types.backup/loader-store.d.ts +193 -0
  173. package/dist/types.backup/loader.d.ts +18 -0
  174. package/dist/types.backup/loader.rsc.d.ts +18 -0
  175. package/dist/types.backup/missing-id-error.d.ts +1 -0
  176. package/dist/types.backup/outlet-context.d.ts +12 -0
  177. package/dist/types.backup/outlet-provider.d.ts +12 -0
  178. package/dist/types.backup/prerender/build-shell-capture.d.ts +104 -0
  179. package/dist/types.backup/prerender/param-hash.d.ts +6 -0
  180. package/dist/types.backup/prerender/shell-manifest-key.d.ts +18 -0
  181. package/dist/types.backup/prerender/store.d.ts +62 -0
  182. package/dist/types.backup/prerender.d.ts +292 -0
  183. package/dist/types.backup/redirect-origin.d.ts +55 -0
  184. package/dist/types.backup/regex-escape.d.ts +6 -0
  185. package/dist/types.backup/render-error-thrower.d.ts +13 -0
  186. package/dist/types.backup/response-utils.d.ts +35 -0
  187. package/dist/types.backup/reverse.d.ts +206 -0
  188. package/dist/types.backup/root-error-boundary.d.ts +32 -0
  189. package/dist/types.backup/route-content-wrapper.d.ts +40 -0
  190. package/dist/types.backup/route-definition/dsl-helpers.d.ts +130 -0
  191. package/dist/types.backup/route-definition/helper-factories.d.ts +22 -0
  192. package/dist/types.backup/route-definition/helpers-types.d.ts +392 -0
  193. package/dist/types.backup/route-definition/index.d.ts +7 -0
  194. package/dist/types.backup/route-definition/redirect.d.ts +48 -0
  195. package/dist/types.backup/route-definition/resolve-handler-use.d.ts +19 -0
  196. package/dist/types.backup/route-definition/use-item-types.d.ts +1 -0
  197. package/dist/types.backup/route-definition.d.ts +1 -0
  198. package/dist/types.backup/route-map-builder.d.ts +127 -0
  199. package/dist/types.backup/route-name.d.ts +27 -0
  200. package/dist/types.backup/route-types.d.ts +172 -0
  201. package/dist/types.backup/router/basename.d.ts +10 -0
  202. package/dist/types.backup/router/content-negotiation.d.ts +91 -0
  203. package/dist/types.backup/router/debug-manifest.d.ts +7 -0
  204. package/dist/types.backup/router/error-handling.d.ts +76 -0
  205. package/dist/types.backup/router/find-match.d.ts +19 -0
  206. package/dist/types.backup/router/handler-context.d.ts +41 -0
  207. package/dist/types.backup/router/instrument.d.ts +161 -0
  208. package/dist/types.backup/router/intercept-resolution.d.ts +79 -0
  209. package/dist/types.backup/router/lazy-includes.d.ts +26 -0
  210. package/dist/types.backup/router/loader-resolution.d.ts +63 -0
  211. package/dist/types.backup/router/logging.d.ts +41 -0
  212. package/dist/types.backup/router/manifest.d.ts +8 -0
  213. package/dist/types.backup/router/match-api.d.ts +19 -0
  214. package/dist/types.backup/router/match-context.d.ts +184 -0
  215. package/dist/types.backup/router/match-handlers.d.ts +49 -0
  216. package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +113 -0
  217. package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +113 -0
  218. package/dist/types.backup/router/match-middleware/cache-store.d.ts +112 -0
  219. package/dist/types.backup/router/match-middleware/index.d.ts +80 -0
  220. package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +116 -0
  221. package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +94 -0
  222. package/dist/types.backup/router/match-pipelines.d.ts +103 -0
  223. package/dist/types.backup/router/match-result.d.ts +114 -0
  224. package/dist/types.backup/router/metrics.d.ts +6 -0
  225. package/dist/types.backup/router/middleware-types.d.ts +74 -0
  226. package/dist/types.backup/router/middleware.d.ts +116 -0
  227. package/dist/types.backup/router/navigation-snapshot.d.ts +22 -0
  228. package/dist/types.backup/router/params-util.d.ts +8 -0
  229. package/dist/types.backup/router/parse-pattern.d.ts +38 -0
  230. package/dist/types.backup/router/pattern-matching.d.ts +169 -0
  231. package/dist/types.backup/router/prefetch-cache-ttl.d.ts +27 -0
  232. package/dist/types.backup/router/prefetch-limits.d.ts +20 -0
  233. package/dist/types.backup/router/prerender-match.d.ts +50 -0
  234. package/dist/types.backup/router/preview-match.d.ts +22 -0
  235. package/dist/types.backup/router/request-classification.d.ts +104 -0
  236. package/dist/types.backup/router/revalidation.d.ts +57 -0
  237. package/dist/types.backup/router/route-snapshot.d.ts +112 -0
  238. package/dist/types.backup/router/router-context.d.ts +137 -0
  239. package/dist/types.backup/router/router-interfaces.d.ts +432 -0
  240. package/dist/types.backup/router/router-options.d.ts +738 -0
  241. package/dist/types.backup/router/router-registry.d.ts +15 -0
  242. package/dist/types.backup/router/segment-resolution/fresh.d.ts +55 -0
  243. package/dist/types.backup/router/segment-resolution/helpers.d.ts +93 -0
  244. package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +33 -0
  245. package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +44 -0
  246. package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +90 -0
  247. package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +53 -0
  248. package/dist/types.backup/router/segment-resolution/revalidation.d.ts +85 -0
  249. package/dist/types.backup/router/segment-resolution/static-store.d.ts +17 -0
  250. package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
  251. package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +28 -0
  252. package/dist/types.backup/router/segment-resolution.d.ts +3 -0
  253. package/dist/types.backup/router/segment-wrappers.d.ts +53 -0
  254. package/dist/types.backup/router/state-cookie-name.d.ts +1 -0
  255. package/dist/types.backup/router/substitute-pattern-params.d.ts +23 -0
  256. package/dist/types.backup/router/telemetry-otel.d.ts +113 -0
  257. package/dist/types.backup/router/telemetry.d.ts +215 -0
  258. package/dist/types.backup/router/timeout.d.ts +68 -0
  259. package/dist/types.backup/router/tracing.d.ts +125 -0
  260. package/dist/types.backup/router/trie-matching.d.ts +32 -0
  261. package/dist/types.backup/router/types.d.ts +98 -0
  262. package/dist/types.backup/router/url-params.d.ts +26 -0
  263. package/dist/types.backup/router.d.ts +7 -0
  264. package/dist/types.backup/rsc/capture-queue.d.ts +6 -0
  265. package/dist/types.backup/rsc/full-payload.d.ts +22 -0
  266. package/dist/types.backup/rsc/handler-context.d.ts +31 -0
  267. package/dist/types.backup/rsc/handler.d.ts +9 -0
  268. package/dist/types.backup/rsc/helpers.d.ts +213 -0
  269. package/dist/types.backup/rsc/index.d.ts +17 -0
  270. package/dist/types.backup/rsc/json-route-result.d.ts +20 -0
  271. package/dist/types.backup/rsc/loader-fetch.d.ts +14 -0
  272. package/dist/types.backup/rsc/manifest-init.d.ts +18 -0
  273. package/dist/types.backup/rsc/nonce.d.ts +28 -0
  274. package/dist/types.backup/rsc/origin-guard.d.ts +50 -0
  275. package/dist/types.backup/rsc/progressive-enhancement.d.ts +19 -0
  276. package/dist/types.backup/rsc/redirect-guard.d.ts +35 -0
  277. package/dist/types.backup/rsc/response-cache-serve.d.ts +46 -0
  278. package/dist/types.backup/rsc/response-error.d.ts +19 -0
  279. package/dist/types.backup/rsc/response-route-handler.d.ts +29 -0
  280. package/dist/types.backup/rsc/rsc-rendering.d.ts +23 -0
  281. package/dist/types.backup/rsc/runtime-warnings.d.ts +22 -0
  282. package/dist/types.backup/rsc/server-action.d.ts +68 -0
  283. package/dist/types.backup/rsc/shell-build-manifest.d.ts +84 -0
  284. package/dist/types.backup/rsc/shell-capture-constants.d.ts +27 -0
  285. package/dist/types.backup/rsc/shell-capture.d.ts +374 -0
  286. package/dist/types.backup/rsc/shell-serve.d.ts +136 -0
  287. package/dist/types.backup/rsc/ssr-setup.d.ts +48 -0
  288. package/dist/types.backup/rsc/transition-gate.d.ts +27 -0
  289. package/dist/types.backup/rsc/types.d.ts +290 -0
  290. package/dist/types.backup/runtime-env.d.ts +1 -0
  291. package/dist/types.backup/search-params.d.ts +125 -0
  292. package/dist/types.backup/segment-content-promise.d.ts +13 -0
  293. package/dist/types.backup/segment-fragments.d.ts +56 -0
  294. package/dist/types.backup/segment-loader-promise.d.ts +22 -0
  295. package/dist/types.backup/segment-system.d.ts +84 -0
  296. package/dist/types.backup/serialize.d.ts +164 -0
  297. package/dist/types.backup/server/context.d.ts +494 -0
  298. package/dist/types.backup/server/cookie-parse.d.ts +10 -0
  299. package/dist/types.backup/server/cookie-store.d.ts +107 -0
  300. package/dist/types.backup/server/fetchable-loader-store.d.ts +20 -0
  301. package/dist/types.backup/server/handle-store.d.ts +100 -0
  302. package/dist/types.backup/server/loader-registry.d.ts +32 -0
  303. package/dist/types.backup/server/request-context.d.ts +596 -0
  304. package/dist/types.backup/server/root-layout.d.ts +3 -0
  305. package/dist/types.backup/server.d.ts +15 -0
  306. package/dist/types.backup/ssr/index.d.ts +233 -0
  307. package/dist/types.backup/ssr/inject-rsc-eager.d.ts +3 -0
  308. package/dist/types.backup/ssr/preinit-client-references.d.ts +71 -0
  309. package/dist/types.backup/ssr/ssr-root.d.ts +69 -0
  310. package/dist/types.backup/static-handler.d.ts +57 -0
  311. package/dist/types.backup/testing/cache-status.d.ts +63 -0
  312. package/dist/types.backup/testing/collect-handle.d.ts +20 -0
  313. package/dist/types.backup/testing/dispatch.d.ts +123 -0
  314. package/dist/types.backup/testing/dom.entry.d.ts +15 -0
  315. package/dist/types.backup/testing/e2e/fixture.d.ts +37 -0
  316. package/dist/types.backup/testing/e2e/index.d.ts +30 -0
  317. package/dist/types.backup/testing/e2e/matchers.d.ts +17 -0
  318. package/dist/types.backup/testing/e2e/page-helpers.d.ts +62 -0
  319. package/dist/types.backup/testing/e2e/parity.d.ts +111 -0
  320. package/dist/types.backup/testing/e2e/server.d.ts +35 -0
  321. package/dist/types.backup/testing/flight-matchers.d.ts +55 -0
  322. package/dist/types.backup/testing/flight-normalize.d.ts +1 -0
  323. package/dist/types.backup/testing/flight-tree.d.ts +192 -0
  324. package/dist/types.backup/testing/flight.d.ts +115 -0
  325. package/dist/types.backup/testing/flight.entry.d.ts +27 -0
  326. package/dist/types.backup/testing/generated-routes.d.ts +66 -0
  327. package/dist/types.backup/testing/index.d.ts +52 -0
  328. package/dist/types.backup/testing/internal/context.d.ts +225 -0
  329. package/dist/types.backup/testing/internal/flight-client-globals.d.ts +1 -0
  330. package/dist/types.backup/testing/internal/seed-vars.d.ts +30 -0
  331. package/dist/types.backup/testing/render-handler.d.ts +160 -0
  332. package/dist/types.backup/testing/render-route.d.ts +246 -0
  333. package/dist/types.backup/testing/run-loader.d.ts +186 -0
  334. package/dist/types.backup/testing/run-middleware.d.ts +132 -0
  335. package/dist/types.backup/testing/run-transition-when.d.ts +77 -0
  336. package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
  337. package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
  338. package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
  339. package/dist/types.backup/testing/vitest-stubs/version.d.ts +1 -0
  340. package/dist/types.backup/testing/vitest.d.ts +205 -0
  341. package/dist/types.backup/theme/ThemeProvider.d.ts +13 -0
  342. package/dist/types.backup/theme/ThemeScript.d.ts +45 -0
  343. package/dist/types.backup/theme/constants.d.ts +39 -0
  344. package/dist/types.backup/theme/index.d.ts +29 -0
  345. package/dist/types.backup/theme/theme-context.d.ts +21 -0
  346. package/dist/types.backup/theme/theme-script.d.ts +26 -0
  347. package/dist/types.backup/theme/types.d.ts +162 -0
  348. package/dist/types.backup/theme/use-theme.d.ts +8 -0
  349. package/dist/types.backup/types/boundaries.d.ts +93 -0
  350. package/dist/types.backup/types/cache-types.d.ts +191 -0
  351. package/dist/types.backup/types/error-types.d.ts +114 -0
  352. package/dist/types.backup/types/global-namespace.d.ts +90 -0
  353. package/dist/types.backup/types/handler-context.d.ts +658 -0
  354. package/dist/types.backup/types/index.d.ts +11 -0
  355. package/dist/types.backup/types/loader-types.d.ts +182 -0
  356. package/dist/types.backup/types/request-scope.d.ts +93 -0
  357. package/dist/types.backup/types/route-config.d.ts +105 -0
  358. package/dist/types.backup/types/route-entry.d.ts +95 -0
  359. package/dist/types.backup/types/segments.d.ts +234 -0
  360. package/dist/types.backup/types.d.ts +1 -0
  361. package/dist/types.backup/urls/include-helper.d.ts +17 -0
  362. package/dist/types.backup/urls/include-provider.d.ts +27 -0
  363. package/dist/types.backup/urls/index.d.ts +6 -0
  364. package/dist/types.backup/urls/path-helper-types.d.ts +197 -0
  365. package/dist/types.backup/urls/path-helper.d.ts +12 -0
  366. package/dist/types.backup/urls/pattern-types.d.ts +166 -0
  367. package/dist/types.backup/urls/response-types.d.ts +67 -0
  368. package/dist/types.backup/urls/type-extraction.d.ts +157 -0
  369. package/dist/types.backup/urls/urls-function.d.ts +24 -0
  370. package/dist/types.backup/urls.d.ts +1 -0
  371. package/dist/types.backup/use-loader.d.ts +150 -0
  372. package/dist/types.backup/vercel/index.d.ts +10 -0
  373. package/dist/types.backup/vercel/tracing.d.ts +70 -0
  374. package/dist/types.backup/vite/debug.d.ts +80 -0
  375. package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +12 -0
  376. package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +65 -0
  377. package/dist/types.backup/vite/discovery/discover-routers.d.ts +17 -0
  378. package/dist/types.backup/vite/discovery/discovery-errors.d.ts +113 -0
  379. package/dist/types.backup/vite/discovery/gate-state.d.ts +79 -0
  380. package/dist/types.backup/vite/discovery/prerender-collection.d.ts +24 -0
  381. package/dist/types.backup/vite/discovery/route-types-writer.d.ts +32 -0
  382. package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +22 -0
  383. package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +40 -0
  384. package/dist/types.backup/vite/discovery/state.d.ts +162 -0
  385. package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +15 -0
  386. package/dist/types.backup/vite/index.d.ts +11 -0
  387. package/dist/types.backup/vite/inject-client-debug.d.ts +56 -0
  388. package/dist/types.backup/vite/plugin-types.d.ts +298 -0
  389. package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +6 -0
  390. package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +40 -0
  391. package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +35 -0
  392. package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
  393. package/dist/types.backup/vite/plugins/expose-action-id.d.ts +18 -0
  394. package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +37 -0
  395. package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
  396. package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
  397. package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
  398. package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +13 -0
  399. package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +29 -0
  400. package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +6 -0
  401. package/dist/types.backup/vite/plugins/performance-tracks.d.ts +25 -0
  402. package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +20 -0
  403. package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +20 -0
  404. package/dist/types.backup/vite/plugins/vercel-output.d.ts +85 -0
  405. package/dist/types.backup/vite/plugins/version-injector.d.ts +21 -0
  406. package/dist/types.backup/vite/plugins/version-plugin.d.ts +19 -0
  407. package/dist/types.backup/vite/plugins/virtual-entries.d.ts +36 -0
  408. package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +7 -0
  409. package/dist/types.backup/vite/rango.d.ts +29 -0
  410. package/dist/types.backup/vite/router-discovery.d.ts +23 -0
  411. package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +64 -0
  412. package/dist/types.backup/vite/utils/banner.d.ts +2 -0
  413. package/dist/types.backup/vite/utils/bundle-analysis.d.ts +28 -0
  414. package/dist/types.backup/vite/utils/client-chunks.d.ts +55 -0
  415. package/dist/types.backup/vite/utils/directive-prologue.d.ts +16 -0
  416. package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +37 -0
  417. package/dist/types.backup/vite/utils/manifest-utils.d.ts +7 -0
  418. package/dist/types.backup/vite/utils/package-resolution.d.ts +6 -0
  419. package/dist/types.backup/vite/utils/prerender-utils.d.ts +32 -0
  420. package/dist/types.backup/vite/utils/shared-utils.d.ts +55 -0
  421. package/dist/vite/index.js +5 -2
  422. package/package.json +20 -21
  423. package/skills/cache-guide/SKILL.md +6 -3
  424. package/skills/catalog.json +7 -1
  425. package/skills/comparison/references/framework-comparison.md +2 -1
  426. package/skills/deployment-caching/SKILL.md +176 -0
  427. package/skills/document-cache/SKILL.md +30 -3
  428. package/skills/ppr/SKILL.md +81 -34
  429. package/skills/prerender/SKILL.md +15 -8
  430. package/skills/rango/SKILL.md +20 -17
  431. package/skills/router-setup/SKILL.md +4 -0
  432. package/skills/testing/SKILL.md +1 -1
  433. package/skills/testing/cache-prerender.md +5 -1
  434. package/skills/vercel/SKILL.md +22 -1
  435. package/skills/view-transitions/SKILL.md +12 -8
  436. package/src/browser/prefetch/default-strategy.ts +34 -0
  437. package/src/browser/prefetch/loader.ts +6 -12
  438. package/src/browser/prefetch/runtime.ts +0 -1
  439. package/src/browser/react/Link.tsx +22 -21
  440. package/src/browser/rsc-router.tsx +8 -0
  441. package/src/browser/types.ts +5 -0
  442. package/src/cache/cache-scope.ts +6 -1
  443. package/src/cache/cf/cf-cache-store.ts +4 -0
  444. package/src/cache/document-cache.ts +4 -2
  445. package/src/cache/types.ts +10 -3
  446. package/src/cache/vercel/vercel-cache-store.ts +6 -1
  447. package/src/route-definition/helpers-types.ts +6 -6
  448. package/src/router/match-handlers.ts +44 -6
  449. package/src/router/match-middleware/cache-lookup.ts +10 -3
  450. package/src/router/prefetch-default.ts +59 -0
  451. package/src/router/router-interfaces.ts +8 -0
  452. package/src/router/router-options.ts +31 -0
  453. package/src/router/segment-resolution/view-transition-default.ts +9 -5
  454. package/src/router/transition-when.ts +76 -0
  455. package/src/router.ts +7 -0
  456. package/src/rsc/capture-queue.ts +24 -1
  457. package/src/rsc/full-payload.ts +1 -0
  458. package/src/rsc/handler.ts +1 -0
  459. package/src/rsc/progressive-enhancement.ts +9 -14
  460. package/src/rsc/rsc-rendering.ts +261 -48
  461. package/src/rsc/shell-capture.ts +94 -50
  462. package/src/rsc/shell-serve.ts +9 -4
  463. package/src/rsc/transition-gate.ts +37 -40
  464. package/src/rsc/types.ts +2 -0
  465. package/src/server/request-context.ts +6 -0
  466. package/src/testing/e2e/index.ts +11 -0
  467. package/src/testing/e2e/page-helpers.ts +47 -0
  468. package/src/testing/e2e/parity.ts +13 -0
  469. package/src/testing/index.ts +9 -1
  470. package/src/testing/run-transition-when.ts +42 -9
  471. package/src/testing/shell-status.ts +92 -3
  472. package/src/types/segments.ts +27 -22
  473. package/src/urls/path-helper-types.ts +4 -3
@@ -0,0 +1,7 @@
1
+ import type { RangoOptions } from "./router/router-options.js";
2
+ import type { Rango } from "./router/router-interfaces.js";
3
+ export { RSC_ROUTER_BRAND, RouterRegistry } from "./router/router-registry.js";
4
+ export type { RangoOptions, RootLayoutProps, SSRStreamMode, SSROptions, ResolveStreamingContext, } from "./router/router-options.js";
5
+ export type { Rango, RangoInternal, RouterRequestInput, } from "./router/router-interfaces.js";
6
+ export { toInternal } from "./router/router-interfaces.js";
7
+ export declare function createRouter<TEnv = any>(options?: RangoOptions<TEnv>): Rango<TEnv, {}>;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Run `task` after every previously enqueued capture has settled. Returns a
3
+ * promise for THIS task's completion (rejections propagate to the caller —
4
+ * the queue itself is insulated).
5
+ */
6
+ export declare function enqueueSerializedCapture(task: () => Promise<void>): Promise<void>;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Full (initial-load / document) RSC payload builder.
3
+ *
4
+ * Extracted from rsc-rendering.ts so both the foreground render AND the PPR
5
+ * background shell capture (shell-capture.ts) build the SAME payload shape over
6
+ * their own handle store. `resume` requires the captured tree to match the served
7
+ * tree; building an identical payload over the same replayed segments is what
8
+ * makes that hold. Keep this byte-identical to the normal full-render path.
9
+ */
10
+ import type { MatchResult } from "../types.js";
11
+ import type { RscPayload } from "./types.js";
12
+ import type { HandlerContext } from "./handler-context.js";
13
+ import type { RequestContext } from "../server/request-context.js";
14
+ import type { HandleStore } from "../server/handle-store.js";
15
+ /**
16
+ * Build the metadata payload for a full (non-partial) document render.
17
+ *
18
+ * @param handleStore - the store whose resolved handle stream feeds the payload;
19
+ * the foreground passes reqCtx's store, the background capture passes its fresh
20
+ * derived-context store.
21
+ */
22
+ export declare function buildFullPayload(m: MatchResult, ctx: HandlerContext<any>, url: URL, reqCtx: RequestContext<any>, handleStore: HandleStore): RscPayload;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Shared dependencies for extracted RSC handler functions.
3
+ *
4
+ * Bundled into a single object by createRSCHandler() and passed to
5
+ * each leaf handler (progressive enhancement, server action, loader fetch,
6
+ * RSC rendering) so they can be standalone modules without closure coupling.
7
+ */
8
+ import type { RangoInternal } from "../router/router-interfaces.js";
9
+ import type { ErrorPhase } from "../types.js";
10
+ import type { InvokeOnErrorContext } from "../router/error-handling.js";
11
+ import type { RSCDependencies, LoadSSRModule } from "./types.js";
12
+ import type { SSRStreamMode } from "../router/router-options.js";
13
+ export interface HandlerContext<TEnv = unknown> {
14
+ router: RangoInternal<TEnv, any>;
15
+ version: string;
16
+ renderToReadableStream: RSCDependencies["renderToReadableStream"];
17
+ decodeReply: RSCDependencies["decodeReply"];
18
+ createTemporaryReferenceSet: RSCDependencies["createTemporaryReferenceSet"];
19
+ loadServerAction: RSCDependencies["loadServerAction"];
20
+ decodeAction: RSCDependencies["decodeAction"];
21
+ decodeFormState: RSCDependencies["decodeFormState"];
22
+ loadSSRModule: LoadSSRModule;
23
+ callOnError: (error: unknown, phase: ErrorPhase, context: InvokeOnErrorContext<TEnv>) => void;
24
+ getRequiredRouteMap: () => Record<string, string>;
25
+ createRedirectFlightResponse: (redirectUrl: string, locationState?: Record<string, unknown>, external?: boolean) => Response;
26
+ /**
27
+ * Resolve the SSR stream mode for a given request.
28
+ * Returns "stream" when no resolveStreaming callback is configured.
29
+ */
30
+ resolveStreamMode: (request: Request, env: TEnv, url: URL) => Promise<SSRStreamMode>;
31
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * RSC Request Handler
3
+ *
4
+ * Main request handler for RSC rendering, server actions, loader fetching,
5
+ * and progressive enhancement (no-JS form submissions).
6
+ */
7
+ import type { CreateRSCHandlerOptions } from "./types.js";
8
+ import type { RouterRequestInput } from "../router/router-interfaces.js";
9
+ export declare function createRSCHandler<TEnv = unknown, TRoutes extends Record<string, string> = Record<string, string>>(options: CreateRSCHandlerOptions<TEnv, TRoutes>): (request: Request, input?: RouterRequestInput<TEnv>) => Promise<Response>;
@@ -0,0 +1,213 @@
1
+ /**
2
+ * RSC Handler Helpers
3
+ *
4
+ * Utility functions for RSC request handling.
5
+ */
6
+ import type { RequestContext } from "../server/request-context.js";
7
+ import type { MiddlewareEntry, MiddlewareFn } from "../router/middleware.js";
8
+ import type { RscPayload } from "./types.js";
9
+ import type { HandlerContext } from "./handler-context.js";
10
+ export interface RscRenderStageInput<TEnv> {
11
+ ctx: Pick<HandlerContext<TEnv>, "renderToReadableStream" | "callOnError">;
12
+ request: Request;
13
+ url: URL;
14
+ env: TEnv;
15
+ payload: RscPayload;
16
+ init: ResponseInit;
17
+ temporaryReferences?: unknown;
18
+ recordSerializeMetric?: boolean;
19
+ tracking?: RscRenderStageTracking;
20
+ }
21
+ export type RscRenderMode = "unknown" | "full" | "partial" | "action-revalidation" | "progressive-enhancement" | "progressive-enhancement-error";
22
+ export type RscRenderPhase = "payload" | "flight" | "html" | "response";
23
+ export declare const RSC_RENDER_FLIGHT_RESPONSE_PHASES: readonly RscRenderPhase[];
24
+ export declare const RSC_RENDER_HTML_RESPONSE_PHASES: readonly RscRenderPhase[];
25
+ export declare const RSC_FLIGHT_ONLY_PHASES: readonly RscRenderPhase[];
26
+ export declare const RSC_FLIGHT_HTML_PHASES: readonly RscRenderPhase[];
27
+ export interface RscRenderStageProgress {
28
+ completed: number;
29
+ total: number;
30
+ }
31
+ export interface RscRenderStageContext {
32
+ mode: RscRenderMode;
33
+ phase: RscRenderPhase;
34
+ pathname: string;
35
+ progress: RscRenderStageProgress;
36
+ startedAt: number;
37
+ phaseStartedAt: number;
38
+ routeKey?: string;
39
+ actionId?: string;
40
+ }
41
+ export type RscRenderStageEvent = {
42
+ type: "stage:yield";
43
+ context: RscRenderStageContext;
44
+ } | {
45
+ type: "stage:start";
46
+ context: RscRenderStageContext;
47
+ } | {
48
+ type: "stage:complete";
49
+ context: RscRenderStageContext;
50
+ durationMs: number;
51
+ } | {
52
+ type: "stage:error";
53
+ context: RscRenderStageContext;
54
+ durationMs: number;
55
+ error: unknown;
56
+ };
57
+ export interface RscRenderStageTracking {
58
+ mode?: RscRenderMode;
59
+ routeKey?: string;
60
+ actionId?: string;
61
+ phases?: readonly RscRenderPhase[];
62
+ totalStages?: number;
63
+ onEvent?: (event: RscRenderStageEvent) => void;
64
+ }
65
+ export interface RscFlightStageInput<TEnv> {
66
+ ctx: Pick<HandlerContext<TEnv>, "renderToReadableStream" | "callOnError">;
67
+ request: Request;
68
+ url: URL;
69
+ env: TEnv;
70
+ payload: RscPayload;
71
+ temporaryReferences?: unknown;
72
+ recordSerializeMetric?: boolean;
73
+ tracking?: RscRenderStageTracking;
74
+ }
75
+ export interface RscHtmlStageInput {
76
+ url: URL;
77
+ tracking?: RscRenderStageTracking;
78
+ }
79
+ export type RscRenderStage = {
80
+ type: "payload";
81
+ payload: RscPayload;
82
+ init: ResponseInit;
83
+ context: RscRenderStageContext;
84
+ } | {
85
+ type: "flight";
86
+ payload: RscPayload;
87
+ stream: ReadableStream<Uint8Array>;
88
+ init: ResponseInit;
89
+ durationMs: number;
90
+ context: RscRenderStageContext;
91
+ };
92
+ export type RscFlightStage = Extract<RscRenderStage, {
93
+ type: "flight";
94
+ }>;
95
+ export interface RscRenderStageControl {
96
+ payload?: RscPayload;
97
+ init?: ResponseInit;
98
+ body?: BodyInit | null;
99
+ }
100
+ export declare function renderRscFlightStage<TEnv>(input: RscFlightStageInput<TEnv>, startedAt: number, init?: ResponseInit): RscFlightStage;
101
+ export declare function observeRscHtmlStage<T>(input: RscHtmlStageInput, fn: () => Promise<T>): Promise<T>;
102
+ export declare function createRscStageDebugSink(log?: (message: string, details?: Record<string, unknown>) => void): (event: RscRenderStageEvent) => void;
103
+ /**
104
+ * Stage the common RSC render flow as a resumable async generator:
105
+ * payload inspection/mutation -> Flight stream creation -> response finalization.
106
+ * HTML callers pause at the Flight stage, render SSR from that stream, then
107
+ * resume with the HTML body/init so header merging still happens once.
108
+ */
109
+ export declare function createRscRenderStages<TEnv>(input: RscRenderStageInput<TEnv>): AsyncGenerator<RscRenderStage, Response, RscRenderStageControl | undefined>;
110
+ export declare function runRscRenderStages(stages: AsyncGenerator<RscRenderStage, Response, RscRenderStageControl | undefined>): Promise<Response>;
111
+ export declare function readRscFlightStage(stages: AsyncGenerator<RscRenderStage, Response, RscRenderStageControl | undefined>): Promise<RscFlightStage>;
112
+ export declare function finishRscRenderStages(stages: AsyncGenerator<RscRenderStage, Response, RscRenderStageControl | undefined>, control?: RscRenderStageControl): Promise<Response>;
113
+ /**
114
+ * Drain ctx._onResponseCallbacks onto a response. Swapping the array before
115
+ * iteration prevents re-entrant registrations from double-firing and matches
116
+ * the contract that each callback runs at most once per request.
117
+ *
118
+ * Exported so the testing primitives' buildRunResponse can reuse the exact
119
+ * production drain (swap-before-iterate + external-redirect brand preservation)
120
+ * rather than maintain a hand-synced copy. This module is plugin-rsc-free on its
121
+ * eager graph (dispatch.ts already statically imports from here in the same
122
+ * testing barrel), so importing it adds nothing to the unit runner's graph.
123
+ */
124
+ export declare function drainOnResponseCallbacks(ctx: RequestContext, response: Response): Response;
125
+ /** Apply a saved callback batch while preserving an external-redirect brand. */
126
+ export declare function applyOnResponseCallbacks(callbacks: Array<(response: Response) => Response>, response: Response): Response;
127
+ /**
128
+ * Check if a request body has content to decode
129
+ */
130
+ export declare function hasBodyContent(body: FormData | string): boolean;
131
+ /**
132
+ * Create a Response with headers merged from the request context's stub response.
133
+ * This ensures headers/cookies set during middleware or handler execution are included.
134
+ * Also triggers any registered onResponse callbacks.
135
+ */
136
+ export declare function createResponseWithMergedHeaders(body: BodyInit | null, init: ResponseInit): Response;
137
+ /**
138
+ * Rebuild a Response returned or thrown by a response-route handler so request
139
+ * effects merge consistently in production and the public dispatch primitive.
140
+ */
141
+ export declare function rewrapResponseRouteResponse(result: Response): Response;
142
+ /**
143
+ * Create a 204 response with X-RSC-Redirect header for stateless redirects.
144
+ * Used during partial/action requests where fetch would auto-follow a raw
145
+ * 3xx to a URL that renders full HTML instead of Flight data. The 204 status
146
+ * prevents auto-follow; the client reads the header and re-navigates via
147
+ * the router.
148
+ */
149
+ export declare function createSimpleRedirectResponse(redirectUrl: string): Response;
150
+ /**
151
+ * Carry over headers from a source redirect Response to a wrapper Response.
152
+ * Skips Location and X-RSC-Redirect (intentionally replaced by the wrapper) and
153
+ * appends Set-Cookie to avoid clobbering multiple cookie headers.
154
+ *
155
+ * This is a GENERIC copier used by every redirect-rebuild path (PE
156
+ * extractRedirectResponse, the SPA intercept below, the guard's neutralize
157
+ * rebuild), so it has two redirect-specific jobs:
158
+ *
159
+ * 1. NEVER copy the reserved external-redirect header: it is no longer a trust
160
+ * signal (the opt-in is the out-of-band brand), and a forged value from a
161
+ * proxied upstream must not ride a rebuilt response to the browser.
162
+ * 2. Transfer the out-of-band external brand: a rebuilt document-native redirect
163
+ * has to carry the opt-in to the guard chokepoint, which reads and clears it.
164
+ * Without this transfer, redirect(url, { external: true }) would be silently
165
+ * neutralized on any rebuild path (fail-closed, but a feature regression).
166
+ */
167
+ export declare function carryOverRedirectHeaders(source: Response, target: Response): void;
168
+ /**
169
+ * If a response is a 3xx redirect during a partial (client-side) request,
170
+ * intercept it and return a Flight-compatible redirect instead.
171
+ * fetch() auto-follows 3xx which would hit a URL that renders full HTML
172
+ * the client can't parse. Returns null if the response is not a redirect.
173
+ */
174
+ export declare function interceptRedirectForPartial(response: Response, createRedirectFlightResponse: (redirectUrl: string, locationState?: Record<string, unknown>, external?: boolean) => Response): Response | null;
175
+ /**
176
+ * Attach location state set during a request to a payload's metadata.
177
+ * No-op if no location state was set. Callers must ensure payload.metadata
178
+ * is populated (the non-null assertion holds for the partial/action payloads
179
+ * that reach this helper).
180
+ */
181
+ export declare function attachLocationStateIfPresent(payload: RscPayload): void;
182
+ /**
183
+ * Only cache successful responses. Non-200 statuses (errors, redirects) are
184
+ * not cached -- notFound() produces 500 in response routes, and explicit
185
+ * non-200 Responses are rare enough that caching them would be surprising.
186
+ */
187
+ export declare function isCacheableStatus(status: number): boolean;
188
+ /**
189
+ * Convert route-level middleware entries to the format expected by
190
+ * executeMiddleware. Route middleware from previewMatch carries just
191
+ * { handler, params }; this wraps them in the full MiddlewareEntry shape.
192
+ */
193
+ export declare function buildRouteMiddlewareEntries<TEnv>(routeMiddleware: Array<{
194
+ handler: MiddlewareFn;
195
+ params: Record<string, string>;
196
+ }>): Array<{
197
+ entry: MiddlewareEntry<TEnv>;
198
+ params: Record<string, string>;
199
+ }>;
200
+ /**
201
+ * Merge stub headers from the request context onto an existing Response in
202
+ * place, then drain onResponse callbacks. Used when a Response cannot flow
203
+ * through `new Response()` — status 101 is outside the constructor's
204
+ * 200-599 range, and the Cloudflare-specific `webSocket` property would be
205
+ * lost on reconstruction.
206
+ */
207
+ export declare function mergeStubHeadersAndFinalize(response: Response): Response;
208
+ /**
209
+ * Run onResponse callbacks on an existing Response. Used by code paths that
210
+ * bypass createResponseWithMergedHeaders (e.g. middleware short-circuits)
211
+ * but still need ctx.onResponse() callbacks to fire.
212
+ */
213
+ export declare function finalizeResponse(response: Response): Response;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Rango - RSC Entry Point
3
+ *
4
+ * This module provides RSC utilities for server-side rendering,
5
+ * server actions, loader fetching, and progressive enhancement.
6
+ *
7
+ * @example Basic usage
8
+ * ```tsx
9
+ * import { router } from "./router.js";
10
+ *
11
+ * // Use router.fetch to handle requests
12
+ * export default { fetch: router.fetch };
13
+ * ```
14
+ */
15
+ export { createRSCHandler } from "./handler.js";
16
+ export type { RscPayload, ReactFormState, RSCDependencies, SSRRenderOptions, SSRModule, LoadSSRModule, CreateRSCHandlerOptions, HandlerCacheConfig, NonceProvider, } from "./types.js";
17
+ export { getRequestContext } from "../server/request-context.js";
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Shared serialization for `json()` response-route results.
3
+ *
4
+ * Kept in its own lightweight module (depends only on `errors.js`) so the
5
+ * `dispatch()` testing primitive can import it WITHOUT dragging in
6
+ * `response-route-handler.ts`'s heavy runtime graph, which transitively reaches
7
+ * a Vite virtual module and breaks a plain (non-Vite) vitest import.
8
+ */
9
+ /**
10
+ * Serialize a `json()` response-route result, rejecting a nested unresolved
11
+ * Promise (the forgotten-await footgun: `() => ({ data: fetchSomething() })`).
12
+ * `JSON.stringify` would silently emit `{}` for a Promise, shipping empty data;
13
+ * the RSC pipeline awaits nested promises but this path does not. Throwing
14
+ * `RESPONSE_NOT_SERIALIZABLE` makes the failure loud.
15
+ *
16
+ * Shared by the production response-route handler and the `dispatch()` testing
17
+ * primitive so a `dispatch` json test of a forgotten await fails exactly where
18
+ * production 500s, instead of going green.
19
+ */
20
+ export declare function stringifyJsonRouteResult(result: unknown): string;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Loader Fetch Handler
3
+ *
4
+ * Handles load() requests (GET, POST, PUT, PATCH, DELETE) from the client.
5
+ * All loader data fetching and mutations go through this endpoint.
6
+ *
7
+ * Route params (e.g. slug from /blog/:slug) come from previewMatch() in the
8
+ * outer coreRequestHandler, threaded through coreRequestHandlerInner as
9
+ * routeParams. This is necessary because handleLoaderFetch doesn't do its
10
+ * own route matching -- the URL is the page's pathname, and previewMatch
11
+ * has already extracted params from it.
12
+ */
13
+ import type { HandlerContext } from "./handler-context.js";
14
+ export declare function handleLoaderFetch<TEnv>(ctx: HandlerContext<TEnv>, request: Request, env: TEnv, url: URL, variables: Record<string, any>, routeParams?: Record<string, string>): Promise<Response>;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Router Manifest Initialization
3
+ *
4
+ * Builds a fresh route trie from router.urlpatterns for dev/HMR scenarios
5
+ * where the manifest exists but the trie needs rebuilding.
6
+ */
7
+ /**
8
+ * Build a fresh route trie from router.urlpatterns and store it in the
9
+ * per-router cache. Also sets the per-router manifest and merges into
10
+ * the global manifest for reverse()/href().
11
+ *
12
+ * Called when manifest data may exist but the per-router trie is missing,
13
+ * which happens in dev mode after HMR: the virtual module sets the manifest
14
+ * from fresh gen files but skips the trie (which would be stale from initial
15
+ * discovery). The trie is essential for correct wildcard priority -- without
16
+ * it, the regex fallback matches catch-all patterns before specific routes.
17
+ */
18
+ export declare function buildRouterTrieFromUrlpatterns(router: any): Promise<void>;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Nonce generation for Content Security Policy (CSP)
3
+ */
4
+ import type { ContextVar } from "../context-var.js";
5
+ /**
6
+ * Typed ContextVar token for CSP nonce.
7
+ *
8
+ * Use this to READ the nonce in middleware or handlers:
9
+ * ```ts
10
+ * import { nonce } from "@rangojs/router";
11
+ * const value = ctx.get(nonce); // string | undefined
12
+ * ```
13
+ *
14
+ * Supply the nonce via the `createRouter({ nonce })` provider, not by writing
15
+ * this token yourself. The provider value is threaded into the router's SSR
16
+ * machinery (NonceContext/useNonce, Scripts/MetaTags attributes, the inlined
17
+ * Flight payload scripts) AND sets this token. A direct `ctx.set(nonce, value)`
18
+ * in middleware runs AFTER the SSR nonce is resolved: the value is readable via
19
+ * `ctx.get(nonce)` and gates PPR shell capture (a per-request nonce must never
20
+ * bake into a shared shell), but the router will not apply it to its own
21
+ * scripts — useNonce() stays undefined for that request.
22
+ */
23
+ export declare const nonce: ContextVar<string>;
24
+ /**
25
+ * Generate a cryptographic nonce for CSP.
26
+ * Returns a 16-byte random value encoded as base64.
27
+ */
28
+ export declare function generateNonce(): string;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Origin Guard
3
+ *
4
+ * Cross-origin request protection for server actions, loader fetches, and
5
+ * progressive enhancement form submissions. Validates that the Origin header
6
+ * (or Referer fallback) matches the request Host before executing.
7
+ *
8
+ * Requests without an Origin or Referer header are allowed — same-origin
9
+ * navigations, bookmarks, and non-browser clients don't send Origin.
10
+ */
11
+ import type { RequestPlan } from "../router/request-classification.js";
12
+ /**
13
+ * Request phase that triggered the origin check.
14
+ */
15
+ export type OriginCheckPhase = "action" | "loader" | "pe-form";
16
+ export declare const ORIGIN_CHECK_PHASE_BY_MODE: Record<RequestPlan["mode"], OriginCheckPhase | null>;
17
+ /**
18
+ * Context passed to the originCheck callback.
19
+ */
20
+ export interface OriginCheckContext<TEnv = any> {
21
+ request: Request;
22
+ url: URL;
23
+ env: TEnv;
24
+ routerId: string;
25
+ phase: OriginCheckPhase;
26
+ /** Run the built-in conservative check (Origin/Referer vs Host + url.protocol). */
27
+ defaultCheck: () => boolean;
28
+ }
29
+ /**
30
+ * Configuration for the origin check.
31
+ *
32
+ * - `true` (default) — built-in conservative check
33
+ * - `false` — disabled
34
+ * - function — custom control; return true to allow, false to reject with
35
+ * default 403, or a Response for custom rejection
36
+ */
37
+ export type OriginCheckConfig<TEnv = any> = boolean | ((ctx: OriginCheckContext<TEnv>) => boolean | Response | Promise<boolean | Response>);
38
+ /**
39
+ * Built-in conservative origin check.
40
+ * Compares Origin (or Referer fallback) against Host + url.protocol.
41
+ * Does NOT trust X-Forwarded-Host/Proto headers.
42
+ *
43
+ * Returns true to allow, false to reject.
44
+ */
45
+ export declare function defaultOriginCheck(request: Request, url: URL): boolean;
46
+ /**
47
+ * Configuration-aware origin check dispatcher.
48
+ * Builds the OriginCheckContext and delegates to the configured check.
49
+ */
50
+ export declare function checkRequestOrigin<TEnv = any>(request: Request, url: URL, config: OriginCheckConfig<TEnv> | undefined, env: TEnv, routerId: string, phase: OriginCheckPhase): Promise<Response | null>;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Progressive Enhancement Handler
3
+ *
4
+ * Handles no-JS form submissions. When JavaScript is disabled, React renders
5
+ * forms with hidden fields ($ACTION_REF_*, $ACTION_KEY) containing the action
6
+ * reference. We detect these and return HTML instead of RSC stream.
7
+ */
8
+ import { getRequestContext } from "../server/request-context.js";
9
+ import type { MiddlewareFn } from "../router/middleware.js";
10
+ import type { HandlerContext } from "./handler-context.js";
11
+ export interface PeRouteMiddlewareInfo {
12
+ routeMiddleware?: Array<{
13
+ handler: MiddlewareFn;
14
+ params: Record<string, string>;
15
+ }>;
16
+ variables: Record<string, any>;
17
+ routeReverse?: (name: string, params?: Record<string, string>, search?: Record<string, unknown>) => string;
18
+ }
19
+ export declare function handleProgressiveEnhancement<TEnv>(ctx: HandlerContext<TEnv>, request: Request, env: TEnv, url: URL, isAction: boolean, handleStore: ReturnType<typeof getRequestContext>["_handleStore"], nonce: string | undefined, routeMwInfo?: PeRouteMiddlewareInfo): Promise<Response | null>;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Server-side open-redirect guard.
3
+ *
4
+ * Applied to the FINAL handler response (the single top-level return in
5
+ * `handler.ts`) so every browser-followed redirect honors the same same-origin
6
+ * rule the client enforces (`browser/validate-redirect-origin.ts`), via the one
7
+ * shared resolver in `redirect-origin.ts`. This is the server half of the
8
+ * client's existing guard: the client can only validate redirects its own JS
9
+ * navigates to (the SPA/fetch channel), so document-native redirects -- a no-JS
10
+ * PE form POST, a full-page GET `match.redirect`, a middleware `redirect()`
11
+ * short-circuit, a response-route 3xx -- reach the browser with no client in the
12
+ * loop. They all funnel through one handler return, so guarding there covers
13
+ * every one and any future redirect exit.
14
+ *
15
+ * Soft (SPA/Flight) redirects are 200/204 responses (`X-RSC-Redirect` header or
16
+ * `metadata.redirect` payload) and are NOT redirect Responses, so they never
17
+ * reach this guard -- they stay validated client-side.
18
+ *
19
+ * Behavior on a `Location` header:
20
+ * - same-origin / relative -> passes through unchanged
21
+ * - `redirect(url, { external: true })` (out-of-band brand present) and an
22
+ * http(s) target -> allowed (explicit, auditable, unforgeable opt-in)
23
+ * - branded but a non-http(s) target (e.g. `javascript:`) -> neutralized: the
24
+ * opt-in waives the same-origin rule, NOT scheme safety
25
+ * - cross-origin without the brand -> Location rewritten to the basename root
26
+ * (a safe same-origin landing, the document analog of the client's "stay put");
27
+ * dev logs the blocked target and points to `{ external: true }`.
28
+ *
29
+ * The opt-in is an out-of-band brand on the Response object (isExternalRedirect),
30
+ * never a wire header: a header is forgeable by an attacker-controlled upstream
31
+ * response a proxy-style response route copies through, which would defeat the
32
+ * guard without app code ever opting in. The reserved header name is stripped
33
+ * defensively so a forged value can never reach the browser.
34
+ */
35
+ export declare function guardOutgoingRedirect(response: Response, requestOrigin: string, basename: string | undefined): Response;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Shared response-route cache serve.
3
+ *
4
+ * Owns the single response-cache contract — cache-scope resolution from the
5
+ * matched entry tree, condition eval, key resolution (route key() > store
6
+ * keyGenerator > default), tag resolution, pre-handler-callback timing, and the
7
+ * fresh-hit / SWR-revalidate / miss-write branches — for BOTH the production
8
+ * response-route handler (rsc/response-route-handler.ts) and the dispatch testing
9
+ * primitive (testing/dispatch.ts), so the two can never drift.
10
+ *
11
+ * Plugin-rsc hazard: cache-scope.ts pulls @vitejs/plugin-rsc (via segment-codec),
12
+ * which the non-Vite unit-test runner cannot resolve, and this module is on the
13
+ * testing barrel's EAGER graph (dispatch imports it). So `createCacheScope` and
14
+ * `resolveCacheTags` are NOT imported here at runtime — they are INJECTED by the
15
+ * caller (production imports them statically; dispatch lazy-imports them only once
16
+ * a response route matches). The only runtime imports here are plugin-rsc-free
17
+ * (helpers' isCacheableStatus/finalizeResponse, traverseBack); cache-scope is a
18
+ * type-only import (erased at build).
19
+ */
20
+ import type { CacheScope } from "../cache/cache-scope.js";
21
+ import type { PartialCacheOptions } from "../types.js";
22
+ import type { RequestContext } from "../server/request-context.js";
23
+ import type { EntryCacheConfig, EntryData } from "../server/context.js";
24
+ /** Injected cache-scope builders (kept off this module's runtime import graph). */
25
+ export interface CacheScopeDeps {
26
+ createCacheScope: (config: EntryCacheConfig | undefined, parent?: CacheScope | null) => CacheScope | null;
27
+ resolveCacheTags: (config: PartialCacheOptions | false, ctx: RequestContext | undefined) => string[] | undefined;
28
+ }
29
+ export interface ServeResponseRouteWithCacheArgs {
30
+ reqCtx: RequestContext;
31
+ manifestEntry: EntryData;
32
+ responseType: string;
33
+ url: URL;
34
+ /** callHandler wrapped by route-level middleware — the unit the cache wraps. */
35
+ executeHandler: () => Promise<Response>;
36
+ deps: CacheScopeDeps;
37
+ }
38
+ /**
39
+ * Serve a response route through its cache, or return `undefined` when no cache
40
+ * applies (no scope, disabled, condition false, or store lacks get/putResponse)
41
+ * so the caller falls through to a plain `executeHandler()` run.
42
+ *
43
+ * Must run inside runWithRequestContext (reads the ambient request context via
44
+ * the helpers and reqCtx.waitUntil for background writes).
45
+ */
46
+ export declare function serveResponseRouteWithCache(args: ServeResponseRouteWithCacheArgs): Promise<Response | undefined>;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Problem Details (RFC 9457) Builder
3
+ *
4
+ * Builds a problem+json error body from a caught error, controlling what
5
+ * information is exposed based on error type and environment.
6
+ */
7
+ import type { ProblemDetails } from "../urls.js";
8
+ /**
9
+ * Build an RFC 9457 problem+json body from a caught error.
10
+ * RouterError messages/codes are always exposed (developer-crafted).
11
+ * Standard Error messages are hidden in production.
12
+ *
13
+ * The `type` member is omitted in this phase: per RFC 9457 an absent `type` is
14
+ * treated as `"about:blank"` (no semantics beyond the HTTP status), so emitting
15
+ * it adds nothing. Per-route problem-type URIs arrive with the declared-errors
16
+ * map later. `code` is always present so consumers can branch on it
17
+ * (`"INTERNAL"` for non-RouterError failures).
18
+ */
19
+ export declare function createProblemDetails(error: unknown, status: number, isDev: boolean): ProblemDetails;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Response Route Handler
3
+ *
4
+ * Handles response routes (JSON, text, HTML, XML, markdown, image, stream)
5
+ * that bypass the RSC rendering pipeline entirely. Includes content-type
6
+ * dispatch, route middleware execution, and response caching with SWR.
7
+ */
8
+ import type { MiddlewareFn } from "../router/middleware.js";
9
+ import type { EntryData } from "../server/context.js";
10
+ import type { HandlerContext } from "./handler-context.js";
11
+ export interface ResponseRouteMatch {
12
+ responseType: string;
13
+ handler: Function;
14
+ params?: Record<string, string>;
15
+ negotiated?: boolean;
16
+ manifestEntry?: EntryData;
17
+ routeMiddleware?: Array<{
18
+ handler: MiddlewareFn;
19
+ params: Record<string, string>;
20
+ }>;
21
+ }
22
+ /**
23
+ * Handle a response route (non-RSC). Dispatches by content type, wraps
24
+ * with route middleware and response caching when configured.
25
+ *
26
+ * For partial (client-side navigation) requests, returns X-RSC-Reload
27
+ * so the browser triggers a hard navigation to the response route URL.
28
+ */
29
+ export declare function handleResponseRoute<TEnv>(handlerCtx: HandlerContext<TEnv>, preview: ResponseRouteMatch, request: Request, env: TEnv, url: URL, variables: Record<string, any>): Promise<Response>;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * RSC Rendering Handler (Navigation)
3
+ *
4
+ * Handles RSC rendering for both partial (client-side navigation) and full
5
+ * (initial page load) requests. Includes prerender collection for build-time
6
+ * static generation.
7
+ */
8
+ import { getRequestContext } from "../server/request-context.js";
9
+ import type { HandlerContext } from "./handler-context.js";
10
+ export declare function handleRscRendering<TEnv>(ctx: HandlerContext<TEnv>, request: Request, env: TEnv, url: URL, isPartial: boolean, handleStore: ReturnType<typeof getRequestContext>["_handleStore"], nonce: string | undefined): Promise<Response>;
11
+ /**
12
+ * Neutralize the shell-HIT degradation redirect target.
13
+ *
14
+ * The inline `location.replace` emitted by serveShellHit when a shell HIT lands
15
+ * on a URL whose route became redirecting mid-TTL is a document-native redirect
16
+ * exit that BYPASSES the 3xx chokepoint (guardOutgoingRedirect acts only on 3xx
17
+ * + Location responses, never a committed 200 body). So it reuses the ONE
18
+ * same-origin resolver directly: a cross-origin/unparseable/unsafe target
19
+ * neutralizes to the same safe same-origin landing as redirect-guard.ts
20
+ * (basename root, or "/" when unset) rather than navigating the user off-host.
21
+ * A safe same-origin/relative target passes through as its normalized href.
22
+ */
23
+ export declare function resolveShellHitRedirectTarget(rawTarget: string, requestOrigin: string, basename: string | undefined): string;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Runtime guardrail warnings (dev-only).
3
+ *
4
+ * W3: PE action redirect / Response handling.
5
+ */
6
+ /**
7
+ * Extract a redirect Response from a thrown or returned value.
8
+ * Returns a redirect Response to send to the client, or null if the value
9
+ * is not a redirect Response.
10
+ */
11
+ export declare function extractRedirectResponse(value: unknown): Response | null;
12
+ /**
13
+ * Warn when a non-redirect Response is returned from an action during PE.
14
+ */
15
+ export declare function warnNonRedirectPeResponse(): void;
16
+ /**
17
+ * Warn when a non-redirect Response is returned (not thrown) from an action
18
+ * on the JS (fetch) path. A raw Response cannot be serialized into Flight, so
19
+ * it is discarded — mirroring the PE path. Use `throw redirect('/path')` for
20
+ * redirects.
21
+ */
22
+ export declare function warnNonRedirectActionResponse(actionId: string): void;