@rangojs/router 0.1.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (473) hide show
  1. package/README.md +2 -1
  2. package/dist/types/browser/prefetch/default-strategy.d.ts +22 -0
  3. package/dist/types/browser/prefetch/runtime.d.ts +0 -1
  4. package/dist/types/browser/react/Link.d.ts +8 -11
  5. package/dist/types/browser/types.d.ts +5 -0
  6. package/dist/types/cache/document-cache.d.ts +3 -1
  7. package/dist/types/cache/types.d.ts +10 -3
  8. package/dist/types/route-definition/helpers-types.d.ts +6 -6
  9. package/dist/types/router/match-handlers.d.ts +2 -3
  10. package/dist/types/router/prefetch-default.d.ts +28 -0
  11. package/dist/types/router/router-interfaces.d.ts +7 -0
  12. package/dist/types/router/router-options.d.ts +30 -0
  13. package/dist/types/router/segment-resolution/view-transition-default.d.ts +3 -4
  14. package/dist/types/router/transition-when.d.ts +13 -0
  15. package/dist/types/rsc/capture-queue.d.ts +6 -0
  16. package/dist/types/rsc/shell-capture.d.ts +15 -7
  17. package/dist/types/rsc/shell-serve.d.ts +6 -3
  18. package/dist/types/rsc/transition-gate.d.ts +10 -14
  19. package/dist/types/rsc/types.d.ts +2 -0
  20. package/dist/types/server/request-context.d.ts +5 -1
  21. package/dist/types/testing/e2e/index.d.ts +3 -3
  22. package/dist/types/testing/e2e/page-helpers.d.ts +24 -0
  23. package/dist/types/testing/index.d.ts +2 -2
  24. package/dist/types/testing/run-transition-when.d.ts +6 -5
  25. package/dist/types/testing/shell-status.d.ts +23 -3
  26. package/dist/types/types/segments.d.ts +27 -22
  27. package/dist/types/urls/path-helper-types.d.ts +4 -3
  28. package/dist/types.backup/__internal.d.ts +127 -0
  29. package/dist/types.backup/bin/rango.d.ts +1 -0
  30. package/dist/types.backup/browser/action-coordinator.d.ts +57 -0
  31. package/dist/types.backup/browser/action-fence.d.ts +33 -0
  32. package/dist/types.backup/browser/app-shell.d.ts +34 -0
  33. package/dist/types.backup/browser/app-version.d.ts +6 -0
  34. package/dist/types.backup/browser/connection-warmup.d.ts +31 -0
  35. package/dist/types.backup/browser/cookie-name.d.ts +66 -0
  36. package/dist/types.backup/browser/event-controller.d.ts +221 -0
  37. package/dist/types.backup/browser/history-state.d.ts +26 -0
  38. package/dist/types.backup/browser/index.d.ts +1 -0
  39. package/dist/types.backup/browser/intercept-utils.d.ts +30 -0
  40. package/dist/types.backup/browser/invalidate-client-cache.d.ts +17 -0
  41. package/dist/types.backup/browser/link-interceptor.d.ts +43 -0
  42. package/dist/types.backup/browser/logging.d.ts +33 -0
  43. package/dist/types.backup/browser/merge-segment-loaders.d.ts +38 -0
  44. package/dist/types.backup/browser/navigation-bridge.d.ts +27 -0
  45. package/dist/types.backup/browser/navigation-client.d.ts +17 -0
  46. package/dist/types.backup/browser/navigation-store-handle.d.ts +25 -0
  47. package/dist/types.backup/browser/navigation-store.d.ts +95 -0
  48. package/dist/types.backup/browser/navigation-transaction.d.ts +75 -0
  49. package/dist/types.backup/browser/network-error-handler.d.ts +35 -0
  50. package/dist/types.backup/browser/partial-update.d.ts +61 -0
  51. package/dist/types.backup/browser/prefetch/cache.d.ts +183 -0
  52. package/dist/types.backup/browser/prefetch/fetch.d.ts +52 -0
  53. package/dist/types.backup/browser/prefetch/observer.d.ts +27 -0
  54. package/dist/types.backup/browser/prefetch/policy.d.ts +13 -0
  55. package/dist/types.backup/browser/prefetch/queue.d.ts +48 -0
  56. package/dist/types.backup/browser/prefetch/resource-ready.d.ts +28 -0
  57. package/dist/types.backup/browser/rango-state.d.ts +52 -0
  58. package/dist/types.backup/browser/react/Link.d.ts +140 -0
  59. package/dist/types.backup/browser/react/NavigationProvider.d.ts +88 -0
  60. package/dist/types.backup/browser/react/ScrollRestoration.d.ts +78 -0
  61. package/dist/types.backup/browser/react/context.d.ts +54 -0
  62. package/dist/types.backup/browser/react/filter-segment-order.d.ts +35 -0
  63. package/dist/types.backup/browser/react/index.d.ts +1 -0
  64. package/dist/types.backup/browser/react/location-state-shared.d.ts +162 -0
  65. package/dist/types.backup/browser/react/location-state.d.ts +29 -0
  66. package/dist/types.backup/browser/react/mount-context.d.ts +23 -0
  67. package/dist/types.backup/browser/react/nonce-context.d.ts +14 -0
  68. package/dist/types.backup/browser/react/shallow-equal.d.ts +5 -0
  69. package/dist/types.backup/browser/react/use-action.d.ts +61 -0
  70. package/dist/types.backup/browser/react/use-handle.d.ts +21 -0
  71. package/dist/types.backup/browser/react/use-href.d.ts +32 -0
  72. package/dist/types.backup/browser/react/use-link-status.d.ts +36 -0
  73. package/dist/types.backup/browser/react/use-mount.d.ts +24 -0
  74. package/dist/types.backup/browser/react/use-navigation.d.ts +15 -0
  75. package/dist/types.backup/browser/react/use-params.d.ts +21 -0
  76. package/dist/types.backup/browser/react/use-pathname.d.ts +13 -0
  77. package/dist/types.backup/browser/react/use-reverse.d.ts +40 -0
  78. package/dist/types.backup/browser/react/use-router.d.ts +23 -0
  79. package/dist/types.backup/browser/react/use-search-params.d.ts +19 -0
  80. package/dist/types.backup/browser/react/use-segments.d.ts +29 -0
  81. package/dist/types.backup/browser/response-adapter.d.ts +58 -0
  82. package/dist/types.backup/browser/rsc-router.d.ts +141 -0
  83. package/dist/types.backup/browser/scroll-restoration.d.ts +103 -0
  84. package/dist/types.backup/browser/segment-reconciler.d.ts +74 -0
  85. package/dist/types.backup/browser/segment-structure-assert.d.ts +16 -0
  86. package/dist/types.backup/browser/server-action-bridge.d.ts +29 -0
  87. package/dist/types.backup/browser/types.d.ts +530 -0
  88. package/dist/types.backup/browser/validate-redirect-origin.d.ts +28 -0
  89. package/dist/types.backup/build/collect-fallback-refs.d.ts +5 -0
  90. package/dist/types.backup/build/generate-manifest.d.ts +100 -0
  91. package/dist/types.backup/build/generate-route-types.d.ts +8 -0
  92. package/dist/types.backup/build/index.d.ts +21 -0
  93. package/dist/types.backup/build/prefix-tree-utils.d.ts +56 -0
  94. package/dist/types.backup/build/route-trie.d.ts +89 -0
  95. package/dist/types.backup/build/route-types/ast-helpers.d.ts +3 -0
  96. package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +13 -0
  97. package/dist/types.backup/build/route-types/codegen.d.ts +16 -0
  98. package/dist/types.backup/build/route-types/include-resolution.d.ts +74 -0
  99. package/dist/types.backup/build/route-types/param-extraction.d.ts +13 -0
  100. package/dist/types.backup/build/route-types/per-module-writer.d.ts +18 -0
  101. package/dist/types.backup/build/route-types/router-processing.d.ts +82 -0
  102. package/dist/types.backup/build/route-types/scan-filter.d.ts +17 -0
  103. package/dist/types.backup/build/route-types/source-scan.d.ts +13 -0
  104. package/dist/types.backup/build/runtime-discovery.d.ts +24 -0
  105. package/dist/types.backup/cache/background-task.d.ts +21 -0
  106. package/dist/types.backup/cache/cache-error.d.ts +71 -0
  107. package/dist/types.backup/cache/cache-key-utils.d.ts +35 -0
  108. package/dist/types.backup/cache/cache-policy.d.ts +59 -0
  109. package/dist/types.backup/cache/cache-runtime.d.ts +51 -0
  110. package/dist/types.backup/cache/cache-scope.d.ts +134 -0
  111. package/dist/types.backup/cache/cache-tag.d.ts +79 -0
  112. package/dist/types.backup/cache/cf/cf-base64.d.ts +4 -0
  113. package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +105 -0
  114. package/dist/types.backup/cache/cf/cf-cache-store.d.ts +481 -0
  115. package/dist/types.backup/cache/cf/cf-cache-types.d.ts +300 -0
  116. package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +22 -0
  117. package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +15 -0
  118. package/dist/types.backup/cache/cf/index.d.ts +3 -0
  119. package/dist/types.backup/cache/document-cache.d.ts +69 -0
  120. package/dist/types.backup/cache/handle-capture.d.ts +23 -0
  121. package/dist/types.backup/cache/handle-snapshot.d.ts +39 -0
  122. package/dist/types.backup/cache/index.d.ts +7 -0
  123. package/dist/types.backup/cache/memory-segment-store.d.ts +163 -0
  124. package/dist/types.backup/cache/profile-registry.d.ts +40 -0
  125. package/dist/types.backup/cache/read-through-swr.d.ts +60 -0
  126. package/dist/types.backup/cache/segment-codec.d.ts +78 -0
  127. package/dist/types.backup/cache/shell-snapshot.d.ts +162 -0
  128. package/dist/types.backup/cache/tag-invalidation.d.ts +74 -0
  129. package/dist/types.backup/cache/taint.d.ts +71 -0
  130. package/dist/types.backup/cache/types.d.ts +407 -0
  131. package/dist/types.backup/cache/vercel/index.d.ts +1 -0
  132. package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +267 -0
  133. package/dist/types.backup/client.d.ts +184 -0
  134. package/dist/types.backup/client.rsc.d.ts +39 -0
  135. package/dist/types.backup/cloudflare/index.d.ts +7 -0
  136. package/dist/types.backup/cloudflare/tracing.d.ts +53 -0
  137. package/dist/types.backup/component-utils.d.ts +46 -0
  138. package/dist/types.backup/components/DefaultDocument.d.ts +13 -0
  139. package/dist/types.backup/context-var.d.ts +84 -0
  140. package/dist/types.backup/debug.d.ts +57 -0
  141. package/dist/types.backup/decode-loader-results.d.ts +5 -0
  142. package/dist/types.backup/default-error-boundary.d.ts +10 -0
  143. package/dist/types.backup/defer.d.ts +89 -0
  144. package/dist/types.backup/deps/browser.d.ts +1 -0
  145. package/dist/types.backup/deps/html-stream-client.d.ts +1 -0
  146. package/dist/types.backup/deps/html-stream-server.d.ts +1 -0
  147. package/dist/types.backup/deps/rsc.d.ts +1 -0
  148. package/dist/types.backup/deps/ssr.d.ts +1 -0
  149. package/dist/types.backup/encode-kv.d.ts +35 -0
  150. package/dist/types.backup/errors.d.ts +226 -0
  151. package/dist/types.backup/escape-script.d.ts +44 -0
  152. package/dist/types.backup/handle.d.ts +93 -0
  153. package/dist/types.backup/handles/MetaTags.d.ts +17 -0
  154. package/dist/types.backup/handles/Scripts.d.ts +38 -0
  155. package/dist/types.backup/handles/breadcrumbs.d.ts +43 -0
  156. package/dist/types.backup/handles/deferred-resolution.d.ts +53 -0
  157. package/dist/types.backup/handles/is-thenable.d.ts +12 -0
  158. package/dist/types.backup/handles/meta.d.ts +43 -0
  159. package/dist/types.backup/handles/script.d.ts +139 -0
  160. package/dist/types.backup/host/cookie-handler.d.ts +8 -0
  161. package/dist/types.backup/host/errors.d.ts +40 -0
  162. package/dist/types.backup/host/index.d.ts +33 -0
  163. package/dist/types.backup/host/pattern-matcher.d.ts +30 -0
  164. package/dist/types.backup/host/router.d.ts +12 -0
  165. package/dist/types.backup/host/testing.d.ts +41 -0
  166. package/dist/types.backup/host/types.d.ts +148 -0
  167. package/dist/types.backup/host/utils.d.ts +20 -0
  168. package/dist/types.backup/href-client.d.ts +214 -0
  169. package/dist/types.backup/index.d.ts +112 -0
  170. package/dist/types.backup/index.rsc.d.ts +51 -0
  171. package/dist/types.backup/internal-debug.d.ts +1 -0
  172. package/dist/types.backup/loader-store.d.ts +193 -0
  173. package/dist/types.backup/loader.d.ts +18 -0
  174. package/dist/types.backup/loader.rsc.d.ts +18 -0
  175. package/dist/types.backup/missing-id-error.d.ts +1 -0
  176. package/dist/types.backup/outlet-context.d.ts +12 -0
  177. package/dist/types.backup/outlet-provider.d.ts +12 -0
  178. package/dist/types.backup/prerender/build-shell-capture.d.ts +104 -0
  179. package/dist/types.backup/prerender/param-hash.d.ts +6 -0
  180. package/dist/types.backup/prerender/shell-manifest-key.d.ts +18 -0
  181. package/dist/types.backup/prerender/store.d.ts +62 -0
  182. package/dist/types.backup/prerender.d.ts +292 -0
  183. package/dist/types.backup/redirect-origin.d.ts +55 -0
  184. package/dist/types.backup/regex-escape.d.ts +6 -0
  185. package/dist/types.backup/render-error-thrower.d.ts +13 -0
  186. package/dist/types.backup/response-utils.d.ts +35 -0
  187. package/dist/types.backup/reverse.d.ts +206 -0
  188. package/dist/types.backup/root-error-boundary.d.ts +32 -0
  189. package/dist/types.backup/route-content-wrapper.d.ts +40 -0
  190. package/dist/types.backup/route-definition/dsl-helpers.d.ts +130 -0
  191. package/dist/types.backup/route-definition/helper-factories.d.ts +22 -0
  192. package/dist/types.backup/route-definition/helpers-types.d.ts +392 -0
  193. package/dist/types.backup/route-definition/index.d.ts +7 -0
  194. package/dist/types.backup/route-definition/redirect.d.ts +48 -0
  195. package/dist/types.backup/route-definition/resolve-handler-use.d.ts +19 -0
  196. package/dist/types.backup/route-definition/use-item-types.d.ts +1 -0
  197. package/dist/types.backup/route-definition.d.ts +1 -0
  198. package/dist/types.backup/route-map-builder.d.ts +127 -0
  199. package/dist/types.backup/route-name.d.ts +27 -0
  200. package/dist/types.backup/route-types.d.ts +172 -0
  201. package/dist/types.backup/router/basename.d.ts +10 -0
  202. package/dist/types.backup/router/content-negotiation.d.ts +91 -0
  203. package/dist/types.backup/router/debug-manifest.d.ts +7 -0
  204. package/dist/types.backup/router/error-handling.d.ts +76 -0
  205. package/dist/types.backup/router/find-match.d.ts +19 -0
  206. package/dist/types.backup/router/handler-context.d.ts +41 -0
  207. package/dist/types.backup/router/instrument.d.ts +161 -0
  208. package/dist/types.backup/router/intercept-resolution.d.ts +79 -0
  209. package/dist/types.backup/router/lazy-includes.d.ts +26 -0
  210. package/dist/types.backup/router/loader-resolution.d.ts +63 -0
  211. package/dist/types.backup/router/logging.d.ts +41 -0
  212. package/dist/types.backup/router/manifest.d.ts +8 -0
  213. package/dist/types.backup/router/match-api.d.ts +19 -0
  214. package/dist/types.backup/router/match-context.d.ts +184 -0
  215. package/dist/types.backup/router/match-handlers.d.ts +49 -0
  216. package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +113 -0
  217. package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +113 -0
  218. package/dist/types.backup/router/match-middleware/cache-store.d.ts +112 -0
  219. package/dist/types.backup/router/match-middleware/index.d.ts +80 -0
  220. package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +116 -0
  221. package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +94 -0
  222. package/dist/types.backup/router/match-pipelines.d.ts +103 -0
  223. package/dist/types.backup/router/match-result.d.ts +114 -0
  224. package/dist/types.backup/router/metrics.d.ts +6 -0
  225. package/dist/types.backup/router/middleware-types.d.ts +74 -0
  226. package/dist/types.backup/router/middleware.d.ts +116 -0
  227. package/dist/types.backup/router/navigation-snapshot.d.ts +22 -0
  228. package/dist/types.backup/router/params-util.d.ts +8 -0
  229. package/dist/types.backup/router/parse-pattern.d.ts +38 -0
  230. package/dist/types.backup/router/pattern-matching.d.ts +169 -0
  231. package/dist/types.backup/router/prefetch-cache-ttl.d.ts +27 -0
  232. package/dist/types.backup/router/prefetch-limits.d.ts +20 -0
  233. package/dist/types.backup/router/prerender-match.d.ts +50 -0
  234. package/dist/types.backup/router/preview-match.d.ts +22 -0
  235. package/dist/types.backup/router/request-classification.d.ts +104 -0
  236. package/dist/types.backup/router/revalidation.d.ts +57 -0
  237. package/dist/types.backup/router/route-snapshot.d.ts +112 -0
  238. package/dist/types.backup/router/router-context.d.ts +137 -0
  239. package/dist/types.backup/router/router-interfaces.d.ts +432 -0
  240. package/dist/types.backup/router/router-options.d.ts +738 -0
  241. package/dist/types.backup/router/router-registry.d.ts +15 -0
  242. package/dist/types.backup/router/segment-resolution/fresh.d.ts +55 -0
  243. package/dist/types.backup/router/segment-resolution/helpers.d.ts +93 -0
  244. package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +33 -0
  245. package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +44 -0
  246. package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +90 -0
  247. package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +53 -0
  248. package/dist/types.backup/router/segment-resolution/revalidation.d.ts +85 -0
  249. package/dist/types.backup/router/segment-resolution/static-store.d.ts +17 -0
  250. package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +16 -0
  251. package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +28 -0
  252. package/dist/types.backup/router/segment-resolution.d.ts +3 -0
  253. package/dist/types.backup/router/segment-wrappers.d.ts +53 -0
  254. package/dist/types.backup/router/state-cookie-name.d.ts +1 -0
  255. package/dist/types.backup/router/substitute-pattern-params.d.ts +23 -0
  256. package/dist/types.backup/router/telemetry-otel.d.ts +113 -0
  257. package/dist/types.backup/router/telemetry.d.ts +215 -0
  258. package/dist/types.backup/router/timeout.d.ts +68 -0
  259. package/dist/types.backup/router/tracing.d.ts +125 -0
  260. package/dist/types.backup/router/trie-matching.d.ts +32 -0
  261. package/dist/types.backup/router/types.d.ts +98 -0
  262. package/dist/types.backup/router/url-params.d.ts +26 -0
  263. package/dist/types.backup/router.d.ts +7 -0
  264. package/dist/types.backup/rsc/capture-queue.d.ts +6 -0
  265. package/dist/types.backup/rsc/full-payload.d.ts +22 -0
  266. package/dist/types.backup/rsc/handler-context.d.ts +31 -0
  267. package/dist/types.backup/rsc/handler.d.ts +9 -0
  268. package/dist/types.backup/rsc/helpers.d.ts +213 -0
  269. package/dist/types.backup/rsc/index.d.ts +17 -0
  270. package/dist/types.backup/rsc/json-route-result.d.ts +20 -0
  271. package/dist/types.backup/rsc/loader-fetch.d.ts +14 -0
  272. package/dist/types.backup/rsc/manifest-init.d.ts +18 -0
  273. package/dist/types.backup/rsc/nonce.d.ts +28 -0
  274. package/dist/types.backup/rsc/origin-guard.d.ts +50 -0
  275. package/dist/types.backup/rsc/progressive-enhancement.d.ts +19 -0
  276. package/dist/types.backup/rsc/redirect-guard.d.ts +35 -0
  277. package/dist/types.backup/rsc/response-cache-serve.d.ts +46 -0
  278. package/dist/types.backup/rsc/response-error.d.ts +19 -0
  279. package/dist/types.backup/rsc/response-route-handler.d.ts +29 -0
  280. package/dist/types.backup/rsc/rsc-rendering.d.ts +23 -0
  281. package/dist/types.backup/rsc/runtime-warnings.d.ts +22 -0
  282. package/dist/types.backup/rsc/server-action.d.ts +68 -0
  283. package/dist/types.backup/rsc/shell-build-manifest.d.ts +84 -0
  284. package/dist/types.backup/rsc/shell-capture-constants.d.ts +27 -0
  285. package/dist/types.backup/rsc/shell-capture.d.ts +374 -0
  286. package/dist/types.backup/rsc/shell-serve.d.ts +136 -0
  287. package/dist/types.backup/rsc/ssr-setup.d.ts +48 -0
  288. package/dist/types.backup/rsc/transition-gate.d.ts +27 -0
  289. package/dist/types.backup/rsc/types.d.ts +290 -0
  290. package/dist/types.backup/runtime-env.d.ts +1 -0
  291. package/dist/types.backup/search-params.d.ts +125 -0
  292. package/dist/types.backup/segment-content-promise.d.ts +13 -0
  293. package/dist/types.backup/segment-fragments.d.ts +56 -0
  294. package/dist/types.backup/segment-loader-promise.d.ts +22 -0
  295. package/dist/types.backup/segment-system.d.ts +84 -0
  296. package/dist/types.backup/serialize.d.ts +164 -0
  297. package/dist/types.backup/server/context.d.ts +494 -0
  298. package/dist/types.backup/server/cookie-parse.d.ts +10 -0
  299. package/dist/types.backup/server/cookie-store.d.ts +107 -0
  300. package/dist/types.backup/server/fetchable-loader-store.d.ts +20 -0
  301. package/dist/types.backup/server/handle-store.d.ts +100 -0
  302. package/dist/types.backup/server/loader-registry.d.ts +32 -0
  303. package/dist/types.backup/server/request-context.d.ts +596 -0
  304. package/dist/types.backup/server/root-layout.d.ts +3 -0
  305. package/dist/types.backup/server.d.ts +15 -0
  306. package/dist/types.backup/ssr/index.d.ts +233 -0
  307. package/dist/types.backup/ssr/inject-rsc-eager.d.ts +3 -0
  308. package/dist/types.backup/ssr/preinit-client-references.d.ts +71 -0
  309. package/dist/types.backup/ssr/ssr-root.d.ts +69 -0
  310. package/dist/types.backup/static-handler.d.ts +57 -0
  311. package/dist/types.backup/testing/cache-status.d.ts +63 -0
  312. package/dist/types.backup/testing/collect-handle.d.ts +20 -0
  313. package/dist/types.backup/testing/dispatch.d.ts +123 -0
  314. package/dist/types.backup/testing/dom.entry.d.ts +15 -0
  315. package/dist/types.backup/testing/e2e/fixture.d.ts +37 -0
  316. package/dist/types.backup/testing/e2e/index.d.ts +30 -0
  317. package/dist/types.backup/testing/e2e/matchers.d.ts +17 -0
  318. package/dist/types.backup/testing/e2e/page-helpers.d.ts +62 -0
  319. package/dist/types.backup/testing/e2e/parity.d.ts +111 -0
  320. package/dist/types.backup/testing/e2e/server.d.ts +35 -0
  321. package/dist/types.backup/testing/flight-matchers.d.ts +55 -0
  322. package/dist/types.backup/testing/flight-normalize.d.ts +1 -0
  323. package/dist/types.backup/testing/flight-tree.d.ts +192 -0
  324. package/dist/types.backup/testing/flight.d.ts +115 -0
  325. package/dist/types.backup/testing/flight.entry.d.ts +27 -0
  326. package/dist/types.backup/testing/generated-routes.d.ts +66 -0
  327. package/dist/types.backup/testing/index.d.ts +52 -0
  328. package/dist/types.backup/testing/internal/context.d.ts +225 -0
  329. package/dist/types.backup/testing/internal/flight-client-globals.d.ts +1 -0
  330. package/dist/types.backup/testing/internal/seed-vars.d.ts +30 -0
  331. package/dist/types.backup/testing/render-handler.d.ts +160 -0
  332. package/dist/types.backup/testing/render-route.d.ts +246 -0
  333. package/dist/types.backup/testing/run-loader.d.ts +186 -0
  334. package/dist/types.backup/testing/run-middleware.d.ts +132 -0
  335. package/dist/types.backup/testing/run-transition-when.d.ts +77 -0
  336. package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +6 -0
  337. package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +13 -0
  338. package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +7 -0
  339. package/dist/types.backup/testing/vitest-stubs/version.d.ts +1 -0
  340. package/dist/types.backup/testing/vitest.d.ts +205 -0
  341. package/dist/types.backup/theme/ThemeProvider.d.ts +13 -0
  342. package/dist/types.backup/theme/ThemeScript.d.ts +45 -0
  343. package/dist/types.backup/theme/constants.d.ts +39 -0
  344. package/dist/types.backup/theme/index.d.ts +29 -0
  345. package/dist/types.backup/theme/theme-context.d.ts +21 -0
  346. package/dist/types.backup/theme/theme-script.d.ts +26 -0
  347. package/dist/types.backup/theme/types.d.ts +162 -0
  348. package/dist/types.backup/theme/use-theme.d.ts +8 -0
  349. package/dist/types.backup/types/boundaries.d.ts +93 -0
  350. package/dist/types.backup/types/cache-types.d.ts +191 -0
  351. package/dist/types.backup/types/error-types.d.ts +114 -0
  352. package/dist/types.backup/types/global-namespace.d.ts +90 -0
  353. package/dist/types.backup/types/handler-context.d.ts +658 -0
  354. package/dist/types.backup/types/index.d.ts +11 -0
  355. package/dist/types.backup/types/loader-types.d.ts +182 -0
  356. package/dist/types.backup/types/request-scope.d.ts +93 -0
  357. package/dist/types.backup/types/route-config.d.ts +105 -0
  358. package/dist/types.backup/types/route-entry.d.ts +95 -0
  359. package/dist/types.backup/types/segments.d.ts +234 -0
  360. package/dist/types.backup/types.d.ts +1 -0
  361. package/dist/types.backup/urls/include-helper.d.ts +17 -0
  362. package/dist/types.backup/urls/include-provider.d.ts +27 -0
  363. package/dist/types.backup/urls/index.d.ts +6 -0
  364. package/dist/types.backup/urls/path-helper-types.d.ts +197 -0
  365. package/dist/types.backup/urls/path-helper.d.ts +12 -0
  366. package/dist/types.backup/urls/pattern-types.d.ts +166 -0
  367. package/dist/types.backup/urls/response-types.d.ts +67 -0
  368. package/dist/types.backup/urls/type-extraction.d.ts +157 -0
  369. package/dist/types.backup/urls/urls-function.d.ts +24 -0
  370. package/dist/types.backup/urls.d.ts +1 -0
  371. package/dist/types.backup/use-loader.d.ts +150 -0
  372. package/dist/types.backup/vercel/index.d.ts +10 -0
  373. package/dist/types.backup/vercel/tracing.d.ts +70 -0
  374. package/dist/types.backup/vite/debug.d.ts +80 -0
  375. package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +12 -0
  376. package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +65 -0
  377. package/dist/types.backup/vite/discovery/discover-routers.d.ts +17 -0
  378. package/dist/types.backup/vite/discovery/discovery-errors.d.ts +113 -0
  379. package/dist/types.backup/vite/discovery/gate-state.d.ts +79 -0
  380. package/dist/types.backup/vite/discovery/prerender-collection.d.ts +24 -0
  381. package/dist/types.backup/vite/discovery/route-types-writer.d.ts +32 -0
  382. package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +22 -0
  383. package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +40 -0
  384. package/dist/types.backup/vite/discovery/state.d.ts +162 -0
  385. package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +15 -0
  386. package/dist/types.backup/vite/index.d.ts +11 -0
  387. package/dist/types.backup/vite/inject-client-debug.d.ts +56 -0
  388. package/dist/types.backup/vite/plugin-types.d.ts +298 -0
  389. package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +6 -0
  390. package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +40 -0
  391. package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +35 -0
  392. package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +64 -0
  393. package/dist/types.backup/vite/plugins/expose-action-id.d.ts +18 -0
  394. package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +37 -0
  395. package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +19 -0
  396. package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +10 -0
  397. package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +8 -0
  398. package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +13 -0
  399. package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +29 -0
  400. package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +6 -0
  401. package/dist/types.backup/vite/plugins/performance-tracks.d.ts +25 -0
  402. package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +20 -0
  403. package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +20 -0
  404. package/dist/types.backup/vite/plugins/vercel-output.d.ts +85 -0
  405. package/dist/types.backup/vite/plugins/version-injector.d.ts +21 -0
  406. package/dist/types.backup/vite/plugins/version-plugin.d.ts +19 -0
  407. package/dist/types.backup/vite/plugins/virtual-entries.d.ts +36 -0
  408. package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +7 -0
  409. package/dist/types.backup/vite/rango.d.ts +29 -0
  410. package/dist/types.backup/vite/router-discovery.d.ts +23 -0
  411. package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +64 -0
  412. package/dist/types.backup/vite/utils/banner.d.ts +2 -0
  413. package/dist/types.backup/vite/utils/bundle-analysis.d.ts +28 -0
  414. package/dist/types.backup/vite/utils/client-chunks.d.ts +55 -0
  415. package/dist/types.backup/vite/utils/directive-prologue.d.ts +16 -0
  416. package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +37 -0
  417. package/dist/types.backup/vite/utils/manifest-utils.d.ts +7 -0
  418. package/dist/types.backup/vite/utils/package-resolution.d.ts +6 -0
  419. package/dist/types.backup/vite/utils/prerender-utils.d.ts +32 -0
  420. package/dist/types.backup/vite/utils/shared-utils.d.ts +55 -0
  421. package/dist/vite/index.js +5 -2
  422. package/package.json +20 -21
  423. package/skills/cache-guide/SKILL.md +6 -3
  424. package/skills/catalog.json +7 -1
  425. package/skills/comparison/references/framework-comparison.md +2 -1
  426. package/skills/deployment-caching/SKILL.md +176 -0
  427. package/skills/document-cache/SKILL.md +30 -3
  428. package/skills/ppr/SKILL.md +81 -34
  429. package/skills/prerender/SKILL.md +15 -8
  430. package/skills/rango/SKILL.md +20 -17
  431. package/skills/router-setup/SKILL.md +4 -0
  432. package/skills/testing/SKILL.md +1 -1
  433. package/skills/testing/cache-prerender.md +5 -1
  434. package/skills/vercel/SKILL.md +22 -1
  435. package/skills/view-transitions/SKILL.md +12 -8
  436. package/src/browser/prefetch/default-strategy.ts +34 -0
  437. package/src/browser/prefetch/loader.ts +6 -12
  438. package/src/browser/prefetch/runtime.ts +0 -1
  439. package/src/browser/react/Link.tsx +22 -21
  440. package/src/browser/rsc-router.tsx +8 -0
  441. package/src/browser/types.ts +5 -0
  442. package/src/cache/cache-scope.ts +6 -1
  443. package/src/cache/cf/cf-cache-store.ts +4 -0
  444. package/src/cache/document-cache.ts +4 -2
  445. package/src/cache/types.ts +10 -3
  446. package/src/cache/vercel/vercel-cache-store.ts +6 -1
  447. package/src/route-definition/helpers-types.ts +6 -6
  448. package/src/router/match-handlers.ts +44 -6
  449. package/src/router/match-middleware/cache-lookup.ts +10 -3
  450. package/src/router/prefetch-default.ts +59 -0
  451. package/src/router/router-interfaces.ts +8 -0
  452. package/src/router/router-options.ts +31 -0
  453. package/src/router/segment-resolution/view-transition-default.ts +9 -5
  454. package/src/router/transition-when.ts +76 -0
  455. package/src/router.ts +7 -0
  456. package/src/rsc/capture-queue.ts +24 -1
  457. package/src/rsc/full-payload.ts +1 -0
  458. package/src/rsc/handler.ts +1 -0
  459. package/src/rsc/progressive-enhancement.ts +9 -14
  460. package/src/rsc/rsc-rendering.ts +261 -48
  461. package/src/rsc/shell-capture.ts +94 -50
  462. package/src/rsc/shell-serve.ts +9 -4
  463. package/src/rsc/transition-gate.ts +37 -40
  464. package/src/rsc/types.ts +2 -0
  465. package/src/server/request-context.ts +6 -0
  466. package/src/testing/e2e/index.ts +11 -0
  467. package/src/testing/e2e/page-helpers.ts +47 -0
  468. package/src/testing/e2e/parity.ts +13 -0
  469. package/src/testing/index.ts +9 -1
  470. package/src/testing/run-transition-when.ts +42 -9
  471. package/src/testing/shell-status.ts +92 -3
  472. package/src/types/segments.ts +27 -22
  473. package/src/urls/path-helper-types.ts +4 -3
