@rangojs/router 0.0.0-experimental.79 → 0.0.0-experimental.7cf4e116

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 (1196) hide show
  1. package/AGENTS.md +8 -0
  2. package/README.md +169 -31
  3. package/dist/bin/rango.js +312 -93
  4. package/dist/testing/vitest.js +82 -0
  5. package/dist/vite/index.js +2827 -1032
  6. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  7. package/package.json +76 -21
  8. package/skills/api-client/SKILL.md +211 -0
  9. package/skills/breadcrumbs/SKILL.md +64 -2
  10. package/skills/bundle-analysis/SKILL.md +159 -0
  11. package/skills/cache-guide/SKILL.md +224 -32
  12. package/skills/caching/SKILL.md +279 -17
  13. package/skills/composability/SKILL.md +27 -2
  14. package/skills/css/SKILL.md +76 -0
  15. package/skills/debug-manifest/SKILL.md +4 -2
  16. package/skills/document-cache/SKILL.md +78 -55
  17. package/skills/handler-use/SKILL.md +4 -2
  18. package/skills/hooks/SKILL.md +250 -30
  19. package/skills/host-router/SKILL.md +83 -23
  20. package/skills/i18n/SKILL.md +276 -0
  21. package/skills/intercept/SKILL.md +30 -6
  22. package/skills/layout/SKILL.md +13 -9
  23. package/skills/links/SKILL.md +247 -17
  24. package/skills/loader/SKILL.md +225 -9
  25. package/skills/middleware/SKILL.md +18 -10
  26. package/skills/migrate-nextjs/SKILL.md +40 -16
  27. package/skills/migrate-react-router/SKILL.md +9 -2
  28. package/skills/mime-routes/SKILL.md +28 -1
  29. package/skills/observability/SKILL.md +172 -0
  30. package/skills/parallel/SKILL.md +18 -7
  31. package/skills/prerender/SKILL.md +45 -43
  32. package/skills/rango/SKILL.md +251 -24
  33. package/skills/react-compiler/SKILL.md +168 -0
  34. package/skills/response-routes/SKILL.md +123 -48
  35. package/skills/route/SKILL.md +46 -5
  36. package/skills/router-setup/SKILL.md +29 -6
  37. package/skills/scripts/SKILL.md +179 -0
  38. package/skills/server-actions/SKILL.md +775 -0
  39. package/skills/streams-and-websockets/SKILL.md +283 -0
  40. package/skills/tailwind/SKILL.md +27 -3
  41. package/skills/testing/SKILL.md +129 -0
  42. package/skills/testing/bindings.md +103 -0
  43. package/skills/testing/cache-prerender.md +127 -0
  44. package/skills/testing/client-components.md +124 -0
  45. package/skills/testing/e2e-parity.md +125 -0
  46. package/skills/testing/flight.md +91 -0
  47. package/skills/testing/handles.md +129 -0
  48. package/skills/testing/loader.md +128 -0
  49. package/skills/testing/middleware.md +99 -0
  50. package/skills/testing/render-handler.md +121 -0
  51. package/skills/testing/response-routes.md +95 -0
  52. package/skills/testing/reverse-and-types.md +84 -0
  53. package/skills/testing/server-actions.md +107 -0
  54. package/skills/testing/server-tree.md +128 -0
  55. package/skills/testing/setup.md +123 -0
  56. package/skills/typesafety/SKILL.md +322 -29
  57. package/skills/use-cache/SKILL.md +46 -14
  58. package/skills/view-transitions/SKILL.md +294 -0
  59. package/src/__augment-tests__/augment.ts +81 -0
  60. package/src/__augment-tests__/augmented.check.ts +116 -0
  61. package/src/__internal.ts +0 -65
  62. package/src/browser/action-coordinator.ts +53 -36
  63. package/src/browser/action-fence.ts +47 -0
  64. package/src/browser/app-shell.ts +39 -0
  65. package/src/browser/connection-warmup.ts +134 -0
  66. package/src/browser/cookie-name.ts +140 -0
  67. package/src/browser/event-controller.ts +192 -150
  68. package/src/browser/history-state.ts +21 -0
  69. package/src/browser/index.ts +3 -3
  70. package/src/browser/invalidate-client-cache.ts +52 -0
  71. package/src/browser/navigation-bridge.ts +71 -16
  72. package/src/browser/navigation-client.ts +127 -78
  73. package/src/browser/navigation-store-handle.ts +38 -0
  74. package/src/browser/navigation-store.ts +33 -59
  75. package/src/browser/navigation-transaction.ts +9 -59
  76. package/src/browser/network-error-handler.ts +34 -7
  77. package/src/browser/partial-update.ts +125 -127
  78. package/src/browser/prefetch/cache.ts +201 -68
  79. package/src/browser/prefetch/fetch.ts +287 -59
  80. package/src/browser/prefetch/queue.ts +42 -8
  81. package/src/browser/rango-state.ts +158 -76
  82. package/src/browser/react/Link.tsx +48 -20
  83. package/src/browser/react/NavigationProvider.tsx +162 -118
  84. package/src/browser/react/ScrollRestoration.tsx +10 -6
  85. package/src/browser/react/filter-segment-order.ts +66 -7
  86. package/src/browser/react/index.ts +0 -48
  87. package/src/browser/react/location-state-shared.ts +178 -8
  88. package/src/browser/react/location-state.ts +39 -14
  89. package/src/browser/react/use-action.ts +6 -15
  90. package/src/browser/react/use-handle.ts +17 -14
  91. package/src/browser/react/use-href.tsx +8 -1
  92. package/src/browser/react/use-link-status.ts +33 -8
  93. package/src/browser/react/use-navigation.ts +32 -7
  94. package/src/browser/react/use-params.ts +20 -10
  95. package/src/browser/react/use-reverse.ts +106 -0
  96. package/src/browser/react/use-router.ts +25 -3
  97. package/src/browser/react/use-search-params.ts +0 -5
  98. package/src/browser/react/use-segments.ts +11 -21
  99. package/src/browser/response-adapter.ts +80 -5
  100. package/src/browser/rsc-router.tsx +91 -24
  101. package/src/browser/scroll-restoration.ts +30 -17
  102. package/src/browser/segment-structure-assert.ts +2 -2
  103. package/src/browser/server-action-bridge.ts +214 -55
  104. package/src/browser/types.ts +57 -8
  105. package/src/browser/validate-redirect-origin.ts +43 -16
  106. package/src/build/collect-fallback-refs.ts +107 -0
  107. package/src/build/generate-manifest.ts +60 -35
  108. package/src/build/generate-route-types.ts +2 -1
  109. package/src/build/index.ts +8 -2
  110. package/src/build/prefix-tree-utils.ts +123 -0
  111. package/src/build/route-trie.ts +117 -14
  112. package/src/build/route-types/ast-route-extraction.ts +15 -8
  113. package/src/build/route-types/codegen.ts +16 -5
  114. package/src/build/route-types/include-resolution.ts +117 -23
  115. package/src/build/route-types/param-extraction.ts +6 -3
  116. package/src/build/route-types/per-module-writer.ts +22 -6
  117. package/src/build/route-types/router-processing.ts +55 -28
  118. package/src/build/route-types/scan-filter.ts +1 -1
  119. package/src/build/route-types/source-scan.ts +216 -0
  120. package/src/build/runtime-discovery.ts +9 -20
  121. package/src/cache/cache-error.ts +104 -0
  122. package/src/cache/cache-key-utils.ts +29 -13
  123. package/src/cache/cache-policy.ts +108 -34
  124. package/src/cache/cache-runtime.ts +199 -37
  125. package/src/cache/cache-scope.ts +188 -82
  126. package/src/cache/cache-tag.ts +103 -0
  127. package/src/cache/cf/cf-base64.ts +33 -0
  128. package/src/cache/cf/cf-cache-constants.ts +127 -0
  129. package/src/cache/cf/cf-cache-store.ts +1989 -378
  130. package/src/cache/cf/cf-cache-types.ts +349 -0
  131. package/src/cache/cf/cf-kv-utils.ts +46 -0
  132. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  133. package/src/cache/cf/index.ts +6 -16
  134. package/src/cache/document-cache.ts +72 -20
  135. package/src/cache/handle-snapshot.ts +70 -0
  136. package/src/cache/index.ts +10 -20
  137. package/src/cache/memory-segment-store.ts +136 -37
  138. package/src/cache/profile-registry.ts +31 -31
  139. package/src/cache/read-through-swr.ts +41 -11
  140. package/src/cache/segment-codec.ts +9 -17
  141. package/src/cache/tag-invalidation.ts +230 -0
  142. package/src/cache/types.ts +37 -100
  143. package/src/client.rsc.tsx +44 -21
  144. package/src/client.tsx +36 -61
  145. package/src/cloudflare/index.ts +11 -0
  146. package/src/cloudflare/tracing.ts +109 -0
  147. package/src/component-utils.ts +19 -0
  148. package/src/components/DefaultDocument.tsx +8 -2
  149. package/src/context-var.ts +18 -6
  150. package/src/decode-loader-results.ts +52 -0
  151. package/src/defer.ts +196 -0
  152. package/src/deps/ssr.ts +0 -1
  153. package/src/encode-kv.ts +49 -0
  154. package/src/errors.ts +30 -4
  155. package/src/escape-script.ts +52 -0
  156. package/src/handle.ts +31 -23
  157. package/src/handles/MetaTags.tsx +62 -19
  158. package/src/handles/Scripts.tsx +183 -0
  159. package/src/handles/breadcrumbs.ts +37 -8
  160. package/src/handles/is-thenable.ts +19 -0
  161. package/src/handles/meta.ts +51 -40
  162. package/src/handles/script.ts +244 -0
  163. package/src/host/cookie-handler.ts +9 -60
  164. package/src/host/errors.ts +0 -24
  165. package/src/host/index.ts +8 -2
  166. package/src/host/pattern-matcher.ts +23 -52
  167. package/src/host/router.ts +107 -99
  168. package/src/host/testing.ts +40 -27
  169. package/src/host/types.ts +37 -4
  170. package/src/host/utils.ts +1 -1
  171. package/src/href-client.ts +137 -22
  172. package/src/index.rsc.ts +90 -11
  173. package/src/index.ts +88 -10
  174. package/src/internal-debug.ts +11 -10
  175. package/src/loader-store.ts +500 -0
  176. package/src/loader.rsc.ts +20 -13
  177. package/src/loader.ts +12 -11
  178. package/src/missing-id-error.ts +68 -0
  179. package/src/outlet-context.ts +1 -1
  180. package/src/outlet-provider.tsx +1 -5
  181. package/src/prerender/param-hash.ts +16 -16
  182. package/src/prerender/store.ts +32 -37
  183. package/src/prerender.ts +61 -6
  184. package/src/redirect-origin.ts +100 -0
  185. package/src/regex-escape.ts +8 -0
  186. package/src/render-error-thrower.tsx +20 -0
  187. package/src/response-utils.ts +62 -0
  188. package/src/reverse.ts +65 -39
  189. package/src/root-error-boundary.tsx +1 -19
  190. package/src/route-content-wrapper.tsx +7 -72
  191. package/src/route-definition/dsl-helpers.ts +287 -281
  192. package/src/route-definition/helper-factories.ts +29 -139
  193. package/src/route-definition/helpers-types.ts +46 -18
  194. package/src/route-definition/redirect.ts +44 -11
  195. package/src/route-definition/resolve-handler-use.ts +12 -0
  196. package/src/route-definition/use-item-types.ts +32 -0
  197. package/src/route-map-builder.ts +0 -16
  198. package/src/route-types.ts +19 -41
  199. package/src/router/basename.ts +14 -0
  200. package/src/router/content-negotiation.ts +73 -25
  201. package/src/router/error-handling.ts +45 -18
  202. package/src/router/find-match.ts +44 -23
  203. package/src/router/handler-context.ts +27 -42
  204. package/src/router/instrument.ts +350 -0
  205. package/src/router/intercept-resolution.ts +39 -20
  206. package/src/router/lazy-includes.ts +10 -47
  207. package/src/router/loader-resolution.ts +155 -72
  208. package/src/router/logging.ts +0 -6
  209. package/src/router/manifest.ts +18 -29
  210. package/src/router/match-api.ts +4 -23
  211. package/src/router/match-context.ts +0 -22
  212. package/src/router/match-handlers.ts +58 -58
  213. package/src/router/match-middleware/background-revalidation.ts +6 -7
  214. package/src/router/match-middleware/cache-lookup.ts +159 -285
  215. package/src/router/match-middleware/cache-store.ts +31 -34
  216. package/src/router/match-middleware/intercept-resolution.ts +0 -22
  217. package/src/router/match-middleware/segment-resolution.ts +0 -22
  218. package/src/router/match-pipelines.ts +1 -42
  219. package/src/router/match-result.ts +44 -74
  220. package/src/router/metrics.ts +0 -34
  221. package/src/router/middleware-types.ts +7 -134
  222. package/src/router/middleware.ts +266 -166
  223. package/src/router/navigation-snapshot.ts +0 -51
  224. package/src/router/params-util.ts +23 -0
  225. package/src/router/pattern-matching.ts +132 -90
  226. package/src/router/prefetch-cache-ttl.ts +51 -0
  227. package/src/router/prerender-match.ts +104 -65
  228. package/src/router/preview-match.ts +3 -1
  229. package/src/router/request-classification.ts +28 -62
  230. package/src/router/revalidation.ts +123 -73
  231. package/src/router/route-snapshot.ts +0 -1
  232. package/src/router/router-context.ts +3 -28
  233. package/src/router/router-interfaces.ts +83 -35
  234. package/src/router/router-options.ts +136 -5
  235. package/src/router/router-registry.ts +2 -5
  236. package/src/router/segment-resolution/fresh.ts +93 -84
  237. package/src/router/segment-resolution/helpers.ts +86 -6
  238. package/src/router/segment-resolution/loader-cache.ts +62 -37
  239. package/src/router/segment-resolution/revalidation.ts +269 -320
  240. package/src/router/segment-resolution/static-store.ts +19 -5
  241. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  242. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  243. package/src/router/segment-resolution.ts +5 -1
  244. package/src/router/segment-wrappers.ts +6 -5
  245. package/src/router/state-cookie-name.ts +33 -0
  246. package/src/router/substitute-pattern-params.ts +56 -0
  247. package/src/router/telemetry-otel.ts +161 -199
  248. package/src/router/telemetry.ts +96 -19
  249. package/src/router/timeout.ts +0 -20
  250. package/src/router/tracing.ts +206 -0
  251. package/src/router/trie-matching.ts +163 -59
  252. package/src/router/types.ts +9 -63
  253. package/src/router/url-params.ts +44 -0
  254. package/src/router.ts +110 -55
  255. package/src/rsc/handler-context.ts +3 -2
  256. package/src/rsc/handler.ts +266 -219
  257. package/src/rsc/helpers.ts +168 -46
  258. package/src/rsc/index.ts +2 -5
  259. package/src/rsc/json-route-result.ts +38 -0
  260. package/src/rsc/loader-fetch.ts +114 -38
  261. package/src/rsc/manifest-init.ts +28 -41
  262. package/src/rsc/origin-guard.ts +39 -25
  263. package/src/rsc/progressive-enhancement.ts +63 -9
  264. package/src/rsc/redirect-guard.ts +99 -0
  265. package/src/rsc/response-cache-serve.ts +238 -0
  266. package/src/rsc/response-error.ts +79 -12
  267. package/src/rsc/response-route-handler.ts +99 -189
  268. package/src/rsc/rsc-rendering.ts +99 -75
  269. package/src/rsc/runtime-warnings.ts +23 -10
  270. package/src/rsc/server-action.ts +258 -115
  271. package/src/rsc/ssr-setup.ts +16 -0
  272. package/src/rsc/types.ts +23 -5
  273. package/src/runtime-env.ts +18 -0
  274. package/src/search-params.ts +35 -30
  275. package/src/segment-loader-promise.ts +31 -4
  276. package/src/segment-system.tsx +209 -143
  277. package/src/serialize.ts +243 -0
  278. package/src/server/context.ts +150 -51
  279. package/src/server/cookie-parse.ts +32 -0
  280. package/src/server/cookie-store.ts +80 -5
  281. package/src/server/handle-store.ts +21 -38
  282. package/src/server/loader-registry.ts +21 -42
  283. package/src/server/request-context.ts +235 -175
  284. package/src/ssr/index.tsx +21 -16
  285. package/src/static-handler.ts +10 -13
  286. package/src/testing/cache-status.ts +162 -0
  287. package/src/testing/collect-handle.ts +40 -0
  288. package/src/testing/dispatch.ts +701 -0
  289. package/src/testing/dom.entry.ts +22 -0
  290. package/src/testing/e2e/fixture.ts +188 -0
  291. package/src/testing/e2e/index.ts +128 -0
  292. package/src/testing/e2e/matchers.ts +35 -0
  293. package/src/testing/e2e/page-helpers.ts +272 -0
  294. package/src/testing/e2e/parity.ts +387 -0
  295. package/src/testing/e2e/server.ts +195 -0
  296. package/src/testing/flight-matchers.ts +97 -0
  297. package/src/testing/flight-normalize.ts +11 -0
  298. package/src/testing/flight-runtime.d.ts +57 -0
  299. package/src/testing/flight-tree.ts +682 -0
  300. package/src/testing/flight.entry.ts +52 -0
  301. package/src/testing/flight.ts +257 -0
  302. package/src/testing/generated-routes.ts +183 -0
  303. package/src/testing/index.ts +99 -0
  304. package/src/testing/internal/context.ts +371 -0
  305. package/src/testing/internal/flight-client-globals.ts +30 -0
  306. package/src/testing/internal/seed-vars.ts +54 -0
  307. package/src/testing/render-handler.ts +343 -0
  308. package/src/testing/render-route.tsx +581 -0
  309. package/src/testing/run-loader.ts +385 -0
  310. package/src/testing/run-middleware.ts +205 -0
  311. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  312. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  313. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  314. package/src/testing/vitest-stubs/version.ts +5 -0
  315. package/src/testing/vitest.ts +305 -0
  316. package/src/theme/ThemeProvider.tsx +20 -58
  317. package/src/theme/ThemeScript.tsx +7 -9
  318. package/src/theme/constants.ts +52 -13
  319. package/src/theme/index.ts +0 -7
  320. package/src/theme/theme-context.ts +1 -5
  321. package/src/theme/theme-script.ts +22 -21
  322. package/src/theme/use-theme.ts +0 -3
  323. package/src/types/boundaries.ts +0 -35
  324. package/src/types/cache-types.ts +13 -4
  325. package/src/types/error-types.ts +30 -90
  326. package/src/types/global-namespace.ts +54 -41
  327. package/src/types/handler-context.ts +109 -61
  328. package/src/types/index.ts +1 -10
  329. package/src/types/loader-types.ts +11 -9
  330. package/src/types/request-scope.ts +112 -0
  331. package/src/types/route-config.ts +6 -50
  332. package/src/types/route-entry.ts +0 -6
  333. package/src/types/segments.ts +35 -14
  334. package/src/urls/include-helper.ts +9 -56
  335. package/src/urls/index.ts +1 -11
  336. package/src/urls/path-helper-types.ts +19 -5
  337. package/src/urls/path-helper.ts +17 -106
  338. package/src/urls/pattern-types.ts +36 -19
  339. package/src/urls/response-types.ts +22 -29
  340. package/src/urls/type-extraction.ts +58 -139
  341. package/src/urls/urls-function.ts +1 -18
  342. package/src/use-loader.tsx +292 -107
  343. package/src/vite/debug.ts +185 -0
  344. package/src/vite/discovery/bundle-postprocess.ts +8 -7
  345. package/src/vite/discovery/discover-routers.ts +126 -85
  346. package/src/vite/discovery/discovery-errors.ts +194 -0
  347. package/src/vite/discovery/gate-state.ts +171 -0
  348. package/src/vite/discovery/prerender-collection.ts +96 -68
  349. package/src/vite/discovery/route-types-writer.ts +40 -84
  350. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  351. package/src/vite/discovery/state.ts +44 -0
  352. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  353. package/src/vite/index.ts +2 -0
  354. package/src/vite/inject-client-debug.ts +36 -0
  355. package/src/vite/plugin-types.ts +126 -8
  356. package/src/vite/plugins/cjs-to-esm.ts +16 -19
  357. package/src/vite/plugins/client-ref-dedup.ts +16 -11
  358. package/src/vite/plugins/client-ref-hashing.ts +28 -15
  359. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  360. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  361. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  362. package/src/vite/plugins/expose-action-id.ts +48 -95
  363. package/src/vite/plugins/expose-id-utils.ts +88 -55
  364. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  365. package/src/vite/plugins/expose-ids/handler-transform.ts +11 -90
  366. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  367. package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
  368. package/src/vite/plugins/expose-internal-ids.ts +505 -486
  369. package/src/vite/plugins/performance-tracks.ts +26 -25
  370. package/src/vite/plugins/refresh-cmd.ts +1 -1
  371. package/src/vite/plugins/use-cache-transform.ts +73 -83
  372. package/src/vite/plugins/version-injector.ts +21 -25
  373. package/src/vite/plugins/version-plugin.ts +37 -40
  374. package/src/vite/plugins/virtual-entries.ts +13 -18
  375. package/src/vite/rango.ts +109 -118
  376. package/src/vite/router-discovery.ts +777 -119
  377. package/src/vite/utils/ast-handler-extract.ts +26 -35
  378. package/src/vite/utils/banner.ts +1 -1
  379. package/src/vite/utils/bundle-analysis.ts +10 -15
  380. package/src/vite/utils/client-chunks.ts +184 -0
  381. package/src/vite/utils/directive-prologue.ts +40 -0
  382. package/src/vite/utils/forward-user-plugins.ts +171 -0
  383. package/src/vite/utils/manifest-utils.ts +4 -59
  384. package/src/vite/utils/package-resolution.ts +20 -52
  385. package/src/vite/utils/prerender-utils.ts +54 -39
  386. package/src/vite/utils/shared-utils.ts +90 -41
  387. package/dist/__internal.d.ts +0 -83
  388. package/dist/__internal.d.ts.map +0 -1
  389. package/dist/__internal.js +0 -19
  390. package/dist/__internal.js.map +0 -1
  391. package/dist/__mocks__/version.d.ts +0 -7
  392. package/dist/__mocks__/version.d.ts.map +0 -1
  393. package/dist/__mocks__/version.js +0 -7
  394. package/dist/__mocks__/version.js.map +0 -1
  395. package/dist/__tests__/client-href.test.d.ts +0 -2
  396. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  397. package/dist/__tests__/client-href.test.js +0 -74
  398. package/dist/__tests__/client-href.test.js.map +0 -1
  399. package/dist/__tests__/component-utils.test.d.ts +0 -2
  400. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  401. package/dist/__tests__/component-utils.test.js +0 -51
  402. package/dist/__tests__/component-utils.test.js.map +0 -1
  403. package/dist/__tests__/event-controller.test.d.ts +0 -2
  404. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  405. package/dist/__tests__/event-controller.test.js +0 -538
  406. package/dist/__tests__/event-controller.test.js.map +0 -1
  407. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  408. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  409. package/dist/__tests__/helpers/route-tree.js +0 -374
  410. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  411. package/dist/__tests__/match-result.test.d.ts +0 -2
  412. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  413. package/dist/__tests__/match-result.test.js +0 -154
  414. package/dist/__tests__/match-result.test.js.map +0 -1
  415. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  416. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  417. package/dist/__tests__/navigation-store.test.js +0 -440
  418. package/dist/__tests__/navigation-store.test.js.map +0 -1
  419. package/dist/__tests__/partial-update.test.d.ts +0 -2
  420. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  421. package/dist/__tests__/partial-update.test.js +0 -1009
  422. package/dist/__tests__/partial-update.test.js.map +0 -1
  423. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  424. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  425. package/dist/__tests__/reverse-types.test.js +0 -656
  426. package/dist/__tests__/reverse-types.test.js.map +0 -1
  427. package/dist/__tests__/route-definition.test.d.ts +0 -2
  428. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  429. package/dist/__tests__/route-definition.test.js +0 -55
  430. package/dist/__tests__/route-definition.test.js.map +0 -1
  431. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  432. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  433. package/dist/__tests__/router-helpers.test.js +0 -377
  434. package/dist/__tests__/router-helpers.test.js.map +0 -1
  435. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  436. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  437. package/dist/__tests__/router-integration-2.test.js +0 -426
  438. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  439. package/dist/__tests__/router-integration.test.d.ts +0 -2
  440. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  441. package/dist/__tests__/router-integration.test.js +0 -1051
  442. package/dist/__tests__/router-integration.test.js.map +0 -1
  443. package/dist/__tests__/search-params.test.d.ts +0 -5
  444. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  445. package/dist/__tests__/search-params.test.js +0 -306
  446. package/dist/__tests__/search-params.test.js.map +0 -1
  447. package/dist/__tests__/segment-system.test.d.ts +0 -2
  448. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  449. package/dist/__tests__/segment-system.test.js +0 -627
  450. package/dist/__tests__/segment-system.test.js.map +0 -1
  451. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  452. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  453. package/dist/__tests__/static-handler-types.test.js +0 -63
  454. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  455. package/dist/__tests__/urls.test.d.ts +0 -2
  456. package/dist/__tests__/urls.test.d.ts.map +0 -1
  457. package/dist/__tests__/urls.test.js +0 -421
  458. package/dist/__tests__/urls.test.js.map +0 -1
  459. package/dist/__tests__/use-mount.test.d.ts +0 -2
  460. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  461. package/dist/__tests__/use-mount.test.js +0 -35
  462. package/dist/__tests__/use-mount.test.js.map +0 -1
  463. package/dist/bin/rango.d.ts +0 -2
  464. package/dist/bin/rango.d.ts.map +0 -1
  465. package/dist/bin/rango.js.map +0 -1
  466. package/dist/browser/event-controller.d.ts +0 -191
  467. package/dist/browser/event-controller.d.ts.map +0 -1
  468. package/dist/browser/event-controller.js +0 -559
  469. package/dist/browser/event-controller.js.map +0 -1
  470. package/dist/browser/index.d.ts +0 -2
  471. package/dist/browser/index.d.ts.map +0 -1
  472. package/dist/browser/index.js +0 -14
  473. package/dist/browser/index.js.map +0 -1
  474. package/dist/browser/link-interceptor.d.ts +0 -38
  475. package/dist/browser/link-interceptor.d.ts.map +0 -1
  476. package/dist/browser/link-interceptor.js +0 -99
  477. package/dist/browser/link-interceptor.js.map +0 -1
  478. package/dist/browser/logging.d.ts +0 -10
  479. package/dist/browser/logging.d.ts.map +0 -1
  480. package/dist/browser/logging.js +0 -29
  481. package/dist/browser/logging.js.map +0 -1
  482. package/dist/browser/lru-cache.d.ts +0 -17
  483. package/dist/browser/lru-cache.d.ts.map +0 -1
  484. package/dist/browser/lru-cache.js +0 -50
  485. package/dist/browser/lru-cache.js.map +0 -1
  486. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  487. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  488. package/dist/browser/merge-segment-loaders.js +0 -102
  489. package/dist/browser/merge-segment-loaders.js.map +0 -1
  490. package/dist/browser/navigation-bridge.d.ts +0 -102
  491. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  492. package/dist/browser/navigation-bridge.js +0 -708
  493. package/dist/browser/navigation-bridge.js.map +0 -1
  494. package/dist/browser/navigation-client.d.ts +0 -25
  495. package/dist/browser/navigation-client.d.ts.map +0 -1
  496. package/dist/browser/navigation-client.js +0 -157
  497. package/dist/browser/navigation-client.js.map +0 -1
  498. package/dist/browser/navigation-store.d.ts +0 -101
  499. package/dist/browser/navigation-store.d.ts.map +0 -1
  500. package/dist/browser/navigation-store.js +0 -625
  501. package/dist/browser/navigation-store.js.map +0 -1
  502. package/dist/browser/partial-update.d.ts +0 -75
  503. package/dist/browser/partial-update.d.ts.map +0 -1
  504. package/dist/browser/partial-update.js +0 -426
  505. package/dist/browser/partial-update.js.map +0 -1
  506. package/dist/browser/react/Link.d.ts +0 -86
  507. package/dist/browser/react/Link.d.ts.map +0 -1
  508. package/dist/browser/react/Link.js +0 -128
  509. package/dist/browser/react/Link.js.map +0 -1
  510. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  511. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  512. package/dist/browser/react/NavigationProvider.js +0 -216
  513. package/dist/browser/react/NavigationProvider.js.map +0 -1
  514. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  515. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  516. package/dist/browser/react/ScrollRestoration.js +0 -57
  517. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  518. package/dist/browser/react/context.d.ts +0 -46
  519. package/dist/browser/react/context.d.ts.map +0 -1
  520. package/dist/browser/react/context.js +0 -10
  521. package/dist/browser/react/context.js.map +0 -1
  522. package/dist/browser/react/index.d.ts +0 -11
  523. package/dist/browser/react/index.d.ts.map +0 -1
  524. package/dist/browser/react/index.js +0 -22
  525. package/dist/browser/react/index.js.map +0 -1
  526. package/dist/browser/react/location-state-shared.d.ts +0 -63
  527. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  528. package/dist/browser/react/location-state-shared.js +0 -81
  529. package/dist/browser/react/location-state-shared.js.map +0 -1
  530. package/dist/browser/react/location-state.d.ts +0 -23
  531. package/dist/browser/react/location-state.d.ts.map +0 -1
  532. package/dist/browser/react/location-state.js +0 -29
  533. package/dist/browser/react/location-state.js.map +0 -1
  534. package/dist/browser/react/mount-context.d.ts +0 -24
  535. package/dist/browser/react/mount-context.d.ts.map +0 -1
  536. package/dist/browser/react/mount-context.js +0 -24
  537. package/dist/browser/react/mount-context.js.map +0 -1
  538. package/dist/browser/react/use-action.d.ts +0 -64
  539. package/dist/browser/react/use-action.d.ts.map +0 -1
  540. package/dist/browser/react/use-action.js +0 -134
  541. package/dist/browser/react/use-action.js.map +0 -1
  542. package/dist/browser/react/use-client-cache.d.ts +0 -41
  543. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  544. package/dist/browser/react/use-client-cache.js +0 -39
  545. package/dist/browser/react/use-client-cache.js.map +0 -1
  546. package/dist/browser/react/use-handle.d.ts +0 -31
  547. package/dist/browser/react/use-handle.d.ts.map +0 -1
  548. package/dist/browser/react/use-handle.js +0 -144
  549. package/dist/browser/react/use-handle.js.map +0 -1
  550. package/dist/browser/react/use-href.d.ts +0 -33
  551. package/dist/browser/react/use-href.d.ts.map +0 -1
  552. package/dist/browser/react/use-href.js +0 -39
  553. package/dist/browser/react/use-href.js.map +0 -1
  554. package/dist/browser/react/use-link-status.d.ts +0 -37
  555. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  556. package/dist/browser/react/use-link-status.js +0 -99
  557. package/dist/browser/react/use-link-status.js.map +0 -1
  558. package/dist/browser/react/use-mount.d.ts +0 -25
  559. package/dist/browser/react/use-mount.d.ts.map +0 -1
  560. package/dist/browser/react/use-mount.js +0 -30
  561. package/dist/browser/react/use-mount.js.map +0 -1
  562. package/dist/browser/react/use-navigation.d.ts +0 -27
  563. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  564. package/dist/browser/react/use-navigation.js +0 -87
  565. package/dist/browser/react/use-navigation.js.map +0 -1
  566. package/dist/browser/react/use-segments.d.ts +0 -38
  567. package/dist/browser/react/use-segments.d.ts.map +0 -1
  568. package/dist/browser/react/use-segments.js +0 -130
  569. package/dist/browser/react/use-segments.js.map +0 -1
  570. package/dist/browser/request-controller.d.ts +0 -26
  571. package/dist/browser/request-controller.d.ts.map +0 -1
  572. package/dist/browser/request-controller.js +0 -147
  573. package/dist/browser/request-controller.js.map +0 -1
  574. package/dist/browser/rsc-router.d.ts +0 -129
  575. package/dist/browser/rsc-router.d.ts.map +0 -1
  576. package/dist/browser/rsc-router.js +0 -195
  577. package/dist/browser/rsc-router.js.map +0 -1
  578. package/dist/browser/scroll-restoration.d.ts +0 -93
  579. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  580. package/dist/browser/scroll-restoration.js +0 -321
  581. package/dist/browser/scroll-restoration.js.map +0 -1
  582. package/dist/browser/segment-structure-assert.d.ts +0 -17
  583. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  584. package/dist/browser/segment-structure-assert.js +0 -59
  585. package/dist/browser/segment-structure-assert.js.map +0 -1
  586. package/dist/browser/server-action-bridge.d.ts +0 -26
  587. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  588. package/dist/browser/server-action-bridge.js +0 -668
  589. package/dist/browser/server-action-bridge.js.map +0 -1
  590. package/dist/browser/shallow.d.ts +0 -12
  591. package/dist/browser/shallow.d.ts.map +0 -1
  592. package/dist/browser/shallow.js +0 -34
  593. package/dist/browser/shallow.js.map +0 -1
  594. package/dist/browser/types.d.ts +0 -369
  595. package/dist/browser/types.d.ts.map +0 -1
  596. package/dist/browser/types.js +0 -2
  597. package/dist/browser/types.js.map +0 -1
  598. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  599. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  600. package/dist/build/__tests__/generate-cli.test.js +0 -237
  601. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  602. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  603. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  604. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  605. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  606. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  607. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  608. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  609. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  610. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  611. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  612. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  613. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  614. package/dist/build/generate-manifest.d.ts +0 -81
  615. package/dist/build/generate-manifest.d.ts.map +0 -1
  616. package/dist/build/generate-manifest.js +0 -276
  617. package/dist/build/generate-manifest.js.map +0 -1
  618. package/dist/build/generate-route-types.d.ts +0 -115
  619. package/dist/build/generate-route-types.d.ts.map +0 -1
  620. package/dist/build/generate-route-types.js +0 -740
  621. package/dist/build/generate-route-types.js.map +0 -1
  622. package/dist/build/index.d.ts +0 -21
  623. package/dist/build/index.d.ts.map +0 -1
  624. package/dist/build/index.js +0 -21
  625. package/dist/build/index.js.map +0 -1
  626. package/dist/build/route-trie.d.ts +0 -71
  627. package/dist/build/route-trie.d.ts.map +0 -1
  628. package/dist/build/route-trie.js +0 -175
  629. package/dist/build/route-trie.js.map +0 -1
  630. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  631. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  632. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  633. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  634. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  635. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  636. package/dist/cache/__tests__/document-cache.test.js +0 -345
  637. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  638. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  639. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  640. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  641. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  642. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  643. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  644. package/dist/cache/__tests__/memory-store.test.js +0 -367
  645. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  646. package/dist/cache/cache-scope.d.ts +0 -102
  647. package/dist/cache/cache-scope.d.ts.map +0 -1
  648. package/dist/cache/cache-scope.js +0 -440
  649. package/dist/cache/cache-scope.js.map +0 -1
  650. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  651. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  652. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  653. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  654. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  655. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  656. package/dist/cache/cf/cf-cache-store.js +0 -242
  657. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  658. package/dist/cache/cf/index.d.ts +0 -14
  659. package/dist/cache/cf/index.d.ts.map +0 -1
  660. package/dist/cache/cf/index.js +0 -17
  661. package/dist/cache/cf/index.js.map +0 -1
  662. package/dist/cache/document-cache.d.ts +0 -64
  663. package/dist/cache/document-cache.d.ts.map +0 -1
  664. package/dist/cache/document-cache.js +0 -228
  665. package/dist/cache/document-cache.js.map +0 -1
  666. package/dist/cache/index.d.ts +0 -19
  667. package/dist/cache/index.d.ts.map +0 -1
  668. package/dist/cache/index.js +0 -21
  669. package/dist/cache/index.js.map +0 -1
  670. package/dist/cache/memory-segment-store.d.ts +0 -110
  671. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  672. package/dist/cache/memory-segment-store.js +0 -117
  673. package/dist/cache/memory-segment-store.js.map +0 -1
  674. package/dist/cache/memory-store.d.ts +0 -41
  675. package/dist/cache/memory-store.d.ts.map +0 -1
  676. package/dist/cache/memory-store.js +0 -191
  677. package/dist/cache/memory-store.js.map +0 -1
  678. package/dist/cache/types.d.ts +0 -317
  679. package/dist/cache/types.d.ts.map +0 -1
  680. package/dist/cache/types.js +0 -12
  681. package/dist/cache/types.js.map +0 -1
  682. package/dist/client.d.ts +0 -248
  683. package/dist/client.d.ts.map +0 -1
  684. package/dist/client.js +0 -367
  685. package/dist/client.js.map +0 -1
  686. package/dist/client.rsc.d.ts +0 -26
  687. package/dist/client.rsc.d.ts.map +0 -1
  688. package/dist/client.rsc.js +0 -46
  689. package/dist/client.rsc.js.map +0 -1
  690. package/dist/component-utils.d.ts +0 -36
  691. package/dist/component-utils.d.ts.map +0 -1
  692. package/dist/component-utils.js +0 -61
  693. package/dist/component-utils.js.map +0 -1
  694. package/dist/components/DefaultDocument.d.ts +0 -13
  695. package/dist/components/DefaultDocument.d.ts.map +0 -1
  696. package/dist/components/DefaultDocument.js +0 -15
  697. package/dist/components/DefaultDocument.js.map +0 -1
  698. package/dist/debug.d.ts +0 -58
  699. package/dist/debug.d.ts.map +0 -1
  700. package/dist/debug.js +0 -157
  701. package/dist/debug.js.map +0 -1
  702. package/dist/default-error-boundary.d.ts +0 -11
  703. package/dist/default-error-boundary.d.ts.map +0 -1
  704. package/dist/default-error-boundary.js +0 -45
  705. package/dist/default-error-boundary.js.map +0 -1
  706. package/dist/deps/browser.d.ts +0 -2
  707. package/dist/deps/browser.d.ts.map +0 -1
  708. package/dist/deps/browser.js +0 -3
  709. package/dist/deps/browser.js.map +0 -1
  710. package/dist/deps/html-stream-client.d.ts +0 -2
  711. package/dist/deps/html-stream-client.d.ts.map +0 -1
  712. package/dist/deps/html-stream-client.js +0 -3
  713. package/dist/deps/html-stream-client.js.map +0 -1
  714. package/dist/deps/html-stream-server.d.ts +0 -2
  715. package/dist/deps/html-stream-server.d.ts.map +0 -1
  716. package/dist/deps/html-stream-server.js +0 -3
  717. package/dist/deps/html-stream-server.js.map +0 -1
  718. package/dist/deps/rsc.d.ts +0 -2
  719. package/dist/deps/rsc.d.ts.map +0 -1
  720. package/dist/deps/rsc.js +0 -4
  721. package/dist/deps/rsc.js.map +0 -1
  722. package/dist/deps/ssr.d.ts +0 -2
  723. package/dist/deps/ssr.d.ts.map +0 -1
  724. package/dist/deps/ssr.js +0 -3
  725. package/dist/deps/ssr.js.map +0 -1
  726. package/dist/errors.d.ts +0 -174
  727. package/dist/errors.d.ts.map +0 -1
  728. package/dist/errors.js +0 -241
  729. package/dist/errors.js.map +0 -1
  730. package/dist/handle.d.ts +0 -78
  731. package/dist/handle.d.ts.map +0 -1
  732. package/dist/handle.js +0 -82
  733. package/dist/handle.js.map +0 -1
  734. package/dist/handles/MetaTags.d.ts +0 -14
  735. package/dist/handles/MetaTags.d.ts.map +0 -1
  736. package/dist/handles/MetaTags.js +0 -136
  737. package/dist/handles/MetaTags.js.map +0 -1
  738. package/dist/handles/index.d.ts +0 -6
  739. package/dist/handles/index.d.ts.map +0 -1
  740. package/dist/handles/index.js +0 -6
  741. package/dist/handles/index.js.map +0 -1
  742. package/dist/handles/meta.d.ts +0 -39
  743. package/dist/handles/meta.d.ts.map +0 -1
  744. package/dist/handles/meta.js +0 -202
  745. package/dist/handles/meta.js.map +0 -1
  746. package/dist/host/__tests__/errors.test.d.ts +0 -2
  747. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  748. package/dist/host/__tests__/errors.test.js +0 -76
  749. package/dist/host/__tests__/errors.test.js.map +0 -1
  750. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  751. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  752. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  753. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  754. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  755. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  756. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  757. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  758. package/dist/host/__tests__/router.test.d.ts +0 -2
  759. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  760. package/dist/host/__tests__/router.test.js +0 -241
  761. package/dist/host/__tests__/router.test.js.map +0 -1
  762. package/dist/host/__tests__/testing.test.d.ts +0 -2
  763. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  764. package/dist/host/__tests__/testing.test.js +0 -64
  765. package/dist/host/__tests__/testing.test.js.map +0 -1
  766. package/dist/host/__tests__/utils.test.d.ts +0 -2
  767. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  768. package/dist/host/__tests__/utils.test.js +0 -29
  769. package/dist/host/__tests__/utils.test.js.map +0 -1
  770. package/dist/host/cookie-handler.d.ts +0 -34
  771. package/dist/host/cookie-handler.d.ts.map +0 -1
  772. package/dist/host/cookie-handler.js +0 -124
  773. package/dist/host/cookie-handler.js.map +0 -1
  774. package/dist/host/errors.d.ts +0 -56
  775. package/dist/host/errors.d.ts.map +0 -1
  776. package/dist/host/errors.js +0 -79
  777. package/dist/host/errors.js.map +0 -1
  778. package/dist/host/index.d.ts +0 -29
  779. package/dist/host/index.d.ts.map +0 -1
  780. package/dist/host/index.js +0 -32
  781. package/dist/host/index.js.map +0 -1
  782. package/dist/host/pattern-matcher.d.ts +0 -36
  783. package/dist/host/pattern-matcher.d.ts.map +0 -1
  784. package/dist/host/pattern-matcher.js +0 -172
  785. package/dist/host/pattern-matcher.js.map +0 -1
  786. package/dist/host/router.d.ts +0 -26
  787. package/dist/host/router.d.ts.map +0 -1
  788. package/dist/host/router.js +0 -218
  789. package/dist/host/router.js.map +0 -1
  790. package/dist/host/testing.d.ts +0 -36
  791. package/dist/host/testing.d.ts.map +0 -1
  792. package/dist/host/testing.js +0 -55
  793. package/dist/host/testing.js.map +0 -1
  794. package/dist/host/types.d.ts +0 -115
  795. package/dist/host/types.d.ts.map +0 -1
  796. package/dist/host/types.js +0 -7
  797. package/dist/host/types.js.map +0 -1
  798. package/dist/host/utils.d.ts +0 -21
  799. package/dist/host/utils.d.ts.map +0 -1
  800. package/dist/host/utils.js +0 -23
  801. package/dist/host/utils.js.map +0 -1
  802. package/dist/href-client.d.ts +0 -131
  803. package/dist/href-client.d.ts.map +0 -1
  804. package/dist/href-client.js +0 -64
  805. package/dist/href-client.js.map +0 -1
  806. package/dist/href-context.d.ts +0 -29
  807. package/dist/href-context.d.ts.map +0 -1
  808. package/dist/href-context.js +0 -21
  809. package/dist/href-context.js.map +0 -1
  810. package/dist/index.d.ts +0 -73
  811. package/dist/index.d.ts.map +0 -1
  812. package/dist/index.js +0 -91
  813. package/dist/index.js.map +0 -1
  814. package/dist/index.rsc.d.ts +0 -32
  815. package/dist/index.rsc.d.ts.map +0 -1
  816. package/dist/index.rsc.js +0 -40
  817. package/dist/index.rsc.js.map +0 -1
  818. package/dist/internal-debug.d.ts +0 -2
  819. package/dist/internal-debug.d.ts.map +0 -1
  820. package/dist/internal-debug.js +0 -5
  821. package/dist/internal-debug.js.map +0 -1
  822. package/dist/loader.d.ts +0 -14
  823. package/dist/loader.d.ts.map +0 -1
  824. package/dist/loader.js +0 -20
  825. package/dist/loader.js.map +0 -1
  826. package/dist/loader.rsc.d.ts +0 -19
  827. package/dist/loader.rsc.d.ts.map +0 -1
  828. package/dist/loader.rsc.js +0 -99
  829. package/dist/loader.rsc.js.map +0 -1
  830. package/dist/network-error-thrower.d.ts +0 -17
  831. package/dist/network-error-thrower.d.ts.map +0 -1
  832. package/dist/network-error-thrower.js +0 -14
  833. package/dist/network-error-thrower.js.map +0 -1
  834. package/dist/outlet-context.d.ts +0 -13
  835. package/dist/outlet-context.d.ts.map +0 -1
  836. package/dist/outlet-context.js +0 -3
  837. package/dist/outlet-context.js.map +0 -1
  838. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  839. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  840. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  841. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  842. package/dist/prerender/param-hash.d.ts +0 -16
  843. package/dist/prerender/param-hash.d.ts.map +0 -1
  844. package/dist/prerender/param-hash.js +0 -36
  845. package/dist/prerender/param-hash.js.map +0 -1
  846. package/dist/prerender/store.d.ts +0 -38
  847. package/dist/prerender/store.d.ts.map +0 -1
  848. package/dist/prerender/store.js +0 -61
  849. package/dist/prerender/store.js.map +0 -1
  850. package/dist/prerender.d.ts +0 -66
  851. package/dist/prerender.d.ts.map +0 -1
  852. package/dist/prerender.js +0 -57
  853. package/dist/prerender.js.map +0 -1
  854. package/dist/reverse.d.ts +0 -196
  855. package/dist/reverse.d.ts.map +0 -1
  856. package/dist/reverse.js +0 -78
  857. package/dist/reverse.js.map +0 -1
  858. package/dist/root-error-boundary.d.ts +0 -33
  859. package/dist/root-error-boundary.d.ts.map +0 -1
  860. package/dist/root-error-boundary.js +0 -165
  861. package/dist/root-error-boundary.js.map +0 -1
  862. package/dist/route-content-wrapper.d.ts +0 -46
  863. package/dist/route-content-wrapper.d.ts.map +0 -1
  864. package/dist/route-content-wrapper.js +0 -77
  865. package/dist/route-content-wrapper.js.map +0 -1
  866. package/dist/route-definition.d.ts +0 -421
  867. package/dist/route-definition.d.ts.map +0 -1
  868. package/dist/route-definition.js +0 -868
  869. package/dist/route-definition.js.map +0 -1
  870. package/dist/route-map-builder.d.ts +0 -155
  871. package/dist/route-map-builder.d.ts.map +0 -1
  872. package/dist/route-map-builder.js +0 -237
  873. package/dist/route-map-builder.js.map +0 -1
  874. package/dist/route-types.d.ts +0 -165
  875. package/dist/route-types.d.ts.map +0 -1
  876. package/dist/route-types.js +0 -7
  877. package/dist/route-types.js.map +0 -1
  878. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  879. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  880. package/dist/router/__tests__/handler-context.test.js +0 -65
  881. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  882. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  883. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  884. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  885. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  886. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  887. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  888. package/dist/router/__tests__/match-context.test.js +0 -92
  889. package/dist/router/__tests__/match-context.test.js.map +0 -1
  890. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  891. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  892. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  893. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  894. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  895. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  896. package/dist/router/__tests__/match-result.test.js +0 -457
  897. package/dist/router/__tests__/match-result.test.js.map +0 -1
  898. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  899. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  900. package/dist/router/__tests__/on-error.test.js +0 -678
  901. package/dist/router/__tests__/on-error.test.js.map +0 -1
  902. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  903. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  904. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  905. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  906. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  907. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  908. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  909. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  910. package/dist/router/error-handling.d.ts +0 -77
  911. package/dist/router/error-handling.d.ts.map +0 -1
  912. package/dist/router/error-handling.js +0 -202
  913. package/dist/router/error-handling.js.map +0 -1
  914. package/dist/router/handler-context.d.ts +0 -20
  915. package/dist/router/handler-context.d.ts.map +0 -1
  916. package/dist/router/handler-context.js +0 -198
  917. package/dist/router/handler-context.js.map +0 -1
  918. package/dist/router/intercept-resolution.d.ts +0 -66
  919. package/dist/router/intercept-resolution.d.ts.map +0 -1
  920. package/dist/router/intercept-resolution.js +0 -246
  921. package/dist/router/intercept-resolution.js.map +0 -1
  922. package/dist/router/loader-resolution.d.ts +0 -64
  923. package/dist/router/loader-resolution.d.ts.map +0 -1
  924. package/dist/router/loader-resolution.js +0 -284
  925. package/dist/router/loader-resolution.js.map +0 -1
  926. package/dist/router/logging.d.ts +0 -15
  927. package/dist/router/logging.d.ts.map +0 -1
  928. package/dist/router/logging.js +0 -99
  929. package/dist/router/logging.js.map +0 -1
  930. package/dist/router/manifest.d.ts +0 -22
  931. package/dist/router/manifest.d.ts.map +0 -1
  932. package/dist/router/manifest.js +0 -181
  933. package/dist/router/manifest.js.map +0 -1
  934. package/dist/router/match-api.d.ts +0 -35
  935. package/dist/router/match-api.d.ts.map +0 -1
  936. package/dist/router/match-api.js +0 -406
  937. package/dist/router/match-api.js.map +0 -1
  938. package/dist/router/match-context.d.ts +0 -206
  939. package/dist/router/match-context.d.ts.map +0 -1
  940. package/dist/router/match-context.js +0 -17
  941. package/dist/router/match-context.js.map +0 -1
  942. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  943. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  944. package/dist/router/match-middleware/background-revalidation.js +0 -75
  945. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  946. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  947. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  948. package/dist/router/match-middleware/cache-lookup.js +0 -257
  949. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  950. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  951. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  952. package/dist/router/match-middleware/cache-store.js +0 -108
  953. package/dist/router/match-middleware/cache-store.js.map +0 -1
  954. package/dist/router/match-middleware/index.d.ts +0 -81
  955. package/dist/router/match-middleware/index.d.ts.map +0 -1
  956. package/dist/router/match-middleware/index.js +0 -80
  957. package/dist/router/match-middleware/index.js.map +0 -1
  958. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  959. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  960. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  961. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  962. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  963. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  964. package/dist/router/match-middleware/segment-resolution.js +0 -53
  965. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  966. package/dist/router/match-pipelines.d.ts +0 -147
  967. package/dist/router/match-pipelines.d.ts.map +0 -1
  968. package/dist/router/match-pipelines.js +0 -82
  969. package/dist/router/match-pipelines.js.map +0 -1
  970. package/dist/router/match-result.d.ts +0 -126
  971. package/dist/router/match-result.d.ts.map +0 -1
  972. package/dist/router/match-result.js +0 -93
  973. package/dist/router/match-result.js.map +0 -1
  974. package/dist/router/metrics.d.ts +0 -20
  975. package/dist/router/metrics.d.ts.map +0 -1
  976. package/dist/router/metrics.js +0 -47
  977. package/dist/router/metrics.js.map +0 -1
  978. package/dist/router/middleware.d.ts +0 -249
  979. package/dist/router/middleware.d.ts.map +0 -1
  980. package/dist/router/middleware.js +0 -434
  981. package/dist/router/middleware.js.map +0 -1
  982. package/dist/router/middleware.test.d.ts +0 -2
  983. package/dist/router/middleware.test.d.ts.map +0 -1
  984. package/dist/router/middleware.test.js +0 -816
  985. package/dist/router/middleware.test.js.map +0 -1
  986. package/dist/router/pattern-matching.d.ts +0 -149
  987. package/dist/router/pattern-matching.d.ts.map +0 -1
  988. package/dist/router/pattern-matching.js +0 -349
  989. package/dist/router/pattern-matching.js.map +0 -1
  990. package/dist/router/revalidation.d.ts +0 -44
  991. package/dist/router/revalidation.d.ts.map +0 -1
  992. package/dist/router/revalidation.js +0 -147
  993. package/dist/router/revalidation.js.map +0 -1
  994. package/dist/router/router-context.d.ts +0 -135
  995. package/dist/router/router-context.d.ts.map +0 -1
  996. package/dist/router/router-context.js +0 -36
  997. package/dist/router/router-context.js.map +0 -1
  998. package/dist/router/segment-resolution.d.ts +0 -127
  999. package/dist/router/segment-resolution.d.ts.map +0 -1
  1000. package/dist/router/segment-resolution.js +0 -919
  1001. package/dist/router/segment-resolution.js.map +0 -1
  1002. package/dist/router/trie-matching.d.ts +0 -40
  1003. package/dist/router/trie-matching.d.ts.map +0 -1
  1004. package/dist/router/trie-matching.js +0 -127
  1005. package/dist/router/trie-matching.js.map +0 -1
  1006. package/dist/router/types.d.ts +0 -136
  1007. package/dist/router/types.d.ts.map +0 -1
  1008. package/dist/router/types.js +0 -7
  1009. package/dist/router/types.js.map +0 -1
  1010. package/dist/router.d.ts +0 -753
  1011. package/dist/router.d.ts.map +0 -1
  1012. package/dist/router.gen.d.ts +0 -6
  1013. package/dist/router.gen.d.ts.map +0 -1
  1014. package/dist/router.gen.js +0 -6
  1015. package/dist/router.gen.js.map +0 -1
  1016. package/dist/router.js +0 -1304
  1017. package/dist/router.js.map +0 -1
  1018. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  1019. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  1020. package/dist/rsc/__tests__/helpers.test.js +0 -140
  1021. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  1022. package/dist/rsc/handler.d.ts +0 -45
  1023. package/dist/rsc/handler.d.ts.map +0 -1
  1024. package/dist/rsc/handler.js +0 -1172
  1025. package/dist/rsc/handler.js.map +0 -1
  1026. package/dist/rsc/helpers.d.ts +0 -16
  1027. package/dist/rsc/helpers.d.ts.map +0 -1
  1028. package/dist/rsc/helpers.js +0 -55
  1029. package/dist/rsc/helpers.js.map +0 -1
  1030. package/dist/rsc/index.d.ts +0 -22
  1031. package/dist/rsc/index.d.ts.map +0 -1
  1032. package/dist/rsc/index.js +0 -23
  1033. package/dist/rsc/index.js.map +0 -1
  1034. package/dist/rsc/nonce.d.ts +0 -9
  1035. package/dist/rsc/nonce.d.ts.map +0 -1
  1036. package/dist/rsc/nonce.js +0 -18
  1037. package/dist/rsc/nonce.js.map +0 -1
  1038. package/dist/rsc/types.d.ts +0 -206
  1039. package/dist/rsc/types.d.ts.map +0 -1
  1040. package/dist/rsc/types.js +0 -8
  1041. package/dist/rsc/types.js.map +0 -1
  1042. package/dist/search-params.d.ts +0 -103
  1043. package/dist/search-params.d.ts.map +0 -1
  1044. package/dist/search-params.js +0 -74
  1045. package/dist/search-params.js.map +0 -1
  1046. package/dist/segment-system.d.ts +0 -75
  1047. package/dist/segment-system.d.ts.map +0 -1
  1048. package/dist/segment-system.js +0 -336
  1049. package/dist/segment-system.js.map +0 -1
  1050. package/dist/server/context.d.ts +0 -245
  1051. package/dist/server/context.d.ts.map +0 -1
  1052. package/dist/server/context.js +0 -197
  1053. package/dist/server/context.js.map +0 -1
  1054. package/dist/server/fetchable-loader-store.d.ts +0 -18
  1055. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  1056. package/dist/server/fetchable-loader-store.js +0 -18
  1057. package/dist/server/fetchable-loader-store.js.map +0 -1
  1058. package/dist/server/handle-store.d.ts +0 -85
  1059. package/dist/server/handle-store.d.ts.map +0 -1
  1060. package/dist/server/handle-store.js +0 -142
  1061. package/dist/server/handle-store.js.map +0 -1
  1062. package/dist/server/loader-registry.d.ts +0 -55
  1063. package/dist/server/loader-registry.d.ts.map +0 -1
  1064. package/dist/server/loader-registry.js +0 -132
  1065. package/dist/server/loader-registry.js.map +0 -1
  1066. package/dist/server/request-context.d.ts +0 -226
  1067. package/dist/server/request-context.d.ts.map +0 -1
  1068. package/dist/server/request-context.js +0 -290
  1069. package/dist/server/request-context.js.map +0 -1
  1070. package/dist/server/root-layout.d.ts +0 -4
  1071. package/dist/server/root-layout.d.ts.map +0 -1
  1072. package/dist/server/root-layout.js +0 -5
  1073. package/dist/server/root-layout.js.map +0 -1
  1074. package/dist/server.d.ts +0 -15
  1075. package/dist/server.d.ts.map +0 -1
  1076. package/dist/server.js +0 -20
  1077. package/dist/server.js.map +0 -1
  1078. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  1079. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  1080. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  1081. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  1082. package/dist/ssr/index.d.ts +0 -98
  1083. package/dist/ssr/index.d.ts.map +0 -1
  1084. package/dist/ssr/index.js +0 -158
  1085. package/dist/ssr/index.js.map +0 -1
  1086. package/dist/static-handler.d.ts +0 -50
  1087. package/dist/static-handler.d.ts.map +0 -1
  1088. package/dist/static-handler.gen.d.ts +0 -5
  1089. package/dist/static-handler.gen.d.ts.map +0 -1
  1090. package/dist/static-handler.gen.js +0 -5
  1091. package/dist/static-handler.gen.js.map +0 -1
  1092. package/dist/static-handler.js +0 -29
  1093. package/dist/static-handler.js.map +0 -1
  1094. package/dist/theme/ThemeProvider.d.ts +0 -20
  1095. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  1096. package/dist/theme/ThemeProvider.js +0 -240
  1097. package/dist/theme/ThemeProvider.js.map +0 -1
  1098. package/dist/theme/ThemeScript.d.ts +0 -48
  1099. package/dist/theme/ThemeScript.d.ts.map +0 -1
  1100. package/dist/theme/ThemeScript.js +0 -13
  1101. package/dist/theme/ThemeScript.js.map +0 -1
  1102. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  1103. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  1104. package/dist/theme/__tests__/theme.test.js +0 -103
  1105. package/dist/theme/__tests__/theme.test.js.map +0 -1
  1106. package/dist/theme/constants.d.ts +0 -29
  1107. package/dist/theme/constants.d.ts.map +0 -1
  1108. package/dist/theme/constants.js +0 -48
  1109. package/dist/theme/constants.js.map +0 -1
  1110. package/dist/theme/index.d.ts +0 -31
  1111. package/dist/theme/index.d.ts.map +0 -1
  1112. package/dist/theme/index.js +0 -36
  1113. package/dist/theme/index.js.map +0 -1
  1114. package/dist/theme/theme-context.d.ts +0 -40
  1115. package/dist/theme/theme-context.d.ts.map +0 -1
  1116. package/dist/theme/theme-context.js +0 -60
  1117. package/dist/theme/theme-context.js.map +0 -1
  1118. package/dist/theme/theme-script.d.ts +0 -27
  1119. package/dist/theme/theme-script.d.ts.map +0 -1
  1120. package/dist/theme/theme-script.js +0 -147
  1121. package/dist/theme/theme-script.js.map +0 -1
  1122. package/dist/theme/types.d.ts +0 -163
  1123. package/dist/theme/types.d.ts.map +0 -1
  1124. package/dist/theme/types.js +0 -11
  1125. package/dist/theme/types.js.map +0 -1
  1126. package/dist/theme/use-theme.d.ts +0 -12
  1127. package/dist/theme/use-theme.d.ts.map +0 -1
  1128. package/dist/theme/use-theme.js +0 -40
  1129. package/dist/theme/use-theme.js.map +0 -1
  1130. package/dist/types.d.ts +0 -1479
  1131. package/dist/types.d.ts.map +0 -1
  1132. package/dist/types.js +0 -10
  1133. package/dist/types.js.map +0 -1
  1134. package/dist/urls.d.ts +0 -441
  1135. package/dist/urls.d.ts.map +0 -1
  1136. package/dist/urls.gen.d.ts +0 -8
  1137. package/dist/urls.gen.d.ts.map +0 -1
  1138. package/dist/urls.gen.js +0 -8
  1139. package/dist/urls.gen.js.map +0 -1
  1140. package/dist/urls.js +0 -443
  1141. package/dist/urls.js.map +0 -1
  1142. package/dist/use-loader.d.ts +0 -127
  1143. package/dist/use-loader.d.ts.map +0 -1
  1144. package/dist/use-loader.js +0 -237
  1145. package/dist/use-loader.js.map +0 -1
  1146. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  1147. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  1148. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  1149. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  1150. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  1151. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  1152. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  1153. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  1154. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  1155. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  1156. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  1157. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  1158. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  1159. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  1160. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  1161. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  1162. package/dist/vite/ast-handler-extract.d.ts +0 -49
  1163. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  1164. package/dist/vite/ast-handler-extract.js +0 -249
  1165. package/dist/vite/ast-handler-extract.js.map +0 -1
  1166. package/dist/vite/expose-action-id.d.ts +0 -19
  1167. package/dist/vite/expose-action-id.d.ts.map +0 -1
  1168. package/dist/vite/expose-action-id.js +0 -250
  1169. package/dist/vite/expose-action-id.js.map +0 -1
  1170. package/dist/vite/expose-id-utils.d.ts +0 -69
  1171. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  1172. package/dist/vite/expose-id-utils.js +0 -289
  1173. package/dist/vite/expose-id-utils.js.map +0 -1
  1174. package/dist/vite/expose-internal-ids.d.ts +0 -22
  1175. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  1176. package/dist/vite/expose-internal-ids.js +0 -886
  1177. package/dist/vite/expose-internal-ids.js.map +0 -1
  1178. package/dist/vite/index.d.ts +0 -149
  1179. package/dist/vite/index.d.ts.map +0 -1
  1180. package/dist/vite/index.js.bak +0 -5448
  1181. package/dist/vite/index.js.map +0 -1
  1182. package/dist/vite/index.named-routes.gen.ts +0 -103
  1183. package/dist/vite/package-resolution.d.ts +0 -43
  1184. package/dist/vite/package-resolution.d.ts.map +0 -1
  1185. package/dist/vite/package-resolution.js +0 -112
  1186. package/dist/vite/package-resolution.js.map +0 -1
  1187. package/dist/vite/virtual-entries.d.ts +0 -25
  1188. package/dist/vite/virtual-entries.d.ts.map +0 -1
  1189. package/dist/vite/virtual-entries.js +0 -110
  1190. package/dist/vite/virtual-entries.js.map +0 -1
  1191. package/src/browser/action-response-classifier.ts +0 -99
  1192. package/src/browser/react/use-client-cache.ts +0 -58
  1193. package/src/browser/shallow.ts +0 -40
  1194. package/src/handles/index.ts +0 -7
  1195. package/src/network-error-thrower.tsx +0 -23
  1196. package/src/router/middleware-cookies.ts +0 -55
