@rangojs/router 0.0.0-experimental.ce770c9a → 0.0.0-experimental.d5d3070a

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 (1202) hide show
  1. package/AGENTS.md +8 -0
  2. package/README.md +245 -49
  3. package/dist/bin/rango.js +433 -131
  4. package/dist/testing/vitest.js +82 -0
  5. package/dist/vite/index.js +3376 -1102
  6. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  7. package/package.json +66 -12
  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 +247 -23
  12. package/skills/caching/SKILL.md +281 -11
  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 +364 -0
  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 +50 -6
  22. package/skills/layout/SKILL.md +35 -9
  23. package/skills/links/SKILL.md +249 -17
  24. package/skills/loader/SKILL.md +279 -53
  25. package/skills/middleware/SKILL.md +52 -13
  26. package/skills/migrate-nextjs/SKILL.md +584 -0
  27. package/skills/migrate-react-router/SKILL.md +771 -0
  28. package/skills/mime-routes/SKILL.md +28 -1
  29. package/skills/observability/SKILL.md +172 -0
  30. package/skills/parallel/SKILL.md +144 -7
  31. package/skills/prerender/SKILL.md +153 -109
  32. package/skills/rango/SKILL.md +251 -22
  33. package/skills/react-compiler/SKILL.md +168 -0
  34. package/skills/response-routes/SKILL.md +123 -48
  35. package/skills/route/SKILL.md +101 -5
  36. package/skills/router-setup/SKILL.md +116 -8
  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 +332 -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 +1 -66
  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/app-version.ts +14 -0
  66. package/src/browser/connection-warmup.ts +134 -0
  67. package/src/browser/cookie-name.ts +140 -0
  68. package/src/browser/event-controller.ts +192 -150
  69. package/src/browser/history-state.ts +21 -0
  70. package/src/browser/index.ts +3 -3
  71. package/src/browser/invalidate-client-cache.ts +52 -0
  72. package/src/browser/navigation-bridge.ts +108 -21
  73. package/src/browser/navigation-client.ts +187 -86
  74. package/src/browser/navigation-store-handle.ts +38 -0
  75. package/src/browser/navigation-store.ts +76 -67
  76. package/src/browser/navigation-transaction.ts +9 -59
  77. package/src/browser/network-error-handler.ts +34 -7
  78. package/src/browser/partial-update.ts +150 -107
  79. package/src/browser/prefetch/cache.ts +205 -62
  80. package/src/browser/prefetch/fetch.ts +329 -39
  81. package/src/browser/prefetch/queue.ts +95 -29
  82. package/src/browser/prefetch/resource-ready.ts +77 -0
  83. package/src/browser/rango-state.ts +158 -76
  84. package/src/browser/react/Link.tsx +102 -15
  85. package/src/browser/react/NavigationProvider.tsx +193 -120
  86. package/src/browser/react/ScrollRestoration.tsx +10 -6
  87. package/src/browser/react/context.ts +7 -2
  88. package/src/browser/react/filter-segment-order.ts +66 -7
  89. package/src/browser/react/index.ts +0 -48
  90. package/src/browser/react/location-state-shared.ts +178 -8
  91. package/src/browser/react/location-state.ts +39 -14
  92. package/src/browser/react/use-action.ts +6 -15
  93. package/src/browser/react/use-handle.ts +23 -69
  94. package/src/browser/react/use-href.tsx +8 -1
  95. package/src/browser/react/use-link-status.ts +33 -8
  96. package/src/browser/react/use-navigation.ts +32 -7
  97. package/src/browser/react/use-params.ts +20 -10
  98. package/src/browser/react/use-reverse.ts +106 -0
  99. package/src/browser/react/use-router.ts +46 -11
  100. package/src/browser/react/use-search-params.ts +0 -5
  101. package/src/browser/react/use-segments.ts +11 -21
  102. package/src/browser/response-adapter.ts +80 -5
  103. package/src/browser/rsc-router.tsx +114 -24
  104. package/src/browser/scroll-restoration.ts +37 -22
  105. package/src/browser/segment-reconciler.ts +36 -14
  106. package/src/browser/segment-structure-assert.ts +2 -2
  107. package/src/browser/server-action-bridge.ts +222 -61
  108. package/src/browser/types.ts +82 -11
  109. package/src/browser/validate-redirect-origin.ts +43 -16
  110. package/src/build/collect-fallback-refs.ts +107 -0
  111. package/src/build/generate-manifest.ts +65 -40
  112. package/src/build/generate-route-types.ts +5 -1
  113. package/src/build/index.ts +8 -2
  114. package/src/build/prefix-tree-utils.ts +123 -0
  115. package/src/build/route-trie.ts +165 -36
  116. package/src/build/route-types/ast-route-extraction.ts +15 -8
  117. package/src/build/route-types/codegen.ts +16 -5
  118. package/src/build/route-types/include-resolution.ts +125 -24
  119. package/src/build/route-types/param-extraction.ts +6 -3
  120. package/src/build/route-types/per-module-writer.ts +22 -6
  121. package/src/build/route-types/router-processing.ts +260 -94
  122. package/src/build/route-types/scan-filter.ts +9 -2
  123. package/src/build/route-types/source-scan.ts +216 -0
  124. package/src/build/runtime-discovery.ts +9 -20
  125. package/src/cache/cache-error.ts +104 -0
  126. package/src/cache/cache-key-utils.ts +29 -13
  127. package/src/cache/cache-policy.ts +108 -34
  128. package/src/cache/cache-runtime.ts +214 -48
  129. package/src/cache/cache-scope.ts +234 -87
  130. package/src/cache/cache-tag.ts +103 -0
  131. package/src/cache/cf/cf-base64.ts +33 -0
  132. package/src/cache/cf/cf-cache-constants.ts +127 -0
  133. package/src/cache/cf/cf-cache-store.ts +1989 -378
  134. package/src/cache/cf/cf-cache-types.ts +349 -0
  135. package/src/cache/cf/cf-kv-utils.ts +46 -0
  136. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  137. package/src/cache/cf/index.ts +6 -16
  138. package/src/cache/document-cache.ts +72 -20
  139. package/src/cache/handle-snapshot.ts +70 -0
  140. package/src/cache/index.ts +10 -20
  141. package/src/cache/memory-segment-store.ts +136 -37
  142. package/src/cache/profile-registry.ts +31 -31
  143. package/src/cache/read-through-swr.ts +41 -11
  144. package/src/cache/segment-codec.ts +9 -17
  145. package/src/cache/tag-invalidation.ts +230 -0
  146. package/src/cache/taint.ts +55 -0
  147. package/src/cache/types.ts +37 -100
  148. package/src/client.rsc.tsx +44 -21
  149. package/src/client.tsx +119 -290
  150. package/src/cloudflare/index.ts +11 -0
  151. package/src/cloudflare/tracing.ts +109 -0
  152. package/src/component-utils.ts +19 -0
  153. package/src/components/DefaultDocument.tsx +8 -2
  154. package/src/context-var.ts +84 -2
  155. package/src/decode-loader-results.ts +52 -0
  156. package/src/defer.ts +196 -0
  157. package/src/deps/ssr.ts +0 -1
  158. package/src/encode-kv.ts +49 -0
  159. package/src/errors.ts +30 -4
  160. package/src/escape-script.ts +52 -0
  161. package/src/handle.ts +70 -22
  162. package/src/handles/MetaTags.tsx +62 -19
  163. package/src/handles/Scripts.tsx +183 -0
  164. package/src/handles/breadcrumbs.ts +37 -8
  165. package/src/handles/is-thenable.ts +19 -0
  166. package/src/handles/meta.ts +51 -40
  167. package/src/handles/script.ts +244 -0
  168. package/src/host/cookie-handler.ts +9 -60
  169. package/src/host/errors.ts +0 -24
  170. package/src/host/index.ts +8 -2
  171. package/src/host/pattern-matcher.ts +23 -52
  172. package/src/host/router.ts +107 -99
  173. package/src/host/testing.ts +40 -27
  174. package/src/host/types.ts +37 -4
  175. package/src/host/utils.ts +1 -1
  176. package/src/href-client.ts +137 -22
  177. package/src/index.rsc.ts +93 -12
  178. package/src/index.ts +133 -15
  179. package/src/internal-debug.ts +11 -10
  180. package/src/loader-store.ts +500 -0
  181. package/src/loader.rsc.ts +20 -13
  182. package/src/loader.ts +12 -11
  183. package/src/missing-id-error.ts +68 -0
  184. package/src/outlet-context.ts +1 -1
  185. package/src/outlet-provider.tsx +1 -5
  186. package/src/prerender/param-hash.ts +16 -16
  187. package/src/prerender/store.ts +37 -41
  188. package/src/prerender.ts +198 -82
  189. package/src/redirect-origin.ts +100 -0
  190. package/src/regex-escape.ts +8 -0
  191. package/src/render-error-thrower.tsx +20 -0
  192. package/src/response-utils.ts +62 -0
  193. package/src/reverse.ts +65 -15
  194. package/src/root-error-boundary.tsx +1 -19
  195. package/src/route-content-wrapper.tsx +7 -72
  196. package/src/route-definition/dsl-helpers.ts +445 -277
  197. package/src/route-definition/helper-factories.ts +29 -139
  198. package/src/route-definition/helpers-types.ts +113 -37
  199. package/src/route-definition/index.ts +3 -0
  200. package/src/route-definition/redirect.ts +51 -10
  201. package/src/route-definition/resolve-handler-use.ts +161 -0
  202. package/src/route-definition/use-item-types.ts +32 -0
  203. package/src/route-map-builder.ts +0 -16
  204. package/src/route-types.ts +37 -41
  205. package/src/router/basename.ts +14 -0
  206. package/src/router/content-negotiation.ts +164 -17
  207. package/src/router/error-handling.ts +45 -18
  208. package/src/router/find-match.ts +44 -23
  209. package/src/router/handler-context.ts +83 -39
  210. package/src/router/instrument.ts +350 -0
  211. package/src/router/intercept-resolution.ts +48 -24
  212. package/src/router/lazy-includes.ts +15 -52
  213. package/src/router/loader-resolution.ts +274 -56
  214. package/src/router/logging.ts +0 -6
  215. package/src/router/manifest.ts +40 -42
  216. package/src/router/match-api.ts +120 -204
  217. package/src/router/match-context.ts +0 -22
  218. package/src/router/match-handlers.ts +58 -58
  219. package/src/router/match-middleware/background-revalidation.ts +15 -5
  220. package/src/router/match-middleware/cache-lookup.ts +202 -268
  221. package/src/router/match-middleware/cache-store.ts +42 -28
  222. package/src/router/match-middleware/intercept-resolution.ts +0 -22
  223. package/src/router/match-middleware/segment-resolution.ts +45 -14
  224. package/src/router/match-pipelines.ts +1 -42
  225. package/src/router/match-result.ts +93 -39
  226. package/src/router/metrics.ts +0 -34
  227. package/src/router/middleware-types.ts +13 -142
  228. package/src/router/middleware.ts +268 -171
  229. package/src/router/navigation-snapshot.ts +131 -0
  230. package/src/router/params-util.ts +23 -0
  231. package/src/router/pattern-matching.ts +132 -90
  232. package/src/router/prefetch-cache-ttl.ts +51 -0
  233. package/src/router/prerender-match.ts +195 -56
  234. package/src/router/preview-match.ts +32 -102
  235. package/src/router/request-classification.ts +276 -0
  236. package/src/router/revalidation.ts +123 -73
  237. package/src/router/route-snapshot.ts +244 -0
  238. package/src/router/router-context.ts +3 -27
  239. package/src/router/router-interfaces.ts +115 -35
  240. package/src/router/router-options.ts +172 -15
  241. package/src/router/router-registry.ts +2 -5
  242. package/src/router/segment-resolution/fresh.ts +190 -99
  243. package/src/router/segment-resolution/helpers.ts +115 -30
  244. package/src/router/segment-resolution/loader-cache.ts +62 -37
  245. package/src/router/segment-resolution/revalidation.ts +386 -341
  246. package/src/router/segment-resolution/static-store.ts +19 -5
  247. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  248. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  249. package/src/router/segment-resolution.ts +5 -1
  250. package/src/router/segment-wrappers.ts +6 -5
  251. package/src/router/state-cookie-name.ts +33 -0
  252. package/src/router/substitute-pattern-params.ts +56 -0
  253. package/src/router/telemetry-otel.ts +161 -199
  254. package/src/router/telemetry.ts +96 -19
  255. package/src/router/timeout.ts +0 -20
  256. package/src/router/tracing.ts +206 -0
  257. package/src/router/trie-matching.ts +163 -59
  258. package/src/router/types.ts +10 -63
  259. package/src/router/url-params.ts +44 -0
  260. package/src/router.ts +158 -54
  261. package/src/rsc/handler-context.ts +3 -2
  262. package/src/rsc/handler.ts +658 -511
  263. package/src/rsc/helpers.ts +168 -46
  264. package/src/rsc/index.ts +2 -5
  265. package/src/rsc/json-route-result.ts +38 -0
  266. package/src/rsc/loader-fetch.ts +127 -31
  267. package/src/rsc/manifest-init.ts +33 -42
  268. package/src/rsc/origin-guard.ts +39 -25
  269. package/src/rsc/progressive-enhancement.ts +77 -11
  270. package/src/rsc/redirect-guard.ts +99 -0
  271. package/src/rsc/response-cache-serve.ts +238 -0
  272. package/src/rsc/response-error.ts +79 -12
  273. package/src/rsc/response-route-handler.ts +99 -189
  274. package/src/rsc/rsc-rendering.ts +105 -72
  275. package/src/rsc/runtime-warnings.ts +23 -10
  276. package/src/rsc/server-action.ts +263 -112
  277. package/src/rsc/ssr-setup.ts +18 -2
  278. package/src/rsc/types.ts +32 -6
  279. package/src/runtime-env.ts +18 -0
  280. package/src/search-params.ts +35 -30
  281. package/src/segment-content-promise.ts +67 -0
  282. package/src/segment-loader-promise.ts +149 -0
  283. package/src/segment-system.tsx +218 -202
  284. package/src/serialize.ts +243 -0
  285. package/src/server/context.ts +222 -51
  286. package/src/server/cookie-parse.ts +32 -0
  287. package/src/server/cookie-store.ts +80 -5
  288. package/src/server/handle-store.ts +40 -38
  289. package/src/server/loader-registry.ts +26 -46
  290. package/src/server/request-context.ts +390 -170
  291. package/src/ssr/index.tsx +24 -16
  292. package/src/static-handler.ts +27 -18
  293. package/src/testing/cache-status.ts +162 -0
  294. package/src/testing/collect-handle.ts +40 -0
  295. package/src/testing/dispatch.ts +701 -0
  296. package/src/testing/dom.entry.ts +22 -0
  297. package/src/testing/e2e/fixture.ts +188 -0
  298. package/src/testing/e2e/index.ts +128 -0
  299. package/src/testing/e2e/matchers.ts +35 -0
  300. package/src/testing/e2e/page-helpers.ts +272 -0
  301. package/src/testing/e2e/parity.ts +387 -0
  302. package/src/testing/e2e/server.ts +195 -0
  303. package/src/testing/flight-matchers.ts +97 -0
  304. package/src/testing/flight-normalize.ts +11 -0
  305. package/src/testing/flight-runtime.d.ts +57 -0
  306. package/src/testing/flight-tree.ts +682 -0
  307. package/src/testing/flight.entry.ts +52 -0
  308. package/src/testing/flight.ts +257 -0
  309. package/src/testing/generated-routes.ts +183 -0
  310. package/src/testing/index.ts +99 -0
  311. package/src/testing/internal/context.ts +371 -0
  312. package/src/testing/internal/flight-client-globals.ts +30 -0
  313. package/src/testing/internal/seed-vars.ts +54 -0
  314. package/src/testing/render-handler.ts +343 -0
  315. package/src/testing/render-route.tsx +581 -0
  316. package/src/testing/run-loader.ts +385 -0
  317. package/src/testing/run-middleware.ts +205 -0
  318. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  319. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  320. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  321. package/src/testing/vitest-stubs/version.ts +5 -0
  322. package/src/testing/vitest.ts +305 -0
  323. package/src/theme/ThemeProvider.tsx +20 -58
  324. package/src/theme/ThemeScript.tsx +7 -9
  325. package/src/theme/constants.ts +52 -13
  326. package/src/theme/index.ts +0 -7
  327. package/src/theme/theme-context.ts +1 -5
  328. package/src/theme/theme-script.ts +22 -21
  329. package/src/theme/use-theme.ts +0 -3
  330. package/src/types/boundaries.ts +0 -35
  331. package/src/types/cache-types.ts +17 -8
  332. package/src/types/error-types.ts +30 -90
  333. package/src/types/global-namespace.ts +54 -41
  334. package/src/types/handler-context.ts +233 -81
  335. package/src/types/index.ts +1 -10
  336. package/src/types/loader-types.ts +44 -15
  337. package/src/types/request-scope.ts +112 -0
  338. package/src/types/route-config.ts +6 -50
  339. package/src/types/route-entry.ts +12 -7
  340. package/src/types/segments.ts +36 -15
  341. package/src/urls/include-helper.ts +33 -70
  342. package/src/urls/index.ts +1 -11
  343. package/src/urls/path-helper-types.ts +58 -11
  344. package/src/urls/path-helper.ts +57 -111
  345. package/src/urls/pattern-types.ts +48 -19
  346. package/src/urls/response-types.ts +25 -22
  347. package/src/urls/type-extraction.ts +58 -139
  348. package/src/urls/urls-function.ts +1 -18
  349. package/src/use-loader.tsx +346 -89
  350. package/src/vite/debug.ts +185 -0
  351. package/src/vite/discovery/bundle-postprocess.ts +36 -38
  352. package/src/vite/discovery/discover-routers.ts +130 -85
  353. package/src/vite/discovery/discovery-errors.ts +194 -0
  354. package/src/vite/discovery/gate-state.ts +171 -0
  355. package/src/vite/discovery/prerender-collection.ts +214 -132
  356. package/src/vite/discovery/route-types-writer.ts +40 -84
  357. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  358. package/src/vite/discovery/state.ts +57 -4
  359. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  360. package/src/vite/index.ts +6 -0
  361. package/src/vite/inject-client-debug.ts +36 -0
  362. package/src/vite/plugin-types.ts +178 -5
  363. package/src/vite/plugins/cjs-to-esm.ts +16 -19
  364. package/src/vite/plugins/client-ref-dedup.ts +16 -11
  365. package/src/vite/plugins/client-ref-hashing.ts +28 -15
  366. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  367. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  368. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  369. package/src/vite/plugins/expose-action-id.ts +48 -95
  370. package/src/vite/plugins/expose-id-utils.ts +96 -51
  371. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  372. package/src/vite/plugins/expose-ids/handler-transform.ts +15 -64
  373. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  374. package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
  375. package/src/vite/plugins/expose-internal-ids.ts +553 -317
  376. package/src/vite/plugins/performance-tracks.ts +89 -0
  377. package/src/vite/plugins/refresh-cmd.ts +89 -27
  378. package/src/vite/plugins/use-cache-transform.ts +73 -83
  379. package/src/vite/plugins/version-injector.ts +21 -25
  380. package/src/vite/plugins/version-plugin.ts +37 -40
  381. package/src/vite/plugins/virtual-entries.ts +13 -18
  382. package/src/vite/rango.ts +119 -111
  383. package/src/vite/router-discovery.ts +941 -142
  384. package/src/vite/utils/ast-handler-extract.ts +26 -35
  385. package/src/vite/utils/banner.ts +1 -1
  386. package/src/vite/utils/bundle-analysis.ts +10 -15
  387. package/src/vite/utils/client-chunks.ts +184 -0
  388. package/src/vite/utils/directive-prologue.ts +40 -0
  389. package/src/vite/utils/forward-user-plugins.ts +171 -0
  390. package/src/vite/utils/manifest-utils.ts +4 -59
  391. package/src/vite/utils/package-resolution.ts +20 -52
  392. package/src/vite/utils/prerender-utils.ts +81 -34
  393. package/src/vite/utils/shared-utils.ts +92 -42
  394. package/dist/__internal.d.ts +0 -83
  395. package/dist/__internal.d.ts.map +0 -1
  396. package/dist/__internal.js +0 -19
  397. package/dist/__internal.js.map +0 -1
  398. package/dist/__mocks__/version.d.ts +0 -7
  399. package/dist/__mocks__/version.d.ts.map +0 -1
  400. package/dist/__mocks__/version.js +0 -7
  401. package/dist/__mocks__/version.js.map +0 -1
  402. package/dist/__tests__/client-href.test.d.ts +0 -2
  403. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  404. package/dist/__tests__/client-href.test.js +0 -74
  405. package/dist/__tests__/client-href.test.js.map +0 -1
  406. package/dist/__tests__/component-utils.test.d.ts +0 -2
  407. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  408. package/dist/__tests__/component-utils.test.js +0 -51
  409. package/dist/__tests__/component-utils.test.js.map +0 -1
  410. package/dist/__tests__/event-controller.test.d.ts +0 -2
  411. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  412. package/dist/__tests__/event-controller.test.js +0 -538
  413. package/dist/__tests__/event-controller.test.js.map +0 -1
  414. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  415. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  416. package/dist/__tests__/helpers/route-tree.js +0 -374
  417. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  418. package/dist/__tests__/match-result.test.d.ts +0 -2
  419. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  420. package/dist/__tests__/match-result.test.js +0 -154
  421. package/dist/__tests__/match-result.test.js.map +0 -1
  422. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  423. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  424. package/dist/__tests__/navigation-store.test.js +0 -440
  425. package/dist/__tests__/navigation-store.test.js.map +0 -1
  426. package/dist/__tests__/partial-update.test.d.ts +0 -2
  427. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  428. package/dist/__tests__/partial-update.test.js +0 -1009
  429. package/dist/__tests__/partial-update.test.js.map +0 -1
  430. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  431. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  432. package/dist/__tests__/reverse-types.test.js +0 -656
  433. package/dist/__tests__/reverse-types.test.js.map +0 -1
  434. package/dist/__tests__/route-definition.test.d.ts +0 -2
  435. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  436. package/dist/__tests__/route-definition.test.js +0 -55
  437. package/dist/__tests__/route-definition.test.js.map +0 -1
  438. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  439. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  440. package/dist/__tests__/router-helpers.test.js +0 -377
  441. package/dist/__tests__/router-helpers.test.js.map +0 -1
  442. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  443. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  444. package/dist/__tests__/router-integration-2.test.js +0 -426
  445. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  446. package/dist/__tests__/router-integration.test.d.ts +0 -2
  447. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  448. package/dist/__tests__/router-integration.test.js +0 -1051
  449. package/dist/__tests__/router-integration.test.js.map +0 -1
  450. package/dist/__tests__/search-params.test.d.ts +0 -5
  451. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  452. package/dist/__tests__/search-params.test.js +0 -306
  453. package/dist/__tests__/search-params.test.js.map +0 -1
  454. package/dist/__tests__/segment-system.test.d.ts +0 -2
  455. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  456. package/dist/__tests__/segment-system.test.js +0 -627
  457. package/dist/__tests__/segment-system.test.js.map +0 -1
  458. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  459. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  460. package/dist/__tests__/static-handler-types.test.js +0 -63
  461. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  462. package/dist/__tests__/urls.test.d.ts +0 -2
  463. package/dist/__tests__/urls.test.d.ts.map +0 -1
  464. package/dist/__tests__/urls.test.js +0 -421
  465. package/dist/__tests__/urls.test.js.map +0 -1
  466. package/dist/__tests__/use-mount.test.d.ts +0 -2
  467. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  468. package/dist/__tests__/use-mount.test.js +0 -35
  469. package/dist/__tests__/use-mount.test.js.map +0 -1
  470. package/dist/bin/rango.d.ts +0 -2
  471. package/dist/bin/rango.d.ts.map +0 -1
  472. package/dist/bin/rango.js.map +0 -1
  473. package/dist/browser/event-controller.d.ts +0 -191
  474. package/dist/browser/event-controller.d.ts.map +0 -1
  475. package/dist/browser/event-controller.js +0 -559
  476. package/dist/browser/event-controller.js.map +0 -1
  477. package/dist/browser/index.d.ts +0 -2
  478. package/dist/browser/index.d.ts.map +0 -1
  479. package/dist/browser/index.js +0 -14
  480. package/dist/browser/index.js.map +0 -1
  481. package/dist/browser/link-interceptor.d.ts +0 -38
  482. package/dist/browser/link-interceptor.d.ts.map +0 -1
  483. package/dist/browser/link-interceptor.js +0 -99
  484. package/dist/browser/link-interceptor.js.map +0 -1
  485. package/dist/browser/logging.d.ts +0 -10
  486. package/dist/browser/logging.d.ts.map +0 -1
  487. package/dist/browser/logging.js +0 -29
  488. package/dist/browser/logging.js.map +0 -1
  489. package/dist/browser/lru-cache.d.ts +0 -17
  490. package/dist/browser/lru-cache.d.ts.map +0 -1
  491. package/dist/browser/lru-cache.js +0 -50
  492. package/dist/browser/lru-cache.js.map +0 -1
  493. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  494. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  495. package/dist/browser/merge-segment-loaders.js +0 -102
  496. package/dist/browser/merge-segment-loaders.js.map +0 -1
  497. package/dist/browser/navigation-bridge.d.ts +0 -102
  498. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  499. package/dist/browser/navigation-bridge.js +0 -708
  500. package/dist/browser/navigation-bridge.js.map +0 -1
  501. package/dist/browser/navigation-client.d.ts +0 -25
  502. package/dist/browser/navigation-client.d.ts.map +0 -1
  503. package/dist/browser/navigation-client.js +0 -157
  504. package/dist/browser/navigation-client.js.map +0 -1
  505. package/dist/browser/navigation-store.d.ts +0 -101
  506. package/dist/browser/navigation-store.d.ts.map +0 -1
  507. package/dist/browser/navigation-store.js +0 -625
  508. package/dist/browser/navigation-store.js.map +0 -1
  509. package/dist/browser/partial-update.d.ts +0 -75
  510. package/dist/browser/partial-update.d.ts.map +0 -1
  511. package/dist/browser/partial-update.js +0 -426
  512. package/dist/browser/partial-update.js.map +0 -1
  513. package/dist/browser/react/Link.d.ts +0 -86
  514. package/dist/browser/react/Link.d.ts.map +0 -1
  515. package/dist/browser/react/Link.js +0 -128
  516. package/dist/browser/react/Link.js.map +0 -1
  517. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  518. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  519. package/dist/browser/react/NavigationProvider.js +0 -216
  520. package/dist/browser/react/NavigationProvider.js.map +0 -1
  521. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  522. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  523. package/dist/browser/react/ScrollRestoration.js +0 -57
  524. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  525. package/dist/browser/react/context.d.ts +0 -46
  526. package/dist/browser/react/context.d.ts.map +0 -1
  527. package/dist/browser/react/context.js +0 -10
  528. package/dist/browser/react/context.js.map +0 -1
  529. package/dist/browser/react/index.d.ts +0 -11
  530. package/dist/browser/react/index.d.ts.map +0 -1
  531. package/dist/browser/react/index.js +0 -22
  532. package/dist/browser/react/index.js.map +0 -1
  533. package/dist/browser/react/location-state-shared.d.ts +0 -63
  534. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  535. package/dist/browser/react/location-state-shared.js +0 -81
  536. package/dist/browser/react/location-state-shared.js.map +0 -1
  537. package/dist/browser/react/location-state.d.ts +0 -23
  538. package/dist/browser/react/location-state.d.ts.map +0 -1
  539. package/dist/browser/react/location-state.js +0 -29
  540. package/dist/browser/react/location-state.js.map +0 -1
  541. package/dist/browser/react/mount-context.d.ts +0 -24
  542. package/dist/browser/react/mount-context.d.ts.map +0 -1
  543. package/dist/browser/react/mount-context.js +0 -24
  544. package/dist/browser/react/mount-context.js.map +0 -1
  545. package/dist/browser/react/use-action.d.ts +0 -64
  546. package/dist/browser/react/use-action.d.ts.map +0 -1
  547. package/dist/browser/react/use-action.js +0 -134
  548. package/dist/browser/react/use-action.js.map +0 -1
  549. package/dist/browser/react/use-client-cache.d.ts +0 -41
  550. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  551. package/dist/browser/react/use-client-cache.js +0 -39
  552. package/dist/browser/react/use-client-cache.js.map +0 -1
  553. package/dist/browser/react/use-handle.d.ts +0 -31
  554. package/dist/browser/react/use-handle.d.ts.map +0 -1
  555. package/dist/browser/react/use-handle.js +0 -144
  556. package/dist/browser/react/use-handle.js.map +0 -1
  557. package/dist/browser/react/use-href.d.ts +0 -33
  558. package/dist/browser/react/use-href.d.ts.map +0 -1
  559. package/dist/browser/react/use-href.js +0 -39
  560. package/dist/browser/react/use-href.js.map +0 -1
  561. package/dist/browser/react/use-link-status.d.ts +0 -37
  562. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  563. package/dist/browser/react/use-link-status.js +0 -99
  564. package/dist/browser/react/use-link-status.js.map +0 -1
  565. package/dist/browser/react/use-mount.d.ts +0 -25
  566. package/dist/browser/react/use-mount.d.ts.map +0 -1
  567. package/dist/browser/react/use-mount.js +0 -30
  568. package/dist/browser/react/use-mount.js.map +0 -1
  569. package/dist/browser/react/use-navigation.d.ts +0 -27
  570. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  571. package/dist/browser/react/use-navigation.js +0 -87
  572. package/dist/browser/react/use-navigation.js.map +0 -1
  573. package/dist/browser/react/use-segments.d.ts +0 -38
  574. package/dist/browser/react/use-segments.d.ts.map +0 -1
  575. package/dist/browser/react/use-segments.js +0 -130
  576. package/dist/browser/react/use-segments.js.map +0 -1
  577. package/dist/browser/request-controller.d.ts +0 -26
  578. package/dist/browser/request-controller.d.ts.map +0 -1
  579. package/dist/browser/request-controller.js +0 -147
  580. package/dist/browser/request-controller.js.map +0 -1
  581. package/dist/browser/rsc-router.d.ts +0 -129
  582. package/dist/browser/rsc-router.d.ts.map +0 -1
  583. package/dist/browser/rsc-router.js +0 -195
  584. package/dist/browser/rsc-router.js.map +0 -1
  585. package/dist/browser/scroll-restoration.d.ts +0 -93
  586. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  587. package/dist/browser/scroll-restoration.js +0 -321
  588. package/dist/browser/scroll-restoration.js.map +0 -1
  589. package/dist/browser/segment-structure-assert.d.ts +0 -17
  590. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  591. package/dist/browser/segment-structure-assert.js +0 -59
  592. package/dist/browser/segment-structure-assert.js.map +0 -1
  593. package/dist/browser/server-action-bridge.d.ts +0 -26
  594. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  595. package/dist/browser/server-action-bridge.js +0 -668
  596. package/dist/browser/server-action-bridge.js.map +0 -1
  597. package/dist/browser/shallow.d.ts +0 -12
  598. package/dist/browser/shallow.d.ts.map +0 -1
  599. package/dist/browser/shallow.js +0 -34
  600. package/dist/browser/shallow.js.map +0 -1
  601. package/dist/browser/types.d.ts +0 -369
  602. package/dist/browser/types.d.ts.map +0 -1
  603. package/dist/browser/types.js +0 -2
  604. package/dist/browser/types.js.map +0 -1
  605. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  606. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  607. package/dist/build/__tests__/generate-cli.test.js +0 -237
  608. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  609. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  610. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  611. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  612. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  613. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  614. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  615. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  616. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  617. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  618. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  619. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  620. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  621. package/dist/build/generate-manifest.d.ts +0 -81
  622. package/dist/build/generate-manifest.d.ts.map +0 -1
  623. package/dist/build/generate-manifest.js +0 -276
  624. package/dist/build/generate-manifest.js.map +0 -1
  625. package/dist/build/generate-route-types.d.ts +0 -115
  626. package/dist/build/generate-route-types.d.ts.map +0 -1
  627. package/dist/build/generate-route-types.js +0 -740
  628. package/dist/build/generate-route-types.js.map +0 -1
  629. package/dist/build/index.d.ts +0 -21
  630. package/dist/build/index.d.ts.map +0 -1
  631. package/dist/build/index.js +0 -21
  632. package/dist/build/index.js.map +0 -1
  633. package/dist/build/route-trie.d.ts +0 -71
  634. package/dist/build/route-trie.d.ts.map +0 -1
  635. package/dist/build/route-trie.js +0 -175
  636. package/dist/build/route-trie.js.map +0 -1
  637. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  638. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  639. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  640. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  641. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  642. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  643. package/dist/cache/__tests__/document-cache.test.js +0 -345
  644. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  645. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  646. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  647. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  648. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  649. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  650. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  651. package/dist/cache/__tests__/memory-store.test.js +0 -367
  652. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  653. package/dist/cache/cache-scope.d.ts +0 -102
  654. package/dist/cache/cache-scope.d.ts.map +0 -1
  655. package/dist/cache/cache-scope.js +0 -440
  656. package/dist/cache/cache-scope.js.map +0 -1
  657. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  658. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  659. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  660. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  661. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  662. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  663. package/dist/cache/cf/cf-cache-store.js +0 -242
  664. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  665. package/dist/cache/cf/index.d.ts +0 -14
  666. package/dist/cache/cf/index.d.ts.map +0 -1
  667. package/dist/cache/cf/index.js +0 -17
  668. package/dist/cache/cf/index.js.map +0 -1
  669. package/dist/cache/document-cache.d.ts +0 -64
  670. package/dist/cache/document-cache.d.ts.map +0 -1
  671. package/dist/cache/document-cache.js +0 -228
  672. package/dist/cache/document-cache.js.map +0 -1
  673. package/dist/cache/index.d.ts +0 -19
  674. package/dist/cache/index.d.ts.map +0 -1
  675. package/dist/cache/index.js +0 -21
  676. package/dist/cache/index.js.map +0 -1
  677. package/dist/cache/memory-segment-store.d.ts +0 -110
  678. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  679. package/dist/cache/memory-segment-store.js +0 -117
  680. package/dist/cache/memory-segment-store.js.map +0 -1
  681. package/dist/cache/memory-store.d.ts +0 -41
  682. package/dist/cache/memory-store.d.ts.map +0 -1
  683. package/dist/cache/memory-store.js +0 -191
  684. package/dist/cache/memory-store.js.map +0 -1
  685. package/dist/cache/types.d.ts +0 -317
  686. package/dist/cache/types.d.ts.map +0 -1
  687. package/dist/cache/types.js +0 -12
  688. package/dist/cache/types.js.map +0 -1
  689. package/dist/client.d.ts +0 -248
  690. package/dist/client.d.ts.map +0 -1
  691. package/dist/client.js +0 -367
  692. package/dist/client.js.map +0 -1
  693. package/dist/client.rsc.d.ts +0 -26
  694. package/dist/client.rsc.d.ts.map +0 -1
  695. package/dist/client.rsc.js +0 -46
  696. package/dist/client.rsc.js.map +0 -1
  697. package/dist/component-utils.d.ts +0 -36
  698. package/dist/component-utils.d.ts.map +0 -1
  699. package/dist/component-utils.js +0 -61
  700. package/dist/component-utils.js.map +0 -1
  701. package/dist/components/DefaultDocument.d.ts +0 -13
  702. package/dist/components/DefaultDocument.d.ts.map +0 -1
  703. package/dist/components/DefaultDocument.js +0 -15
  704. package/dist/components/DefaultDocument.js.map +0 -1
  705. package/dist/debug.d.ts +0 -58
  706. package/dist/debug.d.ts.map +0 -1
  707. package/dist/debug.js +0 -157
  708. package/dist/debug.js.map +0 -1
  709. package/dist/default-error-boundary.d.ts +0 -11
  710. package/dist/default-error-boundary.d.ts.map +0 -1
  711. package/dist/default-error-boundary.js +0 -45
  712. package/dist/default-error-boundary.js.map +0 -1
  713. package/dist/deps/browser.d.ts +0 -2
  714. package/dist/deps/browser.d.ts.map +0 -1
  715. package/dist/deps/browser.js +0 -3
  716. package/dist/deps/browser.js.map +0 -1
  717. package/dist/deps/html-stream-client.d.ts +0 -2
  718. package/dist/deps/html-stream-client.d.ts.map +0 -1
  719. package/dist/deps/html-stream-client.js +0 -3
  720. package/dist/deps/html-stream-client.js.map +0 -1
  721. package/dist/deps/html-stream-server.d.ts +0 -2
  722. package/dist/deps/html-stream-server.d.ts.map +0 -1
  723. package/dist/deps/html-stream-server.js +0 -3
  724. package/dist/deps/html-stream-server.js.map +0 -1
  725. package/dist/deps/rsc.d.ts +0 -2
  726. package/dist/deps/rsc.d.ts.map +0 -1
  727. package/dist/deps/rsc.js +0 -4
  728. package/dist/deps/rsc.js.map +0 -1
  729. package/dist/deps/ssr.d.ts +0 -2
  730. package/dist/deps/ssr.d.ts.map +0 -1
  731. package/dist/deps/ssr.js +0 -3
  732. package/dist/deps/ssr.js.map +0 -1
  733. package/dist/errors.d.ts +0 -174
  734. package/dist/errors.d.ts.map +0 -1
  735. package/dist/errors.js +0 -241
  736. package/dist/errors.js.map +0 -1
  737. package/dist/handle.d.ts +0 -78
  738. package/dist/handle.d.ts.map +0 -1
  739. package/dist/handle.js +0 -82
  740. package/dist/handle.js.map +0 -1
  741. package/dist/handles/MetaTags.d.ts +0 -14
  742. package/dist/handles/MetaTags.d.ts.map +0 -1
  743. package/dist/handles/MetaTags.js +0 -136
  744. package/dist/handles/MetaTags.js.map +0 -1
  745. package/dist/handles/index.d.ts +0 -6
  746. package/dist/handles/index.d.ts.map +0 -1
  747. package/dist/handles/index.js +0 -6
  748. package/dist/handles/index.js.map +0 -1
  749. package/dist/handles/meta.d.ts +0 -39
  750. package/dist/handles/meta.d.ts.map +0 -1
  751. package/dist/handles/meta.js +0 -202
  752. package/dist/handles/meta.js.map +0 -1
  753. package/dist/host/__tests__/errors.test.d.ts +0 -2
  754. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  755. package/dist/host/__tests__/errors.test.js +0 -76
  756. package/dist/host/__tests__/errors.test.js.map +0 -1
  757. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  758. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  759. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  760. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  761. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  762. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  763. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  764. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  765. package/dist/host/__tests__/router.test.d.ts +0 -2
  766. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  767. package/dist/host/__tests__/router.test.js +0 -241
  768. package/dist/host/__tests__/router.test.js.map +0 -1
  769. package/dist/host/__tests__/testing.test.d.ts +0 -2
  770. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  771. package/dist/host/__tests__/testing.test.js +0 -64
  772. package/dist/host/__tests__/testing.test.js.map +0 -1
  773. package/dist/host/__tests__/utils.test.d.ts +0 -2
  774. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  775. package/dist/host/__tests__/utils.test.js +0 -29
  776. package/dist/host/__tests__/utils.test.js.map +0 -1
  777. package/dist/host/cookie-handler.d.ts +0 -34
  778. package/dist/host/cookie-handler.d.ts.map +0 -1
  779. package/dist/host/cookie-handler.js +0 -124
  780. package/dist/host/cookie-handler.js.map +0 -1
  781. package/dist/host/errors.d.ts +0 -56
  782. package/dist/host/errors.d.ts.map +0 -1
  783. package/dist/host/errors.js +0 -79
  784. package/dist/host/errors.js.map +0 -1
  785. package/dist/host/index.d.ts +0 -29
  786. package/dist/host/index.d.ts.map +0 -1
  787. package/dist/host/index.js +0 -32
  788. package/dist/host/index.js.map +0 -1
  789. package/dist/host/pattern-matcher.d.ts +0 -36
  790. package/dist/host/pattern-matcher.d.ts.map +0 -1
  791. package/dist/host/pattern-matcher.js +0 -172
  792. package/dist/host/pattern-matcher.js.map +0 -1
  793. package/dist/host/router.d.ts +0 -26
  794. package/dist/host/router.d.ts.map +0 -1
  795. package/dist/host/router.js +0 -218
  796. package/dist/host/router.js.map +0 -1
  797. package/dist/host/testing.d.ts +0 -36
  798. package/dist/host/testing.d.ts.map +0 -1
  799. package/dist/host/testing.js +0 -55
  800. package/dist/host/testing.js.map +0 -1
  801. package/dist/host/types.d.ts +0 -115
  802. package/dist/host/types.d.ts.map +0 -1
  803. package/dist/host/types.js +0 -7
  804. package/dist/host/types.js.map +0 -1
  805. package/dist/host/utils.d.ts +0 -21
  806. package/dist/host/utils.d.ts.map +0 -1
  807. package/dist/host/utils.js +0 -23
  808. package/dist/host/utils.js.map +0 -1
  809. package/dist/href-client.d.ts +0 -131
  810. package/dist/href-client.d.ts.map +0 -1
  811. package/dist/href-client.js +0 -64
  812. package/dist/href-client.js.map +0 -1
  813. package/dist/href-context.d.ts +0 -29
  814. package/dist/href-context.d.ts.map +0 -1
  815. package/dist/href-context.js +0 -21
  816. package/dist/href-context.js.map +0 -1
  817. package/dist/index.d.ts +0 -73
  818. package/dist/index.d.ts.map +0 -1
  819. package/dist/index.js +0 -91
  820. package/dist/index.js.map +0 -1
  821. package/dist/index.rsc.d.ts +0 -32
  822. package/dist/index.rsc.d.ts.map +0 -1
  823. package/dist/index.rsc.js +0 -40
  824. package/dist/index.rsc.js.map +0 -1
  825. package/dist/internal-debug.d.ts +0 -2
  826. package/dist/internal-debug.d.ts.map +0 -1
  827. package/dist/internal-debug.js +0 -5
  828. package/dist/internal-debug.js.map +0 -1
  829. package/dist/loader.d.ts +0 -14
  830. package/dist/loader.d.ts.map +0 -1
  831. package/dist/loader.js +0 -20
  832. package/dist/loader.js.map +0 -1
  833. package/dist/loader.rsc.d.ts +0 -19
  834. package/dist/loader.rsc.d.ts.map +0 -1
  835. package/dist/loader.rsc.js +0 -99
  836. package/dist/loader.rsc.js.map +0 -1
  837. package/dist/network-error-thrower.d.ts +0 -17
  838. package/dist/network-error-thrower.d.ts.map +0 -1
  839. package/dist/network-error-thrower.js +0 -14
  840. package/dist/network-error-thrower.js.map +0 -1
  841. package/dist/outlet-context.d.ts +0 -13
  842. package/dist/outlet-context.d.ts.map +0 -1
  843. package/dist/outlet-context.js +0 -3
  844. package/dist/outlet-context.js.map +0 -1
  845. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  846. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  847. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  848. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  849. package/dist/prerender/param-hash.d.ts +0 -16
  850. package/dist/prerender/param-hash.d.ts.map +0 -1
  851. package/dist/prerender/param-hash.js +0 -36
  852. package/dist/prerender/param-hash.js.map +0 -1
  853. package/dist/prerender/store.d.ts +0 -38
  854. package/dist/prerender/store.d.ts.map +0 -1
  855. package/dist/prerender/store.js +0 -61
  856. package/dist/prerender/store.js.map +0 -1
  857. package/dist/prerender.d.ts +0 -66
  858. package/dist/prerender.d.ts.map +0 -1
  859. package/dist/prerender.js +0 -57
  860. package/dist/prerender.js.map +0 -1
  861. package/dist/reverse.d.ts +0 -196
  862. package/dist/reverse.d.ts.map +0 -1
  863. package/dist/reverse.js +0 -78
  864. package/dist/reverse.js.map +0 -1
  865. package/dist/root-error-boundary.d.ts +0 -33
  866. package/dist/root-error-boundary.d.ts.map +0 -1
  867. package/dist/root-error-boundary.js +0 -165
  868. package/dist/root-error-boundary.js.map +0 -1
  869. package/dist/route-content-wrapper.d.ts +0 -46
  870. package/dist/route-content-wrapper.d.ts.map +0 -1
  871. package/dist/route-content-wrapper.js +0 -77
  872. package/dist/route-content-wrapper.js.map +0 -1
  873. package/dist/route-definition.d.ts +0 -421
  874. package/dist/route-definition.d.ts.map +0 -1
  875. package/dist/route-definition.js +0 -868
  876. package/dist/route-definition.js.map +0 -1
  877. package/dist/route-map-builder.d.ts +0 -155
  878. package/dist/route-map-builder.d.ts.map +0 -1
  879. package/dist/route-map-builder.js +0 -237
  880. package/dist/route-map-builder.js.map +0 -1
  881. package/dist/route-types.d.ts +0 -165
  882. package/dist/route-types.d.ts.map +0 -1
  883. package/dist/route-types.js +0 -7
  884. package/dist/route-types.js.map +0 -1
  885. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  886. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  887. package/dist/router/__tests__/handler-context.test.js +0 -65
  888. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  889. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  890. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  891. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  892. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  893. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  894. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  895. package/dist/router/__tests__/match-context.test.js +0 -92
  896. package/dist/router/__tests__/match-context.test.js.map +0 -1
  897. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  898. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  899. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  900. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  901. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  902. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  903. package/dist/router/__tests__/match-result.test.js +0 -457
  904. package/dist/router/__tests__/match-result.test.js.map +0 -1
  905. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  906. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  907. package/dist/router/__tests__/on-error.test.js +0 -678
  908. package/dist/router/__tests__/on-error.test.js.map +0 -1
  909. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  910. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  911. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  912. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  913. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  914. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  915. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  916. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  917. package/dist/router/error-handling.d.ts +0 -77
  918. package/dist/router/error-handling.d.ts.map +0 -1
  919. package/dist/router/error-handling.js +0 -202
  920. package/dist/router/error-handling.js.map +0 -1
  921. package/dist/router/handler-context.d.ts +0 -20
  922. package/dist/router/handler-context.d.ts.map +0 -1
  923. package/dist/router/handler-context.js +0 -198
  924. package/dist/router/handler-context.js.map +0 -1
  925. package/dist/router/intercept-resolution.d.ts +0 -66
  926. package/dist/router/intercept-resolution.d.ts.map +0 -1
  927. package/dist/router/intercept-resolution.js +0 -246
  928. package/dist/router/intercept-resolution.js.map +0 -1
  929. package/dist/router/loader-resolution.d.ts +0 -64
  930. package/dist/router/loader-resolution.d.ts.map +0 -1
  931. package/dist/router/loader-resolution.js +0 -284
  932. package/dist/router/loader-resolution.js.map +0 -1
  933. package/dist/router/logging.d.ts +0 -15
  934. package/dist/router/logging.d.ts.map +0 -1
  935. package/dist/router/logging.js +0 -99
  936. package/dist/router/logging.js.map +0 -1
  937. package/dist/router/manifest.d.ts +0 -22
  938. package/dist/router/manifest.d.ts.map +0 -1
  939. package/dist/router/manifest.js +0 -181
  940. package/dist/router/manifest.js.map +0 -1
  941. package/dist/router/match-api.d.ts +0 -35
  942. package/dist/router/match-api.d.ts.map +0 -1
  943. package/dist/router/match-api.js +0 -406
  944. package/dist/router/match-api.js.map +0 -1
  945. package/dist/router/match-context.d.ts +0 -206
  946. package/dist/router/match-context.d.ts.map +0 -1
  947. package/dist/router/match-context.js +0 -17
  948. package/dist/router/match-context.js.map +0 -1
  949. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  950. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  951. package/dist/router/match-middleware/background-revalidation.js +0 -75
  952. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  953. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  954. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  955. package/dist/router/match-middleware/cache-lookup.js +0 -257
  956. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  957. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  958. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  959. package/dist/router/match-middleware/cache-store.js +0 -108
  960. package/dist/router/match-middleware/cache-store.js.map +0 -1
  961. package/dist/router/match-middleware/index.d.ts +0 -81
  962. package/dist/router/match-middleware/index.d.ts.map +0 -1
  963. package/dist/router/match-middleware/index.js +0 -80
  964. package/dist/router/match-middleware/index.js.map +0 -1
  965. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  966. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  967. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  968. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  969. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  970. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  971. package/dist/router/match-middleware/segment-resolution.js +0 -53
  972. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  973. package/dist/router/match-pipelines.d.ts +0 -147
  974. package/dist/router/match-pipelines.d.ts.map +0 -1
  975. package/dist/router/match-pipelines.js +0 -82
  976. package/dist/router/match-pipelines.js.map +0 -1
  977. package/dist/router/match-result.d.ts +0 -126
  978. package/dist/router/match-result.d.ts.map +0 -1
  979. package/dist/router/match-result.js +0 -93
  980. package/dist/router/match-result.js.map +0 -1
  981. package/dist/router/metrics.d.ts +0 -20
  982. package/dist/router/metrics.d.ts.map +0 -1
  983. package/dist/router/metrics.js +0 -47
  984. package/dist/router/metrics.js.map +0 -1
  985. package/dist/router/middleware.d.ts +0 -249
  986. package/dist/router/middleware.d.ts.map +0 -1
  987. package/dist/router/middleware.js +0 -434
  988. package/dist/router/middleware.js.map +0 -1
  989. package/dist/router/middleware.test.d.ts +0 -2
  990. package/dist/router/middleware.test.d.ts.map +0 -1
  991. package/dist/router/middleware.test.js +0 -816
  992. package/dist/router/middleware.test.js.map +0 -1
  993. package/dist/router/pattern-matching.d.ts +0 -149
  994. package/dist/router/pattern-matching.d.ts.map +0 -1
  995. package/dist/router/pattern-matching.js +0 -349
  996. package/dist/router/pattern-matching.js.map +0 -1
  997. package/dist/router/revalidation.d.ts +0 -44
  998. package/dist/router/revalidation.d.ts.map +0 -1
  999. package/dist/router/revalidation.js +0 -147
  1000. package/dist/router/revalidation.js.map +0 -1
  1001. package/dist/router/router-context.d.ts +0 -135
  1002. package/dist/router/router-context.d.ts.map +0 -1
  1003. package/dist/router/router-context.js +0 -36
  1004. package/dist/router/router-context.js.map +0 -1
  1005. package/dist/router/segment-resolution.d.ts +0 -127
  1006. package/dist/router/segment-resolution.d.ts.map +0 -1
  1007. package/dist/router/segment-resolution.js +0 -919
  1008. package/dist/router/segment-resolution.js.map +0 -1
  1009. package/dist/router/trie-matching.d.ts +0 -40
  1010. package/dist/router/trie-matching.d.ts.map +0 -1
  1011. package/dist/router/trie-matching.js +0 -127
  1012. package/dist/router/trie-matching.js.map +0 -1
  1013. package/dist/router/types.d.ts +0 -136
  1014. package/dist/router/types.d.ts.map +0 -1
  1015. package/dist/router/types.js +0 -7
  1016. package/dist/router/types.js.map +0 -1
  1017. package/dist/router.d.ts +0 -753
  1018. package/dist/router.d.ts.map +0 -1
  1019. package/dist/router.gen.d.ts +0 -6
  1020. package/dist/router.gen.d.ts.map +0 -1
  1021. package/dist/router.gen.js +0 -6
  1022. package/dist/router.gen.js.map +0 -1
  1023. package/dist/router.js +0 -1304
  1024. package/dist/router.js.map +0 -1
  1025. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  1026. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  1027. package/dist/rsc/__tests__/helpers.test.js +0 -140
  1028. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  1029. package/dist/rsc/handler.d.ts +0 -45
  1030. package/dist/rsc/handler.d.ts.map +0 -1
  1031. package/dist/rsc/handler.js +0 -1172
  1032. package/dist/rsc/handler.js.map +0 -1
  1033. package/dist/rsc/helpers.d.ts +0 -16
  1034. package/dist/rsc/helpers.d.ts.map +0 -1
  1035. package/dist/rsc/helpers.js +0 -55
  1036. package/dist/rsc/helpers.js.map +0 -1
  1037. package/dist/rsc/index.d.ts +0 -22
  1038. package/dist/rsc/index.d.ts.map +0 -1
  1039. package/dist/rsc/index.js +0 -23
  1040. package/dist/rsc/index.js.map +0 -1
  1041. package/dist/rsc/nonce.d.ts +0 -9
  1042. package/dist/rsc/nonce.d.ts.map +0 -1
  1043. package/dist/rsc/nonce.js +0 -18
  1044. package/dist/rsc/nonce.js.map +0 -1
  1045. package/dist/rsc/types.d.ts +0 -206
  1046. package/dist/rsc/types.d.ts.map +0 -1
  1047. package/dist/rsc/types.js +0 -8
  1048. package/dist/rsc/types.js.map +0 -1
  1049. package/dist/search-params.d.ts +0 -103
  1050. package/dist/search-params.d.ts.map +0 -1
  1051. package/dist/search-params.js +0 -74
  1052. package/dist/search-params.js.map +0 -1
  1053. package/dist/segment-system.d.ts +0 -75
  1054. package/dist/segment-system.d.ts.map +0 -1
  1055. package/dist/segment-system.js +0 -336
  1056. package/dist/segment-system.js.map +0 -1
  1057. package/dist/server/context.d.ts +0 -245
  1058. package/dist/server/context.d.ts.map +0 -1
  1059. package/dist/server/context.js +0 -197
  1060. package/dist/server/context.js.map +0 -1
  1061. package/dist/server/fetchable-loader-store.d.ts +0 -18
  1062. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  1063. package/dist/server/fetchable-loader-store.js +0 -18
  1064. package/dist/server/fetchable-loader-store.js.map +0 -1
  1065. package/dist/server/handle-store.d.ts +0 -85
  1066. package/dist/server/handle-store.d.ts.map +0 -1
  1067. package/dist/server/handle-store.js +0 -142
  1068. package/dist/server/handle-store.js.map +0 -1
  1069. package/dist/server/loader-registry.d.ts +0 -55
  1070. package/dist/server/loader-registry.d.ts.map +0 -1
  1071. package/dist/server/loader-registry.js +0 -132
  1072. package/dist/server/loader-registry.js.map +0 -1
  1073. package/dist/server/request-context.d.ts +0 -226
  1074. package/dist/server/request-context.d.ts.map +0 -1
  1075. package/dist/server/request-context.js +0 -290
  1076. package/dist/server/request-context.js.map +0 -1
  1077. package/dist/server/root-layout.d.ts +0 -4
  1078. package/dist/server/root-layout.d.ts.map +0 -1
  1079. package/dist/server/root-layout.js +0 -5
  1080. package/dist/server/root-layout.js.map +0 -1
  1081. package/dist/server.d.ts +0 -15
  1082. package/dist/server.d.ts.map +0 -1
  1083. package/dist/server.js +0 -20
  1084. package/dist/server.js.map +0 -1
  1085. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  1086. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  1087. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  1088. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  1089. package/dist/ssr/index.d.ts +0 -98
  1090. package/dist/ssr/index.d.ts.map +0 -1
  1091. package/dist/ssr/index.js +0 -158
  1092. package/dist/ssr/index.js.map +0 -1
  1093. package/dist/static-handler.d.ts +0 -50
  1094. package/dist/static-handler.d.ts.map +0 -1
  1095. package/dist/static-handler.gen.d.ts +0 -5
  1096. package/dist/static-handler.gen.d.ts.map +0 -1
  1097. package/dist/static-handler.gen.js +0 -5
  1098. package/dist/static-handler.gen.js.map +0 -1
  1099. package/dist/static-handler.js +0 -29
  1100. package/dist/static-handler.js.map +0 -1
  1101. package/dist/theme/ThemeProvider.d.ts +0 -20
  1102. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  1103. package/dist/theme/ThemeProvider.js +0 -240
  1104. package/dist/theme/ThemeProvider.js.map +0 -1
  1105. package/dist/theme/ThemeScript.d.ts +0 -48
  1106. package/dist/theme/ThemeScript.d.ts.map +0 -1
  1107. package/dist/theme/ThemeScript.js +0 -13
  1108. package/dist/theme/ThemeScript.js.map +0 -1
  1109. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  1110. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  1111. package/dist/theme/__tests__/theme.test.js +0 -103
  1112. package/dist/theme/__tests__/theme.test.js.map +0 -1
  1113. package/dist/theme/constants.d.ts +0 -29
  1114. package/dist/theme/constants.d.ts.map +0 -1
  1115. package/dist/theme/constants.js +0 -48
  1116. package/dist/theme/constants.js.map +0 -1
  1117. package/dist/theme/index.d.ts +0 -31
  1118. package/dist/theme/index.d.ts.map +0 -1
  1119. package/dist/theme/index.js +0 -36
  1120. package/dist/theme/index.js.map +0 -1
  1121. package/dist/theme/theme-context.d.ts +0 -40
  1122. package/dist/theme/theme-context.d.ts.map +0 -1
  1123. package/dist/theme/theme-context.js +0 -60
  1124. package/dist/theme/theme-context.js.map +0 -1
  1125. package/dist/theme/theme-script.d.ts +0 -27
  1126. package/dist/theme/theme-script.d.ts.map +0 -1
  1127. package/dist/theme/theme-script.js +0 -147
  1128. package/dist/theme/theme-script.js.map +0 -1
  1129. package/dist/theme/types.d.ts +0 -163
  1130. package/dist/theme/types.d.ts.map +0 -1
  1131. package/dist/theme/types.js +0 -11
  1132. package/dist/theme/types.js.map +0 -1
  1133. package/dist/theme/use-theme.d.ts +0 -12
  1134. package/dist/theme/use-theme.d.ts.map +0 -1
  1135. package/dist/theme/use-theme.js +0 -40
  1136. package/dist/theme/use-theme.js.map +0 -1
  1137. package/dist/types.d.ts +0 -1479
  1138. package/dist/types.d.ts.map +0 -1
  1139. package/dist/types.js +0 -10
  1140. package/dist/types.js.map +0 -1
  1141. package/dist/urls.d.ts +0 -441
  1142. package/dist/urls.d.ts.map +0 -1
  1143. package/dist/urls.gen.d.ts +0 -8
  1144. package/dist/urls.gen.d.ts.map +0 -1
  1145. package/dist/urls.gen.js +0 -8
  1146. package/dist/urls.gen.js.map +0 -1
  1147. package/dist/urls.js +0 -443
  1148. package/dist/urls.js.map +0 -1
  1149. package/dist/use-loader.d.ts +0 -127
  1150. package/dist/use-loader.d.ts.map +0 -1
  1151. package/dist/use-loader.js +0 -237
  1152. package/dist/use-loader.js.map +0 -1
  1153. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  1154. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  1155. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  1156. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  1157. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  1158. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  1159. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  1160. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  1161. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  1162. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  1163. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  1164. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  1165. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  1166. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  1167. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  1168. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  1169. package/dist/vite/ast-handler-extract.d.ts +0 -49
  1170. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  1171. package/dist/vite/ast-handler-extract.js +0 -249
  1172. package/dist/vite/ast-handler-extract.js.map +0 -1
  1173. package/dist/vite/expose-action-id.d.ts +0 -19
  1174. package/dist/vite/expose-action-id.d.ts.map +0 -1
  1175. package/dist/vite/expose-action-id.js +0 -250
  1176. package/dist/vite/expose-action-id.js.map +0 -1
  1177. package/dist/vite/expose-id-utils.d.ts +0 -69
  1178. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  1179. package/dist/vite/expose-id-utils.js +0 -289
  1180. package/dist/vite/expose-id-utils.js.map +0 -1
  1181. package/dist/vite/expose-internal-ids.d.ts +0 -22
  1182. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  1183. package/dist/vite/expose-internal-ids.js +0 -886
  1184. package/dist/vite/expose-internal-ids.js.map +0 -1
  1185. package/dist/vite/index.d.ts +0 -149
  1186. package/dist/vite/index.d.ts.map +0 -1
  1187. package/dist/vite/index.js.map +0 -1
  1188. package/dist/vite/index.named-routes.gen.ts +0 -103
  1189. package/dist/vite/package-resolution.d.ts +0 -43
  1190. package/dist/vite/package-resolution.d.ts.map +0 -1
  1191. package/dist/vite/package-resolution.js +0 -112
  1192. package/dist/vite/package-resolution.js.map +0 -1
  1193. package/dist/vite/virtual-entries.d.ts +0 -25
  1194. package/dist/vite/virtual-entries.d.ts.map +0 -1
  1195. package/dist/vite/virtual-entries.js +0 -110
  1196. package/dist/vite/virtual-entries.js.map +0 -1
  1197. package/src/browser/action-response-classifier.ts +0 -99
  1198. package/src/browser/react/use-client-cache.ts +0 -58
  1199. package/src/browser/shallow.ts +0 -40
  1200. package/src/handles/index.ts +0 -7
  1201. package/src/network-error-thrower.tsx +0 -23
  1202. 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!);