@@ -0,0 +1,88 @@
1
+ import { type ReactNode } from "react";
2
+ import type { NavigationStore, NavigationUpdate, NavigationBridge } from "../types.js";
3
+ import type { EventController } from "../event-controller.js";
4
+ import type { ResolvedThemeConfig, Theme } from "../../theme/types.js";
5
+ import { type AppShellRef } from "../app-shell.js";
6
+ /**
7
+ * Props for NavigationProvider
8
+ */
9
+ export interface NavigationProviderProps {
10
+ /**
11
+ * Navigation store instance (for cache/segment management)
12
+ */
13
+ store: NavigationStore;
14
+ /**
15
+ * Event controller instance (for navigation/action state)
16
+ */
17
+ eventController: EventController;
18
+ /**
19
+ * Initial rendered tree + metadata from server payload
20
+ */
21
+ initialPayload: NavigationUpdate;
22
+ /**
23
+ * Navigation bridge for handling navigation
24
+ */
25
+ bridge: NavigationBridge;
26
+ /**
27
+ * Theme configuration (null if theme not enabled)
28
+ * When provided, wraps content in ThemeProvider
29
+ */
30
+ themeConfig?: ResolvedThemeConfig | null;
31
+ /**
32
+ * Initial theme from server (from cookie)
33
+ * Only used when themeConfig is provided
34
+ */
35
+ initialTheme?: Theme;
36
+ /**
37
+ * Whether connection warmup is enabled.
38
+ * When true, keeps TLS alive by sending HEAD requests after idle periods.
39
+ */
40
+ warmupEnabled?: boolean;
41
+ /**
42
+ * App version from server payload.
43
+ * Used only as a fallback when `appShellRef` is not supplied.
44
+ */
45
+ version?: string;
46
+ /**
47
+ * URL prefix for all routes (from createRouter({ basename })).
48
+ * Used only as a fallback when `appShellRef` is not supplied.
49
+ */
50
+ basename?: string;
51
+ /**
52
+ * App-shell ref. When provided, the context's `basename` and `version` are
53
+ * read through it (live getters) so they don't close over a stale snapshot or
54
+ * invalidate the memoized context value. The shell is set once at init and is
55
+ * not swapped within a session — a cross-app navigation is a full document
56
+ * load (X-RSC-Reload), so the target app establishes its own shell on load.
57
+ */
58
+ appShellRef?: AppShellRef;
59
+ /**
60
+ * CSP nonce to expose via NonceContext. Production leaves this undefined — the
61
+ * browser has no nonce (it is a server-side HTML concern), and SSR provides the
62
+ * nonce through its own NonceContext.Provider. Test harnesses (renderRoute) set
63
+ * it to seed a nonce so components calling useNonce() can be exercised.
64
+ */
65
+ nonce?: string;
66
+ }
67
+ /**
68
+ * Navigation provider component
69
+ *
70
+ * Provides navigation context to the component tree and handles:
71
+ * - Providing stable store and event controller references (never re-renders consumers)
72
+ * - Subscribing to UI updates to re-render the tree
73
+ * - Providing navigate/refresh methods (delegated to bridge)
74
+ *
75
+ * State subscriptions happen via useNavigation hook (via event controller), not via context.
76
+ * This means context consumers don't re-render on state changes.
77
+ *
78
+ * @example
79
+ * ```tsx
80
+ * <NavigationProvider
81
+ * store={store}
82
+ * eventController={eventController}
83
+ * initialPayload={payload}
84
+ * bridge={navigationBridge}
85
+ * />
86
+ * ```
87
+ */
88
+ export declare function NavigationProvider({ store, eventController, initialPayload, bridge, themeConfig, initialTheme, warmupEnabled, version, basename, appShellRef, nonce, }: NavigationProviderProps): ReactNode;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Props for ScrollRestoration component
3
+ */
4
+ export interface ScrollRestorationProps {
5
+ /**
6
+ * Custom function to determine the scroll restoration key.
7
+ * By default, uses a unique key per history entry (location.key).
8
+ *
9
+ * Return location.pathname to restore scroll based on path
10
+ * (useful for keeping scroll position on the same page).
11
+ *
12
+ * Provide a stable reference: a module-level function or one wrapped in
13
+ * useCallback. The init effect re-runs when getKey's identity changes, and
14
+ * teardown clears in-memory scroll positions — a fresh inline arrow on every
15
+ * parent render would discard unpersisted positions mid-session.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * // Stable module-level getKey (recommended)
20
+ * const byPathname = (location) => location.pathname;
21
+ *
22
+ * // Restore based on pathname (same URL = same scroll)
23
+ * <ScrollRestoration getKey={byPathname} />
24
+ *
25
+ * // Restore based on unique history entry (default)
26
+ * // <ScrollRestoration /> — omit getKey to use location.key
27
+ * ```
28
+ */
29
+ getKey?: (location: {
30
+ pathname: string;
31
+ search: string;
32
+ hash: string;
33
+ key: string;
34
+ }) => string;
35
+ }
36
+ /**
37
+ * ScrollRestoration component
38
+ *
39
+ * Enables scroll position restoration across navigations:
40
+ * - Saves scroll positions to sessionStorage
41
+ * - Restores scroll on back/forward navigation
42
+ * - Scrolls to top on new navigation
43
+ * - Supports hash link scrolling
44
+ *
45
+ * Should be rendered once in your app, typically in the root layout.
46
+ *
47
+ * @example
48
+ * ```tsx
49
+ * // In your root layout
50
+ * export default function RootLayout({ children }) {
51
+ * return (
52
+ * <html>
53
+ * <body>
54
+ * <ScrollRestoration />
55
+ * {children}
56
+ * </body>
57
+ * </html>
58
+ * );
59
+ * }
60
+ * ```
61
+ */
62
+ export declare function ScrollRestoration({ getKey }: ScrollRestorationProps): null;
63
+ /**
64
+ * Hook to initialize scroll restoration
65
+ *
66
+ * Alternative to the ScrollRestoration component for more control.
67
+ *
68
+ * @example
69
+ * ```tsx
70
+ * function App() {
71
+ * useScrollRestoration();
72
+ * return <div>...</div>;
73
+ * }
74
+ * ```
75
+ */
76
+ export declare function useScrollRestoration(options?: {
77
+ getKey?: ScrollRestorationProps["getKey"];
78
+ }): void;
@@ -0,0 +1,54 @@
1
+ import { type Context } from "react";
2
+ import type { NavigationStore, NavigateOptions } from "../types.js";
3
+ import type { EventController } from "../event-controller.js";
4
+ /**
5
+ * Navigation context value provided by NavigationProvider
6
+ *
7
+ * This context provides a STABLE reference to the store, event controller, and methods.
8
+ * The store itself never changes, so context consumers don't re-render
9
+ * when navigation state changes.
10
+ *
11
+ * Components subscribe to state changes via eventController.subscribe() in useNavigation.
12
+ */
13
+ export interface NavigationStoreContextValue {
14
+ /**
15
+ * The navigation store instance (stable reference)
16
+ * Used for cache/segment management
17
+ */
18
+ store: NavigationStore;
19
+ /**
20
+ * The event controller instance (stable reference)
21
+ * Used for navigation/action state
22
+ */
23
+ eventController: EventController;
24
+ /**
25
+ * Navigate to a new URL
26
+ *
27
+ * @param url - The URL to navigate to
28
+ * @param options - Navigation options (replace, scroll)
29
+ * @returns Promise that resolves when navigation is complete
30
+ */
31
+ navigate: (url: string, options?: NavigateOptions) => Promise<void>;
32
+ /**
33
+ * Refresh the current route
34
+ *
35
+ * @returns Promise that resolves when refresh is complete
36
+ */
37
+ refresh: () => Promise<void>;
38
+ /**
39
+ * App version from the initial server payload.
40
+ */
41
+ version: string | undefined;
42
+ /**
43
+ * URL prefix for all routes (from createRouter({ basename })).
44
+ * Used by Link and useRouter() to auto-prefix app-local paths.
45
+ */
46
+ basename: string | undefined;
47
+ }
48
+ /**
49
+ * React context for navigation store
50
+ *
51
+ * Provides stable reference to the store - does NOT re-render on state changes.
52
+ * Use useNavigation hook for reactive state access.
53
+ */
54
+ export declare const NavigationStoreContext: Context<NavigationStoreContextValue | null>;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Build the handle-collection segment order from a raw `matched` list.
3
+ *
4
+ * Two responsibilities:
5
+ *
6
+ * 1. Drop loader sub-ids ("D" followed by a digit, e.g. "M0L0D1.user") —
7
+ * loaders never push handles.
8
+ *
9
+ * 2. Place each parallel slot id (contains ".@") immediately after its
10
+ * parent layout/route id. Raw segment-resolution emission order does NOT
11
+ * guarantee this: route-mounted parallels are resolved/pushed BEFORE the
12
+ * route handler's segment is appended (see fresh.ts:resolveSegment for
13
+ * routes, and revalidation.ts ~915-919), so matched can read
14
+ * `[..., R0.@panel, R0]`. collectHandleData consumes segmentOrder verbatim
15
+ * with later-wins semantics, so without normalization the route handler's
16
+ * Meta would override the slot's more-specific Meta — backwards.
17
+ *
18
+ * Slot-id format is `<parentShortCode>.@<slotName>`; `parentShortCode` never
19
+ * contains ".@", so splitting at the first ".@" reliably yields the parent.
20
+ */
21
+ export declare function filterSegmentOrder(matched: string[]): string[];
22
+ /**
23
+ * Build the "layouts and routes only" id list for useSegments().segmentIds.
24
+ *
25
+ * Strips parallel slot ids (contain ".@") and loader sub-ids ("D" followed by
26
+ * a digit, e.g. "M0L0D1.user") without reordering. Distinct from
27
+ * filterSegmentOrder, which also reorders slots after their parent for handle
28
+ * collection.
29
+ *
30
+ * Shared by SSR (ssr/index.tsx) and the client event controller
31
+ * (event-controller.ts) so both produce identical output; if they diverge,
32
+ * useSegments().segmentIds rendered during SSR and after hydration disagree
33
+ * and React reports a hydration mismatch.
34
+ */
35
+ export declare function filterRouteSegmentIds(matched: string[]): string[];
@@ -0,0 +1 @@
1
+ export { NavigationProvider, type NavigationProviderProps, } from "./NavigationProvider.js";
@@ -0,0 +1,162 @@
1
+ import type { ReactElement } from "react";
2
+ /**
3
+ * Internal entry representing a state value with its unique key.
4
+ * When __rsc_ls_lazy is true, __rsc_ls_value holds a getter function
5
+ * that is called at navigation time (not at entry creation time).
6
+ */
7
+ export interface LocationStateEntry {
8
+ readonly __rsc_ls_key: string;
9
+ readonly __rsc_ls_value: unknown;
10
+ readonly __rsc_ls_lazy?: boolean;
11
+ }
12
+ /**
13
+ * Options for createLocationState
14
+ */
15
+ export interface LocationStateOptions {
16
+ /** When true, the state is cleared from history after first read (flash message pattern) */
17
+ flash?: boolean;
18
+ }
19
+ type LocationStateUnsafeFn = (...args: never[]) => unknown;
20
+ type LocationStateUnsafeCtor = abstract new (...args: never[]) => unknown;
21
+ type IsAny<T> = 0 extends 1 & T ? true : false;
22
+ type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false;
23
+ /**
24
+ * Branded error surfaced when a value that cannot live in location state is
25
+ * used. Location state is written into `history.state`, which uses the
26
+ * structured clone algorithm; React elements, functions, and symbols throw a
27
+ * `DataCloneError` at runtime. Carries a human-readable reason so the compile
28
+ * error explains the fix.
29
+ */
30
+ export type LocationStateUnsafe<Reason extends string> = {
31
+ readonly __rango_location_state_unsafe: Reason;
32
+ };
33
+ /**
34
+ * Maps `T` to itself when it is safe to store in location state, or to a branded
35
+ * {@link LocationStateUnsafe} error for the disallowed parts: `unknown`, React
36
+ * elements (RSC/JSX content), functions, class constructors, and symbols.
37
+ * Recurses through arrays, `Map`, `Set`, and plain objects; structured-clone
38
+ * built-ins (`Date`, `RegExp`, typed arrays, `Blob`, `File`, `FormData`) pass
39
+ * through. Consumed by {@link ValidateLocationState}, which is intersected into a
40
+ * definition's value parameter so posting RSC content is a COMPILE error, not a
41
+ * runtime `DataCloneError`. (`any` is unguardable and remains an escape hatch.)
42
+ */
43
+ export type LocationStateSafe<T> = IsUnknown<T> extends true ? LocationStateUnsafe<"location state needs an explicit, concrete type; `unknown` cannot be verified as serializable"> : T extends LocationStateUnsafeFn ? LocationStateUnsafe<"functions cannot be stored in location state"> : T extends LocationStateUnsafeCtor ? LocationStateUnsafe<"class constructors cannot be stored in location state"> : T extends symbol ? LocationStateUnsafe<"symbols cannot be stored in location state"> : T extends ReactElement ? LocationStateUnsafe<"React/RSC content cannot be stored in location state; store plain data and render it on arrival"> : T extends string | number | boolean | bigint | null | undefined ? T : T extends Date | RegExp | ArrayBuffer | ArrayBufferView | Blob | File | FormData ? T : T extends ReadonlyMap<infer K, infer V> ? ReadonlyMap<LocationStateSafe<K>, LocationStateSafe<V>> : T extends ReadonlySet<infer V> ? ReadonlySet<LocationStateSafe<V>> : T extends readonly unknown[] ? {
44
+ [K in keyof T]: LocationStateSafe<T[K]>;
45
+ } : T extends object ? {
46
+ [K in keyof T]: LocationStateSafe<T[K]>;
47
+ } : T;
48
+ /**
49
+ * `unknown` (a no-op) when `T` is safe to store in location state, otherwise a
50
+ * branded {@link LocationStateUnsafe} object. Intersected into the value
51
+ * parameter of a definition's call and `write()` so POSTING RSC content (or any
52
+ * non-serializable value) is a compile error whose text carries the reason —
53
+ * without a `TState extends ...` self-constraint, which TypeScript rejects as
54
+ * circular (TS2313). For safe `T`, `value & unknown` collapses back to `value`,
55
+ * so valid usage is unchanged.
56
+ */
57
+ export type ValidateLocationState<T> = [T] extends [LocationStateSafe<T>] ? unknown : LocationStateUnsafe<"location state must be serializable: React/RSC content, functions, and symbols cannot be stored — pass plain data and render it on arrival">;
58
+ /**
59
+ * Type-safe location state definition
60
+ *
61
+ * Created via createLocationState(), used with Link's state prop
62
+ * and useLocationState() hook.
63
+ */
64
+ export interface LocationStateDefinition<TArgs extends unknown[], TState> {
65
+ (...args: TArgs): LocationStateEntry;
66
+ /** Injected by Vite plugin - do not set manually */
67
+ __rsc_ls_key: string;
68
+ /** Whether this state auto-clears after first read */
69
+ readonly __rsc_ls_flash: boolean;
70
+ /**
71
+ * Read the current value from history.state.
72
+ *
73
+ * Returns undefined during SSR (no `window`). To stay hydration-safe, do
74
+ * NOT call read() inline during the initial render — the server returns
75
+ * undefined while the client may have a value preserved in history.state
76
+ * (e.g. after a hard reload of an entry that earlier called write()),
77
+ * which causes a hydration mismatch. Call read() inside an event handler
78
+ * or a useEffect post-mount instead, or use useLocationState() if you
79
+ * want React to manage subscription/hydration for you.
80
+ */
81
+ read(): TState | undefined;
82
+ /**
83
+ * Statically write the value into the current history entry under this
84
+ * definition's key, preserving any other keys already on history.state
85
+ * (e.g. router bookkeeping, other LocationState slots).
86
+ *
87
+ * This is the non-reactive counterpart to read(): it does not dispatch any
88
+ * event, so components reading via useLocationState() will NOT re-render
89
+ * until the next navigation/popstate. Use it when you only need the value
90
+ * to be there on the next read() or on the next mount (including after
91
+ * back/forward and hard refresh of the same entry).
92
+ *
93
+ * Client-only: throws when called on the server (no history available).
94
+ */
95
+ write(value: TState & ValidateLocationState<TState>): void;
96
+ /**
97
+ * Statically remove this definition's slot from the current history entry,
98
+ * leaving any other keys on history.state untouched. Idempotent: removing
99
+ * a slot that isn't present is a no-op.
100
+ *
101
+ * Same non-reactive semantics as write(): no event is dispatched, so
102
+ * useLocationState() readers will NOT re-render until the next navigation.
103
+ *
104
+ * Client-only: throws when called on the server (no history available).
105
+ */
106
+ delete(): void;
107
+ }
108
+ /**
109
+ * Create a type-safe location state definition
110
+ *
111
+ * The key is auto-injected by the Vite exposeInternalIds plugin as a property
112
+ * based on file path and export name. No manual key required.
113
+ *
114
+ * @param options Optional configuration
115
+ * @returns A typed state definition for use with Link and useLocationState
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * // Persistent state (survives back/forward)
120
+ * export const ProductState = createLocationState<{ name: string; price: number }>();
121
+ *
122
+ * // Flash state (cleared after first read)
123
+ * export const FlashMessage = createLocationState<{ text: string }>({ flash: true });
124
+ *
125
+ * // Use in Link
126
+ * <Link to="/product/123" state={[ProductState({ name: "Widget", price: 9.99 })]}>
127
+ *
128
+ * // Just-in-time typed state (getter called at click time, not render time).
129
+ * // Must be in a client component — the getter function can't cross the RSC boundary.
130
+ * <Link
131
+ * to="/product/123"
132
+ * state={[ProductState(() => ({ name: product.name, price: product.price }))]}
133
+ * >
134
+ *
135
+ * // Read with hook (reactive)
136
+ * const product = useLocationState(ProductState);
137
+ *
138
+ * // Read without hook (snapshot, client-side only)
139
+ * const snap = ProductState.read();
140
+ *
141
+ * // Static write to current history entry (non-reactive, client-side only).
142
+ * // Survives back/forward and hard refresh; useLocationState() readers will
143
+ * // NOT see the new value until the next navigation. Pair with .read() or a
144
+ * // fresh mount.
145
+ * ProductState.write({ name: "Widget", price: 9.99 });
146
+ *
147
+ * // Manually clear the slot (non-reactive, client-side only).
148
+ * ProductState.delete();
149
+ * ```
150
+ */
151
+ export declare function createLocationState<TState>(options?: LocationStateOptions): LocationStateDefinition<[
152
+ (TState | (() => TState)) & ValidateLocationState<TState>
153
+ ], TState>;
154
+ /**
155
+ * Check if a value is a LocationStateEntry
156
+ */
157
+ export declare function isLocationStateEntry(value: unknown): value is LocationStateEntry;
158
+ /**
159
+ * Resolve state entries into a flat object for history.state
160
+ */
161
+ export declare function resolveLocationStateEntries(entries: LocationStateEntry[]): Record<string, unknown>;
162
+ export {};
@@ -0,0 +1,29 @@
1
+ import type { LocationStateDefinition } from "./location-state-shared.js";
2
+ export { createLocationState, isLocationStateEntry, resolveLocationStateEntries, type LocationStateEntry, type LocationStateDefinition, type LocationStateOptions, } from "./location-state-shared.js";
3
+ /**
4
+ * Hook to read location state from history.state
5
+ *
6
+ * Behavior depends on the definition:
7
+ * - Normal state: persists across navigations, reactive to popstate
8
+ * - Flash state (created with { flash: true }): read once, cleared after paint
9
+ *
10
+ * Overloaded:
11
+ * - With definition: Returns typed state from the specific key
12
+ * - With type param only: Returns plain state from history.state.state
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // Persistent state
17
+ * const ProductState = createLocationState<{ name: string }>();
18
+ * const state = useLocationState(ProductState);
19
+ *
20
+ * // Flash state (auto-clears after paint)
21
+ * const FlashMsg = createLocationState<{ text: string }>({ flash: true });
22
+ * const flash = useLocationState(FlashMsg);
23
+ *
24
+ * // Plain state access (reads from history.state.state)
25
+ * const state = useLocationState<{ from?: string }>();
26
+ * ```
27
+ */
28
+ export declare function useLocationState<TArgs extends unknown[], TState>(definition: LocationStateDefinition<TArgs, TState>): TState | undefined;
29
+ export declare function useLocationState<T = unknown>(): T | undefined;
@@ -0,0 +1,23 @@
1
+ import { type Context, type ReactNode } from "react";
2
+ /**
3
+ * Context for the current include() mount path.
4
+ *
5
+ * Each include() wraps its subtree with a MountContext.Provider
6
+ * carrying the URL prefix. Nested includes override the context,
7
+ * so useMount() returns the nearest mount path.
8
+ *
9
+ * Default value "/" means root-level (no include wrapping).
10
+ */
11
+ export declare const MountContext: Context<string>;
12
+ /**
13
+ * Provider wrapper for MountContext.
14
+ *
15
+ * RSC server components cannot use MountContext.Provider directly because
16
+ * .Provider is a property on the context object, not a named export.
17
+ * Client reference proxies on the RSC server return undefined for property
18
+ * access. This wrapper is a proper "use client" export that RSC can reference.
19
+ */
20
+ export declare function MountContextProvider({ value, children, }: {
21
+ value: string;
22
+ children: ReactNode;
23
+ }): ReactNode;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Context for CSP nonce propagation to client components during SSR.
3
+ *
4
+ * The SSR renderer wraps the tree with NonceContext.Provider so that
5
+ * client components (e.g. MetaTags) can apply nonces to inline scripts.
6
+ * On the browser side, no provider is needed — the default undefined
7
+ * is correct since CSP nonces are a server-side HTML concern.
8
+ */
9
+ import { type Context } from "react";
10
+ export declare const NonceContext: Context<string | undefined>;
11
+ /**
12
+ * Read the CSP nonce during SSR. Returns undefined on the client.
13
+ */
14
+ export declare function useNonce(): string | undefined;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shallow equality check for selector results.
3
+ * Uses Object.is for value comparison (handles NaN and +-0 correctly).
4
+ */
5
+ export declare function shallowEqual<T>(a: T, b: T): boolean;
@@ -0,0 +1,61 @@
1
+ import type { TrackedActionState } from "../types.js";
2
+ /**
3
+ * Server action function type
4
+ * Server actions have a $$id property added by the RSC compiler
5
+ */
6
+ export type ServerActionFunction = ((...args: any[]) => Promise<any>) & {
7
+ $$id?: string;
8
+ };
9
+ /**
10
+ * Hook to track the lifecycle of a specific server action
11
+ *
12
+ * Unlike useNavigation which tracks global navigation state, useAction
13
+ * tracks the state of individual server action invocations.
14
+ *
15
+ * Uses the event controller for reactive state management.
16
+ * State is derived from the inflight actions tracked by the controller.
17
+ *
18
+ * Features:
19
+ * - Tracks action lifecycle: idle → loading → streaming → idle
20
+ * - Captures result/error locally (React handles cleanup)
21
+ * - If multiple actions fire, tracks only the last one
22
+ * - Supports selector pattern like useNavigation
23
+ *
24
+ * Matching behavior:
25
+ * - **Function reference**: Uses full $$id for exact matching. This is precise
26
+ * and distinguishes between actions with the same name in different files.
27
+ * - **String**: Matches by suffix (action name after #). This is convenient
28
+ * but may be ambiguous if multiple files export the same action name.
29
+ *
30
+ * @param action - Either a server action function or a string action name.
31
+ * - **Function**: Must be directly imported in the client component.
32
+ * Actions passed as props from server components will throw an error.
33
+ * - **String**: The exported function name from your "use server" file.
34
+ * Matches any action ending with "#actionName" (suffix match).
35
+ *
36
+ * @example
37
+ * ```tsx
38
+ * // Option 1: Direct import (precise matching)
39
+ * import { addToCart } from './actions';
40
+ * const actionState = useAction(addToCart);
41
+ *
42
+ * // Option 2: String-based (suffix matching)
43
+ * // Matches "hash#addToCart" or "src/actions.ts#addToCart"
44
+ * const actionState = useAction('addToCart');
45
+ *
46
+ * // With selector for specific values
47
+ * const isLoading = useAction(addToCart, state => state.state === 'loading');
48
+ * const error = useAction(addToCart, state => state.error);
49
+ * ```
50
+ *
51
+ * @note The selector is expected to be stable for a given hook instance.
52
+ * This hook tracks one projection of one action. Changing selector semantics
53
+ * for the same action ID without a new action event is not a supported pattern;
54
+ * use separate useAction() subscriptions if you need different projections.
55
+ *
56
+ * @note Actions passed as props from server components lose their metadata
57
+ * during RSC serialization. Use a string action name or import directly.
58
+ */
59
+ export declare function useAction(action: ServerActionFunction | string): TrackedActionState;
60
+ export declare function useAction<T>(action: ServerActionFunction | string, selector: (state: TrackedActionState) => T): T;
61
+ export type { TrackedActionState };
@@ -0,0 +1,21 @@
1
+ import type { Handle } from "../../handle.js";
2
+ /**
3
+ * Hook to access collected handle data.
4
+ *
5
+ * Returns the collected value from all route segments that pushed to this handle.
6
+ * Re-renders when handle data changes (navigation, actions).
7
+ *
8
+ * @param handle - The handle to read
9
+ * @param selector - Optional selector for performance (only re-render when selected value changes)
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * // Get all breadcrumbs
14
+ * const breadcrumbs = useHandle(Breadcrumbs);
15
+ *
16
+ * // With selector - only re-render when last crumb changes
17
+ * const lastCrumb = useHandle(Breadcrumbs, (data) => data.at(-1));
18
+ * ```
19
+ */
20
+ export declare function useHandle<T, A>(handle: Handle<T, A>): Rango.FlightSerialize<A>;
21
+ export declare function useHandle<T, A, S>(handle: Handle<T, A>, selector: (data: Rango.FlightSerialize<A>) => S): S;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Client-side hook for mount-aware URL resolution.
3
+ *
4
+ * Returns an href function that automatically prepends the current
5
+ * include() mount prefix. Inside an include("/shop", ...) scope,
6
+ * the returned function resolves local paths relative to /shop.
7
+ *
8
+ * For absolute paths (outside the current mount), use the bare
9
+ * href() function directly instead.
10
+ *
11
+ * @returns A function that prepends the mount prefix to paths
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * "use client";
16
+ * import { useHref, href } from "@rangojs/router/client";
17
+ *
18
+ * // Inside include("/shop", shopPatterns)
19
+ * function ShopNav() {
20
+ * const href = useHref();
21
+ *
22
+ * return (
23
+ * <>
24
+ * {// Local paths - auto-prefixed with /shop}
25
+ * <Link to={href("/cart")}>Cart</Link>
26
+ * <Link to={href("/product/widget")}>Widget</Link>
27
+ * </>
28
+ * );
29
+ * }
30
+ * ```
31
+ */
32
+ export declare function useHref(): (path: `/${string}`) => string;
@@ -0,0 +1,36 @@
1
+ import { type Context } from "react";
2
+ /**
3
+ * Context for Link component to provide its destination URL
4
+ * Used by useLinkStatus to determine if this specific link is pending
5
+ */
6
+ export declare const LinkContext: Context<string | null>;
7
+ /**
8
+ * Link status returned by useLinkStatus hook
9
+ */
10
+ export interface LinkStatus {
11
+ /** Whether navigation to this link's destination is in progress */
12
+ pending: boolean;
13
+ }
14
+ /**
15
+ * Hook to track the pending state of a Link component
16
+ *
17
+ * Must be used inside a Link component. Returns `{ pending: true }`
18
+ * when navigation to this link's destination is in progress.
19
+ *
20
+ * Useful for showing inline loading indicators on individual links.
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * function LoadingIndicator() {
25
+ * const { pending } = useLinkStatus();
26
+ * return pending ? <Spinner /> : null;
27
+ * }
28
+ *
29
+ * // In your component:
30
+ * <Link to="/dashboard">
31
+ * Dashboard
32
+ * <LoadingIndicator />
33
+ * </Link>
34
+ * ```
35
+ */
36
+ export declare function useLinkStatus(): LinkStatus;