@@ -1,7 +1,4 @@
1
- /**
2
- * Shared location state utilities - works in both RSC and client contexts
3
- * No "use client" directive so it can be imported from RSC
4
- */
1
+ import type { ReactElement } from "react";
5
2
 
6
3
  /**
7
4
  * Internal entry representing a state value with its unique key.
@@ -22,6 +19,80 @@ export interface LocationStateOptions {
22
19
  flash?: boolean;
23
20
  }
24
21
 
22
+ type LocationStateUnsafeFn = (...args: never[]) => unknown;
23
+
24
+ type LocationStateUnsafeCtor = abstract new (...args: never[]) => unknown;
25
+
26
+ type IsAny<T> = 0 extends 1 & T ? true : false;
27
+ type IsUnknown<T> =
28
+ IsAny<T> extends true ? false : unknown extends T ? true : false;
29
+
30
+ /**
31
+ * Branded error surfaced when a value that cannot live in location state is
32
+ * used. Location state is written into `history.state`, which uses the
33
+ * structured clone algorithm; React elements, functions, and symbols throw a
34
+ * `DataCloneError` at runtime. Carries a human-readable reason so the compile
35
+ * error explains the fix.
36
+ */
37
+ export type LocationStateUnsafe<Reason extends string> = {
38
+ readonly __rango_location_state_unsafe: Reason;
39
+ };
40
+
41
+ /**
42
+ * Maps `T` to itself when it is safe to store in location state, or to a branded
43
+ * {@link LocationStateUnsafe} error for the disallowed parts: `unknown`, React
44
+ * elements (RSC/JSX content), functions, class constructors, and symbols.
45
+ * Recurses through arrays, `Map`, `Set`, and plain objects; structured-clone
46
+ * built-ins (`Date`, `RegExp`, typed arrays, `Blob`, `File`, `FormData`) pass
47
+ * through. Consumed by {@link ValidateLocationState}, which is intersected into a
48
+ * definition's value parameter so posting RSC content is a COMPILE error, not a
49
+ * runtime `DataCloneError`. (`any` is unguardable and remains an escape hatch.)
50
+ */
51
+ export type LocationStateSafe<T> =
52
+ IsUnknown<T> extends true
53
+ ? LocationStateUnsafe<"location state needs an explicit, concrete type; `unknown` cannot be verified as serializable">
54
+ : T extends LocationStateUnsafeFn
55
+ ? LocationStateUnsafe<"functions cannot be stored in location state">
56
+ : T extends LocationStateUnsafeCtor
57
+ ? LocationStateUnsafe<"class constructors cannot be stored in location state">
58
+ : T extends symbol
59
+ ? LocationStateUnsafe<"symbols cannot be stored in location state">
60
+ : T extends ReactElement
61
+ ? LocationStateUnsafe<"React/RSC content cannot be stored in location state; store plain data and render it on arrival">
62
+ : T extends string | number | boolean | bigint | null | undefined
63
+ ? T
64
+ : T extends
65
+ | Date
66
+ | RegExp
67
+ | ArrayBuffer
68
+ | ArrayBufferView
69
+ | Blob
70
+ | File
71
+ | FormData
72
+ ? T
73
+ : T extends ReadonlyMap<infer K, infer V>
74
+ ? ReadonlyMap<LocationStateSafe<K>, LocationStateSafe<V>>
75
+ : T extends ReadonlySet<infer V>
76
+ ? ReadonlySet<LocationStateSafe<V>>
77
+ : T extends readonly unknown[]
78
+ ? { [K in keyof T]: LocationStateSafe<T[K]> }
79
+ : T extends object
80
+ ? { [K in keyof T]: LocationStateSafe<T[K]> }
81
+ : T;
82
+
83
+ /**
84
+ * `unknown` (a no-op) when `T` is safe to store in location state, otherwise a
85
+ * branded {@link LocationStateUnsafe} object. Intersected into the value
86
+ * parameter of a definition's call and `write()` so POSTING RSC content (or any
87
+ * non-serializable value) is a compile error whose text carries the reason —
88
+ * without a `TState extends ...` self-constraint, which TypeScript rejects as
89
+ * circular (TS2313). For safe `T`, `value & unknown` collapses back to `value`,
90
+ * so valid usage is unchanged.
91
+ */
92
+ export type ValidateLocationState<T> = [T] extends [LocationStateSafe<T>]
93
+ ? unknown
94
+ : LocationStateUnsafe<"location state must be serializable: React/RSC content, functions, and symbols cannot be stored — pass plain data and render it on arrival">;
95
+
25
96
  /**
26
97
  * Type-safe location state definition
27
98
  *
@@ -34,8 +105,43 @@ export interface LocationStateDefinition<TArgs extends unknown[], TState> {
34
105
  __rsc_ls_key: string;
35
106
  /** Whether this state auto-clears after first read */
