@rangojs/router 0.2.0 → 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 (435) hide show
  1. package/dist/types/browser/prefetch/default-strategy.d.ts +22 -0
  2. package/dist/types/browser/prefetch/runtime.d.ts +0 -1
  3. package/dist/types/browser/react/Link.d.ts +8 -11
  4. package/dist/types/browser/types.d.ts +5 -0
  5. package/dist/types/cache/types.d.ts +6 -0
  6. package/dist/types/router/prefetch-default.d.ts +28 -0
  7. package/dist/types/router/router-interfaces.d.ts +7 -0
  8. package/dist/types/router/router-options.d.ts +30 -0
  9. package/dist/types/rsc/capture-queue.d.ts +6 -0
  10. package/dist/types/rsc/shell-capture.d.ts +15 -7
  11. package/dist/types/rsc/shell-serve.d.ts +4 -3
  12. package/dist/types/rsc/types.d.ts +2 -0
  13. package/dist/types/testing/e2e/index.d.ts +2 -2
  14. package/dist/types/testing/e2e/page-helpers.d.ts +24 -0
  15. package/dist/types.backup/__internal.d.ts +127 -0
  16. package/dist/types.backup/bin/rango.d.ts +1 -0
  17. package/dist/types.backup/browser/action-coordinator.d.ts +57 -0
  18. package/dist/types.backup/browser/action-fence.d.ts +33 -0
  19. package/dist/types.backup/browser/app-shell.d.ts +34 -0
  20. package/dist/types.backup/browser/app-version.d.ts +6 -0
  21. package/dist/types.backup/browser/connection-warmup.d.ts +31 -0
  22. package/dist/types.backup/browser/cookie-name.d.ts +66 -0
  23. package/dist/types.backup/browser/event-controller.d.ts +221 -0
  24. package/dist/types.backup/browser/history-state.d.ts +26 -0
  25. package/dist/types.backup/browser/index.d.ts +1 -0
  26. package/dist/types.backup/browser/intercept-utils.d.ts +30 -0
  27. package/dist/types.backup/browser/invalidate-client-cache.d.ts +17 -0
  28. package/dist/types.backup/browser/link-interceptor.d.ts +43 -0
  29. package/dist/types.backup/browser/logging.d.ts +33 -0
  30. package/dist/types.backup/browser/merge-segment-loaders.d.ts +38 -0
  31. package/dist/types.backup/browser/navigation-bridge.d.ts +27 -0
  32. package/dist/types.backup/browser/navigation-client.d.ts +17 -0
  33. package/dist/types.backup/browser/navigation-store-handle.d.ts +25 -0
  34. package/dist/types.backup/browser/navigation-store.d.ts +95 -0
  35. package/dist/types.backup/browser/navigation-transaction.d.ts +75 -0
  36. package/dist/types.backup/browser/network-error-handler.d.ts +35 -0
  37. package/dist/types.backup/browser/partial-update.d.ts +61 -0
  38. package/dist/types.backup/browser/prefetch/cache.d.ts +183 -0
  39. package/dist/types.backup/browser/prefetch/fetch.d.ts +52 -0
  40. package/dist/types.backup/browser/prefetch/observer.d.ts +27 -0
  41. package/dist/types.backup/browser/prefetch/policy.d.ts +13 -0
  42. package/dist/types.backup/browser/prefetch/queue.d.ts +48 -0
  43. package/dist/types.backup/browser/prefetch/resource-ready.d.ts +28 -0
  44. package/dist/types.backup/browser/rango-state.d.ts +52 -0
  45. package/dist/types.backup/browser/react/Link.d.ts +140 -0
  46. package/dist/types.backup/browser/react/NavigationProvider.d.ts +88 -0
  47. package/dist/types.backup/browser/react/ScrollRestoration.d.ts +78 -0
  48. package/dist/types.backup/browser/react/context.d.ts +54 -0
  49. package/dist/types.backup/browser/react/filter-segment-order.d.ts +35 -0
  50. package/dist/types.backup/browser/react/index.d.ts +1 -0
  51. package/dist/types.backup/browser/react/location-state-shared.d.ts +162 -0
  52. package/dist/types.backup/browser/react/location-state.d.ts +29 -0
  53. package/dist/types.backup/browser/react/mount-context.d.ts +23 -0
  54. package/dist/types.backup/browser/react/nonce-context.d.ts +14 -0
  55. package/dist/types.backup/browser/react/shallow-equal.d.ts +5 -0
  56. package/dist/types.backup/browser/react/use-action.d.ts +61 -0
  57. package/dist/types.backup/browser/react/use-handle.d.ts +21 -0
  58. package/dist/types.backup/browser/react/use-href.d.ts +32 -0
  59. package/dist/types.backup/browser/react/use-link-status.d.ts +36 -0
  60. package/dist/types.backup/browser/react/use-mount.d.ts +24 -0
  61. package/dist/types.backup/browser/react/use-navigation.d.ts +15 -0
  62. package/dist/types.backup/browser/react/use-params.d.ts +21 -0
  63. package/dist/types.backup/browser/react/use-pathname.d.ts +13 -0
  64. package/dist/types.backup/browser/react/use-reverse.d.ts +40 -0
  65. package/dist/types.backup/browser/react/use-router.d.ts +23 -0
  66. package/dist/types.backup/browser/react/use-search-params.d.ts +19 -0
  67. package/dist/types.backup/browser/react/use-segments.d.ts +29 -0
  68. package/dist/types.backup/browser/response-adapter.d.ts +58 -0
  69. package/dist/types.backup/browser/rsc-router.d.ts +141 -0
  70. package/dist/types.backup/browser/scroll-restoration.d.ts +103 -0
  71. package/dist/types.backup/browser/segment-reconciler.d.ts +74 -0
  72. package/dist/types.backup/browser/segment-structure-assert.d.ts +16 -0
  73. package/dist/types.backup/browser/server-action-bridge.d.ts +29 -0
  74. package/dist/types.backup/browser/types.d.ts +530 -0
  75. package/dist/types.backup/browser/validate-redirect-origin.d.ts +28 -0
  76. package/dist/types.backup/build/collect-fallback-refs.d.ts +5 -0
  77. package/dist/types.backup/build/generate-manifest.d.ts +100 -0
  78. package/dist/types.backup/build/generate-route-types.d.ts +8 -0
  79. package/dist/types.backup/build/index.d.ts +21 -0
  80. package/dist/types.backup/build/prefix-tree-utils.d.ts +56 -0
  81. package/dist/types.backup/build/route-trie.d.ts +89 -0
  82. package/dist/types.backup/build/route-types/ast-helpers.d.ts +3 -0
  83. package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +13 -0
  84. package/dist/types.backup/build/route-types/codegen.d.ts +16 -0
  85. package/dist/types.backup/build/route-types/include-resolution.d.ts +74 -0
  86. package/dist/types.backup/build/route-types/param-extraction.d.ts +13 -0
  87. package/dist/types.backup/build/route-types/per-module-writer.d.ts +18 -0
  88. package/dist/types.backup/build/route-types/router-processing.d.ts +82 -0
  89. package/dist/types.backup/build/route-types/scan-filter.d.ts +17 -0
  90. package/dist/types.backup/build/route-types/source-scan.d.ts +13 -0
  91. package/dist/types.backup/build/runtime-discovery.d.ts +24 -0
  92. package/dist/types.backup/cache/background-task.d.ts +21 -0
  93. package/dist/types.backup/cache/cache-error.d.ts +71 -0
  94. package/dist/types.backup/cache/cache-key-utils.d.ts +35 -0
  95. package/dist/types.backup/cache/cache-policy.d.ts +59 -0
  96. package/dist/types.backup/cache/cache-runtime.d.ts +51 -0
  97. package/dist/types.backup/cache/cache-scope.d.ts +134 -0
  98. package/dist/types.backup/cache/cache-tag.d.ts +79 -0
  99. package/dist/types.backup/cache/cf/cf-base64.d.ts +4 -0
  100. package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +105 -0
  101. package/dist/types.backup/cache/cf/cf-cache-store.d.ts +481 -0
  102. package/dist/types.backup/cache/cf/cf-cache-types.d.ts +300 -0
  103. package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +22 -0
  104. package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +15 -0
  105. package/dist/types.backup/cache/cf/index.d.ts +3 -0
  106. package/dist/types.backup/cache/document-cache.d.ts +69 -0
  107. package/dist/types.backup/cache/handle-capture.d.ts +23 -0
  108. package/dist/types.backup/cache/handle-snapshot.d.ts +39 -0
  109. package/dist/types.backup/cache/index.d.ts +7 -0
  110. package/dist/types.backup/cache/memory-segment-store.d.ts +163 -0
  111. package/dist/types.backup/cache/profile-registry.d.ts +40 -0
  112. package/dist/types.backup/cache/read-through-swr.d.ts +60 -0
  113. package/dist/types.backup/cache/segment-codec.d.ts +78 -0
  114. package/dist/types.backup/cache/shell-snapshot.d.ts +162 -0
  115. package/dist/types.backup/cache/tag-invalidation.d.ts +74 -0
  116. package/dist/types.backup/cache/taint.d.ts +71 -0
  117. package/dist/types.backup/cache/types.d.ts +407 -0
  118. package/dist/types.backup/cache/vercel/index.d.ts +1 -0
  119. package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +267 -0
  120. package/dist/types.backup/client.d.ts +184 -0
  121. package/dist/types.backup/client.rsc.d.ts +39 -0
  122. package/dist/types.backup/cloudflare/index.d.ts +7 -0
  123. package/dist/types.backup/cloudflare/tracing.d.ts +53 -0
  124. package/dist/types.backup/component-utils.d.ts +46 -0
  125. package/dist/types.backup/components/DefaultDocument.d.ts +13 -0
  126. package/dist/types.backup/context-var.d.ts +84 -0
  127. package/dist/types.backup/debug.d.ts +57 -0
  128. package/dist/types.backup/decode-loader-results.d.ts +5 -0
  129. package/dist/types.backup/default-error-boundary.d.ts +10 -0
  130. package/dist/types.backup/defer.d.ts +89 -0
  131. package/dist/types.backup/deps/browser.d.ts +1 -0
  132. package/dist/types.backup/deps/html-stream-client.d.ts +1 -0
  133. package/dist/types.backup/deps/html-stream-server.d.ts +1 -0
  134. package/dist/types.backup/deps/rsc.d.ts +1 -0
  135. package/dist/types.backup/deps/ssr.d.ts +1 -0
  136. package/dist/types.backup/encode-kv.d.ts +35 -0
  137. package/dist/types.backup/errors.d.ts +226 -0
  138. package/dist/types.backup/escape-script.d.ts +44 -0
  139. package/dist/types.backup/handle.d.ts +93 -0
  140. package/dist/types.backup/handles/MetaTags.d.ts +17 -0
  141. package/dist/types.backup/handles/Scripts.d.ts +38 -0
  142. package/dist/types.backup/handles/breadcrumbs.d.ts +43 -0
  143. package/dist/types.backup/handles/deferred-resolution.d.ts +53 -0
  144. package/dist/types.backup/handles/is-thenable.d.ts +12 -0
  145. package/dist/types.backup/handles/meta.d.ts +43 -0
  146. package/dist/types.backup/handles/script.d.ts +139 -0
  147. package/dist/types.backup/host/cookie-handler.d.ts +8 -0
  148. package/dist/types.backup/host/errors.d.ts +40 -0
  149. package/dist/types.backup/host/index.d.ts +33 -0
  150. package/dist/types.backup/host/pattern-matcher.d.ts +30 -0
  151. package/dist/types.backup/host/router.d.ts +12 -0
  152. package/dist/types.backup/host/testing.d.ts +41 -0
  153. package/dist/types.backup/host/types.d.ts +148 -0
  154. package/dist/types.backup/host/utils.d.ts +20 -0
  155. package/dist/types.backup/href-client.d.ts +214 -0
  156. package/dist/types.backup/index.d.ts +112 -0
  157. package/dist/types.backup/index.rsc.d.ts +51 -0
  158. package/dist/types.backup/internal-debug.d.ts +1 -0
  159. package/dist/types.backup/loader-store.d.ts +193 -0
  160. package/dist/types.backup/loader.d.ts +18 -0
  161. package/dist/types.backup/loader.rsc.d.ts +18 -0
  162. package/dist/types.backup/missing-id-error.d.ts +1 -0
  163. package/dist/types.backup/outlet-context.d.ts +12 -0
  164. package/dist/types.backup/outlet-provider.d.ts +12 -0
  165. package/dist/types.backup/prerender/build-shell-capture.d.ts +104 -0
  166. package/dist/types.backup/prerender/param-hash.d.ts +6 -0
  167. package/dist/types.backup/prerender/shell-manifest-key.d.ts +18 -0
  168. package/dist/types.backup/prerender/store.d.ts +62 -0
  169. package/dist/types.backup/prerender.d.ts +292 -0
  170. package/dist/types.backup/redirect-origin.d.ts +55 -0
  171. package/dist/types.backup/regex-escape.d.ts +6 -0
  172. package/dist/types.backup/render-error-thrower.d.ts +13 -0
  173. package/dist/types.backup/response-utils.d.ts +35 -0
  174. package/dist/types.backup/reverse.d.ts +206 -0
  175. package/dist/types.backup/root-error-boundary.d.ts +32 -0
  176. package/dist/types.backup/route-content-wrapper.d.ts +40 -0
  177. package/dist/types.backup/route-definition/dsl-helpers.d.ts +130 -0
  178. package/dist/types.backup/route-definition/helper-factories.d.ts +22 -0
  179. package/dist/types.backup/route-definition/helpers-types.d.ts +392 -0
  180. package/dist/types.backup/route-definition/index.d.ts +7 -0
  181. package/dist/types.backup/route-definition/redirect.d.ts +48 -0
  182. package/dist/types.backup/route-definition/resolve-handler-use.d.ts +19 -0
  183. package/dist/types.backup/route-definition/use-item-types.d.ts +1 -0
  184. package/dist/types.backup/route-definition.d.ts +1 -0
  185. package/dist/types.backup/route-map-builder.d.ts +127 -0
  186. package/dist/types.backup/route-name.d.ts +27 -0
  187. package/dist/types.backup/route-types.d.ts +172 -0
  188. package/dist/types.backup/router/basename.d.ts +10 -0
  189. package/dist/types.backup/router/content-negotiation.d.ts +91 -0
  190. package/dist/types.backup/router/debug-manifest.d.ts +7 -0
  191. package/dist/types.backup/router/error-handling.d.ts +76 -0
  192. package/dist/types.backup/router/find-match.d.ts +19 -0
  193. package/dist/types.backup/router/handler-context.d.ts +41 -0
  194. package/dist/types.backup/router/instrument.d.ts +161 -0
  195. package/dist/types.backup/router/intercept-resolution.d.ts +79 -0
  196. package/dist/types.backup/router/lazy-includes.d.ts +26 -0
  197. package/dist/types.backup/router/loader-resolution.d.ts +63 -0
  198. package/dist/types.backup/router/logging.d.ts +41 -0
  199. package/dist/types.backup/router/manifest.d.ts +8 -0
  200. package/dist/types.backup/router/match-api.d.ts +19 -0
  201. package/dist/types.backup/router/match-context.d.ts +184 -0
  202. package/dist/types.backup/router/match-handlers.d.ts +49 -0
  203. package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +113 -0
  204. package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +113 -0
  205. package/dist/types.backup/router/match-middleware/cache-store.d.ts +112 -0
  206. package/dist/types.backup/router/match-middleware/index.d.ts +80 -0
  207. package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +116 -0
  208. package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +94 -0
  209. package/dist/types.backup/router/match-pipelines.d.ts +103 -0
  210. package/dist/types.backup/router/match-result.d.ts +114 -0
  211. package/dist/types.backup/router/metrics.d.ts +6 -0
  212. package/dist/types.backup/router/middleware-types.d.ts +74 -0
  213. package/dist/types.backup/router/middleware.d.ts +116 -0
  214. package/dist/types.backup/router/navigation-snapshot.d.ts +22 -0
  215. package/dist/types.backup/router/params-util.d.ts +8 -0
  216. package/dist/types.backup/router/parse-pattern.d.ts +38 -0
  217. package/dist/types.backup/router/pattern-matching.d.ts +169 -0
  218. package/dist/types.backup/router/prefetch-cache-ttl.d.ts +27 -0
  219. package/dist/types.backup/router/prefetch-limits.d.ts +20 -0
  220. package/dist/types.backup/router/prerender-match.d.ts +50 -0
  221. package/dist/types.backup/router/preview-match.d.ts +22 -0
  222. package/dist/types.backup/router/request-classification.d.ts +104 -0
  223. package/dist/types.backup/router/revalidation.d.ts +57 -0
  224. package/dist/types.backup/router/route-snapshot.d.ts +112 -0
  225. package/dist/types.backup/router/router-context.d.ts +137 -0
  226. package/dist/types.backup/router/router-interfaces.d.ts +432 -0
  227. package/dist/types.backup/router/router-options.d.ts +738 -0
  228. package/dist/types.backup/router/router-registry.d.ts +15 -0
  229. package/dist/types.backup/router/segment-resolution/fresh.d.ts +55 -0
  230. package/dist/types.backup/router/segment-resolution/helpers.d.ts +93 -0
  231. package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +33 -0
  232. package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +44 -0
  233. package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +90 -0
  234. package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +53 -0
  235. package/dist/types.backup/router/segment-resolution/revalidation.d.ts +85 -0
  236. package/dist/types.backup/router/segment-resolution/static-store.d.ts +17 -0
  237. package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
  238. package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +28 -0
  239. package/dist/types.backup/router/segment-resolution.d.ts +3 -0
  240. package/dist/types.backup/router/segment-wrappers.d.ts +53 -0
  241. package/dist/types.backup/router/state-cookie-name.d.ts +1 -0
  242. package/dist/types.backup/router/substitute-pattern-params.d.ts +23 -0
  243. package/dist/types.backup/router/telemetry-otel.d.ts +113 -0
  244. package/dist/types.backup/router/telemetry.d.ts +215 -0
  245. package/dist/types.backup/router/timeout.d.ts +68 -0
  246. package/dist/types.backup/router/tracing.d.ts +125 -0
  247. package/dist/types.backup/router/trie-matching.d.ts +32 -0
  248. package/dist/types.backup/router/types.d.ts +98 -0
  249. package/dist/types.backup/router/url-params.d.ts +26 -0
  250. package/dist/types.backup/router.d.ts +7 -0
  251. package/dist/types.backup/rsc/capture-queue.d.ts +6 -0
  252. package/dist/types.backup/rsc/full-payload.d.ts +22 -0
  253. package/dist/types.backup/rsc/handler-context.d.ts +31 -0
  254. package/dist/types.backup/rsc/handler.d.ts +9 -0
  255. package/dist/types.backup/rsc/helpers.d.ts +213 -0
  256. package/dist/types.backup/rsc/index.d.ts +17 -0
  257. package/dist/types.backup/rsc/json-route-result.d.ts +20 -0
  258. package/dist/types.backup/rsc/loader-fetch.d.ts +14 -0
  259. package/dist/types.backup/rsc/manifest-init.d.ts +18 -0
  260. package/dist/types.backup/rsc/nonce.d.ts +28 -0
  261. package/dist/types.backup/rsc/origin-guard.d.ts +50 -0
  262. package/dist/types.backup/rsc/progressive-enhancement.d.ts +19 -0
  263. package/dist/types.backup/rsc/redirect-guard.d.ts +35 -0
  264. package/dist/types.backup/rsc/response-cache-serve.d.ts +46 -0
  265. package/dist/types.backup/rsc/response-error.d.ts +19 -0
  266. package/dist/types.backup/rsc/response-route-handler.d.ts +29 -0
  267. package/dist/types.backup/rsc/rsc-rendering.d.ts +23 -0
  268. package/dist/types.backup/rsc/runtime-warnings.d.ts +22 -0
  269. package/dist/types.backup/rsc/server-action.d.ts +68 -0
  270. package/dist/types.backup/rsc/shell-build-manifest.d.ts +84 -0
  271. package/dist/types.backup/rsc/shell-capture-constants.d.ts +27 -0
  272. package/dist/types.backup/rsc/shell-capture.d.ts +374 -0
  273. package/dist/types.backup/rsc/shell-serve.d.ts +136 -0
  274. package/dist/types.backup/rsc/ssr-setup.d.ts +48 -0
  275. package/dist/types.backup/rsc/transition-gate.d.ts +27 -0
  276. package/dist/types.backup/rsc/types.d.ts +290 -0
  277. package/dist/types.backup/runtime-env.d.ts +1 -0
  278. package/dist/types.backup/search-params.d.ts +125 -0
  279. package/dist/types.backup/segment-content-promise.d.ts +13 -0
  280. package/dist/types.backup/segment-fragments.d.ts +56 -0
  281. package/dist/types.backup/segment-loader-promise.d.ts +22 -0
  282. package/dist/types.backup/segment-system.d.ts +84 -0
  283. package/dist/types.backup/serialize.d.ts +164 -0
  284. package/dist/types.backup/server/context.d.ts +494 -0
  285. package/dist/types.backup/server/cookie-parse.d.ts +10 -0
  286. package/dist/types.backup/server/cookie-store.d.ts +107 -0
  287. package/dist/types.backup/server/fetchable-loader-store.d.ts +20 -0
  288. package/dist/types.backup/server/handle-store.d.ts +100 -0
  289. package/dist/types.backup/server/loader-registry.d.ts +32 -0
  290. package/dist/types.backup/server/request-context.d.ts +596 -0
  291. package/dist/types.backup/server/root-layout.d.ts +3 -0
  292. package/dist/types.backup/server.d.ts +15 -0
  293. package/dist/types.backup/ssr/index.d.ts +233 -0
  294. package/dist/types.backup/ssr/inject-rsc-eager.d.ts +3 -0
  295. package/dist/types.backup/ssr/preinit-client-references.d.ts +71 -0
  296. package/dist/types.backup/ssr/ssr-root.d.ts +69 -0
  297. package/dist/types.backup/static-handler.d.ts +57 -0
  298. package/dist/types.backup/testing/cache-status.d.ts +63 -0
  299. package/dist/types.backup/testing/collect-handle.d.ts +20 -0
  300. package/dist/types.backup/testing/dispatch.d.ts +123 -0
  301. package/dist/types.backup/testing/dom.entry.d.ts +15 -0
  302. package/dist/types.backup/testing/e2e/fixture.d.ts +37 -0
  303. package/dist/types.backup/testing/e2e/index.d.ts +30 -0
  304. package/dist/types.backup/testing/e2e/matchers.d.ts +17 -0
  305. package/dist/types.backup/testing/e2e/page-helpers.d.ts +62 -0
  306. package/dist/types.backup/testing/e2e/parity.d.ts +111 -0
  307. package/dist/types.backup/testing/e2e/server.d.ts +35 -0
  308. package/dist/types.backup/testing/flight-matchers.d.ts +55 -0
  309. package/dist/types.backup/testing/flight-normalize.d.ts +1 -0
  310. package/dist/types.backup/testing/flight-tree.d.ts +192 -0
  311. package/dist/types.backup/testing/flight.d.ts +115 -0
  312. package/dist/types.backup/testing/flight.entry.d.ts +27 -0
  313. package/dist/types.backup/testing/generated-routes.d.ts +66 -0
  314. package/dist/types.backup/testing/index.d.ts +52 -0
  315. package/dist/types.backup/testing/internal/context.d.ts +225 -0
  316. package/dist/types.backup/testing/internal/flight-client-globals.d.ts +1 -0
  317. package/dist/types.backup/testing/internal/seed-vars.d.ts +30 -0
  318. package/dist/types.backup/testing/render-handler.d.ts +160 -0
  319. package/dist/types.backup/testing/render-route.d.ts +246 -0
  320. package/dist/types.backup/testing/run-loader.d.ts +186 -0
  321. package/dist/types.backup/testing/run-middleware.d.ts +132 -0
  322. package/dist/types.backup/testing/run-transition-when.d.ts +77 -0
  323. package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
  324. package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
  325. package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
  326. package/dist/types.backup/testing/vitest-stubs/version.d.ts +1 -0
  327. package/dist/types.backup/testing/vitest.d.ts +205 -0
  328. package/dist/types.backup/theme/ThemeProvider.d.ts +13 -0
  329. package/dist/types.backup/theme/ThemeScript.d.ts +45 -0
  330. package/dist/types.backup/theme/constants.d.ts +39 -0
  331. package/dist/types.backup/theme/index.d.ts +29 -0
  332. package/dist/types.backup/theme/theme-context.d.ts +21 -0
  333. package/dist/types.backup/theme/theme-script.d.ts +26 -0
  334. package/dist/types.backup/theme/types.d.ts +162 -0
  335. package/dist/types.backup/theme/use-theme.d.ts +8 -0
  336. package/dist/types.backup/types/boundaries.d.ts +93 -0
  337. package/dist/types.backup/types/cache-types.d.ts +191 -0
  338. package/dist/types.backup/types/error-types.d.ts +114 -0
  339. package/dist/types.backup/types/global-namespace.d.ts +90 -0
  340. package/dist/types.backup/types/handler-context.d.ts +658 -0
  341. package/dist/types.backup/types/index.d.ts +11 -0
  342. package/dist/types.backup/types/loader-types.d.ts +182 -0
  343. package/dist/types.backup/types/request-scope.d.ts +93 -0
  344. package/dist/types.backup/types/route-config.d.ts +105 -0
  345. package/dist/types.backup/types/route-entry.d.ts +95 -0
  346. package/dist/types.backup/types/segments.d.ts +234 -0
  347. package/dist/types.backup/types.d.ts +1 -0
  348. package/dist/types.backup/urls/include-helper.d.ts +17 -0
  349. package/dist/types.backup/urls/include-provider.d.ts +27 -0
  350. package/dist/types.backup/urls/index.d.ts +6 -0
  351. package/dist/types.backup/urls/path-helper-types.d.ts +197 -0
  352. package/dist/types.backup/urls/path-helper.d.ts +12 -0
  353. package/dist/types.backup/urls/pattern-types.d.ts +166 -0
  354. package/dist/types.backup/urls/response-types.d.ts +67 -0
  355. package/dist/types.backup/urls/type-extraction.d.ts +157 -0
  356. package/dist/types.backup/urls/urls-function.d.ts +24 -0
  357. package/dist/types.backup/urls.d.ts +1 -0
  358. package/dist/types.backup/use-loader.d.ts +150 -0
  359. package/dist/types.backup/vercel/index.d.ts +10 -0
  360. package/dist/types.backup/vercel/tracing.d.ts +70 -0
  361. package/dist/types.backup/vite/debug.d.ts +80 -0
  362. package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +12 -0
  363. package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +65 -0
  364. package/dist/types.backup/vite/discovery/discover-routers.d.ts +17 -0
  365. package/dist/types.backup/vite/discovery/discovery-errors.d.ts +113 -0
  366. package/dist/types.backup/vite/discovery/gate-state.d.ts +79 -0
  367. package/dist/types.backup/vite/discovery/prerender-collection.d.ts +24 -0
  368. package/dist/types.backup/vite/discovery/route-types-writer.d.ts +32 -0
  369. package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +22 -0
  370. package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +40 -0
  371. package/dist/types.backup/vite/discovery/state.d.ts +162 -0
  372. package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +15 -0
  373. package/dist/types.backup/vite/index.d.ts +11 -0
  374. package/dist/types.backup/vite/inject-client-debug.d.ts +56 -0
  375. package/dist/types.backup/vite/plugin-types.d.ts +298 -0
  376. package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +6 -0
  377. package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +40 -0
  378. package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +35 -0
  379. package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
  380. package/dist/types.backup/vite/plugins/expose-action-id.d.ts +18 -0
  381. package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +37 -0
  382. package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
  383. package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
  384. package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
  385. package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +13 -0
  386. package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +29 -0
  387. package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +6 -0
  388. package/dist/types.backup/vite/plugins/performance-tracks.d.ts +25 -0
  389. package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +20 -0
  390. package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +20 -0
  391. package/dist/types.backup/vite/plugins/vercel-output.d.ts +85 -0
  392. package/dist/types.backup/vite/plugins/version-injector.d.ts +21 -0
  393. package/dist/types.backup/vite/plugins/version-plugin.d.ts +19 -0
  394. package/dist/types.backup/vite/plugins/virtual-entries.d.ts +36 -0
  395. package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +7 -0
  396. package/dist/types.backup/vite/rango.d.ts +29 -0
  397. package/dist/types.backup/vite/router-discovery.d.ts +23 -0
  398. package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +64 -0
  399. package/dist/types.backup/vite/utils/banner.d.ts +2 -0
  400. package/dist/types.backup/vite/utils/bundle-analysis.d.ts +28 -0
  401. package/dist/types.backup/vite/utils/client-chunks.d.ts +55 -0
  402. package/dist/types.backup/vite/utils/directive-prologue.d.ts +16 -0
  403. package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +37 -0
  404. package/dist/types.backup/vite/utils/manifest-utils.d.ts +7 -0
  405. package/dist/types.backup/vite/utils/package-resolution.d.ts +6 -0
  406. package/dist/types.backup/vite/utils/prerender-utils.d.ts +32 -0
  407. package/dist/types.backup/vite/utils/shared-utils.d.ts +55 -0
  408. package/dist/vite/index.js +5 -2
  409. package/package.json +1 -1
  410. package/skills/comparison/references/framework-comparison.md +2 -1
  411. package/skills/ppr/SKILL.md +28 -13
  412. package/skills/router-setup/SKILL.md +4 -0
  413. package/src/browser/prefetch/default-strategy.ts +34 -0
  414. package/src/browser/prefetch/loader.ts +6 -12
  415. package/src/browser/prefetch/runtime.ts +0 -1
  416. package/src/browser/react/Link.tsx +22 -21
  417. package/src/browser/rsc-router.tsx +8 -0
  418. package/src/browser/types.ts +5 -0
  419. package/src/cache/cf/cf-cache-store.ts +4 -0
  420. package/src/cache/types.ts +6 -0
  421. package/src/cache/vercel/vercel-cache-store.ts +6 -1
  422. package/src/router/prefetch-default.ts +59 -0
  423. package/src/router/router-interfaces.ts +8 -0
  424. package/src/router/router-options.ts +31 -0
  425. package/src/router.ts +7 -0
  426. package/src/rsc/capture-queue.ts +24 -1
  427. package/src/rsc/full-payload.ts +1 -0
  428. package/src/rsc/handler.ts +1 -0
  429. package/src/rsc/rsc-rendering.ts +120 -18
  430. package/src/rsc/shell-capture.ts +94 -50
  431. package/src/rsc/shell-serve.ts +6 -4
  432. package/src/rsc/types.ts +2 -0
  433. package/src/testing/e2e/index.ts +6 -0
  434. package/src/testing/e2e/page-helpers.ts +47 -0
  435. package/src/testing/e2e/parity.ts +13 -0
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Integrated PPR shell serving (Axis 2, see docs/design/ppr-shell-resume.md).
3
+ *
4
+ * PPR is opt-in per PAGE ROUTE via the `ppr` path option
5
+ * (`path(pattern, Handler, { name, ppr: true | PartialPrerenderProps })`) and the
6
+ * serving logic is INTEGRAL to the render pipeline — there is no middleware to
7
+ * mount. This module owns the config/key/store plumbing the render layer
8
+ * (rsc-rendering.ts) uses at its COMMIT POINT, which sits after the WHOLE
9
+ * middleware chain (global `router.use()` chain AND route DSL `middleware()`,
10
+ * both of which wrap the render pass): any middleware rejection/redirect wins
11
+ * before a single shell byte is written.
12
+ *
13
+ * The shell store is the app-level `createRouter({ cache })` store
14
+ * (`requestCtx._cacheStore`). A store without the `getShell`/`putShell` family
15
+ * degrades a ppr route to axis 1 with a once-per-key warning (the declared
16
+ * intent cannot be honored — unlike an undeclared route, which is silent).
17
+ */
18
+ import { type EntryData } from "../server/context.js";
19
+ import type { ShellCacheEntry, SegmentCacheStore } from "../cache/types.js";
20
+ /** Debug/status header the browser (and e2e assertions) can read: HIT | MISS. */
21
+ export declare const SHELL_STATUS_HEADER = "x-rango-shell";
22
+ /**
23
+ * Default shell ttl (seconds) for `ppr: true` and for a PartialPrerenderProps
24
+ * that omits `ttl`.
25
+ */
26
+ export declare const DEFAULT_PPR_TTL_SECONDS = 300;
27
+ /**
28
+ * Timeout for the dev /__rsc_shell endpoint's sequential /__rsc_prerender
29
+ * pre-flight probe (vite/router-discovery.ts). Hoisted here so the client-side
30
+ * fetch bound (shell-build-manifest.ts devShellFetchTimeoutMs) enumerates the
31
+ * SAME term of the endpoint's worst-case envelope — the two cannot drift.
32
+ */
33
+ export declare const DEV_SHELL_PROBE_TIMEOUT_MS: number;
34
+ /** The route's ppr option normalized to a concrete policy. */
35
+ export interface ResolvedPprConfig {
36
+ ttl: number;
37
+ swr?: number;
38
+ tags?: string[];
39
+ /**
40
+ * Snapshot size cap, passed through undefaulted (like swr/tags): the single
41
+ * defaulting site is captureAndStoreShell (DEFAULT_PPR_MAX_SNAPSHOT_BYTES in
42
+ * shell-capture.ts), so direct descriptor callers and resolved configs
43
+ * cannot drift.
44
+ */
45
+ maxSnapshotBytes?: number;
46
+ /**
47
+ * Capture settle budget in ms (`ppr.captureTimeout`). Undefined = the
48
+ * capture default (SHELL_CAPTURE_MAX_WAIT_MS, 15_000) — the default's single
49
+ * owner stays shell-capture.ts so build/runtime producers cannot drift.
50
+ */
51
+ captureTimeout?: number;
52
+ }
53
+ /**
54
+ * Validate the raw `ppr.captureTimeout` option: a finite number >= 1ms passes
55
+ * through; anything else (including 0/negative/NaN/Infinity/non-number)
56
+ * resolves to undefined, which means "use the capture default" downstream.
57
+ * Mirrors the prefetch-limit option policy: invalid values silently fall back
58
+ * to the default rather than throwing at request time. Also the boundary
59
+ * re-normalizer for the dev /__rsc_shell endpoint (vite/router-discovery.ts),
60
+ * whose param crossed an HTTP query string.
61
+ */
62
+ export declare function normalizeCaptureTimeout(value: unknown): number | undefined;
63
+ /**
64
+ * Normalize the matched page route's `ppr` path option. Returns null when the
65
+ * route does not declare `ppr` (or declares `ppr: false`) — the caller then does
66
+ * NOTHING: no store read, no capture, no logs. Pure axis 1, zero cost.
67
+ *
68
+ * The route's NAME is irrelevant here (and everywhere on the shell lane):
69
+ * nameless `path()` routes register their EntryData under a synthesized
70
+ * `$path_*` manifest key with the `ppr` option intact (urls/path-helper.ts),
71
+ * so a nameless entry resolves exactly like a named one — pinned by the
72
+ * nameless-ppr e2e in both apps (issue #714).
73
+ *
74
+ * PPR is a DOCUMENT-level property of the page route; there is no subtree
75
+ * inheritance (declaring it on a layout is not supported — a follow-up).
76
+ */
77
+ export declare function resolvePprConfig(entry: EntryData | undefined | null): ResolvedPprConfig | null;
78
+ /**
79
+ * Shell cache key: host + pathname + sorted search + a `:shell` namespace suffix
80
+ * (so it can never collide with a document-cache key; the store further isolates
81
+ * the shell family internally).
82
+ *
83
+ * The key includes the request HOST: in a multi-tenant host-router deployment
84
+ * (one worker, one shared KV/runtime-cache store) a host-less key would serve
85
+ * tenant A's captured shell to tenant B's users.
86
+ */
87
+ export declare function buildShellKey(url: URL): string;
88
+ /**
89
+ * Version gates for a stored shell: reactVersion AND buildVersion must both
90
+ * match the running server. The postponed blob encodes hole positions against
91
+ * one exact tree, so resuming it under a different React OR a different app
92
+ * build tree-mismatches inside resume() — after the 200 + prelude committed,
93
+ * with no recovery. Either mismatch is a miss: the recapture overwrites the
94
+ * same key (self-healing) and the entry otherwise ages out via TTL. An entry
95
+ * with no buildVersion (stored before the field existed) is a miss for the
96
+ * same reason — its build is unknown, so it cannot be proven resumable.
97
+ */
98
+ export declare function isValidShellHit(entry: ShellCacheEntry, buildVersion: string): boolean;
99
+ /**
100
+ * Payload integrity gate, run BEFORE the HIT response commits: a stored entry
101
+ * whose prelude is not decodable base64 or whose postponed blob is not
102
+ * parseable JSON would otherwise throw AFTER the 200 + full static prelude
103
+ * flushed (`serveShellHit` decodes at stream construction, `resumeShellHTML`
104
+ * parses in the tail) — the client gets a visually complete page that never
105
+ * hydrates, re-served on every request until the entry ages out (no eviction
106
+ * path exists; failure schedules no recapture by itself). Checking here turns
107
+ * a corrupt entry (store-layer fault) into a plain MISS the recapture
108
+ * overwrites. Cost: one duplicate decode/parse per HIT, sub-ms against a
109
+ * prelude flush that dominates the path.
110
+ */
111
+ export declare function hasIntactShellPayload(entry: ShellCacheEntry): boolean;
112
+ /** Decode a base64 prelude back into bytes for stream composition. */
113
+ export declare function base64ToBytes(b64: string): Uint8Array;
114
+ /** True when the store implements the shell entry family. */
115
+ export declare function hasShellFamily(store: SegmentCacheStore | undefined): store is SegmentCacheStore & {
116
+ getShell: NonNullable<SegmentCacheStore["getShell"]>;
117
+ putShell: NonNullable<SegmentCacheStore["putShell"]>;
118
+ };
119
+ /**
120
+ * Warn once per key that a route declared `ppr` but the app-level cache store
121
+ * does not implement the shell family (getShell/putShell), so the route stays on
122
+ * axis 1. Unlike an undeclared route (silent), a declared route that cannot be
123
+ * honored deserves a diagnostic.
124
+ */
125
+ export declare function warnShellStoreMissingOnce(key: string): void;
126
+ /**
127
+ * Warn once per key that a route declared `ppr` but a per-request CSP nonce is
128
+ * active for the request, so the route stays on axis 1 (a shared shell would
129
+ * freeze one request's nonce for every visitor — useNonce() renders it into every
130
+ * nonced script/style/meta and the browser's CSP would then reject the frozen
131
+ * nonce for all but the capture request). The nonce blocks capture whether it came
132
+ * from the `createRouter({ nonce })` provider or from a direct `ctx.set(nonce, …)`
133
+ * token write in middleware. Same declared-intent-cannot-be-honored doctrine as
134
+ * the missing-store warning above (an undeclared route stays silent).
135
+ */
136
+ export declare function warnPprNonceActiveOnce(key: string): void;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * SSR Setup Utilities
3
+ *
4
+ * Manages early kickoff and retrieval of SSR module loading and stream mode
5
+ * resolution. Both operations are request-scoped but independent of route
6
+ * matching, so they can run in parallel with segment resolution.
7
+ */
8
+ import type { HandlerContext } from "./handler-context.js";
9
+ import type { SSRModule } from "./types.js";
10
+ import type { SSRStreamMode } from "../router/router-options.js";
11
+ import type { MetricsStore } from "../server/context.js";
12
+ export type SSRSetup = readonly [SSRModule, SSRStreamMode];
13
+ /**
14
+ * Key used to stash the early SSR setup promise on request variables.
15
+ * Read back via `getSSRSetup`.
16
+ */
17
+ export declare const SSR_SETUP_VAR = "__ssrSetup";
18
+ /**
19
+ * Start loading the SSR module and resolving the stream mode in parallel.
20
+ * When a `getMetricsStore` getter is provided, records individual
21
+ * `ssr:module-load` and `ssr:stream-mode` metrics (the getter is called
22
+ * lazily so stores created after kickoff are still captured). Without a
23
+ * getter the promises run bare — no `.then()` microtasks, no
24
+ * `performance.now()` calls — keeping the non-debug hot path lean.
25
+ */
26
+ export declare function startSSRSetup<TEnv>(ctx: HandlerContext<TEnv>, request: Request, env: TEnv, url: URL, getMetricsStore?: () => MetricsStore | undefined): Promise<SSRSetup>;
27
+ /**
28
+ * Retrieve the SSR setup result. Returns the early-kicked-off promise
29
+ * when available (stashed on request variables), otherwise starts a
30
+ * fresh setup.
31
+ */
32
+ export declare function getSSRSetup<TEnv>(ctx: HandlerContext<TEnv>, request: Request, env: TEnv, url: URL, metricsStore: MetricsStore | undefined): Promise<SSRSetup>;
33
+ /**
34
+ * Classify whether a request may require SSR (HTML rendering).
35
+ *
36
+ * Returns false for requests that are definitively RSC-only: transport
37
+ * params (partial/action/loader/__rsc), prerender collection, or an explicit
38
+ * Accept: text/x-component. Must never return false for a request whose
39
+ * render-time decision (isRscRequest) will be HTML — the two share
40
+ * acceptsFlightExplicitly so the Accept rule cannot drift. document-cache.ts
41
+ * keys its HTML/RSC response slots off this function, so any divergence from
42
+ * the render decision poisons a cache slot with the wrong representation.
43
+ *
44
+ * Note: response/mime routes are excluded by the caller — this function
45
+ * runs after classifyRequest() determines the request mode.
46
+ */
47
+ export declare function mayNeedSSR(request: Request, url: URL): boolean;
48
+ export declare function isRscRequest(request: Request, url: URL, isPartial: boolean): boolean;
@@ -0,0 +1,27 @@
1
+ import type { MatchResult } from "../types.js";
2
+ import type { getRequestContext } from "../server/request-context.js";
3
+ import type { OnErrorCallback } from "../types/error-types.js";
4
+ /**
5
+ * Apply transition({ when }) gates to a payload's segments.
6
+ *
7
+ * The predicates were collected during resolution (keyed by segment id) and
8
+ * stripped from the serialized config; here — after handlers ran and outside any
9
+ * cache scope — we evaluate each and drop the segment's transition when the
10
+ * predicate does not hold, so the navigation streams its loading fallback
11
+ * instead of holding the previous content. A predicate that throws is reported
12
+ * to the router's onError (phase "rendering") and then treated as "do not hold"
13
+ * (conservative), so a buggy predicate degrades to no transition rather than
14
+ * failing the response.
15
+ *
16
+ * Mutating the segments here is safe: the segment cache stores a serialized copy
17
+ * (segment-codec), written during match() BEFORE this gate runs, so dropping a
18
+ * transition never corrupts a cache entry. The flip side is that a cache hit
19
+ * skips resolution, collects no predicate, and replays the cached transition
20
+ * as-is (it was serialized before the gate) — combining transition({ when })
21
+ * with cache() on the same segment freezes the gate to its cached state, so
22
+ * avoid caching a route whose transition decision is request-dependent.
23
+ *
24
+ * Returns the same array (mutated) for inline use at the payload's `segments`
25
+ * field.
26
+ */
27
+ export declare function gateTransitions(segments: MatchResult["segments"], ctx: ReturnType<typeof getRequestContext>, onError?: OnErrorCallback): MatchResult["segments"];
@@ -0,0 +1,290 @@
1
+ /**
2
+ * RSC Handler Types
3
+ *
4
+ * Type definitions for the RSC request handler, payload structures,
5
+ * and SSR integration.
6
+ */
7
+ import type { ResolvedSegment, SlotState } from "../types.js";
8
+ import type { HandleData } from "../server/handle-store.js";
9
+ import type { RangoInternal } from "../router/router-interfaces.js";
10
+ import type { ResolvedThemeConfig, Theme } from "../theme/types.js";
11
+ /**
12
+ * RSC payload sent to the client.
13
+ * The tree is always reconstructed from metadata.segments by consumers
14
+ * (SSR via renderSegments, browser via renderSegments in bridges).
15
+ */
16
+ export interface RscPayload {
17
+ metadata?: {
18
+ pathname: string;
19
+ segments: ResolvedSegment[];
20
+ /** Router instance ID. When this changes between navigations, the client
21
+ * discards cached segments and does a full tree replacement (app switch). */
22
+ routerId?: string;
23
+ isPartial?: boolean;
24
+ isError?: boolean;
25
+ matched?: string[];
26
+ diff?: string[];
27
+ /**
28
+ * All segment ids re-resolved on the server, including null-component
29
+ * ones excluded from `segments`/`diff`. Drives client-side handle-bucket
30
+ * cleanup. Superset of `diff`. See MatchResult.resolvedIds.
31
+ */
32
+ resolvedIds?: string[];
33
+ /** Merged route params from the matched route */
34
+ params?: Record<string, string>;
35
+ slots?: Record<string, SlotState>;
36
+ /** Root layout component for browser-side re-renders (client component reference) */
37
+ rootLayout?: React.ComponentType<{
38
+ children: React.ReactNode;
39
+ }>;
40
+ /** Handle data accumulated across route segments (async generator that yields on each push) */
41
+ handles?: AsyncGenerator<HandleData, void, unknown>;
42
+ /** RSC version string for cache invalidation */
43
+ version?: string;
44
+ /** TTL in milliseconds for the client-side in-memory prefetch cache */
45
+ prefetchCacheTTL?: number;
46
+ /** Max entries in the client-side in-memory prefetch cache (FIFO eviction) */
47
+ prefetchCacheSize?: number;
48
+ /** Max concurrent speculative prefetch requests on the client */
49
+ prefetchConcurrency?: number;
50
+ /** Server-resolved rango state cookie name; the client reads it verbatim. */
51
+ stateCookieName?: string;
52
+ /** Theme configuration for FOUC prevention */
53
+ themeConfig?: ResolvedThemeConfig | null;
54
+ /** Initial theme from cookie (for SSR hydration) */
55
+ initialTheme?: Theme;
56
+ /** URL prefix for all routes (from createRouter({ basename })). */
57
+ basename?: string;
58
+ /** Whether connection warmup is enabled */
59
+ warmupEnabled?: boolean;
60
+ /**
61
+ * Whether the client should hydrate inside React.StrictMode. Carried on
62
+ * the initial full-render payload only; the browser entry reads it once at
63
+ * hydration. Absent on partial (navigation) payloads. Defaults to true on
64
+ * the client when omitted.
65
+ */
66
+ strictMode?: boolean;
67
+ /**
68
+ * Server-side redirect with optional state (for partial requests).
69
+ * `external: true` (from redirect(url, { external: true })) tells the client
70
+ * to hard-navigate to an off-host target instead of validating same-origin.
71
+ */
72
+ redirect?: {
73
+ url: string;
74
+ external?: boolean;
75
+ };
76
+ /** Server-set location state to include in history.pushState */
77
+ locationState?: Record<string, unknown>;
78
+ };
79
+ returnValue?: {
80
+ ok: boolean;
81
+ data: unknown;
82
+ };
83
+ }
84
+ /**
85
+ * React form state type for useActionState progressive enhancement
86
+ */
87
+ export type ReactFormState = unknown;
88
+ /**
89
+ * RSC dependencies from @vitejs/plugin-rsc/rsc
90
+ */
91
+ export interface RSCDependencies {
92
+ /**
93
+ * renderToReadableStream from @vitejs/plugin-rsc/rsc
94
+ */
95
+ renderToReadableStream: <T>(payload: T, options?: {
96
+ temporaryReferences?: unknown;
97
+ onError?: (error: unknown) => string | void;
98
+ }) => ReadableStream<Uint8Array>;
99
+ /**
100
+ * decodeReply from @vitejs/plugin-rsc/rsc
101
+ */
102
+ decodeReply: (body: FormData | string, options?: {
103
+ temporaryReferences?: unknown;
104
+ }) => Promise<unknown[]>;
105
+ /**
106
+ * createTemporaryReferenceSet from @vitejs/plugin-rsc/rsc
107
+ */
108
+ createTemporaryReferenceSet: () => unknown;
109
+ /**
110
+ * loadServerAction from @vitejs/plugin-rsc/rsc
111
+ */
112
+ loadServerAction: (actionId: string) => Promise<Function>;
113
+ /**
114
+ * decodeAction from @vitejs/plugin-rsc/rsc
115
+ * Decodes a FormData into a bound action function (for useActionState forms)
116
+ */
117
+ decodeAction: (body: FormData) => Promise<() => Promise<unknown>>;
118
+ /**
119
+ * decodeFormState from @vitejs/plugin-rsc/rsc
120
+ * Decodes the action result into a ReactFormState for useActionState progressive enhancement
121
+ */
122
+ decodeFormState: (actionResult: unknown, body: FormData) => Promise<ReactFormState | null>;
123
+ }
124
+ /**
125
+ * Options for SSR HTML rendering
126
+ */
127
+ export interface SSRRenderOptions {
128
+ /**
129
+ * Form state for useActionState progressive enhancement.
130
+ * This is the result of decodeFormState() and should be passed to
131
+ * react-dom's renderToReadableStream to enable useActionState to
132
+ * receive the action result during SSR.
133
+ */
134
+ formState?: ReactFormState | null;
135
+ /**
136
+ * Nonce for Content Security Policy (CSP)
137
+ */
138
+ nonce?: string;
139
+ /**
140
+ * SSR stream mode.
141
+ *
142
+ * - `"stream"` (default) — start flushing HTML immediately.
143
+ * - `"allReady"` — await `stream.allReady` before returning.
144
+ */
145
+ streamMode?: import("../router/router-options.js").SSRStreamMode;
146
+ }
147
+ /**
148
+ * SSR module interface for HTML rendering
149
+ */
150
+ export interface SSRModule {
151
+ renderHTML: (rscStream: ReadableStream<Uint8Array>, options?: SSRRenderOptions) => Promise<ReadableStream<Uint8Array>>;
152
+ /**
153
+ * PPR shell CAPTURE strategy (Axis 2). Prerenders the loader-masked shell over
154
+ * the Flight stream, aborts once quiescent, and returns the prelude bytes plus
155
+ * the postponed resume state — or null when the prelude degraded and must not
156
+ * be stored. Present only when the SSR virtual entry wires
157
+ * createShellCaptureHandler; the render layer feature-detects it. See
158
+ * docs/design/ppr-shell-resume.md.
159
+ */
160
+ captureShellHTML?: (rscStream: ReadableStream<Uint8Array>, options: {
161
+ quiesce: Promise<void>;
162
+ maxWaitMs?: number;
163
+ }) => Promise<{
164
+ prelude: Uint8Array;
165
+ postponed: string | null;
166
+ } | null>;
167
+ /**
168
+ * PPR shell RESUME strategy (Axis 2). Produces the per-request live portion of
169
+ * the document: resumes fizz over a fresh SsrRoot to emit only the postponed
170
+ * holes (or, for the DATA variant with postponed === null, just the fresh Flight
171
+ * payload scripts). The caller prepends the stored prelude bytes to form the
172
+ * composite response. Present only when the SSR virtual entry wires
173
+ * createShellResumeHandler; the render layer feature-detects it.
174
+ */
175
+ resumeShellHTML?: (rscStream: ReadableStream<Uint8Array>, options: {
176
+ postponed: string | null;
177
+ nonce?: string;
178
+ }) => Promise<ReadableStream<Uint8Array>>;
179
+ }
180
+ /**
181
+ * Function to load SSR module dynamically
182
+ */
183
+ export type LoadSSRModule = () => Promise<SSRModule>;
184
+ /**
185
+ * Cache configuration for handler.
186
+ * TTL is configured via store.defaults or cache() boundaries.
187
+ */
188
+ export interface HandlerCacheConfig {
189
+ /** Cache store implementation */
190
+ store: import("../cache/types.js").SegmentCacheStore;
191
+ /** Enable/disable caching (default: true) */
192
+ enabled?: boolean;
193
+ }
194
+ /**
195
+ * Nonce provider function type.
196
+ * Can return a nonce string, or true to auto-generate one.
197
+ */
198
+ export type NonceProvider<TEnv = unknown> = (request: Request, env: TEnv) => string | true | Promise<string | true>;
199
+ /**
200
+ * Options for creating an RSC handler
201
+ */
202
+ export interface CreateRSCHandlerOptions<TEnv = unknown, TRoutes extends Record<string, string> = Record<string, string>> {
203
+ /**
204
+ * The RSC router instance
205
+ */
206
+ router: RangoInternal<TEnv, TRoutes>;
207
+ /**
208
+ * RSC dependencies from @vitejs/plugin-rsc/rsc.
209
+ * Defaults to the exports from @vitejs/plugin-rsc/rsc.
210
+ */
211
+ deps?: RSCDependencies;
212
+ /**
213
+ * Function to load the SSR module for HTML rendering.
214
+ * Defaults to: () => import.meta.viteRsc.loadModule("ssr", "index")
215
+ */
216
+ loadSSRModule?: LoadSSRModule;
217
+ /**
218
+ * Cache configuration for segment caching.
219
+ *
220
+ * Can be a static config object or a function that receives the env
221
+ * (useful for accessing Cloudflare bindings).
222
+ *
223
+ * If not provided, caching is disabled. TTL is configured via store.defaults
224
+ * or cache() boundaries in the route definition.
225
+ *
226
+ * @example Static config
227
+ * ```typescript
228
+ * cache: {
229
+ * store: new MemorySegmentCacheStore({ defaults: { ttl: 60 } }),
230
+ * }
231
+ * ```
232
+ *
233
+ * @example Dynamic config with env
234
+ * ```typescript
235
+ * cache: (env) => ({
236
+ * store: new KVSegmentCacheStore(env.Bindings.MY_CACHE, { defaults: { ttl: 60 } }),
237
+ * })
238
+ * ```
239
+ */
240
+ cache?: HandlerCacheConfig | ((env: TEnv) => HandlerCacheConfig);
241
+ /**
242
+ * RSC version string included in metadata.
243
+ * The browser sends this back on partial requests to detect version mismatches.
244
+ *
245
+ * Defaults to the auto-generated VERSION from `rsc-router:version` virtual module.
246
+ * Only set this if you need a custom versioning strategy.
247
+ *
248
+ * @default VERSION from rsc-router:version
249
+ */
250
+ version?: string;
251
+ /**
252
+ * Nonce provider for Content Security Policy (CSP).
253
+ *
254
+ * Can be:
255
+ * - A function that returns a nonce string
256
+ * - A function that returns `true` to auto-generate a nonce
257
+ * - Undefined to disable nonce (default)
258
+ *
259
+ * The nonce will be applied to inline scripts injected by the RSC payload.
260
+ * It's also available to middleware via the typed `nonce` token:
261
+ * `import { nonce } from "@rangojs/router"; ctx.get(nonce)`
262
+ *
263
+ * @example Auto-generate nonce
264
+ * ```tsx
265
+ * createRSCHandler({
266
+ * router,
267
+ * nonce: () => true,
268
+ * });
269
+ * ```
270
+ *
271
+ * @example Custom nonce from request context
272
+ * ```tsx
273
+ * createRSCHandler({
274
+ * router,
275
+ * nonce: (request, env) => env.nonce,
276
+ * });
277
+ * ```
278
+ *
279
+ * @example Access nonce in middleware
280
+ * ```tsx
281
+ * import { nonce } from "@rangojs/router";
282
+ *
283
+ * const cspMiddleware: Middleware = async (ctx, next) => {
284
+ * const value = ctx.get(nonce); // string | undefined
285
+ * await next();
286
+ * };
287
+ * ```
288
+ */
289
+ nonce?: NonceProvider<TEnv>;
290
+ }
@@ -0,0 +1 @@
1
+ export declare function isUnderTestRunner(): boolean;
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Search parameter schema types and runtime utilities.
3
+ *
4
+ * Provides a lightweight schema system for typed query parameters.
5
+ * When a route defines a `search` schema, ctx.search provides a typed
6
+ * object with parsed values. ctx.searchParams always remains a standard
7
+ * URLSearchParams instance.
8
+ */
9
+ /** Supported scalar types for search params (append ? for optional). */
10
+ export type SearchSchemaValue = "string" | "number" | "boolean" | "string?" | "number?" | "boolean?";
11
+ /** A search schema maps param names to their type descriptors. */
12
+ export type SearchSchema = Record<string, SearchSchemaValue>;
13
+ /** Strip trailing `?` from a schema value to get the base type. */
14
+ type BaseType<T extends string> = T extends `${infer B}?` ? B : T;
15
+ /** Map a base type string to its TypeScript type. */
16
+ type ResolveBaseType<T extends string> = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : never;
17
+ /** Keys whose schema value does NOT end with `?`. */
18
+ type RequiredKeys<T extends SearchSchema> = {
19
+ [K in keyof T]: T[K] extends `${string}?` ? never : K;
20
+ }[keyof T];
21
+ /** Keys whose schema value ends with `?`. */
22
+ type OptionalKeys<T extends SearchSchema> = {
23
+ [K in keyof T]: T[K] extends `${string}?` ? K : never;
24
+ }[keyof T];
25
+ /** Flatten an intersection type into a single object type. */
26
+ type Simplify<T> = {
27
+ [K in keyof T]: T[K];
28
+ };
29
+ /**
30
+ * Resolve a SearchSchema to its typed object.
31
+ *
32
+ * Both required and optional params resolve to `T | undefined` at the handler
33
+ * level. The required/optional distinction is a consumer-facing contract
34
+ * (e.g., for href() and reverse() autocomplete) — it tells callers which
35
+ * params the route expects, but the handler must still check for undefined
36
+ * since the framework cannot trust the client to send all required params.
37
+ *
38
+ * @example
39
+ * type S = { q: "string"; page: "number?"; sort: "string?" };
40
+ * type R = ResolveSearchSchema<S>;
41
+ * // { q: string | undefined; page?: number; sort?: string }
42
+ */
43
+ export type ResolveSearchSchema<T extends SearchSchema> = Simplify<{
44
+ [K in RequiredKeys<T> & string]: ResolveBaseType<BaseType<T[K]>> | undefined;
45
+ } & {
46
+ [K in OptionalKeys<T> & string]?: ResolveBaseType<BaseType<T[K]>>;
47
+ }>;
48
+ /** Resolve the global route map from RegisteredRoutes or GeneratedRouteMap. */
49
+ type GlobalRouteMap = keyof Rango.RegisteredRoutes extends never ? keyof Rango.GeneratedRouteMap extends never ? Record<string, string> : Rango.GeneratedRouteMap : Rango.RegisteredRoutes;
50
+ /**
51
+ * Extract the resolved search params type for a named route.
52
+ * Looks up the search schema from the route map and resolves it.
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * // Given: path("/search", handler, { name: "search", search: { q: "string", page: "number?" } })
57
+ * type Params = RouteSearchParams<"search">;
58
+ * // { q: string; page?: number }
59
+ * ```
60
+ */
61
+ export type RouteSearchParams<TName extends string, TRouteMap = never> = [
62
+ TRouteMap
63
+ ] extends [never] ? ExtractAndResolveSearch<GlobalRouteMap, TName> : ExtractAndResolveSearch<TRouteMap, TName>;
64
+ type ExtractAndResolveSearch<TRouteMap, TName> = TName extends keyof TRouteMap ? TRouteMap[TName] extends {
65
+ readonly search: infer S extends SearchSchema;
66
+ } ? ResolveSearchSchema<S> : {} : {};
67
+ /**
68
+ * Extract the route params type for a named route.
69
+ * Looks up the path pattern from the route map and extracts params.
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * // Given: path("/blog/:slug", handler, { name: "blogPost" })
74
+ * type Params = RouteParams<"blogPost">;
75
+ * // { slug: string }
76
+ * ```
77
+ */
78
+ export type RouteParams<TName extends string, TRouteMap = never> = [
79
+ TRouteMap
80
+ ] extends [never] ? ExtractRouteParamsFromMap<GlobalRouteMap, TName> : ExtractRouteParamsFromMap<TRouteMap, TName>;
81
+ type ExtractRouteParamsFromMap<TRouteMap, TName> = TName extends keyof TRouteMap ? TRouteMap[TName] extends string ? ExtractParamsFromPattern<TRouteMap[TName]> : TRouteMap[TName] extends {
82
+ readonly path: infer P extends string;
83
+ } ? ExtractParamsFromPattern<P> : {} : {};
84
+ /** Parse "a|b|c" into "a" | "b" | "c" */
85
+ type ParseConstraint<T extends string> = T extends `${infer First}|${infer Rest}` ? First | ParseConstraint<Rest> : T;
86
+ /** Minimal inline param extraction (avoids importing from types.ts to prevent circular deps). */
87
+ type ExtractParamsFromPattern<T extends string> = T extends `${string}:${infer Param}/${infer Rest}` ? Param extends `${infer Name}(${infer C})?` ? {
88
+ [K in Name]?: ParseConstraint<C>;
89
+ } & ExtractParamsFromPattern<`/${Rest}`> : Param extends `${infer Name}(${infer C})` ? {
90
+ [K in Name]: ParseConstraint<C>;
91
+ } & ExtractParamsFromPattern<`/${Rest}`> : Param extends `${infer Name}?` ? {
92
+ [K in Name]?: string;
93
+ } & ExtractParamsFromPattern<`/${Rest}`> : {
94
+ [K in Param]: string;
95
+ } & ExtractParamsFromPattern<`/${Rest}`> : T extends `${string}:${infer Param}` ? Param extends `${infer Name}(${infer C})?` ? {
96
+ [K in Name]?: ParseConstraint<C>;
97
+ } : Param extends `${infer Name}(${infer C})` ? {
98
+ [K in Name]: ParseConstraint<C>;
99
+ } : Param extends `${infer Name}?` ? {
100
+ [K in Name]?: string;
101
+ } : {
102
+ [K in Param]: string;
103
+ } : {};
104
+ /**
105
+ * Parse URLSearchParams into a typed object using the given schema.
106
+ *
107
+ * - `"string"` / `"string?"` - kept as-is
108
+ * - `"number"` / `"number?"` - parsed as a finite decimal number. Accepts an
109
+ * optional sign, digits with optional fraction, and optional exponent
110
+ * (e.g. `42`, `-3.5`, `1e3`). Empty/whitespace-only, non-decimal forms
111
+ * (`0x10`), and non-finite (`Infinity`) are treated as missing (omitted),
112
+ * NOT coerced to `0`/`16`/`Infinity`.
113
+ * - `"boolean"` / `"boolean?"` - `"true"` / `"1"` -> true, `"false"` / `"0"` / `""` -> false
114
+ *
115
+ * Missing params (both required and optional) are omitted from the result
116
+ * (undefined). The required/optional distinction is a consumer-facing contract
117
+ * only — the handler must check for undefined.
118
+ */
119
+ export declare function parseSearchParams<T extends SearchSchema>(searchParams: URLSearchParams, schema: T): ResolveSearchSchema<T>;
120
+ /**
121
+ * Serialize a typed search params object to a query string (without leading `?`).
122
+ * Skips `undefined` and `null` values. Preserves insertion order (no sort).
123
+ */
124
+ export declare function serializeSearchParams(params: Record<string, unknown>): string;
125
+ export {};
@@ -0,0 +1,13 @@
1
+ import type { ReactNode } from "react";
2
+ /**
3
+ * Return a stable Promise wrapping `component`, memoized on the component ref.
4
+ *
5
+ * A fresh `Promise.resolve(component)` each render would suspend for one
6
+ * microtask and briefly commit the loading fallback inside Suspender — the
7
+ * intercept / parallel-slot flicker this indirection prevents. Reusing the
8
+ * same Promise ref keeps React's `use()` in "known fulfilled" state after
9
+ * the first observation.
10
+ *
11
+ * @internal
12
+ */
13
+ export declare function getMemoizedContentPromise(component: ReactNode): Promise<ReactNode>;