@@ -9,64 +9,11 @@ import {
9
9
  startTransition,
10
10
  } from "react";
11
11
  import type { Handle } from "../../handle.js";
12
- import { getCollectFn } from "../../handle.js";
12
+ import { collectHandleData } from "../../handle.js";
13
13
  import type { HandleData } from "../types.js";
14
14
  import { NavigationStoreContext } from "./context.js";
15
15
  import { shallowEqual } from "./shallow-equal.js";
16
16
 
17
- /**
18
- * Resolve the collect function for a handle.
19
- * Handle objects are plain { __brand, $$id } - collect is stored in the registry
20
- * (populated when createHandle runs on the client).
21
- */
22
- function resolveCollect<T, A>(handle: Handle<T, A>): (segments: T[][]) => A {
23
- // Look up collect from the registry (populated when the handle module is imported).
24
- const registered = getCollectFn(handle.$$id);
25
- if (registered) {
26
- return registered as (segments: T[][]) => A;
27
- }
28
-
29
- // Fall back to default flat collect with a dev warning.
30
- if (process.env.NODE_ENV !== "production") {
31
- console.warn(
32
- `[rsc-router] Handle "${handle.$$id}" was passed as a prop but its collect ` +
33
- `function could not be resolved. Falling back to flat array. ` +
34
- `Import the handle module in a client component to register its collect function.`,
35
- );
36
- }
37
- return ((segments: unknown[][]) => segments.flat()) as unknown as (
38
- segments: T[][],
39
- ) => A;
40
- }
41
-
42
- /**
43
- * Collect handle data from segments and transform to final value.
44
- */
45
- function collectHandle<T, A>(
46
- handle: Handle<T, A>,
47
- data: HandleData,
48
- segmentOrder: string[],
49
- ): A {
50
- const collect = resolveCollect(handle);
51
- const segmentData = data[handle.$$id];
52
-
53
- if (!segmentData) {
54
- return collect([]);
55
- }
56
-
57
- // Build array of segment arrays in parent -> child order
58
- const segmentArrays: T[][] = [];
59
- for (const segmentId of segmentOrder) {
60
- const entries = segmentData[segmentId];
61
- if (entries && entries.length > 0) {
62
- segmentArrays.push(entries as T[]);
63
- }
64
- }
65
-
66
- // Call collect once with all segment data
67
- return collect(segmentArrays);
68
- }
69
-
70
17
  /**
71
18
  * Hook to access collected handle data.
72
19
  *
@@ -85,51 +32,54 @@ function collectHandle<T, A>(
85
32
  * const lastCrumb = useHandle(Breadcrumbs, (data) => data.at(-1));
86
33
  * ```
87
34
  */