36
107
  readonly __rsc_ls_flash: boolean;
37
- /** Read the current value from history.state (client-side only, undefined during SSR) */
108
+ /**
109
+ * Read the current value from history.state.
110
+ *
111
+ * Returns undefined during SSR (no `window`). To stay hydration-safe, do
112
+ * NOT call read() inline during the initial render — the server returns
113
+ * undefined while the client may have a value preserved in history.state
114
+ * (e.g. after a hard reload of an entry that earlier called write()),
115
+ * which causes a hydration mismatch. Call read() inside an event handler
116
+ * or a useEffect post-mount instead, or use useLocationState() if you
117
+ * want React to manage subscription/hydration for you.
118
+ */
38
119
  read(): TState | undefined;
120
+ /**
121
+ * Statically write the value into the current history entry under this
122
+ * definition's key, preserving any other keys already on history.state
123
+ * (e.g. router bookkeeping, other LocationState slots).
124
+ *
125
+ * This is the non-reactive counterpart to read(): it does not dispatch any
126
+ * event, so components reading via useLocationState() will NOT re-render
127
+ * until the next navigation/popstate. Use it when you only need the value
128
+ * to be there on the next read() or on the next mount (including after
129
+ * back/forward and hard refresh of the same entry).
130
+ *
131
+ * Client-only: throws when called on the server (no history available).
132
+ */
133
+ write(value: TState & ValidateLocationState<TState>): void;
134
+ /**
135
+ * Statically remove this definition's slot from the current history entry,
136
+ * leaving any other keys on history.state untouched. Idempotent: removing
137
+ * a slot that isn't present is a no-op.
138
+ *
139
+ * Same non-reactive semantics as write(): no event is dispatched, so
140
+ * useLocationState() readers will NOT re-render until the next navigation.
141
+ *
142
+ * Client-only: throws when called on the server (no history available).
143
+ */
144
+ delete(): void;
39
145
  }
