@rangojs/router 0.0.0-experimental.349e5728 → 0.0.0-experimental.358c376d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2104) hide show
  1. package/AGENTS.md +8 -4
  2. package/README.md +314 -882
  3. package/dist/bin/rango.js +925 -271
  4. package/dist/testing/vitest.js +82 -0
  5. package/dist/types/__internal.d.ts +127 -0
  6. package/dist/types/bin/rango.d.ts +1 -0
  7. package/dist/types/browser/action-coordinator.d.ts +57 -0
  8. package/dist/types/browser/action-fence.d.ts +33 -0
  9. package/dist/types/browser/app-shell.d.ts +34 -0
  10. package/dist/types/browser/app-version.d.ts +6 -0
  11. package/dist/types/browser/connection-warmup.d.ts +31 -0
  12. package/dist/types/browser/cookie-name.d.ts +66 -0
  13. package/dist/types/browser/dev-discovery.d.ts +11 -0
  14. package/dist/types/browser/event-controller.d.ts +231 -0
  15. package/dist/types/browser/history-state.d.ts +26 -0
  16. package/dist/types/browser/index.d.ts +1 -0
  17. package/dist/types/browser/intercept-utils.d.ts +30 -0
  18. package/dist/types/browser/invalidate-client-cache.d.ts +17 -0
  19. package/dist/types/browser/link-interceptor.d.ts +53 -0
  20. package/dist/types/browser/logging.d.ts +33 -0
  21. package/dist/types/browser/merge-segment-loaders.d.ts +38 -0
  22. package/dist/types/browser/navigation-bridge.d.ts +39 -0
  23. package/dist/types/browser/navigation-client.d.ts +17 -0
  24. package/dist/types/browser/navigation-store-handle.d.ts +25 -0
  25. package/dist/types/browser/navigation-store.d.ts +85 -0
  26. package/dist/types/browser/navigation-transaction.d.ts +75 -0
  27. package/dist/types/browser/network-error-handler.d.ts +35 -0
  28. package/dist/types/browser/notify-listeners.d.ts +2 -0
  29. package/dist/types/browser/partial-update.d.ts +61 -0
  30. package/dist/types/browser/prefetch/cache.d.ts +224 -0
  31. package/dist/types/browser/prefetch/default-strategy.d.ts +31 -0
  32. package/dist/types/browser/prefetch/fetch.d.ts +52 -0
  33. package/dist/types/browser/prefetch/invalidation.d.ts +6 -0
  34. package/dist/types/browser/prefetch/loader.d.ts +12 -0
  35. package/dist/types/browser/prefetch/observer.d.ts +24 -0
  36. package/dist/types/browser/prefetch/policy.d.ts +13 -0
  37. package/dist/types/browser/prefetch/queue.d.ts +48 -0
  38. package/dist/types/browser/prefetch/resource-ready.d.ts +28 -0
  39. package/dist/types/browser/prefetch/runtime.d.ts +2 -0
  40. package/dist/types/browser/rango-state.d.ts +56 -0
  41. package/dist/types/browser/react/Link.d.ts +132 -0
  42. package/dist/types/browser/react/NavigationProvider.d.ts +88 -0
  43. package/dist/types/browser/react/ScrollRestoration.d.ts +78 -0
  44. package/dist/types/browser/react/context.d.ts +57 -0
  45. package/dist/types/browser/react/filter-segment-order.d.ts +35 -0
  46. package/dist/types/browser/react/index.d.ts +1 -0
  47. package/dist/types/browser/react/location-state-shared.d.ts +162 -0
  48. package/dist/types/browser/react/location-state.d.ts +29 -0
  49. package/dist/types/browser/react/mount-context.d.ts +23 -0
  50. package/dist/types/browser/react/nonce-context.d.ts +14 -0
  51. package/dist/types/browser/react/shallow-equal.d.ts +5 -0
  52. package/dist/types/browser/react/use-action.d.ts +61 -0
  53. package/dist/types/browser/react/use-handle.d.ts +21 -0
  54. package/dist/types/browser/react/use-href.d.ts +32 -0
  55. package/dist/types/browser/react/use-link-status.d.ts +36 -0
  56. package/dist/types/browser/react/use-mount.d.ts +24 -0
  57. package/dist/types/browser/react/use-navigation.d.ts +15 -0
  58. package/dist/types/browser/react/use-params.d.ts +21 -0
  59. package/dist/types/browser/react/use-pathname.d.ts +13 -0
  60. package/dist/types/browser/react/use-reverse.d.ts +40 -0
  61. package/dist/types/browser/react/use-router.d.ts +23 -0
  62. package/dist/types/browser/react/use-search-params.d.ts +19 -0
  63. package/dist/types/browser/react/use-segments.d.ts +29 -0
  64. package/dist/types/browser/response-adapter.d.ts +58 -0
  65. package/dist/types/browser/rsc-router.d.ts +146 -0
  66. package/dist/types/browser/scroll-restoration.d.ts +103 -0
  67. package/dist/types/browser/segment-reconciler.d.ts +74 -0
  68. package/dist/types/browser/segment-structure-assert.d.ts +16 -0
  69. package/dist/types/browser/server-action-bridge.d.ts +29 -0
  70. package/dist/types/browser/types.d.ts +546 -0
  71. package/dist/types/browser/validate-redirect-origin.d.ts +28 -0
  72. package/dist/types/build/collect-fallback-refs.d.ts +5 -0
  73. package/dist/types/build/generate-manifest.d.ts +106 -0
  74. package/dist/types/build/generate-route-types.d.ts +8 -0
  75. package/dist/types/build/index.d.ts +21 -0
  76. package/dist/types/build/merge-full-manifests.d.ts +3 -0
  77. package/dist/types/build/prefix-tree-utils.d.ts +56 -0
  78. package/dist/types/build/route-trie.d.ts +20 -0
  79. package/dist/types/build/route-types/ast-helpers.d.ts +3 -0
  80. package/dist/types/build/route-types/ast-route-extraction.d.ts +13 -0
  81. package/dist/types/build/route-types/codegen.d.ts +16 -0
  82. package/dist/types/build/route-types/include-resolution.d.ts +74 -0
  83. package/dist/types/build/route-types/param-extraction.d.ts +13 -0
  84. package/dist/types/build/route-types/per-module-writer.d.ts +20 -0
  85. package/dist/types/build/route-types/router-processing.d.ts +81 -0
  86. package/dist/types/build/route-types/scan-filter.d.ts +17 -0
  87. package/dist/types/build/route-types/source-scan.d.ts +13 -0
  88. package/dist/types/build/runtime-discovery.d.ts +24 -0
  89. package/dist/types/cache/background-task.d.ts +21 -0
  90. package/dist/types/cache/cache-error.d.ts +71 -0
  91. package/dist/types/cache/cache-exec-scope.d.ts +31 -0
  92. package/dist/types/cache/cache-key-utils.d.ts +43 -0
  93. package/dist/types/cache/cache-policy.d.ts +59 -0
  94. package/dist/types/cache/cache-runtime.d.ts +51 -0
  95. package/dist/types/cache/cache-scope.d.ts +215 -0
  96. package/dist/types/cache/cache-tag.d.ts +79 -0
  97. package/dist/types/cache/cf/cf-base64.d.ts +4 -0
  98. package/dist/types/cache/cf/cf-cache-constants.d.ts +112 -0
  99. package/dist/types/cache/cf/cf-cache-store.d.ts +616 -0
  100. package/dist/types/cache/cf/cf-cache-types.d.ts +365 -0
  101. package/dist/types/cache/cf/cf-kv-utils.d.ts +43 -0
  102. package/dist/types/cache/cf/cf-tag-marker-memo.d.ts +15 -0
  103. package/dist/types/cache/cf/cf-zone-purge.d.ts +31 -0
  104. package/dist/types/cache/cf/index.d.ts +4 -0
  105. package/dist/types/cache/document-cache.d.ts +71 -0
  106. package/dist/types/cache/handle-capture.d.ts +23 -0
  107. package/dist/types/cache/handle-snapshot.d.ts +39 -0
  108. package/dist/types/cache/index.d.ts +9 -0
  109. package/dist/types/cache/memory-segment-store.d.ts +163 -0
  110. package/dist/types/cache/profile-registry.d.ts +40 -0
  111. package/dist/types/cache/read-through-swr.d.ts +61 -0
  112. package/dist/types/cache/search-params-filter.d.ts +64 -0
  113. package/dist/types/cache/segment-codec.d.ts +78 -0
  114. package/dist/types/cache/shell-snapshot.d.ts +186 -0
  115. package/dist/types/cache/tag-invalidation.d.ts +74 -0
  116. package/dist/types/cache/taint.d.ts +77 -0
  117. package/dist/types/cache/types.d.ts +503 -0
  118. package/dist/types/cache/vercel/index.d.ts +1 -0
  119. package/dist/types/cache/vercel/vercel-cache-store.d.ts +268 -0
  120. package/dist/types/client-urls/client-root.d.ts +38 -0
  121. package/dist/types/client-urls/client-urls.d.ts +5 -0
  122. package/dist/types/client-urls/navigation.d.ts +38 -0
  123. package/dist/types/client-urls/revalidation-protocol.d.ts +25 -0
  124. package/dist/types/client-urls/server-projection.d.ts +62 -0
  125. package/dist/types/client-urls/types.d.ts +144 -0
  126. package/dist/types/client.d.ts +191 -0
  127. package/dist/types/client.rsc.d.ts +41 -0
  128. package/dist/types/cloudflare/index.d.ts +7 -0
  129. package/dist/types/cloudflare/tracing.d.ts +57 -0
  130. package/dist/types/component-utils.d.ts +46 -0
  131. package/dist/types/components/DefaultDocument.d.ts +13 -0
  132. package/dist/types/context-var.d.ts +84 -0
  133. package/dist/types/debug.d.ts +57 -0
  134. package/dist/types/decode-loader-results.d.ts +42 -0
  135. package/dist/types/default-error-boundary.d.ts +10 -0
  136. package/dist/types/defer.d.ts +89 -0
  137. package/dist/types/deps/browser.d.ts +1 -0
  138. package/dist/types/deps/html-stream-client.d.ts +1 -0
  139. package/dist/types/deps/html-stream-server.d.ts +1 -0
  140. package/dist/types/deps/rsc.d.ts +1 -0
  141. package/dist/types/deps/ssr.d.ts +1 -0
  142. package/dist/types/dev-discovery-protocol.d.ts +5 -0
  143. package/dist/types/encode-kv.d.ts +35 -0
  144. package/dist/types/errors.d.ts +227 -0
  145. package/dist/types/escape-script.d.ts +44 -0
  146. package/dist/types/handle.d.ts +93 -0
  147. package/dist/types/handles/MetaTags.d.ts +17 -0
  148. package/dist/types/handles/Scripts.d.ts +38 -0
  149. package/dist/types/handles/breadcrumbs.d.ts +43 -0
  150. package/dist/types/handles/deferred-resolution.d.ts +53 -0
  151. package/dist/types/handles/is-thenable.d.ts +10 -0
  152. package/dist/types/handles/meta.d.ts +43 -0
  153. package/dist/types/handles/script.d.ts +139 -0
  154. package/dist/types/host/cookie-handler.d.ts +8 -0
  155. package/dist/types/host/errors.d.ts +40 -0
  156. package/dist/types/host/index.d.ts +33 -0
  157. package/dist/types/host/pattern-matcher.d.ts +30 -0
  158. package/dist/types/host/router.d.ts +12 -0
  159. package/dist/types/host/testing.d.ts +41 -0
  160. package/dist/types/host/types.d.ts +148 -0
  161. package/dist/types/host/utils.d.ts +20 -0
  162. package/dist/types/href-client.d.ts +214 -0
  163. package/dist/types/index.d.ts +113 -0
  164. package/dist/types/index.rsc.d.ts +52 -0
  165. package/dist/types/internal-debug.d.ts +1 -0
  166. package/dist/types/loader-redirect.d.ts +18 -0
  167. package/dist/types/loader-store.d.ts +193 -0
  168. package/dist/types/loader.d.ts +18 -0
  169. package/dist/types/loader.rsc.d.ts +18 -0
  170. package/dist/types/missing-id-error.d.ts +1 -0
  171. package/dist/types/outlet-context.d.ts +24 -0
  172. package/dist/types/outlet-provider.d.ts +14 -0
  173. package/dist/types/prerender/build-shell-capture.d.ts +104 -0
  174. package/dist/types/prerender/param-hash.d.ts +6 -0
  175. package/dist/types/prerender/shell-manifest-key.d.ts +18 -0
  176. package/dist/types/prerender/store.d.ts +63 -0
  177. package/dist/types/prerender.d.ts +292 -0
  178. package/dist/types/redirect-origin.d.ts +67 -0
  179. package/dist/types/regex-escape.d.ts +6 -0
  180. package/dist/types/render-error-thrower.d.ts +13 -0
  181. package/dist/types/response-utils.d.ts +35 -0
  182. package/dist/types/reverse.d.ts +206 -0
  183. package/dist/types/root-error-boundary.d.ts +32 -0
  184. package/dist/types/route-content-wrapper.d.ts +81 -0
  185. package/dist/types/route-definition/dsl-helpers.d.ts +130 -0
  186. package/dist/types/route-definition/helper-factories.d.ts +22 -0
  187. package/dist/types/route-definition/helpers-types.d.ts +404 -0
  188. package/dist/types/route-definition/index.d.ts +7 -0
  189. package/dist/types/route-definition/redirect.d.ts +48 -0
  190. package/dist/types/route-definition/resolve-handler-use.d.ts +19 -0
  191. package/dist/types/route-definition/use-item-types.d.ts +1 -0
  192. package/dist/types/route-definition.d.ts +1 -0
  193. package/dist/types/route-map-builder.d.ts +102 -0
  194. package/dist/types/route-name.d.ts +27 -0
  195. package/dist/types/route-types.d.ts +172 -0
  196. package/dist/types/router/basename.d.ts +10 -0
  197. package/dist/types/router/content-negotiation.d.ts +91 -0
  198. package/dist/types/router/debug-manifest.d.ts +7 -0
  199. package/dist/types/router/error-handling.d.ts +110 -0
  200. package/dist/types/router/find-match.d.ts +19 -0
  201. package/dist/types/router/handler-context.d.ts +41 -0
  202. package/dist/types/router/instrument.d.ts +191 -0
  203. package/dist/types/router/intercept-resolution.d.ts +91 -0
  204. package/dist/types/router/lazy-includes.d.ts +26 -0
  205. package/dist/types/router/loader-resolution.d.ts +85 -0
  206. package/dist/types/router/logging.d.ts +41 -0
  207. package/dist/types/router/manifest.d.ts +8 -0
  208. package/dist/types/router/match-api.d.ts +19 -0
  209. package/dist/types/router/match-context.d.ts +184 -0
  210. package/dist/types/router/match-handlers.d.ts +48 -0
  211. package/dist/types/router/match-middleware/background-revalidation.d.ts +113 -0
  212. package/dist/types/router/match-middleware/cache-lookup.d.ts +126 -0
  213. package/dist/types/router/match-middleware/cache-store.d.ts +112 -0
  214. package/dist/types/router/match-middleware/index.d.ts +80 -0
  215. package/dist/types/router/match-middleware/intercept-resolution.d.ts +116 -0
  216. package/dist/types/router/match-middleware/segment-resolution.d.ts +94 -0
  217. package/dist/types/router/match-pipelines.d.ts +103 -0
  218. package/dist/types/router/match-result.d.ts +114 -0
  219. package/dist/types/router/metrics.d.ts +6 -0
  220. package/dist/types/router/middleware-types.d.ts +74 -0
  221. package/dist/types/router/middleware.d.ts +116 -0
  222. package/dist/types/router/navigation-snapshot.d.ts +51 -0
  223. package/dist/types/router/params-util.d.ts +8 -0
  224. package/dist/types/router/parse-pattern.d.ts +38 -0
  225. package/dist/types/router/pattern-matching.d.ts +169 -0
  226. package/dist/types/router/prefetch-cache-ttl.d.ts +27 -0
  227. package/dist/types/router/prefetch-default.d.ts +28 -0
  228. package/dist/types/router/prefetch-limits.d.ts +20 -0
  229. package/dist/types/router/prerender-match.d.ts +53 -0
  230. package/dist/types/router/preview-match.d.ts +22 -0
  231. package/dist/types/router/request-classification.d.ts +104 -0
  232. package/dist/types/router/revalidation.d.ts +64 -0
  233. package/dist/types/router/route-snapshot.d.ts +112 -0
  234. package/dist/types/router/route-trie-builder.d.ts +77 -0
  235. package/dist/types/router/router-context.d.ts +137 -0
  236. package/dist/types/router/router-interfaces.d.ts +461 -0
  237. package/dist/types/router/router-options.d.ts +792 -0
  238. package/dist/types/router/router-registry.d.ts +15 -0
  239. package/dist/types/router/segment-resolution/fresh.d.ts +55 -0
  240. package/dist/types/router/segment-resolution/helpers.d.ts +93 -0
  241. package/dist/types/router/segment-resolution/loader-cache.d.ts +33 -0
  242. package/dist/types/router/segment-resolution/loader-mask.d.ts +44 -0
  243. package/dist/types/router/segment-resolution/loader-snapshot.d.ts +90 -0
  244. package/dist/types/router/segment-resolution/mask-nested.d.ts +53 -0
  245. package/dist/types/router/segment-resolution/revalidation.d.ts +85 -0
  246. package/dist/types/router/segment-resolution/static-store.d.ts +17 -0
  247. package/dist/types/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
  248. package/dist/types/router/segment-resolution/view-transition-default.d.ts +27 -0
  249. package/dist/types/router/segment-resolution.d.ts +3 -0
  250. package/dist/types/router/segment-wrappers.d.ts +53 -0
  251. package/dist/types/router/state-cookie-name.d.ts +1 -0
  252. package/dist/types/router/substitute-pattern-params.d.ts +23 -0
  253. package/dist/types/router/telemetry-otel.d.ts +113 -0
  254. package/dist/types/router/telemetry.d.ts +216 -0
  255. package/dist/types/router/timeout.d.ts +107 -0
  256. package/dist/types/router/tracing.d.ts +139 -0
  257. package/dist/types/router/transition-when.d.ts +13 -0
  258. package/dist/types/router/trie-matching.d.ts +32 -0
  259. package/dist/types/router/types.d.ts +98 -0
  260. package/dist/types/router/url-params.d.ts +26 -0
  261. package/dist/types/router.d.ts +7 -0
  262. package/dist/types/rsc/capture-queue.d.ts +49 -0
  263. package/dist/types/rsc/full-payload.d.ts +22 -0
  264. package/dist/types/rsc/handler-context.d.ts +32 -0
  265. package/dist/types/rsc/handler.d.ts +9 -0
  266. package/dist/types/rsc/helpers.d.ts +127 -0
  267. package/dist/types/rsc/index.d.ts +17 -0
  268. package/dist/types/rsc/json-route-result.d.ts +20 -0
  269. package/dist/types/rsc/loader-fetch.d.ts +14 -0
  270. package/dist/types/rsc/manifest-init.d.ts +18 -0
  271. package/dist/types/rsc/nonce.d.ts +28 -0
  272. package/dist/types/rsc/origin-guard.d.ts +50 -0
  273. package/dist/types/rsc/progressive-enhancement.d.ts +19 -0
  274. package/dist/types/rsc/redirect-guard.d.ts +37 -0
  275. package/dist/types/rsc/render-pipeline.d.ts +148 -0
  276. package/dist/types/rsc/response-cache-serve.d.ts +46 -0
  277. package/dist/types/rsc/response-error.d.ts +19 -0
  278. package/dist/types/rsc/response-route-handler.d.ts +29 -0
  279. package/dist/types/rsc/routine-plan.d.ts +124 -0
  280. package/dist/types/rsc/rsc-rendering.d.ts +18 -0
  281. package/dist/types/rsc/runtime-warnings.d.ts +22 -0
  282. package/dist/types/rsc/server-action.d.ts +68 -0
  283. package/dist/types/rsc/shell-build-manifest.d.ts +90 -0
  284. package/dist/types/rsc/shell-capture-constants.d.ts +44 -0
  285. package/dist/types/rsc/shell-capture.d.ts +406 -0
  286. package/dist/types/rsc/shell-serve.d.ts +189 -0
  287. package/dist/types/rsc/ssr-setup.d.ts +73 -0
  288. package/dist/types/rsc/stream-idle.d.ts +60 -0
  289. package/dist/types/rsc/transition-gate.d.ts +23 -0
  290. package/dist/types/rsc/types.d.ts +328 -0
  291. package/dist/types/runtime-env.d.ts +1 -0
  292. package/dist/types/search-params.d.ts +125 -0
  293. package/dist/types/segment-content-promise.d.ts +13 -0
  294. package/dist/types/segment-fragments.d.ts +79 -0
  295. package/dist/types/segment-loader-promise.d.ts +22 -0
  296. package/dist/types/segment-system.d.ts +86 -0
  297. package/dist/types/serialize.d.ts +164 -0
  298. package/dist/types/server/context.d.ts +520 -0
  299. package/dist/types/server/cookie-parse.d.ts +10 -0
  300. package/dist/types/server/cookie-store.d.ts +107 -0
  301. package/dist/types/server/fetchable-loader-store.d.ts +20 -0
  302. package/dist/types/server/handle-store.d.ts +131 -0
  303. package/dist/types/server/loader-registry.d.ts +32 -0
  304. package/dist/types/server/request-context.d.ts +717 -0
  305. package/dist/types/server/root-layout.d.ts +3 -0
  306. package/dist/types/server.d.ts +16 -0
  307. package/dist/types/ssr/index.d.ts +233 -0
  308. package/dist/types/ssr/inject-rsc-eager.d.ts +3 -0
  309. package/dist/types/ssr/preinit-client-references.d.ts +71 -0
  310. package/dist/types/ssr/ssr-root.d.ts +69 -0
  311. package/dist/types/static-handler.d.ts +71 -0
  312. package/dist/types/testing/cache-status.d.ts +63 -0
  313. package/dist/types/testing/collect-handle.d.ts +20 -0
  314. package/dist/types/testing/dispatch.d.ts +127 -0
  315. package/dist/types/testing/dom.entry.d.ts +15 -0
  316. package/dist/types/testing/e2e/fixture.d.ts +37 -0
  317. package/dist/types/testing/e2e/index.d.ts +31 -0
  318. package/dist/types/testing/e2e/matchers.d.ts +17 -0
  319. package/dist/types/testing/e2e/page-helpers.d.ts +86 -0
  320. package/dist/types/testing/e2e/parity.d.ts +111 -0
  321. package/dist/types/testing/e2e/server.d.ts +35 -0
  322. package/dist/types/testing/flight-matchers.d.ts +55 -0
  323. package/dist/types/testing/flight-normalize.d.ts +1 -0
  324. package/dist/types/testing/flight-tree.d.ts +192 -0
  325. package/dist/types/testing/flight.d.ts +115 -0
  326. package/dist/types/testing/flight.entry.d.ts +27 -0
  327. package/dist/types/testing/generated-routes.d.ts +66 -0
  328. package/dist/types/testing/index.d.ts +54 -0
  329. package/dist/types/testing/internal/context.d.ts +225 -0
  330. package/dist/types/testing/internal/flight-client-globals.d.ts +1 -0
  331. package/dist/types/testing/internal/seed-vars.d.ts +30 -0
  332. package/dist/types/testing/render-handler.d.ts +160 -0
  333. package/dist/types/testing/render-route.d.ts +265 -0
  334. package/dist/types/testing/run-loader.d.ts +195 -0
  335. package/dist/types/testing/run-middleware.d.ts +132 -0
  336. package/dist/types/testing/run-transition-when.d.ts +78 -0
  337. package/dist/types/testing/shell-status.d.ts +81 -0
  338. package/dist/types/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
  339. package/dist/types/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
  340. package/dist/types/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
  341. package/dist/types/testing/vitest-stubs/version.d.ts +1 -0
  342. package/dist/types/testing/vitest.d.ts +205 -0
  343. package/dist/types/theme/ThemeProvider.d.ts +13 -0
  344. package/dist/types/theme/ThemeScript.d.ts +45 -0
  345. package/dist/types/theme/constants.d.ts +39 -0
  346. package/dist/types/theme/index.d.ts +29 -0
  347. package/dist/types/theme/theme-context.d.ts +21 -0
  348. package/dist/types/theme/theme-script.d.ts +26 -0
  349. package/dist/types/theme/types.d.ts +162 -0
  350. package/dist/types/theme/use-theme.d.ts +8 -0
  351. package/dist/types/types/boundaries.d.ts +110 -0
  352. package/dist/types/types/cache-types.d.ts +191 -0
  353. package/dist/types/types/error-types.d.ts +114 -0
  354. package/dist/types/types/global-namespace.d.ts +90 -0
  355. package/dist/types/types/handler-context.d.ts +658 -0
  356. package/dist/types/types/index.d.ts +11 -0
  357. package/dist/types/types/loader-types.d.ts +234 -0
  358. package/dist/types/types/request-scope.d.ts +93 -0
  359. package/dist/types/types/route-config.d.ts +105 -0
  360. package/dist/types/types/route-entry.d.ts +98 -0
  361. package/dist/types/types/segments.d.ts +246 -0
  362. package/dist/types/types.d.ts +1 -0
  363. package/dist/types/urls/include-helper.d.ts +17 -0
  364. package/dist/types/urls/include-provider.d.ts +27 -0
  365. package/dist/types/urls/index.d.ts +6 -0
  366. package/dist/types/urls/path-helper-types.d.ts +203 -0
  367. package/dist/types/urls/path-helper.d.ts +12 -0
  368. package/dist/types/urls/pattern-types.d.ts +166 -0
  369. package/dist/types/urls/response-types.d.ts +67 -0
  370. package/dist/types/urls/type-extraction.d.ts +157 -0
  371. package/dist/types/urls/urls-function.d.ts +24 -0
  372. package/dist/types/urls.d.ts +1 -0
  373. package/dist/types/use-loader.d.ts +150 -0
  374. package/dist/types/vercel/index.d.ts +10 -0
  375. package/dist/types/vercel/tracing.d.ts +71 -0
  376. package/dist/types/vite/debug.d.ts +80 -0
  377. package/dist/types/vite/discovery/bundle-postprocess.d.ts +12 -0
  378. package/dist/types/vite/discovery/client-urls-projection.d.ts +53 -0
  379. package/dist/types/vite/discovery/dev-prerender-cache.d.ts +65 -0
  380. package/dist/types/vite/discovery/discover-routers.d.ts +17 -0
  381. package/dist/types/vite/discovery/discovery-errors.d.ts +113 -0
  382. package/dist/types/vite/discovery/gate-state.d.ts +79 -0
  383. package/dist/types/vite/discovery/prerender-collection.d.ts +24 -0
  384. package/dist/types/vite/discovery/route-types-writer.d.ts +32 -0
  385. package/dist/types/vite/discovery/self-gen-tracking.d.ts +22 -0
  386. package/dist/types/vite/discovery/shell-prerender-phase.d.ts +40 -0
  387. package/dist/types/vite/discovery/state.d.ts +170 -0
  388. package/dist/types/vite/discovery/virtual-module-codegen.d.ts +15 -0
  389. package/dist/types/vite/encryption-key.d.ts +2 -0
  390. package/dist/types/vite/index.d.ts +11 -0
  391. package/dist/types/vite/inject-client-debug.d.ts +56 -0
  392. package/dist/types/vite/plugin-types.d.ts +298 -0
  393. package/dist/types/vite/plugins/cjs-to-esm.d.ts +6 -0
  394. package/dist/types/vite/plugins/client-ref-dedup.d.ts +40 -0
  395. package/dist/types/vite/plugins/client-ref-hashing.d.ts +35 -0
  396. package/dist/types/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
  397. package/dist/types/vite/plugins/expose-action-id.d.ts +18 -0
  398. package/dist/types/vite/plugins/expose-id-utils.d.ts +37 -0
  399. package/dist/types/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
  400. package/dist/types/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
  401. package/dist/types/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
  402. package/dist/types/vite/plugins/expose-ids/router-transform.d.ts +13 -0
  403. package/dist/types/vite/plugins/expose-ids/types.d.ts +29 -0
  404. package/dist/types/vite/plugins/expose-internal-ids.d.ts +16 -0
  405. package/dist/types/vite/plugins/performance-tracks.d.ts +25 -0
  406. package/dist/types/vite/plugins/refresh-cmd.d.ts +20 -0
  407. package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
  408. package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
  409. package/dist/types/vite/plugins/use-cache-transform.d.ts +20 -0
  410. package/dist/types/vite/plugins/vercel-output.d.ts +85 -0
  411. package/dist/types/vite/plugins/version-injector.d.ts +21 -0
  412. package/dist/types/vite/plugins/version-plugin.d.ts +19 -0
  413. package/dist/types/vite/plugins/virtual-entries.d.ts +36 -0
  414. package/dist/types/vite/plugins/virtual-stub-plugin.d.ts +7 -0
  415. package/dist/types/vite/rango.d.ts +29 -0
  416. package/dist/types/vite/router-discovery.d.ts +23 -0
  417. package/dist/types/vite/utils/ast-handler-extract.d.ts +64 -0
  418. package/dist/types/vite/utils/banner.d.ts +2 -0
  419. package/dist/types/vite/utils/bundle-analysis.d.ts +28 -0
  420. package/dist/types/vite/utils/client-chunks.d.ts +55 -0
  421. package/dist/types/vite/utils/directive-prologue.d.ts +16 -0
  422. package/dist/types/vite/utils/forward-user-plugins.d.ts +37 -0
  423. package/dist/types/vite/utils/manifest-utils.d.ts +7 -0
  424. package/dist/types/vite/utils/package-resolution.d.ts +6 -0
  425. package/dist/types/vite/utils/prerender-utils.d.ts +32 -0
  426. package/dist/types/vite/utils/shared-utils.d.ts +67 -0
  427. package/dist/types.backup/__internal.d.ts +127 -0
  428. package/dist/types.backup/bin/rango.d.ts +1 -0
  429. package/dist/types.backup/browser/action-coordinator.d.ts +57 -0
  430. package/dist/types.backup/browser/action-fence.d.ts +33 -0
  431. package/dist/types.backup/browser/app-shell.d.ts +34 -0
  432. package/dist/types.backup/browser/app-version.d.ts +6 -0
  433. package/dist/types.backup/browser/connection-warmup.d.ts +31 -0
  434. package/dist/types.backup/browser/cookie-name.d.ts +66 -0
  435. package/dist/types.backup/browser/event-controller.d.ts +221 -0
  436. package/dist/types.backup/browser/history-state.d.ts +26 -0
  437. package/dist/types.backup/browser/index.d.ts +1 -0
  438. package/dist/types.backup/browser/intercept-utils.d.ts +30 -0
  439. package/dist/types.backup/browser/invalidate-client-cache.d.ts +17 -0
  440. package/dist/types.backup/browser/link-interceptor.d.ts +43 -0
  441. package/dist/types.backup/browser/logging.d.ts +33 -0
  442. package/dist/types.backup/browser/merge-segment-loaders.d.ts +38 -0
  443. package/dist/types.backup/browser/navigation-bridge.d.ts +27 -0
  444. package/dist/types.backup/browser/navigation-client.d.ts +17 -0
  445. package/dist/types.backup/browser/navigation-store-handle.d.ts +25 -0
  446. package/dist/types.backup/browser/navigation-store.d.ts +95 -0
  447. package/dist/types.backup/browser/navigation-transaction.d.ts +75 -0
  448. package/dist/types.backup/browser/network-error-handler.d.ts +35 -0
  449. package/dist/types.backup/browser/partial-update.d.ts +61 -0
  450. package/dist/types.backup/browser/prefetch/cache.d.ts +183 -0
  451. package/dist/types.backup/browser/prefetch/fetch.d.ts +52 -0
  452. package/dist/types.backup/browser/prefetch/observer.d.ts +27 -0
  453. package/dist/types.backup/browser/prefetch/policy.d.ts +13 -0
  454. package/dist/types.backup/browser/prefetch/queue.d.ts +48 -0
  455. package/dist/types.backup/browser/prefetch/resource-ready.d.ts +28 -0
  456. package/dist/types.backup/browser/rango-state.d.ts +52 -0
  457. package/dist/types.backup/browser/react/Link.d.ts +140 -0
  458. package/dist/types.backup/browser/react/NavigationProvider.d.ts +88 -0
  459. package/dist/types.backup/browser/react/ScrollRestoration.d.ts +78 -0
  460. package/dist/types.backup/browser/react/context.d.ts +54 -0
  461. package/dist/types.backup/browser/react/filter-segment-order.d.ts +35 -0
  462. package/dist/types.backup/browser/react/index.d.ts +1 -0
  463. package/dist/types.backup/browser/react/location-state-shared.d.ts +162 -0
  464. package/dist/types.backup/browser/react/location-state.d.ts +29 -0
  465. package/dist/types.backup/browser/react/mount-context.d.ts +23 -0
  466. package/dist/types.backup/browser/react/nonce-context.d.ts +14 -0
  467. package/dist/types.backup/browser/react/shallow-equal.d.ts +5 -0
  468. package/dist/types.backup/browser/react/use-action.d.ts +61 -0
  469. package/dist/types.backup/browser/react/use-handle.d.ts +21 -0
  470. package/dist/types.backup/browser/react/use-href.d.ts +32 -0
  471. package/dist/types.backup/browser/react/use-link-status.d.ts +36 -0
  472. package/dist/types.backup/browser/react/use-mount.d.ts +24 -0
  473. package/dist/types.backup/browser/react/use-navigation.d.ts +15 -0
  474. package/dist/types.backup/browser/react/use-params.d.ts +21 -0
  475. package/dist/types.backup/browser/react/use-pathname.d.ts +13 -0
  476. package/dist/types.backup/browser/react/use-reverse.d.ts +40 -0
  477. package/dist/types.backup/browser/react/use-router.d.ts +23 -0
  478. package/dist/types.backup/browser/react/use-search-params.d.ts +19 -0
  479. package/dist/types.backup/browser/react/use-segments.d.ts +29 -0
  480. package/dist/types.backup/browser/response-adapter.d.ts +58 -0
  481. package/dist/types.backup/browser/rsc-router.d.ts +141 -0
  482. package/dist/types.backup/browser/scroll-restoration.d.ts +103 -0
  483. package/dist/types.backup/browser/segment-reconciler.d.ts +74 -0
  484. package/dist/types.backup/browser/segment-structure-assert.d.ts +16 -0
  485. package/dist/types.backup/browser/server-action-bridge.d.ts +29 -0
  486. package/dist/types.backup/browser/types.d.ts +530 -0
  487. package/dist/types.backup/browser/validate-redirect-origin.d.ts +28 -0
  488. package/dist/types.backup/build/collect-fallback-refs.d.ts +5 -0
  489. package/dist/types.backup/build/generate-manifest.d.ts +100 -0
  490. package/dist/types.backup/build/generate-route-types.d.ts +8 -0
  491. package/dist/types.backup/build/index.d.ts +21 -0
  492. package/dist/types.backup/build/prefix-tree-utils.d.ts +56 -0
  493. package/dist/types.backup/build/route-trie.d.ts +89 -0
  494. package/dist/types.backup/build/route-types/ast-helpers.d.ts +3 -0
  495. package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +13 -0
  496. package/dist/types.backup/build/route-types/codegen.d.ts +16 -0
  497. package/dist/types.backup/build/route-types/include-resolution.d.ts +74 -0
  498. package/dist/types.backup/build/route-types/param-extraction.d.ts +13 -0
  499. package/dist/types.backup/build/route-types/per-module-writer.d.ts +18 -0
  500. package/dist/types.backup/build/route-types/router-processing.d.ts +82 -0
  501. package/dist/types.backup/build/route-types/scan-filter.d.ts +17 -0
  502. package/dist/types.backup/build/route-types/source-scan.d.ts +13 -0
  503. package/dist/types.backup/build/runtime-discovery.d.ts +24 -0
  504. package/dist/types.backup/cache/background-task.d.ts +21 -0
  505. package/dist/types.backup/cache/cache-error.d.ts +71 -0
  506. package/dist/types.backup/cache/cache-key-utils.d.ts +35 -0
  507. package/dist/types.backup/cache/cache-policy.d.ts +59 -0
  508. package/dist/types.backup/cache/cache-runtime.d.ts +51 -0
  509. package/dist/types.backup/cache/cache-scope.d.ts +134 -0
  510. package/dist/types.backup/cache/cache-tag.d.ts +79 -0
  511. package/dist/types.backup/cache/cf/cf-base64.d.ts +4 -0
  512. package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +105 -0
  513. package/dist/types.backup/cache/cf/cf-cache-store.d.ts +481 -0
  514. package/dist/types.backup/cache/cf/cf-cache-types.d.ts +300 -0
  515. package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +22 -0
  516. package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +15 -0
  517. package/dist/types.backup/cache/cf/index.d.ts +3 -0
  518. package/dist/types.backup/cache/document-cache.d.ts +69 -0
  519. package/dist/types.backup/cache/handle-capture.d.ts +23 -0
  520. package/dist/types.backup/cache/handle-snapshot.d.ts +39 -0
  521. package/dist/types.backup/cache/index.d.ts +7 -0
  522. package/dist/types.backup/cache/memory-segment-store.d.ts +163 -0
  523. package/dist/types.backup/cache/profile-registry.d.ts +40 -0
  524. package/dist/types.backup/cache/read-through-swr.d.ts +60 -0
  525. package/dist/types.backup/cache/segment-codec.d.ts +78 -0
  526. package/dist/types.backup/cache/shell-snapshot.d.ts +162 -0
  527. package/dist/types.backup/cache/tag-invalidation.d.ts +74 -0
  528. package/dist/types.backup/cache/taint.d.ts +71 -0
  529. package/dist/types.backup/cache/types.d.ts +407 -0
  530. package/dist/types.backup/cache/vercel/index.d.ts +1 -0
  531. package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +267 -0
  532. package/dist/types.backup/client.d.ts +184 -0
  533. package/dist/types.backup/client.rsc.d.ts +39 -0
  534. package/dist/types.backup/cloudflare/index.d.ts +7 -0
  535. package/dist/types.backup/cloudflare/tracing.d.ts +53 -0
  536. package/dist/types.backup/component-utils.d.ts +46 -0
  537. package/dist/types.backup/components/DefaultDocument.d.ts +13 -0
  538. package/dist/types.backup/context-var.d.ts +84 -0
  539. package/dist/types.backup/debug.d.ts +57 -0
  540. package/dist/types.backup/decode-loader-results.d.ts +5 -0
  541. package/dist/types.backup/default-error-boundary.d.ts +10 -0
  542. package/dist/types.backup/defer.d.ts +89 -0
  543. package/dist/types.backup/deps/browser.d.ts +1 -0
  544. package/dist/types.backup/deps/html-stream-client.d.ts +1 -0
  545. package/dist/types.backup/deps/html-stream-server.d.ts +1 -0
  546. package/dist/types.backup/deps/rsc.d.ts +1 -0
  547. package/dist/types.backup/deps/ssr.d.ts +1 -0
  548. package/dist/types.backup/encode-kv.d.ts +35 -0
  549. package/dist/types.backup/errors.d.ts +226 -0
  550. package/dist/types.backup/escape-script.d.ts +44 -0
  551. package/dist/types.backup/handle.d.ts +93 -0
  552. package/dist/types.backup/handles/MetaTags.d.ts +17 -0
  553. package/dist/types.backup/handles/Scripts.d.ts +38 -0
  554. package/dist/types.backup/handles/breadcrumbs.d.ts +43 -0
  555. package/dist/types.backup/handles/deferred-resolution.d.ts +53 -0
  556. package/dist/types.backup/handles/is-thenable.d.ts +12 -0
  557. package/dist/types.backup/handles/meta.d.ts +43 -0
  558. package/dist/types.backup/handles/script.d.ts +139 -0
  559. package/dist/types.backup/host/cookie-handler.d.ts +8 -0
  560. package/dist/types.backup/host/errors.d.ts +40 -0
  561. package/dist/types.backup/host/index.d.ts +33 -0
  562. package/dist/types.backup/host/pattern-matcher.d.ts +30 -0
  563. package/dist/types.backup/host/router.d.ts +12 -0
  564. package/dist/types.backup/host/testing.d.ts +41 -0
  565. package/dist/types.backup/host/types.d.ts +148 -0
  566. package/dist/types.backup/host/utils.d.ts +20 -0
  567. package/dist/types.backup/href-client.d.ts +214 -0
  568. package/dist/types.backup/index.d.ts +112 -0
  569. package/dist/types.backup/index.rsc.d.ts +51 -0
  570. package/dist/types.backup/internal-debug.d.ts +1 -0
  571. package/dist/types.backup/loader-store.d.ts +193 -0
  572. package/dist/types.backup/loader.d.ts +18 -0
  573. package/dist/types.backup/loader.rsc.d.ts +18 -0
  574. package/dist/types.backup/missing-id-error.d.ts +1 -0
  575. package/dist/types.backup/outlet-context.d.ts +12 -0
  576. package/dist/types.backup/outlet-provider.d.ts +12 -0
  577. package/dist/types.backup/prerender/build-shell-capture.d.ts +104 -0
  578. package/dist/types.backup/prerender/param-hash.d.ts +6 -0
  579. package/dist/types.backup/prerender/shell-manifest-key.d.ts +18 -0
  580. package/dist/types.backup/prerender/store.d.ts +62 -0
  581. package/dist/types.backup/prerender.d.ts +292 -0
  582. package/dist/types.backup/redirect-origin.d.ts +55 -0
  583. package/dist/types.backup/regex-escape.d.ts +6 -0
  584. package/dist/types.backup/render-error-thrower.d.ts +13 -0
  585. package/dist/types.backup/response-utils.d.ts +35 -0
  586. package/dist/types.backup/reverse.d.ts +206 -0
  587. package/dist/types.backup/root-error-boundary.d.ts +32 -0
  588. package/dist/types.backup/route-content-wrapper.d.ts +40 -0
  589. package/dist/types.backup/route-definition/dsl-helpers.d.ts +130 -0
  590. package/dist/types.backup/route-definition/helper-factories.d.ts +22 -0
  591. package/dist/types.backup/route-definition/helpers-types.d.ts +392 -0
  592. package/dist/types.backup/route-definition/index.d.ts +7 -0
  593. package/dist/types.backup/route-definition/redirect.d.ts +48 -0
  594. package/dist/types.backup/route-definition/resolve-handler-use.d.ts +19 -0
  595. package/dist/types.backup/route-definition/use-item-types.d.ts +1 -0
  596. package/dist/types.backup/route-definition.d.ts +1 -0
  597. package/dist/types.backup/route-map-builder.d.ts +127 -0
  598. package/dist/types.backup/route-name.d.ts +27 -0
  599. package/dist/types.backup/route-types.d.ts +172 -0
  600. package/dist/types.backup/router/basename.d.ts +10 -0
  601. package/dist/types.backup/router/content-negotiation.d.ts +91 -0
  602. package/dist/types.backup/router/debug-manifest.d.ts +7 -0
  603. package/dist/types.backup/router/error-handling.d.ts +76 -0
  604. package/dist/types.backup/router/find-match.d.ts +19 -0
  605. package/dist/types.backup/router/handler-context.d.ts +41 -0
  606. package/dist/types.backup/router/instrument.d.ts +161 -0
  607. package/dist/types.backup/router/intercept-resolution.d.ts +79 -0
  608. package/dist/types.backup/router/lazy-includes.d.ts +26 -0
  609. package/dist/types.backup/router/loader-resolution.d.ts +63 -0
  610. package/dist/types.backup/router/logging.d.ts +41 -0
  611. package/dist/types.backup/router/manifest.d.ts +8 -0
  612. package/dist/types.backup/router/match-api.d.ts +19 -0
  613. package/dist/types.backup/router/match-context.d.ts +184 -0
  614. package/dist/types.backup/router/match-handlers.d.ts +49 -0
  615. package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +113 -0
  616. package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +113 -0
  617. package/dist/types.backup/router/match-middleware/cache-store.d.ts +112 -0
  618. package/dist/types.backup/router/match-middleware/index.d.ts +80 -0
  619. package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +116 -0
  620. package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +94 -0
  621. package/dist/types.backup/router/match-pipelines.d.ts +103 -0
  622. package/dist/types.backup/router/match-result.d.ts +114 -0
  623. package/dist/types.backup/router/metrics.d.ts +6 -0
  624. package/dist/types.backup/router/middleware-types.d.ts +74 -0
  625. package/dist/types.backup/router/middleware.d.ts +116 -0
  626. package/dist/types.backup/router/navigation-snapshot.d.ts +22 -0
  627. package/dist/types.backup/router/params-util.d.ts +8 -0
  628. package/dist/types.backup/router/parse-pattern.d.ts +38 -0
  629. package/dist/types.backup/router/pattern-matching.d.ts +169 -0
  630. package/dist/types.backup/router/prefetch-cache-ttl.d.ts +27 -0
  631. package/dist/types.backup/router/prefetch-limits.d.ts +20 -0
  632. package/dist/types.backup/router/prerender-match.d.ts +50 -0
  633. package/dist/types.backup/router/preview-match.d.ts +22 -0
  634. package/dist/types.backup/router/request-classification.d.ts +104 -0
  635. package/dist/types.backup/router/revalidation.d.ts +57 -0
  636. package/dist/types.backup/router/route-snapshot.d.ts +112 -0
  637. package/dist/types.backup/router/router-context.d.ts +137 -0
  638. package/dist/types.backup/router/router-interfaces.d.ts +432 -0
  639. package/dist/types.backup/router/router-options.d.ts +738 -0
  640. package/dist/types.backup/router/router-registry.d.ts +15 -0
  641. package/dist/types.backup/router/segment-resolution/fresh.d.ts +55 -0
  642. package/dist/types.backup/router/segment-resolution/helpers.d.ts +93 -0
  643. package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +33 -0
  644. package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +44 -0
  645. package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +90 -0
  646. package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +53 -0
  647. package/dist/types.backup/router/segment-resolution/revalidation.d.ts +85 -0
  648. package/dist/types.backup/router/segment-resolution/static-store.d.ts +17 -0
  649. package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
  650. package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +28 -0
  651. package/dist/types.backup/router/segment-resolution.d.ts +3 -0
  652. package/dist/types.backup/router/segment-wrappers.d.ts +53 -0
  653. package/dist/types.backup/router/state-cookie-name.d.ts +1 -0
  654. package/dist/types.backup/router/substitute-pattern-params.d.ts +23 -0
  655. package/dist/types.backup/router/telemetry-otel.d.ts +113 -0
  656. package/dist/types.backup/router/telemetry.d.ts +215 -0
  657. package/dist/types.backup/router/timeout.d.ts +68 -0
  658. package/dist/types.backup/router/tracing.d.ts +125 -0
  659. package/dist/types.backup/router/trie-matching.d.ts +32 -0
  660. package/dist/types.backup/router/types.d.ts +98 -0
  661. package/dist/types.backup/router/url-params.d.ts +26 -0
  662. package/dist/types.backup/router.d.ts +7 -0
  663. package/dist/types.backup/rsc/capture-queue.d.ts +6 -0
  664. package/dist/types.backup/rsc/full-payload.d.ts +22 -0
  665. package/dist/types.backup/rsc/handler-context.d.ts +31 -0
  666. package/dist/types.backup/rsc/handler.d.ts +9 -0
  667. package/dist/types.backup/rsc/helpers.d.ts +213 -0
  668. package/dist/types.backup/rsc/index.d.ts +17 -0
  669. package/dist/types.backup/rsc/json-route-result.d.ts +20 -0
  670. package/dist/types.backup/rsc/loader-fetch.d.ts +14 -0
  671. package/dist/types.backup/rsc/manifest-init.d.ts +18 -0
  672. package/dist/types.backup/rsc/nonce.d.ts +28 -0
  673. package/dist/types.backup/rsc/origin-guard.d.ts +50 -0
  674. package/dist/types.backup/rsc/progressive-enhancement.d.ts +19 -0
  675. package/dist/types.backup/rsc/redirect-guard.d.ts +35 -0
  676. package/dist/types.backup/rsc/response-cache-serve.d.ts +46 -0
  677. package/dist/types.backup/rsc/response-error.d.ts +19 -0
  678. package/dist/types.backup/rsc/response-route-handler.d.ts +29 -0
  679. package/dist/types.backup/rsc/rsc-rendering.d.ts +23 -0
  680. package/dist/types.backup/rsc/runtime-warnings.d.ts +22 -0
  681. package/dist/types.backup/rsc/server-action.d.ts +68 -0
  682. package/dist/types.backup/rsc/shell-build-manifest.d.ts +84 -0
  683. package/dist/types.backup/rsc/shell-capture-constants.d.ts +27 -0
  684. package/dist/types.backup/rsc/shell-capture.d.ts +374 -0
  685. package/dist/types.backup/rsc/shell-serve.d.ts +136 -0
  686. package/dist/types.backup/rsc/ssr-setup.d.ts +48 -0
  687. package/dist/types.backup/rsc/transition-gate.d.ts +27 -0
  688. package/dist/types.backup/rsc/types.d.ts +290 -0
  689. package/dist/types.backup/runtime-env.d.ts +1 -0
  690. package/dist/types.backup/search-params.d.ts +125 -0
  691. package/dist/types.backup/segment-content-promise.d.ts +13 -0
  692. package/dist/types.backup/segment-fragments.d.ts +56 -0
  693. package/dist/types.backup/segment-loader-promise.d.ts +22 -0
  694. package/dist/types.backup/segment-system.d.ts +84 -0
  695. package/dist/types.backup/serialize.d.ts +164 -0
  696. package/dist/types.backup/server/context.d.ts +494 -0
  697. package/dist/types.backup/server/cookie-parse.d.ts +10 -0
  698. package/dist/types.backup/server/cookie-store.d.ts +107 -0
  699. package/dist/types.backup/server/fetchable-loader-store.d.ts +20 -0
  700. package/dist/types.backup/server/handle-store.d.ts +100 -0
  701. package/dist/types.backup/server/loader-registry.d.ts +32 -0
  702. package/dist/types.backup/server/request-context.d.ts +596 -0
  703. package/dist/types.backup/server/root-layout.d.ts +3 -0
  704. package/dist/types.backup/server.d.ts +15 -0
  705. package/dist/types.backup/ssr/index.d.ts +233 -0
  706. package/dist/types.backup/ssr/inject-rsc-eager.d.ts +3 -0
  707. package/dist/types.backup/ssr/preinit-client-references.d.ts +71 -0
  708. package/dist/types.backup/ssr/ssr-root.d.ts +69 -0
  709. package/dist/types.backup/static-handler.d.ts +57 -0
  710. package/dist/types.backup/testing/cache-status.d.ts +63 -0
  711. package/dist/types.backup/testing/collect-handle.d.ts +20 -0
  712. package/dist/types.backup/testing/dispatch.d.ts +123 -0
  713. package/dist/types.backup/testing/dom.entry.d.ts +15 -0
  714. package/dist/types.backup/testing/e2e/fixture.d.ts +37 -0
  715. package/dist/types.backup/testing/e2e/index.d.ts +30 -0
  716. package/dist/types.backup/testing/e2e/matchers.d.ts +17 -0
  717. package/dist/types.backup/testing/e2e/page-helpers.d.ts +62 -0
  718. package/dist/types.backup/testing/e2e/parity.d.ts +111 -0
  719. package/dist/types.backup/testing/e2e/server.d.ts +35 -0
  720. package/dist/types.backup/testing/flight-matchers.d.ts +55 -0
  721. package/dist/types.backup/testing/flight-normalize.d.ts +1 -0
  722. package/dist/types.backup/testing/flight-tree.d.ts +192 -0
  723. package/dist/types.backup/testing/flight.d.ts +115 -0
  724. package/dist/types.backup/testing/flight.entry.d.ts +27 -0
  725. package/dist/types.backup/testing/generated-routes.d.ts +66 -0
  726. package/dist/types.backup/testing/index.d.ts +52 -0
  727. package/dist/types.backup/testing/internal/context.d.ts +225 -0
  728. package/dist/types.backup/testing/internal/flight-client-globals.d.ts +1 -0
  729. package/dist/types.backup/testing/internal/seed-vars.d.ts +30 -0
  730. package/dist/types.backup/testing/render-handler.d.ts +160 -0
  731. package/dist/types.backup/testing/render-route.d.ts +246 -0
  732. package/dist/types.backup/testing/run-loader.d.ts +186 -0
  733. package/dist/types.backup/testing/run-middleware.d.ts +132 -0
  734. package/dist/types.backup/testing/run-transition-when.d.ts +77 -0
  735. package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
  736. package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
  737. package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
  738. package/dist/types.backup/testing/vitest-stubs/version.d.ts +1 -0
  739. package/dist/types.backup/testing/vitest.d.ts +205 -0
  740. package/dist/types.backup/theme/ThemeProvider.d.ts +13 -0
  741. package/dist/types.backup/theme/ThemeScript.d.ts +45 -0
  742. package/dist/types.backup/theme/constants.d.ts +39 -0
  743. package/dist/types.backup/theme/index.d.ts +29 -0
  744. package/dist/types.backup/theme/theme-context.d.ts +21 -0
  745. package/dist/types.backup/theme/theme-script.d.ts +26 -0
  746. package/dist/types.backup/theme/types.d.ts +162 -0
  747. package/dist/types.backup/theme/use-theme.d.ts +8 -0
  748. package/dist/types.backup/types/boundaries.d.ts +93 -0
  749. package/dist/types.backup/types/cache-types.d.ts +191 -0
  750. package/dist/types.backup/types/error-types.d.ts +114 -0
  751. package/dist/types.backup/types/global-namespace.d.ts +90 -0
  752. package/dist/types.backup/types/handler-context.d.ts +658 -0
  753. package/dist/types.backup/types/index.d.ts +11 -0
  754. package/dist/types.backup/types/loader-types.d.ts +182 -0
  755. package/dist/types.backup/types/request-scope.d.ts +93 -0
  756. package/dist/types.backup/types/route-config.d.ts +105 -0
  757. package/dist/types.backup/types/route-entry.d.ts +95 -0
  758. package/dist/types.backup/types/segments.d.ts +234 -0
  759. package/dist/types.backup/types.d.ts +1 -0
  760. package/dist/types.backup/urls/include-helper.d.ts +17 -0
  761. package/dist/types.backup/urls/include-provider.d.ts +27 -0
  762. package/dist/types.backup/urls/index.d.ts +6 -0
  763. package/dist/types.backup/urls/path-helper-types.d.ts +197 -0
  764. package/dist/types.backup/urls/path-helper.d.ts +12 -0
  765. package/dist/types.backup/urls/pattern-types.d.ts +166 -0
  766. package/dist/types.backup/urls/response-types.d.ts +67 -0
  767. package/dist/types.backup/urls/type-extraction.d.ts +157 -0
  768. package/dist/types.backup/urls/urls-function.d.ts +24 -0
  769. package/dist/types.backup/urls.d.ts +1 -0
  770. package/dist/types.backup/use-loader.d.ts +150 -0
  771. package/dist/types.backup/vercel/index.d.ts +10 -0
  772. package/dist/types.backup/vercel/tracing.d.ts +70 -0
  773. package/dist/types.backup/vite/debug.d.ts +80 -0
  774. package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +12 -0
  775. package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +65 -0
  776. package/dist/types.backup/vite/discovery/discover-routers.d.ts +17 -0
  777. package/dist/types.backup/vite/discovery/discovery-errors.d.ts +113 -0
  778. package/dist/types.backup/vite/discovery/gate-state.d.ts +79 -0
  779. package/dist/types.backup/vite/discovery/prerender-collection.d.ts +24 -0
  780. package/dist/types.backup/vite/discovery/route-types-writer.d.ts +32 -0
  781. package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +22 -0
  782. package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +40 -0
  783. package/dist/types.backup/vite/discovery/state.d.ts +162 -0
  784. package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +15 -0
  785. package/dist/types.backup/vite/index.d.ts +11 -0
  786. package/dist/types.backup/vite/inject-client-debug.d.ts +56 -0
  787. package/dist/types.backup/vite/plugin-types.d.ts +298 -0
  788. package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +6 -0
  789. package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +40 -0
  790. package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +35 -0
  791. package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
  792. package/dist/types.backup/vite/plugins/expose-action-id.d.ts +18 -0
  793. package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +37 -0
  794. package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
  795. package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
  796. package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
  797. package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +13 -0
  798. package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +29 -0
  799. package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +6 -0
  800. package/dist/types.backup/vite/plugins/performance-tracks.d.ts +25 -0
  801. package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +20 -0
  802. package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +20 -0
  803. package/dist/types.backup/vite/plugins/vercel-output.d.ts +85 -0
  804. package/dist/types.backup/vite/plugins/version-injector.d.ts +21 -0
  805. package/dist/types.backup/vite/plugins/version-plugin.d.ts +19 -0
  806. package/dist/types.backup/vite/plugins/virtual-entries.d.ts +36 -0
  807. package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +7 -0
  808. package/dist/types.backup/vite/rango.d.ts +29 -0
  809. package/dist/types.backup/vite/router-discovery.d.ts +23 -0
  810. package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +64 -0
  811. package/dist/types.backup/vite/utils/banner.d.ts +2 -0
  812. package/dist/types.backup/vite/utils/bundle-analysis.d.ts +28 -0
  813. package/dist/types.backup/vite/utils/client-chunks.d.ts +55 -0
  814. package/dist/types.backup/vite/utils/directive-prologue.d.ts +16 -0
  815. package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +37 -0
  816. package/dist/types.backup/vite/utils/manifest-utils.d.ts +7 -0
  817. package/dist/types.backup/vite/utils/package-resolution.d.ts +6 -0
  818. package/dist/types.backup/vite/utils/prerender-utils.d.ts +32 -0
  819. package/dist/types.backup/vite/utils/shared-utils.d.ts +55 -0
  820. package/dist/vite/index.js +9955 -4414
  821. package/package.json +118 -38
  822. package/skills/api-client/SKILL.md +211 -0
  823. package/skills/breadcrumbs/SKILL.md +114 -7
  824. package/skills/bundle-analysis/SKILL.md +159 -0
  825. package/skills/cache-guide/SKILL.md +232 -34
  826. package/skills/caching/SKILL.md +375 -19
  827. package/skills/catalog.json +289 -0
  828. package/skills/client-urls/SKILL.md +307 -0
  829. package/skills/cloudflare/SKILL.md +151 -0
  830. package/skills/cloudflare/agents/openai.yaml +4 -0
  831. package/skills/cloudflare/references/d1-and-local-dev.md +131 -0
  832. package/skills/cloudflare/references/streaming-and-deploy.md +107 -0
  833. package/skills/cloudflare/references/webhooks-and-crypto.md +147 -0
  834. package/skills/comparison/SKILL.md +50 -0
  835. package/skills/comparison/agents/openai.yaml +4 -0
  836. package/skills/comparison/references/framework-comparison.md +858 -0
  837. package/skills/composability/SKILL.md +124 -4
  838. package/skills/css/SKILL.md +76 -0
  839. package/skills/debug-manifest/SKILL.md +5 -11
  840. package/skills/defer-hydration/SKILL.md +235 -0
  841. package/skills/deployment-caching/SKILL.md +176 -0
  842. package/skills/document-cache/SKILL.md +116 -58
  843. package/skills/fonts/SKILL.md +1 -1
  844. package/skills/handler-use/SKILL.md +10 -10
  845. package/skills/hooks/SKILL.md +73 -704
  846. package/skills/hooks/data.md +282 -0
  847. package/skills/hooks/handle-and-actions.md +110 -0
  848. package/skills/hooks/navigation.md +110 -0
  849. package/skills/hooks/outlets.md +62 -0
  850. package/skills/hooks/state.md +228 -0
  851. package/skills/hooks/urls.md +135 -0
  852. package/skills/host-router/SKILL.md +129 -27
  853. package/skills/i18n/SKILL.md +1 -1
  854. package/skills/intercept/SKILL.md +50 -19
  855. package/skills/layout/SKILL.md +38 -19
  856. package/skills/links/SKILL.md +209 -17
  857. package/skills/loader/SKILL.md +308 -25
  858. package/skills/middleware/SKILL.md +56 -13
  859. package/skills/migrate-nextjs/SKILL.md +323 -33
  860. package/skills/migrate-nextjs/backend-host-swap.md +120 -0
  861. package/skills/migrate-react-router/SKILL.md +95 -675
  862. package/skills/migrate-react-router/component-migration.md +201 -0
  863. package/skills/migrate-react-router/data-and-actions.md +236 -0
  864. package/skills/migrate-react-router/route-mapping.md +284 -0
  865. package/skills/mime-routes/SKILL.md +55 -18
  866. package/skills/observability/SKILL.md +231 -0
  867. package/skills/parallel/SKILL.md +52 -11
  868. package/skills/ppr/SKILL.md +914 -0
  869. package/skills/prerender/SKILL.md +137 -71
  870. package/skills/rango/SKILL.md +325 -28
  871. package/skills/react-compiler/SKILL.md +168 -0
  872. package/skills/response-routes/SKILL.md +172 -52
  873. package/skills/route/SKILL.md +102 -9
  874. package/skills/router-setup/SKILL.md +69 -11
  875. package/skills/scripts/SKILL.md +189 -0
  876. package/skills/server-actions/SKILL.md +81 -44
  877. package/skills/shell-manifest/SKILL.md +194 -0
  878. package/skills/streams-and-websockets/SKILL.md +1 -1
  879. package/skills/tailwind/SKILL.md +28 -4
  880. package/skills/testing/SKILL.md +131 -0
  881. package/skills/testing/bindings.md +103 -0
  882. package/skills/testing/cache-prerender.md +172 -0
  883. package/skills/testing/client-components.md +131 -0
  884. package/skills/testing/e2e-parity.md +125 -0
  885. package/skills/testing/flight.md +91 -0
  886. package/skills/testing/handles.md +153 -0
  887. package/skills/testing/loader.md +130 -0
  888. package/skills/testing/middleware.md +99 -0
  889. package/skills/testing/render-handler.md +122 -0
  890. package/skills/testing/response-routes.md +95 -0
  891. package/skills/testing/reverse-and-types.md +85 -0
  892. package/skills/testing/server-actions.md +107 -0
  893. package/skills/testing/server-tree.md +128 -0
  894. package/skills/testing/setup.md +123 -0
  895. package/skills/theme/SKILL.md +9 -6
  896. package/skills/typesafety/SKILL.md +45 -634
  897. package/skills/typesafety/env-and-bindings.md +254 -0
  898. package/skills/typesafety/generated-files-and-cli.md +342 -0
  899. package/skills/typesafety/params-and-search.md +153 -0
  900. package/skills/typesafety/route-types.md +213 -0
  901. package/skills/use-cache/SKILL.md +121 -15
  902. package/skills/vercel/SKILL.md +149 -0
  903. package/skills/view-transitions/SKILL.md +133 -4
  904. package/src/__augment-tests__/augment.ts +81 -0
  905. package/src/__augment-tests__/augmented.check.ts +116 -0
  906. package/src/__internal.ts +0 -65
  907. package/src/browser/action-coordinator.ts +53 -36
  908. package/src/browser/action-fence.ts +47 -0
  909. package/src/browser/app-shell.ts +14 -27
  910. package/src/browser/connection-warmup.ts +134 -0
  911. package/src/browser/cookie-name.ts +140 -0
  912. package/src/browser/dev-discovery.ts +66 -0
  913. package/src/browser/event-controller.ts +359 -167
  914. package/src/browser/history-state.ts +21 -0
  915. package/src/browser/index.ts +3 -3
  916. package/src/browser/invalidate-client-cache.ts +52 -0
  917. package/src/browser/link-interceptor.ts +469 -20
  918. package/src/browser/logging.ts +28 -0
  919. package/src/browser/merge-segment-loaders.ts +6 -4
  920. package/src/browser/navigation-bridge.ts +159 -122
  921. package/src/browser/navigation-client.ts +199 -96
  922. package/src/browser/navigation-store-handle.ts +38 -0
  923. package/src/browser/navigation-store.ts +165 -345
  924. package/src/browser/navigation-transaction.ts +9 -59
  925. package/src/browser/network-error-handler.ts +34 -7
  926. package/src/browser/notify-listeners.ts +22 -0
  927. package/src/browser/partial-update.ts +202 -161
  928. package/src/browser/prefetch/cache.ts +240 -97
  929. package/src/browser/prefetch/default-strategy.ts +74 -0
  930. package/src/browser/prefetch/fetch.ts +317 -51
  931. package/src/browser/prefetch/invalidation.ts +30 -0
  932. package/src/browser/prefetch/loader.ts +111 -0
  933. package/src/browser/prefetch/observer.ts +50 -22
  934. package/src/browser/prefetch/queue.ts +25 -7
  935. package/src/browser/prefetch/runtime.ts +6 -0
  936. package/src/browser/rango-state.ts +177 -114
  937. package/src/browser/react/Link.tsx +115 -75
  938. package/src/browser/react/NavigationProvider.tsx +176 -138
  939. package/src/browser/react/ScrollRestoration.tsx +10 -6
  940. package/src/browser/react/context.ts +4 -0
  941. package/src/browser/react/filter-segment-order.ts +17 -2
  942. package/src/browser/react/index.ts +0 -48
  943. package/src/browser/react/location-state-shared.ts +178 -8
  944. package/src/browser/react/location-state.ts +39 -14
  945. package/src/browser/react/use-action.ts +6 -15
  946. package/src/browser/react/use-handle.ts +17 -14
  947. package/src/browser/react/use-href.tsx +8 -1
  948. package/src/browser/react/use-link-status.ts +33 -8
  949. package/src/browser/react/use-navigation.ts +10 -5
  950. package/src/browser/react/use-params.ts +3 -6
  951. package/src/browser/react/use-reverse.ts +106 -0
  952. package/src/browser/react/use-router.ts +21 -6
  953. package/src/browser/react/use-search-params.ts +0 -5
  954. package/src/browser/react/use-segments.ts +0 -13
  955. package/src/browser/response-adapter.ts +99 -8
  956. package/src/browser/rsc-router.tsx +230 -42
  957. package/src/browser/scroll-restoration.ts +37 -22
  958. package/src/browser/segment-reconciler.ts +31 -21
  959. package/src/browser/segment-structure-assert.ts +2 -2
  960. package/src/browser/server-action-bridge.ts +262 -65
  961. package/src/browser/types.ts +126 -47
  962. package/src/browser/validate-redirect-origin.ts +43 -16
  963. package/src/build/collect-fallback-refs.ts +107 -0
  964. package/src/build/generate-manifest.ts +213 -184
  965. package/src/build/generate-route-types.ts +3 -1
  966. package/src/build/index.ts +11 -3
  967. package/src/build/merge-full-manifests.ts +161 -0
  968. package/src/build/prefix-tree-utils.ts +123 -0
  969. package/src/build/route-trie.ts +43 -281
  970. package/src/build/route-types/ast-route-extraction.ts +15 -8
  971. package/src/build/route-types/codegen.ts +16 -5
  972. package/src/build/route-types/include-resolution.ts +513 -64
  973. package/src/build/route-types/param-extraction.ts +6 -3
  974. package/src/build/route-types/per-module-writer.ts +33 -12
  975. package/src/build/route-types/router-processing.ts +312 -204
  976. package/src/build/route-types/scan-filter.ts +1 -1
  977. package/src/build/route-types/source-scan.ts +216 -0
  978. package/src/build/runtime-discovery.ts +32 -29
  979. package/src/cache/cache-error.ts +104 -0
  980. package/src/cache/cache-exec-scope.ts +47 -0
  981. package/src/cache/cache-key-utils.ts +73 -15
  982. package/src/cache/cache-policy.ts +108 -34
  983. package/src/cache/cache-runtime.ts +566 -121
  984. package/src/cache/cache-scope.ts +383 -105
  985. package/src/cache/cache-tag.ts +149 -0
  986. package/src/cache/cf/cf-base64.ts +33 -0
  987. package/src/cache/cf/cf-cache-constants.ts +134 -0
  988. package/src/cache/cf/cf-cache-store.ts +3028 -391
  989. package/src/cache/cf/cf-cache-types.ts +417 -0
  990. package/src/cache/cf/cf-kv-utils.ts +84 -0
  991. package/src/cache/cf/cf-tag-marker-memo.ts +108 -0
  992. package/src/cache/cf/cf-zone-purge.ts +101 -0
  993. package/src/cache/cf/index.ts +11 -16
  994. package/src/cache/document-cache.ts +184 -53
  995. package/src/cache/handle-snapshot.ts +92 -1
  996. package/src/cache/index.ts +32 -20
  997. package/src/cache/memory-segment-store.ts +286 -37
  998. package/src/cache/profile-registry.ts +46 -31
  999. package/src/cache/read-through-swr.ts +66 -16
  1000. package/src/cache/search-params-filter.ts +118 -0
  1001. package/src/cache/segment-codec.ts +80 -25
  1002. package/src/cache/shell-snapshot.ts +516 -0
  1003. package/src/cache/tag-invalidation.ts +230 -0
  1004. package/src/cache/taint.ts +28 -9
  1005. package/src/cache/types.ts +323 -100
  1006. package/src/cache/vercel/index.ts +11 -0
  1007. package/src/cache/vercel/vercel-cache-store.ts +1264 -0
  1008. package/src/client-urls/client-root.tsx +161 -0
  1009. package/src/client-urls/client-urls.ts +698 -0
  1010. package/src/client-urls/navigation.ts +237 -0
  1011. package/src/client-urls/revalidation-protocol.ts +56 -0
  1012. package/src/client-urls/server-projection.ts +579 -0
  1013. package/src/client-urls/types.ts +195 -0
  1014. package/src/client.rsc.tsx +48 -21
  1015. package/src/client.tsx +77 -67
  1016. package/src/cloudflare/index.ts +11 -0
  1017. package/src/cloudflare/tracing.ts +112 -0
  1018. package/src/component-utils.ts +19 -0
  1019. package/src/components/DefaultDocument.tsx +8 -2
  1020. package/src/context-var.ts +18 -6
  1021. package/src/decode-loader-results.ts +160 -0
  1022. package/src/defer.ts +185 -0
  1023. package/src/deps/ssr.ts +4 -2
  1024. package/src/dev-discovery-protocol.ts +11 -0
  1025. package/src/encode-kv.ts +49 -0
  1026. package/src/errors.ts +44 -4
  1027. package/src/escape-script.ts +52 -0
  1028. package/src/handle.ts +67 -37
  1029. package/src/handles/MetaTags.tsx +24 -53
  1030. package/src/handles/Scripts.tsx +183 -0
  1031. package/src/handles/breadcrumbs.ts +35 -8
  1032. package/src/handles/deferred-resolution.ts +134 -0
  1033. package/src/handles/is-thenable.ts +16 -0
  1034. package/src/handles/meta.ts +14 -40
  1035. package/src/handles/script.ts +244 -0
  1036. package/src/host/cookie-handler.ts +9 -60
  1037. package/src/host/errors.ts +13 -22
  1038. package/src/host/index.ts +9 -2
  1039. package/src/host/pattern-matcher.ts +23 -52
  1040. package/src/host/router.ts +107 -99
  1041. package/src/host/testing.ts +40 -27
  1042. package/src/host/types.ts +37 -4
  1043. package/src/host/utils.ts +1 -1
  1044. package/src/href-client.ts +136 -24
  1045. package/src/index.rsc.ts +105 -12
  1046. package/src/index.ts +103 -14
  1047. package/src/internal-debug.ts +11 -10
  1048. package/src/loader-redirect.tsx +47 -0
  1049. package/src/loader-store.ts +500 -0
  1050. package/src/loader.rsc.ts +20 -13
  1051. package/src/loader.ts +12 -11
  1052. package/src/missing-id-error.ts +68 -0
  1053. package/src/outlet-context.ts +12 -0
  1054. package/src/outlet-provider.tsx +16 -6
  1055. package/src/prerender/build-shell-capture.ts +453 -0
  1056. package/src/prerender/param-hash.ts +16 -16
  1057. package/src/prerender/shell-manifest-key.ts +20 -0
  1058. package/src/prerender/store.ts +47 -38
  1059. package/src/prerender.ts +81 -13
  1060. package/src/redirect-origin.ts +143 -0
  1061. package/src/regex-escape.ts +8 -0
  1062. package/src/render-error-thrower.tsx +20 -0
  1063. package/src/response-utils.ts +34 -0
  1064. package/src/reverse.ts +65 -41
  1065. package/src/root-error-boundary.tsx +1 -19
  1066. package/src/route-content-wrapper.tsx +112 -78
  1067. package/src/route-definition/dsl-helpers.ts +327 -315
  1068. package/src/route-definition/helper-factories.ts +28 -140
  1069. package/src/route-definition/helpers-types.ts +99 -61
  1070. package/src/route-definition/index.ts +1 -2
  1071. package/src/route-definition/redirect.ts +44 -11
  1072. package/src/route-definition/resolve-handler-use.ts +6 -1
  1073. package/src/route-definition/use-item-types.ts +29 -0
  1074. package/src/route-map-builder.ts +102 -74
  1075. package/src/route-types.ts +19 -46
  1076. package/src/router/basename.ts +14 -0
  1077. package/src/router/content-negotiation.ts +120 -30
  1078. package/src/router/error-handling.ts +110 -29
  1079. package/src/router/find-match.ts +129 -30
  1080. package/src/router/handler-context.ts +41 -58
  1081. package/src/router/instrument.ts +401 -0
  1082. package/src/router/intercept-resolution.ts +98 -21
  1083. package/src/router/lazy-includes.ts +82 -58
  1084. package/src/router/loader-resolution.ts +419 -85
  1085. package/src/router/logging.ts +0 -6
  1086. package/src/router/manifest.ts +74 -40
  1087. package/src/router/match-api.ts +90 -55
  1088. package/src/router/match-context.ts +0 -22
  1089. package/src/router/match-handlers.ts +267 -171
  1090. package/src/router/match-middleware/background-revalidation.ts +40 -24
  1091. package/src/router/match-middleware/cache-lookup.ts +316 -302
  1092. package/src/router/match-middleware/cache-store.ts +134 -52
  1093. package/src/router/match-middleware/intercept-resolution.ts +0 -22
  1094. package/src/router/match-middleware/segment-resolution.ts +0 -22
  1095. package/src/router/match-pipelines.ts +1 -42
  1096. package/src/router/match-result.ts +72 -94
  1097. package/src/router/metrics.ts +17 -36
  1098. package/src/router/middleware-types.ts +15 -114
  1099. package/src/router/middleware.ts +276 -193
  1100. package/src/router/navigation-snapshot.ts +51 -60
  1101. package/src/router/params-util.ts +23 -0
  1102. package/src/router/parse-pattern.ts +115 -0
  1103. package/src/router/pattern-matching.ts +99 -152
  1104. package/src/router/prefetch-cache-ttl.ts +51 -0
  1105. package/src/router/prefetch-default.ts +59 -0
  1106. package/src/router/prefetch-limits.ts +37 -0
  1107. package/src/router/prerender-match.ts +159 -69
  1108. package/src/router/preview-match.ts +6 -2
  1109. package/src/router/request-classification.ts +50 -69
  1110. package/src/router/revalidation.ts +134 -85
  1111. package/src/router/route-snapshot.ts +14 -3
  1112. package/src/router/route-trie-builder.ts +334 -0
  1113. package/src/router/router-context.ts +6 -29
  1114. package/src/router/router-interfaces.ts +168 -38
  1115. package/src/router/router-options.ts +235 -11
  1116. package/src/router/router-registry.ts +2 -5
  1117. package/src/router/segment-resolution/fresh.ts +191 -88
  1118. package/src/router/segment-resolution/helpers.ts +96 -18
  1119. package/src/router/segment-resolution/loader-cache.ts +187 -39
  1120. package/src/router/segment-resolution/loader-mask.ts +60 -0
  1121. package/src/router/segment-resolution/loader-snapshot.ts +259 -0
  1122. package/src/router/segment-resolution/mask-nested.ts +99 -0
  1123. package/src/router/segment-resolution/revalidation.ts +275 -308
  1124. package/src/router/segment-resolution/static-store.ts +55 -15
  1125. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1126. package/src/router/segment-resolution/view-transition-default.ts +60 -0
  1127. package/src/router/segment-resolution.ts +5 -1
  1128. package/src/router/segment-wrappers.ts +6 -5
  1129. package/src/router/state-cookie-name.ts +33 -0
  1130. package/src/router/substitute-pattern-params.ts +75 -0
  1131. package/src/router/telemetry-otel.ts +171 -200
  1132. package/src/router/telemetry.ts +106 -20
  1133. package/src/router/timeout.ts +53 -22
  1134. package/src/router/tracing.ts +235 -0
  1135. package/src/router/transition-when.ts +76 -0
  1136. package/src/router/trie-matching.ts +171 -64
  1137. package/src/router/types.ts +9 -63
  1138. package/src/router/url-params.ts +13 -5
  1139. package/src/router.ts +248 -77
  1140. package/src/rsc/capture-queue.ts +218 -0
  1141. package/src/rsc/full-payload.ts +77 -0
  1142. package/src/rsc/handler-context.ts +4 -2
  1143. package/src/rsc/handler.ts +562 -284
  1144. package/src/rsc/helpers.ts +179 -9
  1145. package/src/rsc/index.ts +2 -5
  1146. package/src/rsc/json-route-result.ts +38 -0
  1147. package/src/rsc/loader-fetch.ts +116 -40
  1148. package/src/rsc/manifest-init.ts +55 -56
  1149. package/src/rsc/nonce.ts +10 -1
  1150. package/src/rsc/origin-guard.ts +39 -25
  1151. package/src/rsc/progressive-enhancement.ts +376 -85
  1152. package/src/rsc/redirect-guard.ts +102 -0
  1153. package/src/rsc/render-pipeline.ts +611 -0
  1154. package/src/rsc/response-cache-serve.ts +259 -0
  1155. package/src/rsc/response-error.ts +79 -12
  1156. package/src/rsc/response-route-handler.ts +73 -212
  1157. package/src/rsc/routine-plan.ts +359 -0
  1158. package/src/rsc/rsc-rendering.ts +1622 -172
  1159. package/src/rsc/runtime-warnings.ts +23 -10
  1160. package/src/rsc/server-action.ts +419 -140
  1161. package/src/rsc/shell-build-manifest.ts +336 -0
  1162. package/src/rsc/shell-capture-constants.ts +45 -0
  1163. package/src/rsc/shell-capture.ts +2063 -0
  1164. package/src/rsc/shell-serve.ts +337 -0
  1165. package/src/rsc/ssr-setup.ts +111 -16
  1166. package/src/rsc/stream-idle.ts +137 -0
  1167. package/src/rsc/transition-gate.ts +86 -0
  1168. package/src/rsc/types.ts +85 -5
  1169. package/src/runtime-env.ts +18 -0
  1170. package/src/search-params.ts +35 -30
  1171. package/src/segment-fragments.ts +165 -0
  1172. package/src/segment-loader-promise.ts +49 -4
  1173. package/src/segment-system.tsx +383 -146
  1174. package/src/serialize.ts +243 -0
  1175. package/src/server/context.ts +426 -55
  1176. package/src/server/cookie-parse.ts +32 -0
  1177. package/src/server/cookie-store.ts +162 -15
  1178. package/src/server/handle-store.ts +190 -70
  1179. package/src/server/loader-registry.ts +33 -42
  1180. package/src/server/request-context.ts +818 -177
  1181. package/src/server.ts +7 -2
  1182. package/src/ssr/index.tsx +631 -187
  1183. package/src/ssr/inject-rsc-eager.ts +167 -0
  1184. package/src/ssr/preinit-client-references.ts +106 -0
  1185. package/src/ssr/ssr-root.tsx +262 -0
  1186. package/src/static-handler.ts +28 -15
  1187. package/src/testing/cache-status.ts +162 -0
  1188. package/src/testing/collect-handle.ts +46 -0
  1189. package/src/testing/dispatch.ts +951 -0
  1190. package/src/testing/dom.entry.ts +22 -0
  1191. package/src/testing/e2e/fixture.ts +188 -0
  1192. package/src/testing/e2e/index.ts +147 -0
  1193. package/src/testing/e2e/matchers.ts +35 -0
  1194. package/src/testing/e2e/page-helpers.ts +319 -0
  1195. package/src/testing/e2e/parity.ts +400 -0
  1196. package/src/testing/e2e/server.ts +195 -0
  1197. package/src/testing/flight-matchers.ts +97 -0
  1198. package/src/testing/flight-normalize.ts +11 -0
  1199. package/src/testing/flight-runtime.d.ts +57 -0
  1200. package/src/testing/flight-tree.ts +682 -0
  1201. package/src/testing/flight.entry.ts +52 -0
  1202. package/src/testing/flight.ts +257 -0
  1203. package/src/testing/generated-routes.ts +199 -0
  1204. package/src/testing/index.ts +121 -0
  1205. package/src/testing/internal/context.ts +380 -0
  1206. package/src/testing/internal/flight-client-globals.ts +30 -0
  1207. package/src/testing/internal/seed-vars.ts +54 -0
  1208. package/src/testing/render-handler.ts +371 -0
  1209. package/src/testing/render-route.tsx +667 -0
  1210. package/src/testing/run-loader.ts +423 -0
  1211. package/src/testing/run-middleware.ts +219 -0
  1212. package/src/testing/run-transition-when.ts +197 -0
  1213. package/src/testing/shell-status.ts +206 -0
  1214. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1215. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1216. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1217. package/src/testing/vitest-stubs/version.ts +5 -0
  1218. package/src/testing/vitest.ts +305 -0
  1219. package/src/theme/ThemeProvider.tsx +56 -84
  1220. package/src/theme/ThemeScript.tsx +7 -9
  1221. package/src/theme/constants.ts +52 -13
  1222. package/src/theme/index.ts +0 -7
  1223. package/src/theme/theme-context.ts +1 -5
  1224. package/src/theme/theme-script.ts +22 -21
  1225. package/src/theme/use-theme.ts +0 -3
  1226. package/src/types/boundaries.ts +15 -35
  1227. package/src/types/cache-types.ts +13 -4
  1228. package/src/types/error-types.ts +30 -90
  1229. package/src/types/global-namespace.ts +54 -41
  1230. package/src/types/handler-context.ts +111 -25
  1231. package/src/types/index.ts +4 -10
  1232. package/src/types/loader-types.ts +65 -7
  1233. package/src/types/request-scope.ts +8 -22
  1234. package/src/types/route-config.ts +20 -52
  1235. package/src/types/route-entry.ts +3 -6
  1236. package/src/types/segments.ts +130 -14
  1237. package/src/urls/include-helper.ts +38 -64
  1238. package/src/urls/include-provider.ts +71 -0
  1239. package/src/urls/index.ts +2 -11
  1240. package/src/urls/path-helper-types.ts +84 -25
  1241. package/src/urls/path-helper.ts +30 -110
  1242. package/src/urls/pattern-types.ts +101 -19
  1243. package/src/urls/response-types.ts +20 -19
  1244. package/src/urls/type-extraction.ts +98 -154
  1245. package/src/urls/urls-function.ts +1 -19
  1246. package/src/use-loader.tsx +355 -109
  1247. package/src/vercel/index.ts +11 -0
  1248. package/src/vercel/tracing.ts +89 -0
  1249. package/src/vite/debug.ts +1 -0
  1250. package/src/vite/discovery/bundle-postprocess.ts +18 -14
  1251. package/src/vite/discovery/client-urls-projection.ts +322 -0
  1252. package/src/vite/discovery/dev-prerender-cache.ts +117 -0
  1253. package/src/vite/discovery/discover-routers.ts +152 -153
  1254. package/src/vite/discovery/discovery-errors.ts +255 -0
  1255. package/src/vite/discovery/prerender-collection.ts +77 -69
  1256. package/src/vite/discovery/route-types-writer.ts +40 -84
  1257. package/src/vite/discovery/shell-prerender-phase.ts +397 -0
  1258. package/src/vite/discovery/state.ts +104 -6
  1259. package/src/vite/discovery/virtual-module-codegen.ts +226 -87
  1260. package/src/vite/encryption-key.ts +29 -0
  1261. package/src/vite/index.ts +12 -0
  1262. package/src/vite/inject-client-debug.ts +88 -0
  1263. package/src/vite/plugin-types.ts +243 -10
  1264. package/src/vite/plugins/cjs-to-esm.ts +11 -19
  1265. package/src/vite/plugins/client-ref-dedup.ts +0 -11
  1266. package/src/vite/plugins/client-ref-hashing.ts +12 -11
  1267. package/src/vite/plugins/cloudflare-protocol-stub.ts +1 -21
  1268. package/src/vite/plugins/expose-action-id.ts +6 -77
  1269. package/src/vite/plugins/expose-id-utils.ts +88 -55
  1270. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  1271. package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
  1272. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  1273. package/src/vite/plugins/expose-ids/router-transform.ts +98 -26
  1274. package/src/vite/plugins/expose-internal-ids.ts +103 -68
  1275. package/src/vite/plugins/performance-tracks.ts +9 -16
  1276. package/src/vite/plugins/refresh-cmd.ts +1 -1
  1277. package/src/vite/plugins/server-ref-hashing.ts +74 -0
  1278. package/src/vite/plugins/server-reference-pattern.ts +10 -0
  1279. package/src/vite/plugins/use-cache-transform.ts +26 -49
  1280. package/src/vite/plugins/vercel-output.ts +384 -0
  1281. package/src/vite/plugins/version-injector.ts +24 -40
  1282. package/src/vite/plugins/version-plugin.ts +45 -40
  1283. package/src/vite/plugins/virtual-entries.ts +193 -30
  1284. package/src/vite/rango.ts +238 -126
  1285. package/src/vite/router-discovery.ts +1120 -143
  1286. package/src/vite/utils/ast-handler-extract.ts +26 -35
  1287. package/src/vite/utils/bundle-analysis.ts +10 -15
  1288. package/src/vite/utils/client-chunks.ts +184 -0
  1289. package/src/vite/utils/directive-prologue.ts +40 -0
  1290. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1291. package/src/vite/utils/manifest-utils.ts +1 -59
  1292. package/src/vite/utils/package-resolution.ts +2 -73
  1293. package/src/vite/utils/prerender-utils.ts +96 -50
  1294. package/src/vite/utils/shared-utils.ts +156 -43
  1295. package/dist/__internal.d.ts +0 -83
  1296. package/dist/__internal.d.ts.map +0 -1
  1297. package/dist/__internal.js +0 -19
  1298. package/dist/__internal.js.map +0 -1
  1299. package/dist/__mocks__/version.d.ts +0 -7
  1300. package/dist/__mocks__/version.d.ts.map +0 -1
  1301. package/dist/__mocks__/version.js +0 -7
  1302. package/dist/__mocks__/version.js.map +0 -1
  1303. package/dist/__tests__/client-href.test.d.ts +0 -2
  1304. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  1305. package/dist/__tests__/client-href.test.js +0 -74
  1306. package/dist/__tests__/client-href.test.js.map +0 -1
  1307. package/dist/__tests__/component-utils.test.d.ts +0 -2
  1308. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  1309. package/dist/__tests__/component-utils.test.js +0 -51
  1310. package/dist/__tests__/component-utils.test.js.map +0 -1
  1311. package/dist/__tests__/event-controller.test.d.ts +0 -2
  1312. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  1313. package/dist/__tests__/event-controller.test.js +0 -538
  1314. package/dist/__tests__/event-controller.test.js.map +0 -1
  1315. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  1316. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  1317. package/dist/__tests__/helpers/route-tree.js +0 -374
  1318. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  1319. package/dist/__tests__/match-result.test.d.ts +0 -2
  1320. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  1321. package/dist/__tests__/match-result.test.js +0 -154
  1322. package/dist/__tests__/match-result.test.js.map +0 -1
  1323. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  1324. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  1325. package/dist/__tests__/navigation-store.test.js +0 -440
  1326. package/dist/__tests__/navigation-store.test.js.map +0 -1
  1327. package/dist/__tests__/partial-update.test.d.ts +0 -2
  1328. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  1329. package/dist/__tests__/partial-update.test.js +0 -1009
  1330. package/dist/__tests__/partial-update.test.js.map +0 -1
  1331. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  1332. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  1333. package/dist/__tests__/reverse-types.test.js +0 -656
  1334. package/dist/__tests__/reverse-types.test.js.map +0 -1
  1335. package/dist/__tests__/route-definition.test.d.ts +0 -2
  1336. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  1337. package/dist/__tests__/route-definition.test.js +0 -55
  1338. package/dist/__tests__/route-definition.test.js.map +0 -1
  1339. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  1340. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  1341. package/dist/__tests__/router-helpers.test.js +0 -377
  1342. package/dist/__tests__/router-helpers.test.js.map +0 -1
  1343. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  1344. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  1345. package/dist/__tests__/router-integration-2.test.js +0 -426
  1346. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  1347. package/dist/__tests__/router-integration.test.d.ts +0 -2
  1348. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  1349. package/dist/__tests__/router-integration.test.js +0 -1051
  1350. package/dist/__tests__/router-integration.test.js.map +0 -1
  1351. package/dist/__tests__/search-params.test.d.ts +0 -5
  1352. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  1353. package/dist/__tests__/search-params.test.js +0 -306
  1354. package/dist/__tests__/search-params.test.js.map +0 -1
  1355. package/dist/__tests__/segment-system.test.d.ts +0 -2
  1356. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  1357. package/dist/__tests__/segment-system.test.js +0 -627
  1358. package/dist/__tests__/segment-system.test.js.map +0 -1
  1359. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  1360. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  1361. package/dist/__tests__/static-handler-types.test.js +0 -63
  1362. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  1363. package/dist/__tests__/urls.test.d.ts +0 -2
  1364. package/dist/__tests__/urls.test.d.ts.map +0 -1
  1365. package/dist/__tests__/urls.test.js +0 -421
  1366. package/dist/__tests__/urls.test.js.map +0 -1
  1367. package/dist/__tests__/use-mount.test.d.ts +0 -2
  1368. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  1369. package/dist/__tests__/use-mount.test.js +0 -35
  1370. package/dist/__tests__/use-mount.test.js.map +0 -1
  1371. package/dist/bin/rango.d.ts +0 -2
  1372. package/dist/bin/rango.d.ts.map +0 -1
  1373. package/dist/bin/rango.js.map +0 -1
  1374. package/dist/browser/event-controller.d.ts +0 -191
  1375. package/dist/browser/event-controller.d.ts.map +0 -1
  1376. package/dist/browser/event-controller.js +0 -559
  1377. package/dist/browser/event-controller.js.map +0 -1
  1378. package/dist/browser/index.d.ts +0 -2
  1379. package/dist/browser/index.d.ts.map +0 -1
  1380. package/dist/browser/index.js +0 -14
  1381. package/dist/browser/index.js.map +0 -1
  1382. package/dist/browser/link-interceptor.d.ts +0 -38
  1383. package/dist/browser/link-interceptor.d.ts.map +0 -1
  1384. package/dist/browser/link-interceptor.js +0 -99
  1385. package/dist/browser/link-interceptor.js.map +0 -1
  1386. package/dist/browser/logging.d.ts +0 -10
  1387. package/dist/browser/logging.d.ts.map +0 -1
  1388. package/dist/browser/logging.js +0 -29
  1389. package/dist/browser/logging.js.map +0 -1
  1390. package/dist/browser/lru-cache.d.ts +0 -17
  1391. package/dist/browser/lru-cache.d.ts.map +0 -1
  1392. package/dist/browser/lru-cache.js +0 -50
  1393. package/dist/browser/lru-cache.js.map +0 -1
  1394. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  1395. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  1396. package/dist/browser/merge-segment-loaders.js +0 -102
  1397. package/dist/browser/merge-segment-loaders.js.map +0 -1
  1398. package/dist/browser/navigation-bridge.d.ts +0 -102
  1399. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  1400. package/dist/browser/navigation-bridge.js +0 -708
  1401. package/dist/browser/navigation-bridge.js.map +0 -1
  1402. package/dist/browser/navigation-client.d.ts +0 -25
  1403. package/dist/browser/navigation-client.d.ts.map +0 -1
  1404. package/dist/browser/navigation-client.js +0 -157
  1405. package/dist/browser/navigation-client.js.map +0 -1
  1406. package/dist/browser/navigation-store.d.ts +0 -101
  1407. package/dist/browser/navigation-store.d.ts.map +0 -1
  1408. package/dist/browser/navigation-store.js +0 -625
  1409. package/dist/browser/navigation-store.js.map +0 -1
  1410. package/dist/browser/partial-update.d.ts +0 -75
  1411. package/dist/browser/partial-update.d.ts.map +0 -1
  1412. package/dist/browser/partial-update.js +0 -426
  1413. package/dist/browser/partial-update.js.map +0 -1
  1414. package/dist/browser/react/Link.d.ts +0 -86
  1415. package/dist/browser/react/Link.d.ts.map +0 -1
  1416. package/dist/browser/react/Link.js +0 -128
  1417. package/dist/browser/react/Link.js.map +0 -1
  1418. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  1419. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  1420. package/dist/browser/react/NavigationProvider.js +0 -216
  1421. package/dist/browser/react/NavigationProvider.js.map +0 -1
  1422. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  1423. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  1424. package/dist/browser/react/ScrollRestoration.js +0 -57
  1425. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  1426. package/dist/browser/react/context.d.ts +0 -46
  1427. package/dist/browser/react/context.d.ts.map +0 -1
  1428. package/dist/browser/react/context.js +0 -10
  1429. package/dist/browser/react/context.js.map +0 -1
  1430. package/dist/browser/react/index.d.ts +0 -11
  1431. package/dist/browser/react/index.d.ts.map +0 -1
  1432. package/dist/browser/react/index.js +0 -22
  1433. package/dist/browser/react/index.js.map +0 -1
  1434. package/dist/browser/react/location-state-shared.d.ts +0 -63
  1435. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  1436. package/dist/browser/react/location-state-shared.js +0 -81
  1437. package/dist/browser/react/location-state-shared.js.map +0 -1
  1438. package/dist/browser/react/location-state.d.ts +0 -23
  1439. package/dist/browser/react/location-state.d.ts.map +0 -1
  1440. package/dist/browser/react/location-state.js +0 -29
  1441. package/dist/browser/react/location-state.js.map +0 -1
  1442. package/dist/browser/react/mount-context.d.ts +0 -24
  1443. package/dist/browser/react/mount-context.d.ts.map +0 -1
  1444. package/dist/browser/react/mount-context.js +0 -24
  1445. package/dist/browser/react/mount-context.js.map +0 -1
  1446. package/dist/browser/react/use-action.d.ts +0 -64
  1447. package/dist/browser/react/use-action.d.ts.map +0 -1
  1448. package/dist/browser/react/use-action.js +0 -134
  1449. package/dist/browser/react/use-action.js.map +0 -1
  1450. package/dist/browser/react/use-client-cache.d.ts +0 -41
  1451. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  1452. package/dist/browser/react/use-client-cache.js +0 -39
  1453. package/dist/browser/react/use-client-cache.js.map +0 -1
  1454. package/dist/browser/react/use-handle.d.ts +0 -31
  1455. package/dist/browser/react/use-handle.d.ts.map +0 -1
  1456. package/dist/browser/react/use-handle.js +0 -144
  1457. package/dist/browser/react/use-handle.js.map +0 -1
  1458. package/dist/browser/react/use-href.d.ts +0 -33
  1459. package/dist/browser/react/use-href.d.ts.map +0 -1
  1460. package/dist/browser/react/use-href.js +0 -39
  1461. package/dist/browser/react/use-href.js.map +0 -1
  1462. package/dist/browser/react/use-link-status.d.ts +0 -37
  1463. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  1464. package/dist/browser/react/use-link-status.js +0 -99
  1465. package/dist/browser/react/use-link-status.js.map +0 -1
  1466. package/dist/browser/react/use-mount.d.ts +0 -25
  1467. package/dist/browser/react/use-mount.d.ts.map +0 -1
  1468. package/dist/browser/react/use-mount.js +0 -30
  1469. package/dist/browser/react/use-mount.js.map +0 -1
  1470. package/dist/browser/react/use-navigation.d.ts +0 -27
  1471. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  1472. package/dist/browser/react/use-navigation.js +0 -87
  1473. package/dist/browser/react/use-navigation.js.map +0 -1
  1474. package/dist/browser/react/use-segments.d.ts +0 -38
  1475. package/dist/browser/react/use-segments.d.ts.map +0 -1
  1476. package/dist/browser/react/use-segments.js +0 -130
  1477. package/dist/browser/react/use-segments.js.map +0 -1
  1478. package/dist/browser/request-controller.d.ts +0 -26
  1479. package/dist/browser/request-controller.d.ts.map +0 -1
  1480. package/dist/browser/request-controller.js +0 -147
  1481. package/dist/browser/request-controller.js.map +0 -1
  1482. package/dist/browser/rsc-router.d.ts +0 -129
  1483. package/dist/browser/rsc-router.d.ts.map +0 -1
  1484. package/dist/browser/rsc-router.js +0 -195
  1485. package/dist/browser/rsc-router.js.map +0 -1
  1486. package/dist/browser/scroll-restoration.d.ts +0 -93
  1487. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  1488. package/dist/browser/scroll-restoration.js +0 -321
  1489. package/dist/browser/scroll-restoration.js.map +0 -1
  1490. package/dist/browser/segment-structure-assert.d.ts +0 -17
  1491. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  1492. package/dist/browser/segment-structure-assert.js +0 -59
  1493. package/dist/browser/segment-structure-assert.js.map +0 -1
  1494. package/dist/browser/server-action-bridge.d.ts +0 -26
  1495. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  1496. package/dist/browser/server-action-bridge.js +0 -668
  1497. package/dist/browser/server-action-bridge.js.map +0 -1
  1498. package/dist/browser/shallow.d.ts +0 -12
  1499. package/dist/browser/shallow.d.ts.map +0 -1
  1500. package/dist/browser/shallow.js +0 -34
  1501. package/dist/browser/shallow.js.map +0 -1
  1502. package/dist/browser/types.d.ts +0 -369
  1503. package/dist/browser/types.d.ts.map +0 -1
  1504. package/dist/browser/types.js +0 -2
  1505. package/dist/browser/types.js.map +0 -1
  1506. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  1507. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  1508. package/dist/build/__tests__/generate-cli.test.js +0 -237
  1509. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  1510. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  1511. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  1512. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  1513. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  1514. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  1515. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  1516. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  1517. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  1518. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  1519. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  1520. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  1521. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  1522. package/dist/build/generate-manifest.d.ts +0 -81
  1523. package/dist/build/generate-manifest.d.ts.map +0 -1
  1524. package/dist/build/generate-manifest.js +0 -276
  1525. package/dist/build/generate-manifest.js.map +0 -1
  1526. package/dist/build/generate-route-types.d.ts +0 -115
  1527. package/dist/build/generate-route-types.d.ts.map +0 -1
  1528. package/dist/build/generate-route-types.js +0 -740
  1529. package/dist/build/generate-route-types.js.map +0 -1
  1530. package/dist/build/index.d.ts +0 -21
  1531. package/dist/build/index.d.ts.map +0 -1
  1532. package/dist/build/index.js +0 -21
  1533. package/dist/build/index.js.map +0 -1
  1534. package/dist/build/route-trie.d.ts +0 -71
  1535. package/dist/build/route-trie.d.ts.map +0 -1
  1536. package/dist/build/route-trie.js +0 -175
  1537. package/dist/build/route-trie.js.map +0 -1
  1538. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  1539. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  1540. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  1541. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  1542. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  1543. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  1544. package/dist/cache/__tests__/document-cache.test.js +0 -345
  1545. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  1546. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  1547. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  1548. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  1549. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  1550. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  1551. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  1552. package/dist/cache/__tests__/memory-store.test.js +0 -367
  1553. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  1554. package/dist/cache/cache-scope.d.ts +0 -102
  1555. package/dist/cache/cache-scope.d.ts.map +0 -1
  1556. package/dist/cache/cache-scope.js +0 -440
  1557. package/dist/cache/cache-scope.js.map +0 -1
  1558. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  1559. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  1560. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  1561. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  1562. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  1563. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  1564. package/dist/cache/cf/cf-cache-store.js +0 -242
  1565. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  1566. package/dist/cache/cf/index.d.ts +0 -14
  1567. package/dist/cache/cf/index.d.ts.map +0 -1
  1568. package/dist/cache/cf/index.js +0 -17
  1569. package/dist/cache/cf/index.js.map +0 -1
  1570. package/dist/cache/document-cache.d.ts +0 -64
  1571. package/dist/cache/document-cache.d.ts.map +0 -1
  1572. package/dist/cache/document-cache.js +0 -228
  1573. package/dist/cache/document-cache.js.map +0 -1
  1574. package/dist/cache/index.d.ts +0 -19
  1575. package/dist/cache/index.d.ts.map +0 -1
  1576. package/dist/cache/index.js +0 -21
  1577. package/dist/cache/index.js.map +0 -1
  1578. package/dist/cache/memory-segment-store.d.ts +0 -110
  1579. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  1580. package/dist/cache/memory-segment-store.js +0 -117
  1581. package/dist/cache/memory-segment-store.js.map +0 -1
  1582. package/dist/cache/memory-store.d.ts +0 -41
  1583. package/dist/cache/memory-store.d.ts.map +0 -1
  1584. package/dist/cache/memory-store.js +0 -191
  1585. package/dist/cache/memory-store.js.map +0 -1
  1586. package/dist/cache/types.d.ts +0 -317
  1587. package/dist/cache/types.d.ts.map +0 -1
  1588. package/dist/cache/types.js +0 -12
  1589. package/dist/cache/types.js.map +0 -1
  1590. package/dist/client.d.ts +0 -248
  1591. package/dist/client.d.ts.map +0 -1
  1592. package/dist/client.js +0 -367
  1593. package/dist/client.js.map +0 -1
  1594. package/dist/client.rsc.d.ts +0 -26
  1595. package/dist/client.rsc.d.ts.map +0 -1
  1596. package/dist/client.rsc.js +0 -46
  1597. package/dist/client.rsc.js.map +0 -1
  1598. package/dist/component-utils.d.ts +0 -36
  1599. package/dist/component-utils.d.ts.map +0 -1
  1600. package/dist/component-utils.js +0 -61
  1601. package/dist/component-utils.js.map +0 -1
  1602. package/dist/components/DefaultDocument.d.ts +0 -13
  1603. package/dist/components/DefaultDocument.d.ts.map +0 -1
  1604. package/dist/components/DefaultDocument.js +0 -15
  1605. package/dist/components/DefaultDocument.js.map +0 -1
  1606. package/dist/debug.d.ts +0 -58
  1607. package/dist/debug.d.ts.map +0 -1
  1608. package/dist/debug.js +0 -157
  1609. package/dist/debug.js.map +0 -1
  1610. package/dist/default-error-boundary.d.ts +0 -11
  1611. package/dist/default-error-boundary.d.ts.map +0 -1
  1612. package/dist/default-error-boundary.js +0 -45
  1613. package/dist/default-error-boundary.js.map +0 -1
  1614. package/dist/deps/browser.d.ts +0 -2
  1615. package/dist/deps/browser.d.ts.map +0 -1
  1616. package/dist/deps/browser.js +0 -3
  1617. package/dist/deps/browser.js.map +0 -1
  1618. package/dist/deps/html-stream-client.d.ts +0 -2
  1619. package/dist/deps/html-stream-client.d.ts.map +0 -1
  1620. package/dist/deps/html-stream-client.js +0 -3
  1621. package/dist/deps/html-stream-client.js.map +0 -1
  1622. package/dist/deps/html-stream-server.d.ts +0 -2
  1623. package/dist/deps/html-stream-server.d.ts.map +0 -1
  1624. package/dist/deps/html-stream-server.js +0 -3
  1625. package/dist/deps/html-stream-server.js.map +0 -1
  1626. package/dist/deps/rsc.d.ts +0 -2
  1627. package/dist/deps/rsc.d.ts.map +0 -1
  1628. package/dist/deps/rsc.js +0 -4
  1629. package/dist/deps/rsc.js.map +0 -1
  1630. package/dist/deps/ssr.d.ts +0 -2
  1631. package/dist/deps/ssr.d.ts.map +0 -1
  1632. package/dist/deps/ssr.js +0 -3
  1633. package/dist/deps/ssr.js.map +0 -1
  1634. package/dist/errors.d.ts +0 -174
  1635. package/dist/errors.d.ts.map +0 -1
  1636. package/dist/errors.js +0 -241
  1637. package/dist/errors.js.map +0 -1
  1638. package/dist/handle.d.ts +0 -78
  1639. package/dist/handle.d.ts.map +0 -1
  1640. package/dist/handle.js +0 -82
  1641. package/dist/handle.js.map +0 -1
  1642. package/dist/handles/MetaTags.d.ts +0 -14
  1643. package/dist/handles/MetaTags.d.ts.map +0 -1
  1644. package/dist/handles/MetaTags.js +0 -136
  1645. package/dist/handles/MetaTags.js.map +0 -1
  1646. package/dist/handles/index.d.ts +0 -6
  1647. package/dist/handles/index.d.ts.map +0 -1
  1648. package/dist/handles/index.js +0 -6
  1649. package/dist/handles/index.js.map +0 -1
  1650. package/dist/handles/meta.d.ts +0 -39
  1651. package/dist/handles/meta.d.ts.map +0 -1
  1652. package/dist/handles/meta.js +0 -202
  1653. package/dist/handles/meta.js.map +0 -1
  1654. package/dist/host/__tests__/errors.test.d.ts +0 -2
  1655. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  1656. package/dist/host/__tests__/errors.test.js +0 -76
  1657. package/dist/host/__tests__/errors.test.js.map +0 -1
  1658. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  1659. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  1660. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  1661. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  1662. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  1663. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  1664. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  1665. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  1666. package/dist/host/__tests__/router.test.d.ts +0 -2
  1667. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  1668. package/dist/host/__tests__/router.test.js +0 -241
  1669. package/dist/host/__tests__/router.test.js.map +0 -1
  1670. package/dist/host/__tests__/testing.test.d.ts +0 -2
  1671. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  1672. package/dist/host/__tests__/testing.test.js +0 -64
  1673. package/dist/host/__tests__/testing.test.js.map +0 -1
  1674. package/dist/host/__tests__/utils.test.d.ts +0 -2
  1675. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  1676. package/dist/host/__tests__/utils.test.js +0 -29
  1677. package/dist/host/__tests__/utils.test.js.map +0 -1
  1678. package/dist/host/cookie-handler.d.ts +0 -34
  1679. package/dist/host/cookie-handler.d.ts.map +0 -1
  1680. package/dist/host/cookie-handler.js +0 -124
  1681. package/dist/host/cookie-handler.js.map +0 -1
  1682. package/dist/host/errors.d.ts +0 -56
  1683. package/dist/host/errors.d.ts.map +0 -1
  1684. package/dist/host/errors.js +0 -79
  1685. package/dist/host/errors.js.map +0 -1
  1686. package/dist/host/index.d.ts +0 -29
  1687. package/dist/host/index.d.ts.map +0 -1
  1688. package/dist/host/index.js +0 -32
  1689. package/dist/host/index.js.map +0 -1
  1690. package/dist/host/pattern-matcher.d.ts +0 -36
  1691. package/dist/host/pattern-matcher.d.ts.map +0 -1
  1692. package/dist/host/pattern-matcher.js +0 -172
  1693. package/dist/host/pattern-matcher.js.map +0 -1
  1694. package/dist/host/router.d.ts +0 -26
  1695. package/dist/host/router.d.ts.map +0 -1
  1696. package/dist/host/router.js +0 -218
  1697. package/dist/host/router.js.map +0 -1
  1698. package/dist/host/testing.d.ts +0 -36
  1699. package/dist/host/testing.d.ts.map +0 -1
  1700. package/dist/host/testing.js +0 -55
  1701. package/dist/host/testing.js.map +0 -1
  1702. package/dist/host/types.d.ts +0 -115
  1703. package/dist/host/types.d.ts.map +0 -1
  1704. package/dist/host/types.js +0 -7
  1705. package/dist/host/types.js.map +0 -1
  1706. package/dist/host/utils.d.ts +0 -21
  1707. package/dist/host/utils.d.ts.map +0 -1
  1708. package/dist/host/utils.js +0 -23
  1709. package/dist/host/utils.js.map +0 -1
  1710. package/dist/href-client.d.ts +0 -131
  1711. package/dist/href-client.d.ts.map +0 -1
  1712. package/dist/href-client.js +0 -64
  1713. package/dist/href-client.js.map +0 -1
  1714. package/dist/href-context.d.ts +0 -29
  1715. package/dist/href-context.d.ts.map +0 -1
  1716. package/dist/href-context.js +0 -21
  1717. package/dist/href-context.js.map +0 -1
  1718. package/dist/index.d.ts +0 -73
  1719. package/dist/index.d.ts.map +0 -1
  1720. package/dist/index.js +0 -91
  1721. package/dist/index.js.map +0 -1
  1722. package/dist/index.rsc.d.ts +0 -32
  1723. package/dist/index.rsc.d.ts.map +0 -1
  1724. package/dist/index.rsc.js +0 -40
  1725. package/dist/index.rsc.js.map +0 -1
  1726. package/dist/internal-debug.d.ts +0 -2
  1727. package/dist/internal-debug.d.ts.map +0 -1
  1728. package/dist/internal-debug.js +0 -5
  1729. package/dist/internal-debug.js.map +0 -1
  1730. package/dist/loader.d.ts +0 -14
  1731. package/dist/loader.d.ts.map +0 -1
  1732. package/dist/loader.js +0 -20
  1733. package/dist/loader.js.map +0 -1
  1734. package/dist/loader.rsc.d.ts +0 -19
  1735. package/dist/loader.rsc.d.ts.map +0 -1
  1736. package/dist/loader.rsc.js +0 -99
  1737. package/dist/loader.rsc.js.map +0 -1
  1738. package/dist/network-error-thrower.d.ts +0 -17
  1739. package/dist/network-error-thrower.d.ts.map +0 -1
  1740. package/dist/network-error-thrower.js +0 -14
  1741. package/dist/network-error-thrower.js.map +0 -1
  1742. package/dist/outlet-context.d.ts +0 -13
  1743. package/dist/outlet-context.d.ts.map +0 -1
  1744. package/dist/outlet-context.js +0 -3
  1745. package/dist/outlet-context.js.map +0 -1
  1746. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  1747. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  1748. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  1749. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  1750. package/dist/prerender/param-hash.d.ts +0 -16
  1751. package/dist/prerender/param-hash.d.ts.map +0 -1
  1752. package/dist/prerender/param-hash.js +0 -36
  1753. package/dist/prerender/param-hash.js.map +0 -1
  1754. package/dist/prerender/store.d.ts +0 -38
  1755. package/dist/prerender/store.d.ts.map +0 -1
  1756. package/dist/prerender/store.js +0 -61
  1757. package/dist/prerender/store.js.map +0 -1
  1758. package/dist/prerender.d.ts +0 -66
  1759. package/dist/prerender.d.ts.map +0 -1
  1760. package/dist/prerender.js +0 -57
  1761. package/dist/prerender.js.map +0 -1
  1762. package/dist/reverse.d.ts +0 -196
  1763. package/dist/reverse.d.ts.map +0 -1
  1764. package/dist/reverse.js +0 -78
  1765. package/dist/reverse.js.map +0 -1
  1766. package/dist/root-error-boundary.d.ts +0 -33
  1767. package/dist/root-error-boundary.d.ts.map +0 -1
  1768. package/dist/root-error-boundary.js +0 -165
  1769. package/dist/root-error-boundary.js.map +0 -1
  1770. package/dist/route-content-wrapper.d.ts +0 -46
  1771. package/dist/route-content-wrapper.d.ts.map +0 -1
  1772. package/dist/route-content-wrapper.js +0 -77
  1773. package/dist/route-content-wrapper.js.map +0 -1
  1774. package/dist/route-definition.d.ts +0 -421
  1775. package/dist/route-definition.d.ts.map +0 -1
  1776. package/dist/route-definition.js +0 -868
  1777. package/dist/route-definition.js.map +0 -1
  1778. package/dist/route-map-builder.d.ts +0 -155
  1779. package/dist/route-map-builder.d.ts.map +0 -1
  1780. package/dist/route-map-builder.js +0 -237
  1781. package/dist/route-map-builder.js.map +0 -1
  1782. package/dist/route-types.d.ts +0 -165
  1783. package/dist/route-types.d.ts.map +0 -1
  1784. package/dist/route-types.js +0 -7
  1785. package/dist/route-types.js.map +0 -1
  1786. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  1787. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  1788. package/dist/router/__tests__/handler-context.test.js +0 -65
  1789. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  1790. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  1791. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  1792. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  1793. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  1794. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  1795. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  1796. package/dist/router/__tests__/match-context.test.js +0 -92
  1797. package/dist/router/__tests__/match-context.test.js.map +0 -1
  1798. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  1799. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  1800. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  1801. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  1802. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  1803. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  1804. package/dist/router/__tests__/match-result.test.js +0 -457
  1805. package/dist/router/__tests__/match-result.test.js.map +0 -1
  1806. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  1807. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  1808. package/dist/router/__tests__/on-error.test.js +0 -678
  1809. package/dist/router/__tests__/on-error.test.js.map +0 -1
  1810. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  1811. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  1812. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  1813. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  1814. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  1815. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  1816. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  1817. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  1818. package/dist/router/error-handling.d.ts +0 -77
  1819. package/dist/router/error-handling.d.ts.map +0 -1
  1820. package/dist/router/error-handling.js +0 -202
  1821. package/dist/router/error-handling.js.map +0 -1
  1822. package/dist/router/handler-context.d.ts +0 -20
  1823. package/dist/router/handler-context.d.ts.map +0 -1
  1824. package/dist/router/handler-context.js +0 -198
  1825. package/dist/router/handler-context.js.map +0 -1
  1826. package/dist/router/intercept-resolution.d.ts +0 -66
  1827. package/dist/router/intercept-resolution.d.ts.map +0 -1
  1828. package/dist/router/intercept-resolution.js +0 -246
  1829. package/dist/router/intercept-resolution.js.map +0 -1
  1830. package/dist/router/loader-resolution.d.ts +0 -64
  1831. package/dist/router/loader-resolution.d.ts.map +0 -1
  1832. package/dist/router/loader-resolution.js +0 -284
  1833. package/dist/router/loader-resolution.js.map +0 -1
  1834. package/dist/router/logging.d.ts +0 -15
  1835. package/dist/router/logging.d.ts.map +0 -1
  1836. package/dist/router/logging.js +0 -99
  1837. package/dist/router/logging.js.map +0 -1
  1838. package/dist/router/manifest.d.ts +0 -22
  1839. package/dist/router/manifest.d.ts.map +0 -1
  1840. package/dist/router/manifest.js +0 -181
  1841. package/dist/router/manifest.js.map +0 -1
  1842. package/dist/router/match-api.d.ts +0 -35
  1843. package/dist/router/match-api.d.ts.map +0 -1
  1844. package/dist/router/match-api.js +0 -406
  1845. package/dist/router/match-api.js.map +0 -1
  1846. package/dist/router/match-context.d.ts +0 -206
  1847. package/dist/router/match-context.d.ts.map +0 -1
  1848. package/dist/router/match-context.js +0 -17
  1849. package/dist/router/match-context.js.map +0 -1
  1850. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  1851. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  1852. package/dist/router/match-middleware/background-revalidation.js +0 -75
  1853. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  1854. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  1855. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  1856. package/dist/router/match-middleware/cache-lookup.js +0 -257
  1857. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  1858. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  1859. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  1860. package/dist/router/match-middleware/cache-store.js +0 -108
  1861. package/dist/router/match-middleware/cache-store.js.map +0 -1
  1862. package/dist/router/match-middleware/index.d.ts +0 -81
  1863. package/dist/router/match-middleware/index.d.ts.map +0 -1
  1864. package/dist/router/match-middleware/index.js +0 -80
  1865. package/dist/router/match-middleware/index.js.map +0 -1
  1866. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  1867. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  1868. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  1869. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  1870. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  1871. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  1872. package/dist/router/match-middleware/segment-resolution.js +0 -53
  1873. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  1874. package/dist/router/match-pipelines.d.ts +0 -147
  1875. package/dist/router/match-pipelines.d.ts.map +0 -1
  1876. package/dist/router/match-pipelines.js +0 -82
  1877. package/dist/router/match-pipelines.js.map +0 -1
  1878. package/dist/router/match-result.d.ts +0 -126
  1879. package/dist/router/match-result.d.ts.map +0 -1
  1880. package/dist/router/match-result.js +0 -93
  1881. package/dist/router/match-result.js.map +0 -1
  1882. package/dist/router/metrics.d.ts +0 -20
  1883. package/dist/router/metrics.d.ts.map +0 -1
  1884. package/dist/router/metrics.js +0 -47
  1885. package/dist/router/metrics.js.map +0 -1
  1886. package/dist/router/middleware.d.ts +0 -249
  1887. package/dist/router/middleware.d.ts.map +0 -1
  1888. package/dist/router/middleware.js +0 -434
  1889. package/dist/router/middleware.js.map +0 -1
  1890. package/dist/router/middleware.test.d.ts +0 -2
  1891. package/dist/router/middleware.test.d.ts.map +0 -1
  1892. package/dist/router/middleware.test.js +0 -816
  1893. package/dist/router/middleware.test.js.map +0 -1
  1894. package/dist/router/pattern-matching.d.ts +0 -149
  1895. package/dist/router/pattern-matching.d.ts.map +0 -1
  1896. package/dist/router/pattern-matching.js +0 -349
  1897. package/dist/router/pattern-matching.js.map +0 -1
  1898. package/dist/router/revalidation.d.ts +0 -44
  1899. package/dist/router/revalidation.d.ts.map +0 -1
  1900. package/dist/router/revalidation.js +0 -147
  1901. package/dist/router/revalidation.js.map +0 -1
  1902. package/dist/router/router-context.d.ts +0 -135
  1903. package/dist/router/router-context.d.ts.map +0 -1
  1904. package/dist/router/router-context.js +0 -36
  1905. package/dist/router/router-context.js.map +0 -1
  1906. package/dist/router/segment-resolution.d.ts +0 -127
  1907. package/dist/router/segment-resolution.d.ts.map +0 -1
  1908. package/dist/router/segment-resolution.js +0 -919
  1909. package/dist/router/segment-resolution.js.map +0 -1
  1910. package/dist/router/trie-matching.d.ts +0 -40
  1911. package/dist/router/trie-matching.d.ts.map +0 -1
  1912. package/dist/router/trie-matching.js +0 -127
  1913. package/dist/router/trie-matching.js.map +0 -1
  1914. package/dist/router/types.d.ts +0 -136
  1915. package/dist/router/types.d.ts.map +0 -1
  1916. package/dist/router/types.js +0 -7
  1917. package/dist/router/types.js.map +0 -1
  1918. package/dist/router.d.ts +0 -753
  1919. package/dist/router.d.ts.map +0 -1
  1920. package/dist/router.gen.d.ts +0 -6
  1921. package/dist/router.gen.d.ts.map +0 -1
  1922. package/dist/router.gen.js +0 -6
  1923. package/dist/router.gen.js.map +0 -1
  1924. package/dist/router.js +0 -1304
  1925. package/dist/router.js.map +0 -1
  1926. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  1927. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  1928. package/dist/rsc/__tests__/helpers.test.js +0 -140
  1929. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  1930. package/dist/rsc/handler.d.ts +0 -45
  1931. package/dist/rsc/handler.d.ts.map +0 -1
  1932. package/dist/rsc/handler.js +0 -1172
  1933. package/dist/rsc/handler.js.map +0 -1
  1934. package/dist/rsc/helpers.d.ts +0 -16
  1935. package/dist/rsc/helpers.d.ts.map +0 -1
  1936. package/dist/rsc/helpers.js +0 -55
  1937. package/dist/rsc/helpers.js.map +0 -1
  1938. package/dist/rsc/index.d.ts +0 -22
  1939. package/dist/rsc/index.d.ts.map +0 -1
  1940. package/dist/rsc/index.js +0 -23
  1941. package/dist/rsc/index.js.map +0 -1
  1942. package/dist/rsc/nonce.d.ts +0 -9
  1943. package/dist/rsc/nonce.d.ts.map +0 -1
  1944. package/dist/rsc/nonce.js +0 -18
  1945. package/dist/rsc/nonce.js.map +0 -1
  1946. package/dist/rsc/types.d.ts +0 -206
  1947. package/dist/rsc/types.d.ts.map +0 -1
  1948. package/dist/rsc/types.js +0 -8
  1949. package/dist/rsc/types.js.map +0 -1
  1950. package/dist/search-params.d.ts +0 -103
  1951. package/dist/search-params.d.ts.map +0 -1
  1952. package/dist/search-params.js +0 -74
  1953. package/dist/search-params.js.map +0 -1
  1954. package/dist/segment-system.d.ts +0 -75
  1955. package/dist/segment-system.d.ts.map +0 -1
  1956. package/dist/segment-system.js +0 -336
  1957. package/dist/segment-system.js.map +0 -1
  1958. package/dist/server/context.d.ts +0 -245
  1959. package/dist/server/context.d.ts.map +0 -1
  1960. package/dist/server/context.js +0 -197
  1961. package/dist/server/context.js.map +0 -1
  1962. package/dist/server/fetchable-loader-store.d.ts +0 -18
  1963. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  1964. package/dist/server/fetchable-loader-store.js +0 -18
  1965. package/dist/server/fetchable-loader-store.js.map +0 -1
  1966. package/dist/server/handle-store.d.ts +0 -85
  1967. package/dist/server/handle-store.d.ts.map +0 -1
  1968. package/dist/server/handle-store.js +0 -142
  1969. package/dist/server/handle-store.js.map +0 -1
  1970. package/dist/server/loader-registry.d.ts +0 -55
  1971. package/dist/server/loader-registry.d.ts.map +0 -1
  1972. package/dist/server/loader-registry.js +0 -132
  1973. package/dist/server/loader-registry.js.map +0 -1
  1974. package/dist/server/request-context.d.ts +0 -226
  1975. package/dist/server/request-context.d.ts.map +0 -1
  1976. package/dist/server/request-context.js +0 -290
  1977. package/dist/server/request-context.js.map +0 -1
  1978. package/dist/server/root-layout.d.ts +0 -4
  1979. package/dist/server/root-layout.d.ts.map +0 -1
  1980. package/dist/server/root-layout.js +0 -5
  1981. package/dist/server/root-layout.js.map +0 -1
  1982. package/dist/server.d.ts +0 -15
  1983. package/dist/server.d.ts.map +0 -1
  1984. package/dist/server.js +0 -20
  1985. package/dist/server.js.map +0 -1
  1986. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  1987. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  1988. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  1989. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  1990. package/dist/ssr/index.d.ts +0 -98
  1991. package/dist/ssr/index.d.ts.map +0 -1
  1992. package/dist/ssr/index.js +0 -158
  1993. package/dist/ssr/index.js.map +0 -1
  1994. package/dist/static-handler.d.ts +0 -50
  1995. package/dist/static-handler.d.ts.map +0 -1
  1996. package/dist/static-handler.gen.d.ts +0 -5
  1997. package/dist/static-handler.gen.d.ts.map +0 -1
  1998. package/dist/static-handler.gen.js +0 -5
  1999. package/dist/static-handler.gen.js.map +0 -1
  2000. package/dist/static-handler.js +0 -29
  2001. package/dist/static-handler.js.map +0 -1
  2002. package/dist/theme/ThemeProvider.d.ts +0 -20
  2003. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  2004. package/dist/theme/ThemeProvider.js +0 -240
  2005. package/dist/theme/ThemeProvider.js.map +0 -1
  2006. package/dist/theme/ThemeScript.d.ts +0 -48
  2007. package/dist/theme/ThemeScript.d.ts.map +0 -1
  2008. package/dist/theme/ThemeScript.js +0 -13
  2009. package/dist/theme/ThemeScript.js.map +0 -1
  2010. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  2011. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  2012. package/dist/theme/__tests__/theme.test.js +0 -103
  2013. package/dist/theme/__tests__/theme.test.js.map +0 -1
  2014. package/dist/theme/constants.d.ts +0 -29
  2015. package/dist/theme/constants.d.ts.map +0 -1
  2016. package/dist/theme/constants.js +0 -48
  2017. package/dist/theme/constants.js.map +0 -1
  2018. package/dist/theme/index.d.ts +0 -31
  2019. package/dist/theme/index.d.ts.map +0 -1
  2020. package/dist/theme/index.js +0 -36
  2021. package/dist/theme/index.js.map +0 -1
  2022. package/dist/theme/theme-context.d.ts +0 -40
  2023. package/dist/theme/theme-context.d.ts.map +0 -1
  2024. package/dist/theme/theme-context.js +0 -60
  2025. package/dist/theme/theme-context.js.map +0 -1
  2026. package/dist/theme/theme-script.d.ts +0 -27
  2027. package/dist/theme/theme-script.d.ts.map +0 -1
  2028. package/dist/theme/theme-script.js +0 -147
  2029. package/dist/theme/theme-script.js.map +0 -1
  2030. package/dist/theme/types.d.ts +0 -163
  2031. package/dist/theme/types.d.ts.map +0 -1
  2032. package/dist/theme/types.js +0 -11
  2033. package/dist/theme/types.js.map +0 -1
  2034. package/dist/theme/use-theme.d.ts +0 -12
  2035. package/dist/theme/use-theme.d.ts.map +0 -1
  2036. package/dist/theme/use-theme.js +0 -40
  2037. package/dist/theme/use-theme.js.map +0 -1
  2038. package/dist/types.d.ts +0 -1479
  2039. package/dist/types.d.ts.map +0 -1
  2040. package/dist/types.js +0 -10
  2041. package/dist/types.js.map +0 -1
  2042. package/dist/urls.d.ts +0 -441
  2043. package/dist/urls.d.ts.map +0 -1
  2044. package/dist/urls.gen.d.ts +0 -8
  2045. package/dist/urls.gen.d.ts.map +0 -1
  2046. package/dist/urls.gen.js +0 -8
  2047. package/dist/urls.gen.js.map +0 -1
  2048. package/dist/urls.js +0 -443
  2049. package/dist/urls.js.map +0 -1
  2050. package/dist/use-loader.d.ts +0 -127
  2051. package/dist/use-loader.d.ts.map +0 -1
  2052. package/dist/use-loader.js +0 -237
  2053. package/dist/use-loader.js.map +0 -1
  2054. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  2055. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  2056. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  2057. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  2058. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  2059. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  2060. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  2061. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  2062. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  2063. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  2064. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  2065. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  2066. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  2067. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  2068. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  2069. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  2070. package/dist/vite/ast-handler-extract.d.ts +0 -49
  2071. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  2072. package/dist/vite/ast-handler-extract.js +0 -249
  2073. package/dist/vite/ast-handler-extract.js.map +0 -1
  2074. package/dist/vite/expose-action-id.d.ts +0 -19
  2075. package/dist/vite/expose-action-id.d.ts.map +0 -1
  2076. package/dist/vite/expose-action-id.js +0 -250
  2077. package/dist/vite/expose-action-id.js.map +0 -1
  2078. package/dist/vite/expose-id-utils.d.ts +0 -69
  2079. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  2080. package/dist/vite/expose-id-utils.js +0 -289
  2081. package/dist/vite/expose-id-utils.js.map +0 -1
  2082. package/dist/vite/expose-internal-ids.d.ts +0 -22
  2083. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  2084. package/dist/vite/expose-internal-ids.js +0 -886
  2085. package/dist/vite/expose-internal-ids.js.map +0 -1
  2086. package/dist/vite/index.d.ts +0 -149
  2087. package/dist/vite/index.d.ts.map +0 -1
  2088. package/dist/vite/index.js.bak +0 -5448
  2089. package/dist/vite/index.js.map +0 -1
  2090. package/dist/vite/index.named-routes.gen.ts +0 -103
  2091. package/dist/vite/package-resolution.d.ts +0 -43
  2092. package/dist/vite/package-resolution.d.ts.map +0 -1
  2093. package/dist/vite/package-resolution.js +0 -112
  2094. package/dist/vite/package-resolution.js.map +0 -1
  2095. package/dist/vite/virtual-entries.d.ts +0 -25
  2096. package/dist/vite/virtual-entries.d.ts.map +0 -1
  2097. package/dist/vite/virtual-entries.js +0 -110
  2098. package/dist/vite/virtual-entries.js.map +0 -1
  2099. package/src/browser/action-response-classifier.ts +0 -99
  2100. package/src/browser/react/use-client-cache.ts +0 -58
  2101. package/src/browser/shallow.ts +0 -40
  2102. package/src/handles/index.ts +0 -7
  2103. package/src/network-error-thrower.tsx +0 -23
  2104. package/src/router/middleware-cookies.ts +0 -55