88
- export function useHandle<T, A>(handle: Handle<T, A>): A;
35
+ export function useHandle<T, A>(handle: Handle<T, A>): Rango.FlightSerialize<A>;
89
36
  export function useHandle<T, A, S>(
90
37
  handle: Handle<T, A>,
91
- selector: (data: A) => S,
38
+ selector: (data: Rango.FlightSerialize<A>) => S,
92
39
  ): S;
93
40
  export function useHandle<T, A, S>(
94
41
  handle: Handle<T, A>,
95
- selector?: (data: A) => S,
96
- ): A | S {
42
+ selector?: (data: Rango.FlightSerialize<A>) => S,
43
+ ): Rango.FlightSerialize<A> | S {
97
44
  const ctx = useContext(NavigationStoreContext);
98
45
 
99
- // Initial state from context event controller, or empty fallback without provider.
100
- const [value, setValue] = useState<A | S>(() => {
46
+ const [value, setValue] = useState<Rango.FlightSerialize<A> | S>(() => {
101
47
  if (!ctx) {
102
- const collected = collectHandle(handle, {}, []);
48
+ const collected = collectHandleData(
49
+ handle,
50
+ {},
51
+ [],
52
+ ) as Rango.FlightSerialize<A>;
103
53
  return selector ? selector(collected) : collected;
104
54
  }
105
55
 
106
- // On client, use event controller state
107
56
  const state = ctx.eventController.getHandleState();
108
- const collected = collectHandle(handle, state.data, state.segmentOrder);
57
+ const collected = collectHandleData(
58
+ handle,
59
+ state.data,
60
+ state.segmentOrder,
61
+ ) as Rango.FlightSerialize<A>;
109
62
  return selector ? selector(collected) : collected;
110
63
  });
111
64
  const [optimisticValue, setOptimisticValue] = useOptimistic(value);
112
65
 
113
- // Track previous value for shallow comparison
114
66
  const prevValueRef = useRef(value);
115
67
  prevValueRef.current = value;
116
68
 
117
- // Ref keeps the latest selector without re-subscribing on every render.
118
69
  const selectorRef = useRef(selector);
119
70
  selectorRef.current = selector;
120
71
 
121
- // Subscribe to handle data changes (client only)
122
72
  useEffect(() => {
123
73
  if (!ctx) return;
124
74
 
125
75
  // Sync current state for the (possibly new) handle so that switching
126
76
  // handles on an idle page doesn't leave stale data from the old handle.
127
77
  const currentHandleState = ctx.eventController.getHandleState();
128
- const currentCollected = collectHandle(
78
+ const currentCollected = collectHandleData(
129
79
  handle,
130
80
  currentHandleState.data,
131
81
  currentHandleState.segmentOrder,
132
- );
82
+ ) as Rango.FlightSerialize<A>;
133
83
  const currentValue = selectorRef.current
134
84
  ? selectorRef.current(currentCollected)
135
85
  : currentCollected;
@@ -142,7 +92,11 @@ export function useHandle<T, A, S>(
142
92
  const state = ctx.eventController.getHandleState();
143
93
  const isAction =
144
94
  ctx.eventController.getState().inflightActions.length > 0;
145
- const collected = collectHandle(handle, state.data, state.segmentOrder);
95
+ const collected = collectHandleData(
96
+ handle,
97
+ state.data,
98
+ state.segmentOrder,
99
+ ) as Rango.FlightSerialize<A>;
146
100
  const nextValue = selectorRef.current
147
101
  ? selectorRef.current(collected)
148
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