40
146
 
41
147
  /**
@@ -70,18 +176,30 @@ export interface LocationStateDefinition<TArgs extends unknown[], TState> {
70
176
  *
71
177
  * // Read without hook (snapshot, client-side only)
72
178
  * const snap = ProductState.read();
179
+ *
180
+ * // Static write to current history entry (non-reactive, client-side only).
181
+ * // Survives back/forward and hard refresh; useLocationState() readers will
182
+ * // NOT see the new value until the next navigation. Pair with .read() or a
183
+ * // fresh mount.
184
+ * ProductState.write({ name: "Widget", price: 9.99 });
185
+ *
186
+ * // Manually clear the slot (non-reactive, client-side only).
187
+ * ProductState.delete();
73
188
  * ```
74
189
  */
75
190
  export function createLocationState<TState>(
76
191
  options?: LocationStateOptions,
77
- ): LocationStateDefinition<[TState | (() => TState)], TState> {
192
+ ): LocationStateDefinition<
193
+ [(TState | (() => TState)) & ValidateLocationState<TState>],
194
+ TState
195
+ > {
78
196
  const flash = options?.flash ?? false;
79
197
  let _key: string | undefined;
80
198
 
81
199
  function getKey(): string {
82
200
  if (!_key && process.env.NODE_ENV === "development") {
83
201
  throw new Error(
84
- "[rsc-router] createLocationState key not set. " +
202
+ "[rango] createLocationState key not set. " +
85
203
  "Make sure the exposeInternalIds Vite plugin is enabled and " +
86
204
  "the state is exported with: export const MyState = createLocationState(...)",
87
205
  );
@@ -128,7 +246,59 @@ export function createLocationState<TState>(
128
246
  enumerable: true,
129
247
  });
130
248
 
131
- return fn as LocationStateDefinition<[TState | (() => TState)], TState>;
249
+ Object.defineProperty(fn, "write", {
250
+ value: (value: TState): void => {
251
+ if (typeof window === "undefined") {
252
+ throw new Error(
253
+ "[rango] LocationState.write() is client-only. " +
254
+ "It mutates window.history.state and cannot run on the server.",
255
+ );
256
+ }
257
+ const key = getKey();
258
+ // history.state may be a non-null primitive (string/number/boolean) if
259
+ // non-Rango code called pushState/replaceState with one. `?? {}` only
260
+ // catches null/undefined, so spreading a primitive would yield indexed
261
+ // char/no keys and corrupt history.state. Coerce any non-object to a fresh
262
+ // dict — mirrors the delete() guard.
263
+ const existing = window.history.state;
264
+ const current =
265
+ existing !== null && typeof existing === "object" ? existing : {};
266
+ window.history.replaceState(
267
+ { ...current, [key]: value },
268
+ "",
269
+ window.location.href,
270
+ );
271
+ },
272
+ enumerable: true,
273
+ });
274
+
275
+ Object.defineProperty(fn, "delete", {
276
+ value: (): void => {
277
+ if (typeof window === "undefined") {
278
+ throw new Error(
279
+ "[rango] LocationState.delete() is client-only. " +
280
+ "It mutates window.history.state and cannot run on the server.",
281
+ );
282
+ }
283
+ const key = getKey();
284
+ const current = window.history.state;
285
+ // history.state may be a non-null primitive (string/number/boolean) if
286
+ // non-Rango code called pushState/replaceState with one. `key in
287
+ // <primitive>` throws, so require an object before the `in` check; a
288
+ // primitive carries no slots, so deletion is a no-op.
289
+ if (current === null || typeof current !== "object" || !(key in current))
290
+ return;
291
+ const next = { ...current };
292
+ delete next[key];
293
+ window.history.replaceState(next, "", window.location.href);
294
+ },
295
+ enumerable: true,
296
+ });
297
+
298
+ return fn as unknown as LocationStateDefinition<
299
+ [(TState | (() => TState)) & ValidateLocationState<TState>],
300
+ TState
301
+ >;
132
302
  }
133
303
 
134
304
  /**
@@ -1,9 +1,8 @@
1
1
  "use client";
2
2
 
3
- import { useState, useEffect } from "react";
3
+ import { useState, useEffect, useRef } from "react";
4
4
  import type { LocationStateDefinition } from "./location-state-shared.js";
5
5
 
6
- // Re-export shared utilities and types
7
6
  export {
8
7
  createLocationState,
9
8
  isLocationStateEntry,
@@ -13,6 +12,24 @@ export {
13
12
  type LocationStateOptions,
14
13
  } from "./location-state-shared.js";
15
14
 
15
+ function readLocationStateValue<TState>(
16
+ key: string | undefined,
17
+ ): TState | undefined {
18
+ if (typeof window === "undefined") return undefined;
19
+ if (key) {
20
+ return window.history.state?.[key] as TState | undefined;
21
+ }
22
+ // Plain state: stored under history.state.state
23
+ return window.history.state?.state as TState | undefined;
24
+ }
25
+
26
+ function hasHydrated(): boolean {
27
+ return (
28
+ typeof document !== "undefined" &&
29
+ document.documentElement.hasAttribute("data-hydrated")
30
+ );
31
+ }
32
+
16
33
  /**
17
34
  * Hook to read location state from history.state
18
35
  *
@@ -48,30 +65,33 @@ export function useLocationState<TArgs extends unknown[], TState>(
48
65
  const key = definition?.__rsc_ls_key;
49
66
  const isFlash = definition?.__rsc_ls_flash ?? false;
50
67
 
68
+ // Track whether the initial render returned undefined because the page
69
+ // hadn't hydrated yet. If so, the mount effect catches up by reading
70
+ // history.state once. If not, we already have the right value and must
71
+ // not re-read on mount — under StrictMode, the flash-cleanup effect runs
72
+ // before the second setup pass, so a re-read would clobber the captured
73
+ // value with the now-cleared `undefined`.
74
+ const initialReadDeferredRef = useRef(false);
75
+
51
76
  const [state, setState] = useState<TState | undefined>(() => {
52
- if (typeof window === "undefined") return undefined;
53
- if (key) {
54
- return window.history.state?.[key] as TState | undefined;
77
+ if (!hasHydrated()) {
78
+ initialReadDeferredRef.current = true;
79
+ return undefined;
55
80
  }
56
- // Plain state: stored under history.state.state
57
- return window.history.state?.state as TState | undefined;
81
+ return readLocationStateValue<TState>(key);
58
82
  });
59
83
 
60
84
  // Subscribe to popstate and programmatic state changes
61
85
  useEffect(() => {
62
86
  const handlePopstate = () => {
63
- if (key) {
64
- setState(window.history.state?.[key] as TState | undefined);
65
- } else {
66
- setState(window.history.state?.state as TState | undefined);
67
- }
87
+ setState(readLocationStateValue<TState>(key));
68
88
  };
69
89
 
70
90
  // Handle programmatic state changes (same-page navigation with
71
91
  // ctx.setLocationState where components don't remount)
72
92
  const handleLocationState = () => {
73
93
  if (key) {
74
- const val = window.history.state?.[key] as TState | undefined;
94
+ const val = readLocationStateValue<TState>(key);
75
95
  if (isFlash) {
76
96
  // For flash state, only update if there's a new value
77
97
  if (val !== undefined) {
@@ -81,10 +101,15 @@ export function useLocationState<TArgs extends unknown[], TState>(
81
101
  setState(val);
82
102
  }
83
103
  } else {
84
- setState(window.history.state?.state as TState | undefined);
104
+ setState(readLocationStateValue<TState>(key));
85
105
  }
86
106
  };
87
107
 
108
+ if (initialReadDeferredRef.current) {
109
+ initialReadDeferredRef.current = false;
110
+ setState(readLocationStateValue<TState>(key));
111
+ }
112
+
88
113
  window.addEventListener("popstate", handlePopstate);
89
114
  window.addEventListener("__rsc_locationstate", handleLocationState);
90
115
  return () => {
@@ -24,32 +24,24 @@ const DEFAULT_ACTION_STATE: TrackedActionState = {
24
24
  result: null,
25
25
  };
26
26
 
27
- /**
28
- * Normalize action ID - returns the ID as-is
29
- *
30
- * Server actions have IDs like "hash#actionName" or "src/actions.ts#actionName".
31
- * When using function references, we use the full ID for exact matching.
32
- * When using strings, the event controller supports suffix matching
33
- * (e.g., "addToCart" matches "hash#addToCart").
34
- */
35
- function normalizeActionId(actionId: string): string {
36
- return actionId;
37
- }
38
-
39
27
  /**
40
28
  * Extract action ID from a server action function or string.
41
29
  *
42
30
  * Actions passed as props from server components lose their metadata
43
31
  * during RSC serialization - use a string action name instead.
32
+ *
33
+ * The extracted $$id (e.g. "hash#actionName" or "src/actions.ts#actionName")
34
+ * is returned as-is. Suffix-vs-exact matching against this ID happens
35
+ * downstream in the event controller, not here.
44
36
  */
45
- export function getActionId(action: ServerActionFunction | string): string {
37
+ function getActionId(action: ServerActionFunction | string): string {
46
38
  invariant(
47
39
  typeof action === "function" || typeof action === "string",
48
40
  `useAction: action must be a function or string, got ${typeof action}`,
49
41
  );
50
42
  const actionId = (action as any)?.$$id;
51
43
  if (actionId) {
52
- return normalizeActionId(actionId);
44
+ return actionId;
53
45
  }
54
46
 
55
47
  // If action is a string, use it directly
@@ -162,7 +154,6 @@ export function useAction<T>(
162
154
  });
163
155
  const prevSelected = useRef(baseState);
164
156
  prevSelected.current = baseState;
165
- // useOptimistic allows immediate updates during transitions/actions
166
157
  const [optimisticState, setOptimisticState] = useOptimistic<
167
158
  T | TrackedActionState
168
159
  >(null!);
@@ -32,40 +32,43 @@ import { shallowEqual } from "./shallow-equal.js";
32
32
  * const lastCrumb = useHandle(Breadcrumbs, (data) => data.at(-1));
33
33
  * ```
34
34
  */
35
- export function useHandle<T, A>(handle: Handle<T, A>): A;
35
+ export function useHandle<T, A>(handle: Handle<T, A>): Rango.FlightSerialize<A>;
36
36
  export function useHandle<T, A, S>(
37
37
  handle: Handle<T, A>,
38
- selector: (data: A) => S,
38
+ selector: (data: Rango.FlightSerialize<A>) => S,
39
39
  ): S;
40
40
  export function useHandle<T, A, S>(
41
41
  handle: Handle<T, A>,
42
- selector?: (data: A) => S,
43
- ): A | S {
42
+ selector?: (data: Rango.FlightSerialize<A>) => S,
43
+ ): Rango.FlightSerialize<A> | S {
44
44
  const ctx = useContext(NavigationStoreContext);
45
45
 
46
- // Initial state from context event controller, or empty fallback without provider.
47
- const [value, setValue] = useState<A | S>(() => {
46
+ const [value, setValue] = useState<Rango.FlightSerialize<A> | S>(() => {
48
47
  if (!ctx) {
49
- const collected = collectHandleData(handle, {}, []);
48
+ const collected = collectHandleData(
49
+ handle,
50
+ {},
51
+ [],
52
+ ) as Rango.FlightSerialize<A>;
50
53
  return selector ? selector(collected) : collected;
51
54
  }
52
55
 
53
- // On client, use event controller state
54
56
  const state = ctx.eventController.getHandleState();
55
- const collected = collectHandleData(handle, state.data, state.segmentOrder);
57
+ const collected = collectHandleData(
58
+ handle,
59
+ state.data,
60
+ state.segmentOrder,
61
+ ) as Rango.FlightSerialize<A>;
56
62
  return selector ? selector(collected) : collected;
57
63
  });
58
64
  const [optimisticValue, setOptimisticValue] = useOptimistic(value);
59
65
 
60
- // Track previous value for shallow comparison
61
66
  const prevValueRef = useRef(value);
62
67
  prevValueRef.current = value;
63
68
 
64
- // Ref keeps the latest selector without re-subscribing on every render.
65
69
  const selectorRef = useRef(selector);
66
70
  selectorRef.current = selector;
67
71
 
68
- // Subscribe to handle data changes (client only)
69
72
  useEffect(() => {
70
73
  if (!ctx) return;
71
74
 
@@ -76,7 +79,7 @@ export function useHandle<T, A, S>(
76
79
  handle,
77
80
  currentHandleState.data,
78
81
  currentHandleState.segmentOrder,
79
- );
82
+ ) as Rango.FlightSerialize<A>;
80
83
  const currentValue = selectorRef.current
81
84
  ? selectorRef.current(currentCollected)
82
85
  : currentCollected;
@@ -93,7 +96,7 @@ export function useHandle<T, A, S>(
93
96
  handle,
94
97
  state.data,
95
98
  state.segmentOrder,
96
- );
99
+ ) as Rango.FlightSerialize<A>;
97
100
  const nextValue = selectorRef.current
98
101
  ? selectorRef.current(collected)
99
102
  : collected;
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
 
3
+ import { useCallback } from "react";
3
4
  import { href, type ValidPaths } from "../../href-client.js";
4
5
  import { useMount } from "./use-mount.js";
5
6
 
@@ -36,5 +37,11 @@ import { useMount } from "./use-mount.js";
36
37
  */
37
38
  export function useHref(): (path: `/${string}`) => string {
38
39
  const mount = useMount();
39
- return (path: `/${string}`) => href(path as ValidPaths, mount);
40
+ // Memoize on `mount` (stable within a route) so the returned function is
41
+ // referentially stable across re-renders — a consumer can safely pass it as a
42
+ // dependency or a prop to a memoized child without forcing re-renders.
43
+ return useCallback(
44
+ (path: `/${string}`) => href(path as ValidPaths, mount),
45
+ [mount],
46
+ );
40
47
  }
@@ -82,11 +82,9 @@ export function useLinkStatus(): LinkStatus {
82
82
  const linkTo = useContext(LinkContext);
83
83
  const ctx = useContext(NavigationStoreContext);
84
84
 
85
- // Get origin for URL normalization (stable across renders)
86
85
  const origin =
87
86
  typeof window !== "undefined" ? window.location.origin : "http://localhost";
88
87
 
89
- // Base state for useOptimistic
90
88
  const [basePending, setBasePending] = useState<boolean>(() => {
91
89
  if (!ctx || linkTo === null) {
92
90
  return false;
@@ -97,7 +95,13 @@ export function useLinkStatus(): LinkStatus {
97
95
 
98
96
  const prevPending = useRef(basePending);
99
97
 
100
- // useOptimistic allows immediate updates during transitions
98
+ // Tracks whether the most recent setOptimisticPending call pinned the value
99
+ // to a non-idle (loading) state. Used to decide whether to emit a release
100
+ // update when returning to idle, so the optimistic store doesn't stay pinned
101
+ // to `true` if a parent transition (e.g. the <Link> click / view transition
102
+ // commit) is still pending. Mirrors useNavigation's optimisticPinnedRef.
103
+ const optimisticPinnedRef = useRef(false);
104
+
101
105
  const [pending, setOptimisticPending] = useOptimistic(basePending);
102
106
 
103
107
  useEffect(() => {
@@ -105,25 +109,46 @@ export function useLinkStatus(): LinkStatus {
105
109
  return;
106
110
  }
107
111
 
108
- // Subscribe to navigation state changes
109
- return ctx.eventController.subscribe(() => {
112
+ const update = () => {
110
113
  const state = ctx.eventController.getState();
111
114
  const isPending = isPendingFor(linkTo, state.pendingUrl, origin);
112
115
 
113
116
  if (isPending !== prevPending.current) {
114
117
  prevPending.current = isPending;
115
118
 
116
- // Use optimistic update for immediate feedback during navigation
117
- if (state.state !== "idle") {
119
+ const shouldPin = isPending && state.state !== "idle";
120
+
121
+ if (shouldPin) {
122
+ // Pin the optimistic value so the spinner shows immediately even if
123
+ // a parent transition (e.g. <Link> click) defers the urgent
124
+ // setBasePending commit.
118
125
  startTransition(() => {
119
126
  setOptimisticPending(isPending);
120
127
  });
128
+ optimisticPinnedRef.current = true;
129
+ } else if (optimisticPinnedRef.current) {
130
+ // Release a previously-pinned optimistic value. Without this,
131
+ // useOptimistic keeps returning the stale `true` while any parent
132
+ // transition is still pending, even after basePending flipped to
133
+ // false at navigation completion — leaving the link spinner stuck.
134
+ startTransition(() => {
135
+ setOptimisticPending(isPending);
136
+ });
137
+ optimisticPinnedRef.current = false;
121
138
  }
122
139
 
123
140
  // Always update base state
124
141
  setBasePending(isPending);
125
142
  }
126
- });
143
+ };
144
+
145
+ // Catch-up: re-read state synchronously on mount before subscribing, so a
146
+ // navigation that started between the seeding render and this effect commit
147
+ // isn't dropped until the next (debounced) notify. Mirrors usePathname /
148
+ // useSearchParams.
149
+ update();
150
+
151
+ return ctx.eventController.subscribe(update);
127
152
  }, [linkTo, origin]);
128
153
 
129
154
  // If not inside a Link, return not pending
@@ -46,14 +46,18 @@ export function useNavigation<T>(
46
46
  throw new Error("useNavigation must be used within NavigationProvider");
47
47
  }
48
48
 
49
- // Base state for useOptimistic
50
49
  const [baseValue, setBaseValue] = useState<T | PublicNavigationState>(() => {
51
50
  const publicState = toPublicState(ctx.eventController.getState());
52
51
  return selector ? selector(publicState) : publicState;
53
52
  });
54
53
  const prevState = useRef(baseValue);
55
54
 
56
- // useOptimistic allows immediate updates during transitions/actions
55
+ // Tracks whether the most recent setOptimisticValue call pinned the value
56
+ // to a non-idle state. Used to decide whether to emit a release update when
57
+ // returning to idle, so the optimistic store doesn't stay pinned if a
58
+ // parent transition (e.g. <Link> click) is still pending.
59
+ const optimisticPinnedRef = useRef(false);
60
+
57
61
  const [value, setOptimisticValue] = useOptimistic(baseValue);
58
62
 
59
63
  // Store selector in a ref so the subscription callback always uses the
@@ -66,8 +70,7 @@ export function useNavigation<T>(
66
70
 
67
71
  // Subscribe to event controller state changes (only runs on client)
68
72
  useEffect(() => {
69
- // Subscribe to updates from event controller
70
- return ctx.eventController.subscribe(() => {
73
+ const update = () => {
71
74
  const currentState = ctx.eventController.getState();
72
75
  const publicState = toPublicState(currentState);
73
76
  const nextSelected = selectorRef.current
@@ -82,17 +85,39 @@ export function useNavigation<T>(
82
85
  const hasInflightActions =
83
86
  ctx.eventController.getInflightActions().size > 0;
84
87
 
85
- if (hasInflightActions || publicState.state !== "idle") {
86
- // Use optimistic update for immediate feedback during transitions
88
+ const shouldPin = hasInflightActions || publicState.state !== "idle";
89
+
90
+ if (shouldPin) {
91
+ // Pin the optimistic store so the loading value shows immediately
92
+ // even if a parent transition (e.g. <Link> click) defers the
93
+ // urgent setBaseValue commit.
87
94
  startTransition(() => {
88
95
  setOptimisticValue(nextSelected);
89
96
  });
97
+ optimisticPinnedRef.current = true;
98
+ } else if (optimisticPinnedRef.current) {
99
+ // Release a previously-pinned optimistic value. Without this,
100
+ // useOptimistic keeps returning the stale loading value while
101
+ // any parent transition is still pending, even after baseValue
102
+ // flipped to idle.
103
+ startTransition(() => {
104
+ setOptimisticValue(nextSelected);
105
+ });
106
+ optimisticPinnedRef.current = false;
90
107
  }
91
108
 
92
109
  // Always update base state so UI reflects current state
93
110
  setBaseValue(nextSelected);
94
111
  }
95
- });
112
+ };
113
+
114
+ // Catch-up: re-read state synchronously on mount before subscribing, so a
115
+ // state change between the seeding render and this effect commit isn't
116
+ // dropped until the next (debounced) notify. Mirrors usePathname /
117
+ // useSearchParams.
118
+ update();
119
+
120
+ return ctx.eventController.subscribe(update);
96
121
  }, []);
97
122
 
98
123
  return value as T | PublicNavigationState;
@@ -4,6 +4,8 @@ import { useContext, useState, useEffect, useRef } from "react";
4
4
  import { NavigationStoreContext } from "./context.js";
5
5
  import { shallowEqual } from "./shallow-equal.js";
6
6
 
7
+ const EMPTY_PARAMS: Record<string, string> = Object.freeze({});
8
+
7
9
  /**
8
10
  * Hook to access the current route params.
9
11
  *
@@ -16,30 +18,38 @@ import { shallowEqual } from "./shallow-equal.js";
16
18
  * const params = useParams();
17
19
  * // { productId: "123" }
18
20
  *
21
+ * // Annotate the expected shape via a generic
22
+ * const { productId } = useParams<{ productId: string }>();
23
+ *
19
24
  * // With selector
20
25
  * const productId = useParams(p => p.productId);
21
26
  * ```
22
27
  */
23
- export function useParams(): Record<string, string>;
28
+ // `T extends object` (not `Record<string, string | undefined>`) so that
29
+ // interface shapes pass the constraint — interfaces lack an implicit
30
+ // index signature and would otherwise be rejected. The generic is a
31
+ // shape annotation, not a runtime check; the body always returns the
32
+ // underlying params map unchanged. The default and selector input use
33
+ // `string | undefined` because absent optional params are omitted from
34
+ // the params record at runtime — the type must reflect that so callers
35
+ // don't write `p.locale.length` and crash when the segment is absent.
36
+ export function useParams<
37
+ T extends object = Record<string, string | undefined>,
38
+ >(): Readonly<T>;
24
39
  export function useParams<T>(
25
- selector: (params: Record<string, string>) => T,
40
+ selector: (params: Record<string, string | undefined>) => T,
26
41
  ): T;
27
42
  export function useParams<T>(
28
- selector?: (params: Record<string, string>) => T,
29
- ): T | Record<string, string> {
43
+ selector?: (params: Record<string, string | undefined>) => T,
44
+ ): T | Record<string, string | undefined> {
30
45
  const ctx = useContext(NavigationStoreContext);
31
46
 
32
47
  const [value, setValue] = useState<T | Record<string, string>>(() => {
33
- if (!ctx) {
34
- return selector ? selector({}) : {};
35
- }
36
- const params = ctx.eventController.getParams();
48
+ const params = ctx ? ctx.eventController.getParams() : EMPTY_PARAMS;
37
49
  return selector ? selector(params) : params;
38
50
  });
39
51
 
40
52
  const prevValue = useRef(value);
41
- // Ref keeps the latest selector without re-subscribing. Event-driven by
42
- // design: value updates on store events, not on selector identity change.
43
53
  const selectorRef = useRef(selector);
44
54
  selectorRef.current = selector;
45
55