package/README.md CHANGED
@@ -1,79 +1,42 @@
1
- # @rangojs/router
1
+ # Rango
2
2
 
3
- Named-route RSC router with structural composability and type-safe partial rendering for Vite.
3
+ A code-first, type-safe React Server Components router. Django-inspired:
4
+ routes are expressed in one visible tree, URLs are built from names, and
5
+ everything past the core is opt-in.
4
6
 
5
- > **Experimental:** This package is under active development. APIs may change between releases. Install with `@experimental` tag.
7
+ > **Experimental:** This package is under active development. APIs may change
8
+ > between releases. Install with `@experimental` tag.
6
9
 
7
- ## Features
10
+ This page is a tour: it builds one small shop and meets the entire core API
11
+ along the way — about six primitives. Everything else is opt-in and linked at
12
+ the end. For the design rationale behind these APIs, read
13
+ [Why Rango](https://github.com/ivogt/vite-rsc/blob/main/packages/rangojs-router/docs/why-rango.md); this page shows how it feels, that page
14
+ argues why it's right.
8
15
 
9
- - **Named routes** — `reverse("blogPost", { slug })` for type-safe URL generation (Django-style)
10
- - **Structural composability** — Attach routes, loaders, middleware, handles, caching, prerendering, and static generation without hiding the route tree
11
- - **Composable URL patterns** — Django-style `urls()` DSL with `path`, `layout`, `include`
12
- - **Data loaders** — `createLoader()` with automatic streaming and Suspense integration
13
- - **Server actions** — `"use server"` mutations with `useActionState`, `useOptimistic`, and per-segment + per-loader `revalidate()` rules
14
- - **Live data layer** — Pre-render or cache the UI shell while loaders stay live by default at request time
15
- - **Layouts & nesting** — Nested layouts with `<Outlet />` and parallel routes
16
- - **Segment-level caching** — `cache()` DSL with TTL/SWR and pluggable cache stores
17
- - **Middleware** — Route-level middleware with cookie and header access
18
- - **Pre-rendering** — `Prerender()` and `Static()` handlers for build-time rendering
19
- - **Theme support** — Light/dark mode with FOUC prevention and system detection
20
- - **Host routing** — Multi-app routing by domain/subdomain via `@rangojs/router/host`
21
- - **Response routes** — `path.json()`, `path.text()`, `path.xml()` for API endpoints
22
- - **Trailing slash control** — Per-route canonical URLs with `"never"`, `"always"`, or `"ignore"`
23
- - **CLI codegen** — `rango generate` for route type generation
16
+ ## Start a new app
24
17
 
25
- ## Design Docs
26
-
27
- - [Execution model](./docs/internal/execution-model.md)
28
- - [Semantic change checklist](./docs/internal/semantic-change-checklist.md)
29
- - [Stability roadmap](./docs/internal/stability-roadmap.md)
30
-
31
- ## Installation
18
+ The recommended path is to scaffold a complete app with
19
+ [`create-rango`](https://github.com/rangojs/templates):
32
20
 
33
21
  ```bash
34
- npm install @rangojs/router@experimental
22
+ pnpm create rango my-app
35
23
  ```
36
24
 
37
- Peer dependencies:
25
+ Select a deployment target with `--template basic`, `--template cloudflare`, or
26
+ `--template vercel`. The templates include streaming RSC, typed routes, Server
27
+ Actions, Tailwind CSS, and production deployment configuration. For a plain
28
+ JavaScript Node app, add `--template basic --js`. With npm, run
29
+ `npm create rango@latest my-app`. The scaffolder currently requires Node.js 24
30
+ or newer.
38
31
 
39
- ```bash
40
- npm install react @vitejs/plugin-rsc
41
- ```
32
+ ## Install manually
42
33
 
43
- For Cloudflare Workers:
34
+ If you are adding Rango to an existing Vite RSC project:
44
35
 
45
36
  ```bash
46
- npm install @cloudflare/vite-plugin
37
+ npm install @rangojs/router@experimental react @vitejs/plugin-rsc
47
38
  ```
48
39
 
49
- ## Import Paths
50
-
51
- Use these import paths consistently:
52
-
53
- - `@rangojs/router` — server/RSC router APIs, route DSL, `createRouter`, `urls`, `redirect`, `Prerender`, `Static`, shared types
54
- - `@rangojs/router/client` — hooks and components such as `Link`, `Outlet`, `href`, `useNavigation`, `useLoader`, `useAction`, `useLocationState`
55
- - `@rangojs/router/cache` — public cache APIs such as `CFCacheStore`, `MemorySegmentCacheStore`, `createDocumentCacheMiddleware`
56
- - `@rangojs/router/host`, `@rangojs/router/theme`, `@rangojs/router/vite` — specialized public subpaths
57
- - `@rangojs/router/rsc`, `@rangojs/router/ssr` — advanced server-only integration subpaths for custom request/HTML pipelines
58
-
59
- Use only subpaths that are explicitly exported from the package. Avoid deep imports such as `@rangojs/router/cache/cf`.
60
-
61
- `@rangojs/router` is conditionally resolved. Server-only root APIs such as
62
- `createRouter()`, `urls()`, `redirect()`, `Prerender()`, and `cookies()` rely on
63
- the `react-server` export condition and are meant to run in router definitions,
64
- handlers, and other RSC/server modules. Outside that environment the root entry
65
- falls back to stub implementations that throw guidance errors.
66
-
67
- If you hit a root-entrypoint stub error:
68
-
69
- - hooks and components like `Link`, `Outlet`, `useLoader`, `useNavigation`, and `MetaTags` belong in `@rangojs/router/client`
70
- - cache APIs like `CFCacheStore` and `createDocumentCacheMiddleware` belong in `@rangojs/router/cache`
71
- - host-router APIs belong in `@rangojs/router/host`
72
-
73
- ## Quick Start
74
-
75
- ### Vite Config
76
-
77
40
  ```ts
78
41
  // vite.config.ts
79
42
  import react from "@vitejs/plugin-react";
@@ -85,967 +48,436 @@ export default defineConfig({
85
48
  });
86
49
  ```
87
50
 
88
- ### Router
51
+ The `cloudflare` preset targets Cloudflare Workers (add
52
+ `@cloudflare/vite-plugin`); the `vercel` preset emits a ready-to-deploy
53
+ `.vercel/output` (Build Output API) from a plain `vite build` — see the
54
+ [`/vercel` skill](./skills/vercel/SKILL.md); omit `preset` for the default
55
+ Node setup.
89
56
 
90
- This file is a server/RSC module and should import router construction APIs from
91
- `@rangojs/router`.
57
+ ## Using the skills with your coding agent
92
58
 
93
- ```tsx
94
- // src/router.tsx
95
- import { createRouter } from "@rangojs/router";
59
+ This package ships agent skills in `node_modules/@rangojs/router/skills/` —
60
+ task-focused guides written for LLM coding agents. Start at
61
+ `skills/rango/SKILL.md` (the mental model + catalog); a machine-readable index
62
+ is at `skills/catalog.json`.
96
63
 
97
- export const router = createRouter().routes(({ path }) => [
98
- path("/", HomePage, { name: "home" }),
99
- path("/about", AboutPage, { name: "about" }),
100
- ]);
64
+ - **Claude Code**: point it at the skills (e.g. "read
65
+ node_modules/@rangojs/router/skills/rango/SKILL.md before routing work"), or
66
+ copy/symlink the directories you use into your project's `.claude/skills/`.
67
+ - **Other agents (Cursor, Codex CLI, Gemini CLI, ...)**: these harnesses
68
+ auto-discover skills from `.agents/skills/` in your project (or
69
+ `~/.agents/skills/`) — copy or symlink the skill directories you use from
70
+ `node_modules/@rangojs/router/skills/<name>` into `.agents/skills/<name>`.
71
+ The files are plain markdown; cross-references like `/loader` name sibling
72
+ skill directories.
101
73
 
102
- export const reverse = router.reverse;
103
- // reverse("home") -> "/"
104
- ```
74
+ ## 1. Pages
105
75
 
106
- For larger apps, extract route modules with `urls()` and compose with `include()`:
76
+ A router is a tree. `path()` places a page, `layout()` wraps children,
77
+ `{ name }` gives a route an identity:
107
78
 
108
79
  ```tsx
80
+ // src/router.tsx
109
81
  import { createRouter, urls } from "@rangojs/router";
110
- import { blogPatterns } from "./urls/blog";
82
+ import { Document } from "./document";
83
+ import { ShopLayout } from "./layouts/shop";
84
+ import { HomePage } from "./routes/home";
85
+ import { ProductPage } from "./routes/product";
111
86
 
112
- const urlpatterns = urls(({ path, include }) => [
113
- path("/", HomePage, { name: "home" }),
114
- include("/blog", blogPatterns, { name: "blog" }),
87
+ const urlpatterns = urls(({ path, layout }) => [
88
+ layout(<ShopLayout />, () => [
89
+ path("/", HomePage, { name: "home" }),
90
+ path("/products/:slug", ProductPage, { name: "product" }),
91
+ ]),
115
92
  ]);
116
93
 
117
- export const router = createRouter().routes(urlpatterns);
118
- // reverse("blog.post", { slug: "hello-world" }) -> "/blog/hello-world"
94
+ export const router = createRouter({ document: Document }).routes(urlpatterns);
119
95
  ```
120
96
 
121
- ### Document
97
+ ```tsx
98
+ // src/layouts/shop.tsx
99
+ import { Outlet } from "@rangojs/router/client";
100
+
101
+ export function ShopLayout() {
102
+ return (
103
+ <div>
104
+ <nav>Shop</nav>
105
+ <main>
106
+ <Outlet /> {/* child routes render here */}
107
+ </main>
108
+ </div>
109
+ );
110
+ }
111
+ ```
122
112
 
123
113
  ```tsx
124
114
  // src/document.tsx
125
115
  "use client";
126
116
 
127
117
  import type { ReactNode } from "react";
128
- import { MetaTags } from "@rangojs/router/client";
118
+ import { MetaTags, Scripts } from "@rangojs/router/client";
129
119
 
130
120
  export function Document({ children }: { children: ReactNode }) {
131
121
  return (
132
122
  <html lang="en">
133
123
  <head>
134
124
  <MetaTags />
125
+ <Scripts />
135
126
  </head>
136
- <body>{children}</body>
127
+ <body>
128
+ <Scripts position="body" />
129
+ {children}
130
+ </body>
137
131
  </html>
138
132
  );
139
133
  }
140
134
  ```
141
135
 
142
- ## Defining Routes
143
-
144
- Rango is a named-route router first.
145
-
146
- Paths define where a route lives. Names define how the app refers to it.
147
-
148
- It is also structurally composable.
149
-
150
- As an app grows, routes can pull in external handlers, loaders, middleware, handles, cache policy, intercepts, prerendering, and static generation while keeping the route tree visible at the composition site.
151
-
152
- ### Named Routes
153
-
154
- ```tsx
155
- import { urls } from "@rangojs/router";
156
-
157
- const urlpatterns = urls(({ path }) => [
158
- path("/", HomePage, { name: "home" }),
159
- path("/product/:slug", ProductPage, { name: "product" }),
160
- path("/search/:query?", SearchPage, { name: "search" }),
161
- path("/files/*", FilesPage, { name: "files" }),
162
- ]);
163
- ```
164
-
165
- Use `ctx.reverse()` from handler context as the default way to link to routes from server code:
166
-
167
- ```tsx
168
- const ProductPage: Handler<"product"> = (ctx) => {
169
- const url = ctx.reverse("product", { slug: "widget" }); // "/product/widget"
170
- const searchUrl = ctx.reverse("search", undefined, { q: "rsc" }); // "/search?q=rsc"
171
- return <Link to={url}>Widget</Link>;
172
- };
173
- ```
174
-
175
- `router.reverse()` (exported from the router module) is the same function without a handler context, useful in scripts or tests. In request code, prefer `ctx.reverse()` — it auto-fills mount params from the current match.
176
-
177
- ### Composable URL Modules
178
-
179
- Local route names compose cleanly with `include(..., { name })`:
180
-
181
- ```tsx
182
- import { urls } from "@rangojs/router";
183
-
184
- export const blogPatterns = urls(({ path }) => [
185
- path("/", BlogIndexPage, { name: "index" }),
186
- path("/:slug", BlogPostPage, { name: "post" }),
187
- ]);
188
-
189
- export const urlpatterns = urls(({ path, include }) => [
190
- path("/", HomePage, { name: "home" }),
191
- include("/blog", blogPatterns, { name: "blog" }),
192
- ]);
193
-
194
- router.reverse("blog.index"); // "/blog"
195
- router.reverse("blog.post", { slug: "hello-world" }); // "/blog/hello-world"
196
- ```
197
-
198
- This is the core composition model:
199
-
200
- - Paths stay local to the module that defines them
201
- - Names become stable references across the app
202
- - `include()` scales those names without forcing raw path-string coupling
203
-
204
- ### Structural Composability
205
-
206
- Rango avoids the usual tradeoff between modularity and visibility.
207
-
208
- You can extract route behavior into separate files or packages and still keep one readable route definition that shows the structure of the app.
209
-
210
- ```tsx
211
- import { urls } from "@rangojs/router";
212
- import { ProductPage } from "./routes/product";
213
- import { ProductLoader } from "./loaders/product";
214
- import { productMiddleware } from "./middleware/product";
215
- import { productRevalidate } from "./revalidation/product";
216
-
217
- const shopPatterns = urls(({ path, loader, middleware, revalidate, cache }) => [
218
- path("/product/:slug", ProductPage, { name: "product" }, () => [
219
- middleware(productMiddleware),
220
- loader(ProductLoader),
221
- revalidate(productRevalidate),
222
- cache({ ttl: 300 }),
223
- ]),
224
- ]);
225
- ```
226
-
227
- The route tree stays explicit even when behavior is modular.
228
-
229
- This applies to:
230
-
231
- - external route modules mounted with `include()`
232
- - imported loaders, middleware, and handles attached at the route site
233
- - prerendering and static generation attached without turning the route tree opaque
136
+ (The built-in `DefaultDocument` already wires all of this — a custom document
137
+ is optional.)
234
138
 
235
- ### Loaders As the Live Data Layer
236
-
237
- Rango separates app structure from app data.
238
-
239
- Routes, layouts, and pre-rendered segments can be static or cached, while
240
- loaders stay live by default and re-resolve at request time.
241
-
242
- This means you can pre-render or cache the shell of a page without freezing its
243
- data.
244
-
245
- - `cache()` caches route structure and rendered UI segments
246
- - `Prerender()` skips loaders at build time
247
- - `loader()` provides fresh request-time data
248
- - individual loaders can opt into caching explicitly when needed
249
-
250
- ```tsx
251
- import { urls, Prerender } from "@rangojs/router";
252
- import { ArticleLoader } from "./loaders/article";
253
-
254
- const docsPatterns = urls(({ path, loader }) => [
255
- path("/docs/:slug", Prerender(DocsArticle), { name: "docs.article" }, () => [
256
- loader(ArticleLoader), // fresh by default
257
- ]),
258
- ]);
259
- ```
260
-
261
- Pre-render the page, keep the data live.
262
-
263
- ### Typed Handlers
264
-
265
- Route handlers receive a typed context with params, search params, and `reverse()`:
139
+ A handler is a function of `ctx`. Typing it by route name gives typed params
140
+ — the Vite plugin generates the route map automatically, nothing to register:
266
141
 
267
142
  ```tsx
143
+ // src/routes/product.tsx
268
144
  import type { Handler } from "@rangojs/router";
269
145
 
270
146
  export const ProductPage: Handler<"product"> = (ctx) => {
271
- const { slug } = ctx.params; // typed from pattern
272
- const homeUrl = ctx.reverse("home"); // type-safe URL by route name
273
- return <h1>Product: {slug}</h1>;
274
- };
275
- ```
276
-
277
- ### Choosing a Handler Style
278
-
279
- All handler typing styles are supported, but they solve different problems:
280
-
281
- - `Handler<"product">` — default for named app routes
282
- - `Handler<".post", ScopedRouteMap<"blog">>` — best for reusable included modules
283
- - `Handler<"/blog/:slug">` — good for unnamed or local-only extracted handlers
284
- - `Handler<{ slug: string }>` — escape hatch for advanced or decoupled cases
285
-
286
- Example of a scoped local name inside a mounted module:
287
-
288
- ```tsx
289
- import type { Handler } from "@rangojs/router";
290
- import type { ScopedRouteMap } from "@rangojs/router/__internal";
291
-
292
- type BlogRoutes = ScopedRouteMap<"blog">;
293
-
294
- export const BlogPostPage: Handler<".post", BlogRoutes> = (ctx) => {
295
- return <a href={ctx.reverse(".index")}>Back to blog</a>;
296
- };
297
- ```
298
-
299
- See [`../../docs/named-routes.md`](../../docs/named-routes.md) for the recommended mental model.
300
-
301
- ### Search Params
302
-
303
- Define a search schema on the route for type-safe search parameters:
304
-
305
- ```tsx
306
- const urlpatterns = urls(({ path }) => [
307
- path("/search", SearchPage, {
308
- name: "search",
309
- search: { q: "string", page: "number?", sort: "string?" },
310
- }),
311
- ]);
312
-
313
- // Handler receives typed search params via ctx.search
314
- const SearchPage: Handler<"search"> = (ctx) => {
315
- const { q, page, sort } = ctx.search;
316
- // q: string, page: number | undefined, sort: string | undefined
147
+ return <h1>{ctx.params.slug}</h1>; // slug: string, from the pattern
317
148
  };
318
149
  ```
319
150
 
320
- ### Trailing Slash Handling
321
-
322
- Trailing slash behavior is a current `path()` feature.
323
-
324
- Set it per route with `trailingSlash`:
151
+ And because routes have names, URLs are built, never hand-written:
325
152
 
326
153
  ```tsx
327
- const urlpatterns = urls(({ path }) => [
328
- path("/about", AboutPage, {
329
- name: "about",
330
- trailingSlash: "never",
331
- }),
332
- path("/docs/", DocsPage, {
333
- name: "docs",
334
- trailingSlash: "always",
335
- }),
336
- path("/webhook", WebhookHandler, {
337
- name: "webhook",
338
- trailingSlash: "ignore",
339
- }),
340
- ]);
154
+ const url = ctx.reverse("product", { slug: "espresso-cup" });
155
+ // "/products/espresso-cup" — name and params compile-time checked
341
156
  ```
342
157
 
343
- Modes:
344
-
345
- - `"never"` — canonical URL has no trailing slash, redirects `/about/` to `/about`
346
- - `"always"` — canonical URL has a trailing slash, redirects `/docs` to `/docs/`
347
- - `"ignore"` — matches both forms without redirect
158
+ Rename `/products/:slug` to `/shop/:slug` in the one place it's defined and
159
+ every link, redirect, and prefetch follows. In client components, `href()`
160
+ validates static paths against the registered patterns:
161
+ `<Link to={href("/")}>Home</Link>`.
348
162
 
349
- Default behavior when `trailingSlash` is omitted:
163
+ The tree is also lazy-first, which is the shape serverless cold starts want.
164
+ `include()` mounts a whole route module under a prefix — and with the async
165
+ form, `include("/shop", () => import("./shop"))`, the group is code-split:
166
+ its module doesn't load or run until a request matches it, a group nobody
167
+ visits never evaluates at all, and warm requests run zero route handlers.
168
+ Boot cost stays flat as the app grows — one module body at startup, not one
169
+ per group — while matching stays an `O(path length)` prefix trie, identical
170
+ in dev and production. None of this is assumed: the trie is benchmarked
171
+ in-repo against multi-thousand-route manifests, and the lazy guarantees are
172
+ pinned by run-count tests (see
173
+ [matching & lazy discovery](https://github.com/ivogt/vite-rsc/blob/main/packages/rangojs-router/docs/internal/matching-and-lazy-discovery.md)).
174
+ Grow the tree without watching the boot time.
350
175
 
351
- - There is no separate global default mode
352
- - If the pattern is defined without a trailing slash, the canonical URL is the no-slash form
353
- - If the pattern is defined with a trailing slash, the canonical URL is the slash form
354
- - The router redirects to the canonical form based on the pattern you defined
176
+ That's a working site. Everything below adds to this app.
355
177
 
356
- The recommended public API is the per-route `path(..., { trailingSlash })` option. Use `"ignore"` sparingly, especially on content pages, because `/x` and `/x/` are distinct URLs.
178
+ ## 2. Data
357
179
 
358
- ### Response Routes
359
-
360
- Define API endpoints that bypass the RSC pipeline:
180
+ The product page needs data. A handler is an async server component — fetch
181
+ where you render:
361
182
 
362
183
  ```tsx
363
- const urlpatterns = urls(({ path }) => [
364
- path.json("/api/health", () => ({ status: "ok" }), { name: "health" }),
365
- path.text("/robots.txt", () => "User-agent: *\nAllow: /", { name: "robots" }),
366
- path.xml("/feed.xml", () => "<rss>...</rss>", { name: "feed" }),
367
- ]);
368
- ```
369
-
370
- Response types available: `path.json()`, `path.text()`, `path.html()`, `path.xml()`, `path.image()`, `path.stream()`, `path.any()`.
371
-
372
- ## Layouts & Nesting
373
-
374
- ### Layouts with Outlet
375
-
376
- ```tsx
377
- import { urls } from "@rangojs/router";
378
-
379
- const urlpatterns = urls(({ path, layout }) => [
380
- layout(<MainLayout />, () => [
381
- path("/", HomePage, { name: "home" }),
382
- path("/about", AboutPage, { name: "about" }),
383
- ]),
384
- ]);
385
- ```
386
-
387
- ```tsx
388
- "use client";
389
- import { Outlet } from "@rangojs/router/client";
390
-
391
- function MainLayout() {
392
- return (
393
- <div>
394
- <nav>...</nav>
395
- <Outlet />
396
- </div>
397
- );
398
- }
399
- ```
400
-
401
- ### Loading Skeletons
402
-
403
- ```tsx
404
- const urlpatterns = urls(({ path, loading }) => [
405
- path("/product/:slug", ProductPage, { name: "product" }, () => [
406
- loading(<ProductSkeleton />),
407
- ]),
408
- ]);
409
- ```
410
-
411
- ### Parallel Routes
412
-
413
- ```tsx
414
- const urlpatterns = urls(({ path, layout, parallel, loader, loading }) => [
415
- layout(BlogLayout, () => [
416
- parallel({ "@sidebar": BlogSidebarHandler }, () => [
417
- loader(BlogSidebarLoader),
418
- loading(<SidebarSkeleton />),
419
- ]),
420
- path("/blog", BlogIndexPage, { name: "blog" }),
421
- path("/blog/:slug", BlogPostPage, { name: "blogPost" }),
422
- ]),
423
- ]);
184
+ // src/routes/product.tsx
185
+ export const ProductPage: Handler<"product"> = async (ctx) => {
186
+ const product = await db.products.find(ctx.params.slug);
187
+ ctx.use(Meta)({ title: product.name }); // metadata where the data is
188
+ return <ProductView product={product} />;
189
+ };
424
190
  ```
425
191
 
426
- ## Data Loaders
192
+ That's the default data path. React Router and Remix split data into a
193
+ loader beside the component because components couldn't fetch; RSC collapses
194
+ the split, and Rango doesn't reintroduce it. (That `ctx.use(Meta)` line is
195
+ also the whole metadata story: push tags where the data already is, layouts
196
+ set title templates, deeper segments override — no separate metadata export,
197
+ no second fetch.)
427
198
 
428
- ### Creating a Loader
199
+ Loaders enter when data needs a life of its own. First case: a **client
200
+ component** needs server data — the stock badge is interactive, but the
201
+ stock lives in the database:
429
202
 
430
203
  ```tsx
204
+ // src/loaders/stock.ts
431
205
  import { createLoader } from "@rangojs/router";
432
206
 
433
- export const BlogSidebarLoader = createLoader(async (ctx) => {
434
- const posts = await db.getRecentPosts();
435
- return { posts, loadedAt: new Date().toISOString() };
207
+ export const StockLoader = createLoader(async (ctx) => {
208
+ "use server";
209
+ return db.stockFor(ctx.params.slug);
436
210
  });
437
211
  ```
438
212
 
439
- ### Using in Server Components (Handlers)
440
-
441
213
  ```tsx
442
- import type { HandlerContext } from "@rangojs/router";
443
- import { BlogSidebarLoader } from "./loaders/blog";
444
-
445
- async function BlogSidebarHandler(ctx: HandlerContext) {
446
- const { posts } = await ctx.use(BlogSidebarLoader);
447
- return (
448
- <ul>
449
- {posts.map((p) => (
450
- <li key={p.slug}>{p.title}</li>
451
- ))}
452
- </ul>
453
- );
454
- }
214
+ path("/products/:slug", ProductPage, { name: "product" }, () => [
215
+ loader(StockLoader),
216
+ loading(<ProductSkeleton />),
217
+ ]),
455
218
  ```
456
219
 
457
- ### Using in Client Components
458
-
459
220
  ```tsx
221
+ // src/components/stock-badge.tsx
460
222
  "use client";
461
223
  import { useLoader } from "@rangojs/router/client";
462
- import { BlogSidebarLoader } from "./loaders/blog";
224
+ import { StockLoader } from "../loaders/stock";
463
225
 
464
- function BlogSidebar() {
465
- const { data } = useLoader(BlogSidebarLoader);
466
- return (
467
- <ul>
468
- {data.posts.map((p) => (
469
- <li key={p.slug}>{p.title}</li>
470
- ))}
471
- </ul>
472
- );
226
+ export function StockBadge() {
227
+ const { data } = useLoader(StockLoader);
228
+ return <span>{data.inStock ? "In stock" : "Sold out"}</span>;
473
229
  }
474
230
  ```
475
231
 
476
- ### Attaching Loaders to Routes
232
+ Loaders run in parallel with the handler and stream; `loading()` opts the
233
+ segment into skeleton-then-stream. Without it, document requests arrive
234
+ **ready** — the HTML ships with data in place; the skeleton is a per-segment
235
+ choice, not the first impression.
477
236
 
478
- ```tsx
479
- const urlpatterns = urls(({ path, loader }) => [
480
- path("/blog", BlogIndexPage, { name: "blog" }, () => [
481
- loader(BlogSidebarLoader),
482
- ]),
483
- ]);
484
- ```
237
+ The rule of thumb: fetch in the **handler** when the data belongs to the
238
+ rendered page — it will be frozen with the shell if you cache it (step 4).
239
+ Put data in a **loader** when it must outlive the shell: shared with client
240
+ components, fresh on every hit even when the segment is cached, refetchable
241
+ from the client, or revalidated on its own after actions.
485
242
 
486
- ## Server Actions
243
+ ## 3. Mutations
487
244
 
488
- Server actions are React's RSC mutation primitive. Define them with the
489
- `"use server"` directive — Rango uses standard React 19 hooks
490
- (`useActionState`, `useFormStatus`, `useOptimistic`) with no framework wrapper.
245
+ Users add to cart. A server action is a plain `"use server"` function; the
246
+ form posts to it with standard React 19 hooks — and it works without
247
+ JavaScript:
491
248
 
492
249
  ```tsx
493
- // app/actions/cart.ts
250
+ // src/actions/cart.ts
494
251
  "use server";
495
252
 
496
- import { getRequestContext } from "@rangojs/router";
497
-
498
- export async function addToCart(productId: string): Promise<void> {
499
- const ctx = getRequestContext();
500
- const userId = ctx.get("user").id;
501
- await db.cart.insert({ userId, productId });
253
+ export async function addToCart(productId: string) {
254
+ await db.cart.insert({ productId });
502
255
  }
503
256
  ```
504
257
 
505
258
  ```tsx
506
- // Client form with progressive enhancement + pending state
259
+ // src/components/add-to-cart.tsx
507
260
  "use client";
508
261
  import { useActionState } from "react";
509
- import { saveProfile } from "../actions/profile";
262
+ import { addToCart } from "../actions/cart";
510
263
 
511
- export function ProfileForm() {
512
- const [state, action, pending] = useActionState(saveProfile, null);
264
+ export function AddToCart({ productId }: { productId: string }) {
265
+ const [, action, pending] = useActionState(() => addToCart(productId), null);
513
266
  return (
514
267
  <form action={action}>
515
- <input name="name" defaultValue={state?.values?.name} />
516
- {state?.errors?.name && <p role="alert">{state.errors.name}</p>}
517
- <button disabled={pending}>{pending ? "Saving…" : "Save"}</button>
268
+ <button disabled={pending}>{pending ? "Adding…" : "Add to cart"}</button>
518
269
  </form>
519
270
  );
520
271
  }
521
272
  ```
522
273
 
523
- After an action runs, matched route segments (path/layout/parallel/intercept)
524
- and loaders can re-render/re-resolve so the UI reflects the new state.
525
- Attach a `revalidate(({ actionId }) => ...)` rule on any segment or loader
526
- that owns data the action touched:
527
-
528
- ```tsx
529
- urls(({ path, loader, revalidate }) => [
530
- // Segment-level: re-render the cart page handler after cart actions.
531
- // Nest loaders that belong to this route inside the same path() so the
532
- // segment owns its data dependencies.
533
- path("/cart", CartPage, { name: "cart" }, () => [
534
- revalidate(
535
- ({ actionId }) => actionId?.startsWith("src/actions/cart.ts#") ?? false,
536
- ),
537
- loader(CartLoader, () => [
538
- revalidate(
539
- ({ actionId }) => actionId?.startsWith("src/actions/cart.ts#") ?? false,
540
- ),
541
- ]),
542
- ]),
543
- ]);
544
- ```
545
-
546
- For the full guide — validation with Zod, error handling, file uploads,
547
- `useOptimistic`, redirects, and progressive enhancement — see the
548
- `/server-actions` skill.
549
-
550
- ## Navigation & Links
551
-
552
- ### Named Routes with `ctx.reverse()` (Server)
553
-
554
- In server components and handlers, use `ctx.reverse()` to generate URLs by route name. This is the default — it is typed, auto-fills mount params from the current match, and resolves both local (`.name`) and absolute (`name.sub`) names:
555
-
556
- ```tsx
557
- import { Link } from "@rangojs/router/client";
558
- import type { Handler } from "@rangojs/router";
559
-
560
- const BlogPostPage: Handler<"blogPost"> = (ctx) => {
561
- const backUrl = ctx.reverse("blog");
562
- return <Link to={backUrl}>Back to blog</Link>;
563
- };
564
- ```
565
-
566
- `reverse()` is type-safe — route names and required params are checked at compile time. Included routes use dotted names: `ctx.reverse("api.health")`.
567
-
568
- For scripts, tests, or other code without a handler context, import the router-level `reverse`:
569
-
570
- ```tsx
571
- import { reverse } from "./router";
572
- reverse("blogPost", { slug: "my-post" });
573
- ```
574
-
575
- ### Client Components
576
-
577
- **`reverse()` is server-only.** It depends on the route manifest and handler context — neither is available in the browser bundle. Client components receive URLs as props, loader data, or server-action return values:
578
-
579
- ```tsx
580
- // server
581
- function BlogIndex(ctx: HandlerContext) {
582
- return (
583
- <Nav
584
- home={ctx.reverse("home")}
585
- post={ctx.reverse("blogPost", { slug: "my-post" })}
586
- />
587
- );
588
- }
589
- ```
590
-
591
- ```tsx
592
- "use client";
593
- import { Link } from "@rangojs/router/client";
594
-
595
- export function Nav({ home, post }: { home: string; post: string }) {
596
- return (
597
- <nav>
598
- <Link to={home}>Home</Link>
599
- <Link to={post}>My Post</Link>
600
- </nav>
601
- );
602
- }
603
- ```
604
-
605
- For client-side navigation to static paths (no named-route lookup), use `href()` — see below. For URLs tied to named routes, always generate on the server and pass the string in.
606
-
607
- ### `href()` for Path Validation (Client Components)
608
-
609
- In client components, use `href()` for compile-time path validation on static path strings:
610
-
611
- ```tsx
612
- "use client";
613
- import { Link, href } from "@rangojs/router/client";
614
-
615
- function Nav() {
616
- return (
617
- <nav>
618
- <Link to={href("/")}>Home</Link>
619
- <Link to={href("/blog")} prefetch="adaptive">
620
- Blog
621
- </Link>
622
- <Link to={href("/about")}>About</Link>
623
- </nav>
624
- );
625
- }
626
- ```
627
-
628
- `href()` validates that the path matches a registered route pattern at compile time (e.g. `/blog/my-post` matches `/blog/:slug`).
629
-
630
- ### Navigation Hooks
631
-
632
- ```tsx
633
- "use client";
634
- import { useNavigation, useRouter } from "@rangojs/router/client";
635
-
636
- function SearchForm() {
637
- const router = useRouter();
638
- const nav = useNavigation();
639
-
640
- function handleSubmit(query: string) {
641
- router.push(`/search?q=${encodeURIComponent(query)}`);
642
- }
643
-
644
- return <form onSubmit={...}>{nav.state !== "idle" && <Spinner />}</form>;
645
- }
646
- ```
647
-
648
- ### Scroll Restoration
649
-
650
- ```tsx
651
- "use client";
652
- import { ScrollRestoration } from "@rangojs/router/client";
653
-
654
- function Document({ children }) {
655
- return (
656
- <html>
657
- <body>
658
- {children}
659
- <ScrollRestoration />
660
- </body>
661
- </html>
662
- );
663
- }
664
- ```
665
-
666
- ## Includes (Composable Modules)
667
-
668
- Split URL patterns into composable modules with `include()`:
274
+ After an action, route segments and loaders re-render by default so the UI
275
+ reflects the new state. `revalidate()` narrows that to the segments that
276
+ actually own the data — matched by action **reference**, so renames are
277
+ compile errors, not stale predicates:
669
278
 
670
279
  ```tsx
671
- // src/api/urls.tsx
672
- import { urls } from "@rangojs/router";
280
+ import * as CartActions from "./actions/cart";
673
281
 
674
- export const apiPatterns = urls(({ path }) => [
675
- path.json("/health", () => ({ status: "ok" }), { name: "health" }),
676
- path.json("/products", getProducts, { name: "products" }),
677
- ]);
678
-
679
- // src/urls.tsx
680
- import { urls } from "@rangojs/router";
681
- import { apiPatterns } from "./api/urls";
682
-
683
- export const urlpatterns = urls(({ path, include }) => [
684
- path("/", HomePage, { name: "home" }),
685
- include("/api", apiPatterns, { name: "api" }),
686
- // Mounts apiPatterns under /api: /api/health, /api/products
687
- ]);
282
+ path("/cart", CartPage, { name: "cart" }, () => [
283
+ loader(CartLoader, () => [
284
+ revalidate((ctx) => ctx.isAction(CartActions) || undefined),
285
+ ]),
286
+ ]),
688
287
  ```
689
288
 
690
- Included route names are prefixed with the include name: `reverse("api.health")`, `reverse("api.products")`.
691
-
692
- ### Include name scoping
693
-
694
- The `name` option controls how child route names appear globally:
695
-
696
- | Form | Child names | Generated types | Reverse resolution |
697
- | ---------------------------------- | ------------------- | ---------------------- | -------------------------------------------------------------------- |
698
- | `include("/x", p, { name: "ns" })` | `ns.child` | Exported as `ns.child` | `reverse("ns.child")` globally, `reverse(".child")` inside |
699
- | `include("/x", p, { name: "" })` | `child` (flattened) | Exported as-is | `reverse("child")` globally, `reverse(".child")` inside (root-scope) |
700
- | `include("/x", p)` | Private scope | Not exported | `reverse(".child")` inside only |
701
-
702
- Without a `name`, included routes are local to the mounted module. They still match requests and render normally, but their names are hidden from the generated route map and cannot be reversed globally. Use `{ name: "" }` to merge children into the parent namespace without adding a prefix.
703
-
704
- **`{ name: "" }` is flattening, not isolation.** Flattened routes behave as if defined inline at the include site — dot-local reverse (`.name`) can reach any sibling route at root scope, including routes from other `{ name: "" }` mounts. If you need module-level isolation, omit the `name` option or use a namespace.
705
-
706
- ## Middleware
707
-
708
- ```tsx
709
- const urlpatterns = urls(({ path, middleware }) => [
710
- middleware(
711
- async (ctx, next) => {
712
- const start = Date.now();
713
- const response = await next();
714
- console.log(
715
- `${ctx.request.method} ${ctx.url.pathname} ${Date.now() - start}ms`,
716
- );
717
- return response;
718
- },
719
- () => [path("/dashboard", DashboardPage, { name: "dashboard" })],
720
- ),
721
- ]);
722
- ```
289
+ Notice what you didn't write: no API endpoint, no fetch wrapper, and no
290
+ client-cache invalidation call. Actions invalidate the client-side caches
291
+ (history entries, prefetches, HTTP cache key) automatically — a no-op action
292
+ can opt out per invocation with `keepClientCache()`.
723
293
 
724
- ## Caching
294
+ ## 4. Speed
725
295
 
726
- ### Route-Level Caching
296
+ Production traffic. Wrap a segment in `cache()` and the rendered shell —
297
+ including everything the handler fetched — is stored, while every loader on
298
+ it keeps running fresh on each hit. This is where the handler-vs-loader
299
+ choice from step 2 pays off: handler data freezes with the shell, the
300
+ `StockLoader` stays live. Cached shell, live data, one line:
727
301
 
728
302
  ```tsx
729
- const urlpatterns = urls(({ path, cache }) => [
730
- cache({ ttl: 60, swr: 300 }, () => [
731
- path("/blog", BlogIndexPage, { name: "blog" }),
732
- path("/blog/:slug", BlogPostPage, { name: "blogPost" }),
303
+ const urlpatterns = urls(({ path, layout, loader, loading, cache }) => [
304
+ layout(<ShopLayout />, () => [
305
+ path("/", HomePage, { name: "home" }),
306
+ cache({ ttl: 600, swr: 3600, tags: ["products"] }, () => [
307
+ path("/products/:slug", ProductPage, { name: "product" }, () => [
308
+ loader(StockLoader), // never cached: re-runs on every hit
309
+ loading(<ProductSkeleton />),
310
+ ]),
311
+ ]),
733
312
  ]),
734
313
  ]);
735
314
  ```
736
315
 
737
- ### Cache Store Configuration
738
-
739
- ```tsx
740
- import { createRouter } from "@rangojs/router";
741
- import {
742
- CFCacheStore,
743
- createDocumentCacheMiddleware,
744
- } from "@rangojs/router/cache";
745
-
746
- export const router = createRouter({
747
- document: Document,
748
- cache: (env) => ({
749
- store: new CFCacheStore({
750
- defaults: { ttl: 60, swr: 300 },
751
- ctx: env.ctx,
752
- }),
753
- }),
754
- })
755
- .use(createDocumentCacheMiddleware())
756
- .routes(urlpatterns);
757
- ```
758
-
759
- Available cache stores:
760
-
761
- - `CFCacheStore` — Cloudflare edge cache (production)
762
- - `MemorySegmentCacheStore` — In-memory cache (development/testing)
763
-
764
- ## Pre-rendering
765
-
766
- Pre-rendering generates route segments at build time. The worker handles all requests — there are no static files served from assets.
767
-
768
- ### Static Segments
769
-
770
- Use `Static()` for segments rendered once at build time (no params). Works on `path()`, `layout()`, and `parallel()`:
316
+ Wire a store once on the router (`MemorySegmentCacheStore` for dev,
317
+ `CFCacheStore` for Cloudflare — see the [`/caching` skill](./skills/caching/SKILL.md)),
318
+ and bust by tag from the mutation that changes the data:
771
319
 
772
320
  ```tsx
773
- import { Static } from "@rangojs/router";
774
-
775
- export const AboutPage = Static(async () => {
776
- return <article>...</article>;
777
- });
321
+ // src/actions/products.ts
322
+ "use server";
323
+ import { updateTag } from "@rangojs/router";
778
324
 
779
- export const DocsNav = Static(async () => {
780
- const items = await readDocsNavItems();
781
- return (
782
- <nav>
783
- {items.map((i) => (
784
- <a key={i.slug} href={i.slug}>
785
- {i.title}
786
- </a>
787
- ))}
788
- </nav>
789
- );
790
- });
325
+ export async function renameProduct(id: string, name: string) {
326
+ await db.products.rename(id, name);
327
+ await updateTag("products"); // awaitable, read-your-own-writes
328
+ }
791
329
  ```
792
330
 
793
- ### Dynamic Routes with Prerender
794
-
795
- Use `Prerender()` for route-scoped pre-rendering. With params, provide `getParams` first, handler second:
331
+ Navigation speed is a `Link` prop away:
796
332
 
797
333
  ```tsx
798
- import { Prerender } from "@rangojs/router";
799
-
800
- export const BlogPost = Prerender(
801
- async () => {
802
- const slugs = await getAllBlogSlugs();
803
- return slugs.map((slug) => ({ slug }));
804
- },
805
- async (ctx) => {
806
- const post = await getPost(ctx.params.slug);
807
- return <article>{post.content}</article>;
808
- },
809
- );
334
+ <Link to={url} prefetch="viewport">
335
+ {product.name}
336
+ </Link>
810
337
  ```
811
338
 
812
- ### Passthrough for Unknown Params
339
+ A fully-prefetched navigation commits a **finished page** — no skeleton, no
340
+ loading flash — and staying correct is the router's job: every action
341
+ invalidates the prefetch caches by default, so a prefetched page can't show
342
+ pre-mutation data.
813
343
 
814
- Wrap a `Prerender` definition with `Passthrough()` to add a live handler for unknown params at runtime. The build handler runs at build time, the live handler runs at request time for params not in the prerender cache.
344
+ To move the shell's cost to build time entirely, `Prerender()` bakes it while
345
+ loaders stay live at runtime — same mental model, earlier cache write. See
346
+ the [`/prerender` skill](./skills/prerender/SKILL.md).
815
347
 
816
- ```tsx
817
- import { Prerender, Passthrough } from "@rangojs/router";
818
-
819
- export const ProductPageDef = Prerender(
820
- async () => {
821
- const featured = await db.getFeaturedProducts();
822
- return featured.map((p) => ({ id: p.id }));
823
- },
824
- async (ctx) => {
825
- const product = await db.getProduct(ctx.params.id);
826
- return <Product data={product} />;
827
- },
828
- );
829
-
830
- // In route definition:
831
- path(
832
- "/products/:id",
833
- Passthrough(ProductPageDef, async (ctx) => {
834
- const product = await ctx.env.DB.getProduct(ctx.params.id);
835
- return <Product data={product} />;
836
- }),
837
- );
838
- ```
348
+ ## 5. An API, when you need one
839
349
 
840
- Build handlers can also skip individual param sets with `ctx.passthrough()`, deferring them to the live handler:
350
+ Response routes live in the same tree — `path.json()`, `path.text()`,
351
+ `path.xml()`, `path.image()`, `path.stream()`:
841
352
 
842
353
  ```tsx
843
- export const ProductPageDef = Prerender(
844
- async () => {
845
- const all = await db.getAllProducts();
846
- return all.map((p) => ({ id: p.id }));
847
- },
848
- async (ctx) => {
849
- const product = await db.getProduct(ctx.params.id);
850
- if (!product.published) return ctx.passthrough();
851
- return <Product data={product} />;
852
- },
853
- );
354
+ path("/products/:slug", ProductPage, { name: "product" }),
355
+ path.json("/products/:slug", (ctx) => db.products.find(ctx.params.slug), {
356
+ name: "productJson",
357
+ }),
854
358
  ```
855
359
 
856
- ### Build-Time Environment Bindings
857
-
858
- Prerender handlers can access platform bindings (KV, D1, R2) at build time when `buildEnv` is configured in the Vite plugin:
360
+ Same URL: browsers get the page, API clients get JSON, negotiated by
361
+ `Accept` header in the route trie. Handlers return bare values; errors
362
+ serialize as RFC 9457 `application/problem+json`. The payload type is
363
+ inferred from the handler — no codegen:
859
364
 
860
365
  ```ts
861
- // vite.config.ts
862
- import { rango } from "@rangojs/router/vite";
863
-
864
- rango({ preset: "cloudflare", buildEnv: "auto" });
865
- ```
866
-
867
- With `buildEnv: "auto"`, the plugin calls `wrangler.getPlatformProxy()` to provide local bindings. Handlers then access `ctx.env` during build:
868
-
869
- ```tsx
870
- export const BlogPosts = Prerender<{ slug: string }>(
871
- async (ctx) => {
872
- const rows = await ctx.env.DB.prepare("SELECT slug FROM posts").all();
873
- return rows.map((r) => ({ slug: r.slug }));
874
- },
875
- async (ctx) => {
876
- const post = await ctx.env.DB.prepare("SELECT * FROM posts WHERE slug = ?")
877
- .bind(ctx.params.slug)
878
- .first();
879
- return <BlogPost post={post} />;
880
- },
881
- );
882
- ```
883
-
884
- `buildEnv` also accepts a factory function or plain object:
366
+ type Product = RouteResponse<typeof urlpatterns, "productJson">;
367
+ ```
368
+
369
+ See the [`/api-client` skill](./skills/api-client/SKILL.md) for a small typed
370
+ client over these endpoints.
371
+
372
+ ## Everything else, when you need it
373
+
374
+ That was the core: `path`/`layout`/`include`, names, loaders, actions +
375
+ `revalidate`, `cache`, response routes. The rest is opt-in — reach for it
376
+ when the requirement appears:
377
+
378
+ | I need to… | Skill |
379
+ | ----------------------------------------------- | -------------------------------------------------------------------------------------------- |
380
+ | guard or shape requests (auth, headers) | [`/middleware`](./skills/middleware/SKILL.md) |
381
+ | multi-column layouts, independent slots | [`/parallel`](./skills/parallel/SKILL.md) |
382
+ | open a route as a modal on soft navigation | [`/intercept`](./skills/intercept/SKILL.md) |
383
+ | compose route modules / sub-apps | [`/route`](./skills/route/SKILL.md), [`/composability`](./skills/composability/SKILL.md) |
384
+ | cache a single function or component | [`/use-cache`](./skills/use-cache/SKILL.md), [`/cache-guide`](./skills/cache-guide/SKILL.md) |
385
+ | feed live loaders from a cached shell | [`/shell-manifest`](./skills/shell-manifest/SKILL.md) |
386
+ | edge caching with Cache-Control | [`/document-cache`](./skills/document-cache/SKILL.md) |
387
+ | light/dark mode without FOUC | [`/theme`](./skills/theme/SKILL.md) |
388
+ | analytics / third-party scripts with CSP nonce | [`/scripts`](./skills/scripts/SKILL.md) |
389
+ | locale routing | [`/i18n`](./skills/i18n/SKILL.md) |
390
+ | SSE and WebSockets | [`/streams-and-websockets`](./skills/streams-and-websockets/SKILL.md) |
391
+ | multi-app routing by domain | [`/host-router`](./skills/host-router/SKILL.md) |
392
+ | animate navigations | [`/view-transitions`](./skills/view-transitions/SKILL.md) |
393
+ | test loaders, middleware, handlers, Flight | [`/testing`](./skills/testing/SKILL.md) |
394
+ | see where request time goes | [`/observability`](./skills/observability/SKILL.md) |
395
+ | deploy to Vercel (cache store, tracing, output) | [`/vercel`](./skills/vercel/SKILL.md) |
396
+ | choose in-function vs CDN caching | [`/deployment-caching`](./skills/deployment-caching/SKILL.md) |
397
+ | compare Rango with Next.js / TanStack / Waku | [`/comparison`](./skills/comparison/SKILL.md) |
398
+
399
+ The [`/rango` skill](./skills/rango/SKILL.md) is the full catalog and the
400
+ mental model that ties it together.
401
+
402
+ ## Reference
403
+
404
+ ### Imports and subpaths
405
+
406
+ | Export | Description |
407
+ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
408
+ | `@rangojs/router` | Server/RSC core and shared types: `createRouter`, `urls`, `createLoader`, `Handler`, `Prerender`, `Meta` |
409
+ | `@rangojs/router/client` | Client: `Link`, `Outlet`, `href`, `useNavigation`, `useLoader`, `MetaTags` |
410
+ | `@rangojs/router/cache` | Cache: `CFCacheStore`, `VercelCacheStore`, `MemorySegmentCacheStore`, `createDocumentCacheMiddleware` |
411
+ | `@rangojs/router/theme` | Theme: `useTheme`, `ThemeProvider`, `ThemeScript` |
412
+ | `@rangojs/router/host` | Host routing: `createHostRouter`, `defineHosts`, `isNoRouteMatchError` |
413
+ | `@rangojs/router/vercel` | Vercel: `createVercelTracing` (phase spans via `@vercel/otel`'s global tracer) |
414
+ | `@rangojs/router/vite` | Vite plugin: `rango()` |
415
+ | `@rangojs/router/testing` | Consumer testing primitives: `runLoader`, `runMiddleware`, `dispatch` (plus `/testing/dom`, `/testing/flight`, `/testing/e2e`) |
416
+ | `@rangojs/router/rsc` | Advanced server pipeline APIs: `createRSCHandler`, request-context access |
417
+ | `@rangojs/router/ssr` | Advanced SSR bridge APIs: `createSSRHandler` |
418
+
419
+ Use only subpaths that are explicitly exported; avoid deep imports.
420
+
421
+ The root entry is conditionally resolved: server-only APIs (`createRouter`,
422
+ `urls`, `redirect`, `Prerender`, `cookies`) run under the `react-server`
423
+ condition and throw guidance errors elsewhere. If you hit a root-entrypoint
424
+ stub error: hooks and components (`Link`, `Outlet`, `useLoader`, `MetaTags`)
425
+ live in `@rangojs/router/client`; cache APIs in `@rangojs/router/cache`;
426
+ host APIs in `@rangojs/router/host`.
427
+
428
+ ### Type safety
429
+
430
+ The Vite plugin generates `router.named-routes.gen.ts` automatically (on dev
431
+ startup, HMR, and builds), registering route names, params, and search
432
+ schemas globally via `Rango.GeneratedRouteMap`. That powers `Handler<"name">`,
433
+ `ctx.reverse()`, and `RouteParams<"name">` with no manual registration.
434
+
435
+ For response-aware and path-based utilities (`href()`, `Rango.Path`,
436
+ `RouteResponse`), augment `Rango.RegisteredRoutes` once:
885
437
 
886
438
  ```ts
887
- // Custom factory
888
- rango({
889
- buildEnv: async (ctx) => {
890
- const { getPlatformProxy } = await import("wrangler");
891
- const proxy = await getPlatformProxy();
892
- return { env: proxy.env, dispose: proxy.dispose };
893
- },
894
- });
895
-
896
- // Plain object (Node.js)
897
- rango({ buildEnv: { DATABASE_URL: process.env.DATABASE_URL } });
898
- ```
899
-
900
- Build-time env applies to both production builds and dev on-demand prerender. Without `buildEnv`, accessing `ctx.env` in a Prerender handler throws with a clear error.
901
-
902
- ## Theme
903
-
904
- ### Router Configuration
905
-
906
- ```tsx
907
- export const router = createRouter({
908
- document: Document,
909
- theme: {
910
- defaultTheme: "light",
911
- themes: ["light", "dark", "system"],
912
- attribute: "class",
913
- enableSystem: true,
914
- },
915
- }).routes(urlpatterns);
916
- ```
917
-
918
- ### Theme Toggle
919
-
920
- ```tsx
921
- "use client";
922
- import { useTheme } from "@rangojs/router/theme";
923
-
924
- function ThemeToggle() {
925
- const { theme, setTheme, themes } = useTheme();
926
- return (
927
- <select value={theme} onChange={(e) => setTheme(e.target.value)}>
928
- {themes.map((t) => (
929
- <option key={t}>{t}</option>
930
- ))}
931
- </select>
932
- );
933
- }
934
- ```
935
-
936
- ## Host Routing
937
-
938
- Route requests to different apps based on domain/subdomain patterns using `@rangojs/router/host`:
939
-
940
- ```tsx
941
- // worker.rsc.tsx
942
- import { createHostRouter } from "@rangojs/router/host";
943
-
944
- const hostRouter = createHostRouter();
945
-
946
- hostRouter.host(["*.localhost"]).map(() => import("./apps/admin/handler.js"));
947
- hostRouter.host(["localhost"]).map(() => import("./apps/site/handler.js"));
948
- hostRouter.fallback().map(() => import("./apps/site/handler.js"));
949
-
950
- export default {
951
- async fetch(request, env, ctx) {
952
- return hostRouter.match(request, { env, ctx });
953
- },
954
- };
955
- ```
956
-
957
- Each sub-app has its own `createRouter()` and `urls()`. The host router lazily imports the matched app's handler. Patterns are matched in registration order — register more specific patterns (subdomains) before catch-alls.
958
-
959
- ## Meta Tags
960
-
961
- Accumulate meta tags across route segments using the built-in `Meta` handle:
962
-
963
- ```tsx
964
- import { Meta } from "@rangojs/router";
965
- import type { HandlerContext } from "@rangojs/router";
966
-
967
- export function BlogPostPage(ctx: HandlerContext) {
968
- const meta = ctx.use(Meta);
969
- meta({ title: "My Blog Post" });
970
- meta({ name: "description", content: "A great blog post" });
971
- meta({ property: "og:title", content: "My Blog Post" });
972
-
973
- return <article>...</article>;
974
- }
975
- ```
976
-
977
- Render collected tags in the document with `<MetaTags />` from `@rangojs/router/client`.
978
-
979
- ## CLI: `rango generate`
980
-
981
- Route types are generated automatically by the Vite plugin. The CLI is a manual fallback for generating types outside the dev server (e.g. in CI or for IDE support before first `pnpm dev`):
982
-
983
- ```bash
984
- npx rango generate src/router.tsx
985
- npx rango generate src/ # recursive scan
986
- npx rango generate src/urls.tsx src/api/ # mix files and directories
987
- ```
988
-
989
- Auto-detects file type:
990
-
991
- - Files with `createRouter` → `*.named-routes.gen.ts` with global route map
992
- - Files with `urls()` → `*.gen.ts` with per-module route names, params, and search types
993
-
994
- ## Type Safety
995
-
996
- The Vite plugin automatically generates a `router.named-routes.gen.ts` file that globally registers route names, patterns, and search schemas via `RSCRouter.GeneratedRouteMap`. This powers server-side named-route typing such as `Handler<"name">`, `ctx.reverse()`, `getRequestContext().reverse()`, and `RouteParams<"name">` without any manual route registration. The gen file is updated on dev server startup, HMR, and production builds.
997
-
998
- Use the generated map by default. Augment `RSCRouter.RegisteredRoutes` only when you need the richer `typeof router.routeMap` shape globally, especially for response-aware and path-based utilities.
999
-
1000
- ```typescript
1001
439
  // router.tsx
1002
440
  const router = createRouter<AppBindings>({}).routes(urlpatterns);
1003
441
 
442
+ // The alias is required: an interface heritage clause cannot take a `typeof`
443
+ // type query directly (TS1109), so extend through a named alias.
444
+ type AppRoutes = typeof router.routeMap;
445
+
1004
446
  declare global {
1005
- namespace RSCRouter {
447
+ namespace Rango {
1006
448
  interface Env extends AppEnv {}
1007
- interface Vars extends AppVars {}
1008
- interface RegisteredRoutes extends typeof router.routeMap {}
449
+ interface RegisteredRoutes extends AppRoutes {}
1009
450
  }
1010
451
  }
1011
452
  ```
1012
453
 
1013
- Quick rule of thumb:
1014
-
1015
- - `GeneratedRouteMap` (auto-generated) — use for server-side named-route typing: `Handler<"name">`, `ctx.reverse()`, `Prerender<"name">`
1016
- - `typeof router.routeMap` — use when you need route entries with response metadata
1017
- - `RegisteredRoutes` (manual augmentation) — use to expose `typeof router.routeMap` globally for `href()`, `PathResponse`, `ValidPaths`, and other path/response-aware utilities
454
+ See the [`/typesafety` skill](./skills/typesafety/SKILL.md) for the full
455
+ surface breakdown.
1018
456
 
1019
- For extracted reusable loaders or middleware, prefer global dotted names on
1020
- `ctx.reverse()` by default. If you want type-safe local names for a specific
1021
- module, use `scopedReverse<typeof localPatterns>(ctx.reverse)` or
1022
- `scopedReverse<routes>(ctx.reverse)` with a generated local route type.
457
+ ### CLI
1023
458
 
1024
- ## Subpath Exports
459
+ Route types are generated by the Vite plugin; the CLI is the manual fallback
460
+ for CI or pre-first-run IDE support:
1025
461
 
1026
- | Export | Description |
1027
- | ------------------------ | -------------------------------------------------------------------------------------------------------- |
1028
- | `@rangojs/router` | Server/RSC core and shared types: `createRouter`, `urls`, `createLoader`, `Handler`, `Prerender`, `Meta` |
1029
- | `@rangojs/router/client` | Client: `Link`, `Outlet`, `href`, `useNavigation`, `useLoader`, `MetaTags` |
1030
- | `@rangojs/router/cache` | Cache: `CFCacheStore`, `MemorySegmentCacheStore`, `createDocumentCacheMiddleware` |
1031
- | `@rangojs/router/theme` | Theme: `useTheme`, `ThemeProvider`, `ThemeScript` |
1032
- | `@rangojs/router/host` | Host routing: `createHostRouter`, `defineHosts` |
1033
- | `@rangojs/router/vite` | Vite plugin: `rango()` |
1034
- | `@rangojs/router/rsc` | Advanced server pipeline APIs: `createRSCHandler`, request-context access |
1035
- | `@rangojs/router/ssr` | Advanced SSR bridge APIs: `createSSRHandler` |
1036
- | `@rangojs/router/server` | Internal build/runtime utilities for advanced integrations |
1037
- | `@rangojs/router/build` | Build utilities |
462
+ ```bash
463
+ npx rango generate src/router.tsx # global named-route map
464
+ npx rango generate src/ # recursive scan
465
+ ```
1038
466
 
1039
- The root entrypoint is not a generic client/runtime barrel. If you need hooks
1040
- or components, import from `@rangojs/router/client`; if you need cache or host
1041
- APIs, use their dedicated subpaths.
467
+ ### Examples
1042
468
 
1043
- ## Examples
469
+ - [`e2e/mini`](https://github.com/ivogt/vite-rsc/tree/main/packages/rangojs-router/e2e/mini) — single-file demo app
470
+ - [`cloudflare-basic`](https://github.com/ivogt/vite-rsc/tree/main/tests/cloudflare-basic) — Cloudflare Workers with caching, loaders, theme, and pre-rendering
471
+ - [`cloudflare-multi-router`](https://github.com/ivogt/vite-rsc/tree/main/examples/cloudflare-multi-router) — multi-app host routing
472
+ - [`vercel-basic`](https://github.com/ivogt/vite-rsc/tree/main/examples/vercel-basic) — Vercel deployment with `preset: "vercel"`, `VercelCacheStore`, and OTel tracing
473
+ - [`vercel-multi-router`](https://github.com/ivogt/vite-rsc/tree/main/examples/vercel-multi-router) — multi-app host routing on Vercel (single function, routed by Host header)
1044
474
 
1045
- See the `examples/` directory for full working applications:
475
+ ### Going deeper
1046
476
 
1047
- - [`cloudflare-basic`](../../examples/cloudflare-basic) — Cloudflare Workers with caching, loaders, theme, and pre-rendering
1048
- - [`cloudflare-multi-router`](../../examples/cloudflare-multi-router) — Multi-app host routing
477
+ - [Why Rango](https://github.com/ivogt/vite-rsc/blob/main/packages/rangojs-router/docs/why-rango.md) — the design rationale, claim by claim
478
+ - [Framework comparison](./skills/comparison/references/framework-comparison.md) — Rango vs Next.js App Router, TanStack Start, and Waku, capability by capability
479
+ - [Docs index](https://github.com/ivogt/vite-rsc/blob/main/packages/rangojs-router/docs/README.md) — architecture, caching, prerender, testing
480
+ - [Execution model](https://github.com/ivogt/vite-rsc/blob/main/packages/rangojs-router/docs/internal/execution-model.md) — the runtime contract
1049
481
 
1050
482
  ## License
1051
483