@rangojs/router 0.0.0-experimental.7a20d911 → 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 (1198) 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 +2974 -1019
  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 +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 +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 +247 -17
  24. package/skills/loader/SKILL.md +225 -9
  25. package/skills/middleware/SKILL.md +50 -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 +77 -7
  31. package/skills/prerender/SKILL.md +45 -43
  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 +70 -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 +92 -18
  72. package/src/browser/navigation-client.ts +146 -69
  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 +131 -121
  78. package/src/browser/prefetch/cache.ts +205 -62
  79. package/src/browser/prefetch/fetch.ts +321 -37
  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 +60 -9
  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-reconciler.ts +36 -14
  103. package/src/browser/segment-structure-assert.ts +2 -2
  104. package/src/browser/server-action-bridge.ts +214 -55
  105. package/src/browser/types.ts +57 -8
  106. package/src/browser/validate-redirect-origin.ts +43 -16
  107. package/src/build/collect-fallback-refs.ts +107 -0
  108. package/src/build/generate-manifest.ts +60 -35
  109. package/src/build/generate-route-types.ts +2 -1
  110. package/src/build/index.ts +8 -2
  111. package/src/build/prefix-tree-utils.ts +123 -0
  112. package/src/build/route-trie.ts +165 -36
  113. package/src/build/route-types/ast-route-extraction.ts +15 -8
  114. package/src/build/route-types/codegen.ts +16 -5
  115. package/src/build/route-types/include-resolution.ts +117 -23
  116. package/src/build/route-types/param-extraction.ts +6 -3
  117. package/src/build/route-types/per-module-writer.ts +22 -6
  118. package/src/build/route-types/router-processing.ts +55 -28
  119. package/src/build/route-types/scan-filter.ts +1 -1
  120. package/src/build/route-types/source-scan.ts +216 -0
  121. package/src/build/runtime-discovery.ts +9 -20
  122. package/src/cache/cache-error.ts +104 -0
  123. package/src/cache/cache-key-utils.ts +29 -13
  124. package/src/cache/cache-policy.ts +108 -34
  125. package/src/cache/cache-runtime.ts +199 -37
  126. package/src/cache/cache-scope.ts +188 -82
  127. package/src/cache/cache-tag.ts +103 -0
  128. package/src/cache/cf/cf-base64.ts +33 -0
  129. package/src/cache/cf/cf-cache-constants.ts +127 -0
  130. package/src/cache/cf/cf-cache-store.ts +1989 -378
  131. package/src/cache/cf/cf-cache-types.ts +349 -0
  132. package/src/cache/cf/cf-kv-utils.ts +46 -0
  133. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  134. package/src/cache/cf/index.ts +6 -16
  135. package/src/cache/document-cache.ts +72 -20
  136. package/src/cache/handle-snapshot.ts +70 -0
  137. package/src/cache/index.ts +10 -20
  138. package/src/cache/memory-segment-store.ts +136 -37
  139. package/src/cache/profile-registry.ts +31 -31
  140. package/src/cache/read-through-swr.ts +41 -11
  141. package/src/cache/segment-codec.ts +9 -17
  142. package/src/cache/tag-invalidation.ts +230 -0
  143. package/src/cache/types.ts +37 -100
  144. package/src/client.rsc.tsx +44 -21
  145. package/src/client.tsx +118 -235
  146. package/src/cloudflare/index.ts +11 -0
  147. package/src/cloudflare/tracing.ts +109 -0
  148. package/src/component-utils.ts +19 -0
  149. package/src/components/DefaultDocument.tsx +8 -2
  150. package/src/context-var.ts +18 -6
  151. package/src/decode-loader-results.ts +52 -0
  152. package/src/defer.ts +196 -0
  153. package/src/deps/ssr.ts +0 -1
  154. package/src/encode-kv.ts +49 -0
  155. package/src/errors.ts +30 -4
  156. package/src/escape-script.ts +52 -0
  157. package/src/handle.ts +31 -23
  158. package/src/handles/MetaTags.tsx +62 -19
  159. package/src/handles/Scripts.tsx +183 -0
  160. package/src/handles/breadcrumbs.ts +37 -8
  161. package/src/handles/is-thenable.ts +19 -0
  162. package/src/handles/meta.ts +51 -40
  163. package/src/handles/script.ts +244 -0
  164. package/src/host/cookie-handler.ts +9 -60
  165. package/src/host/errors.ts +0 -24
  166. package/src/host/index.ts +8 -2
  167. package/src/host/pattern-matcher.ts +23 -52
  168. package/src/host/router.ts +107 -99
  169. package/src/host/testing.ts +40 -27
  170. package/src/host/types.ts +37 -4
  171. package/src/host/utils.ts +1 -1
  172. package/src/href-client.ts +137 -22
  173. package/src/index.rsc.ts +90 -11
  174. package/src/index.ts +129 -19
  175. package/src/internal-debug.ts +11 -10
  176. package/src/loader-store.ts +500 -0
  177. package/src/loader.rsc.ts +20 -13
  178. package/src/loader.ts +12 -11
  179. package/src/missing-id-error.ts +68 -0
  180. package/src/outlet-context.ts +1 -1
  181. package/src/outlet-provider.tsx +1 -5
  182. package/src/prerender/param-hash.ts +16 -16
  183. package/src/prerender/store.ts +32 -37
  184. package/src/prerender.ts +61 -6
  185. package/src/redirect-origin.ts +100 -0
  186. package/src/regex-escape.ts +8 -0
  187. package/src/render-error-thrower.tsx +20 -0
  188. package/src/response-utils.ts +62 -0
  189. package/src/reverse.ts +65 -36
  190. package/src/root-error-boundary.tsx +1 -19
  191. package/src/route-content-wrapper.tsx +7 -72
  192. package/src/route-definition/dsl-helpers.ts +418 -273
  193. package/src/route-definition/helper-factories.ts +29 -139
  194. package/src/route-definition/helpers-types.ts +103 -31
  195. package/src/route-definition/redirect.ts +44 -11
  196. package/src/route-definition/resolve-handler-use.ts +12 -0
  197. package/src/route-definition/use-item-types.ts +32 -0
  198. package/src/route-map-builder.ts +0 -16
  199. package/src/route-types.ts +26 -41
  200. package/src/router/basename.ts +14 -0
  201. package/src/router/content-negotiation.ts +73 -25
  202. package/src/router/error-handling.ts +45 -18
  203. package/src/router/find-match.ts +44 -23
  204. package/src/router/handler-context.ts +27 -39
  205. package/src/router/instrument.ts +350 -0
  206. package/src/router/intercept-resolution.ts +39 -20
  207. package/src/router/lazy-includes.ts +15 -52
  208. package/src/router/loader-resolution.ts +198 -92
  209. package/src/router/logging.ts +0 -6
  210. package/src/router/manifest.ts +40 -42
  211. package/src/router/match-api.ts +4 -23
  212. package/src/router/match-context.ts +0 -22
  213. package/src/router/match-handlers.ts +58 -58
  214. package/src/router/match-middleware/background-revalidation.ts +6 -7
  215. package/src/router/match-middleware/cache-lookup.ts +164 -285
  216. package/src/router/match-middleware/cache-store.ts +31 -34
  217. package/src/router/match-middleware/intercept-resolution.ts +0 -22
  218. package/src/router/match-middleware/segment-resolution.ts +1 -23
  219. package/src/router/match-pipelines.ts +1 -42
  220. package/src/router/match-result.ts +87 -39
  221. package/src/router/metrics.ts +0 -34
  222. package/src/router/middleware-types.ts +7 -134
  223. package/src/router/middleware.ts +266 -166
  224. package/src/router/navigation-snapshot.ts +0 -51
  225. package/src/router/params-util.ts +23 -0
  226. package/src/router/pattern-matching.ts +132 -90
  227. package/src/router/prefetch-cache-ttl.ts +51 -0
  228. package/src/router/prerender-match.ts +104 -65
  229. package/src/router/preview-match.ts +3 -1
  230. package/src/router/request-classification.ts +28 -62
  231. package/src/router/revalidation.ts +123 -73
  232. package/src/router/route-snapshot.ts +0 -1
  233. package/src/router/router-context.ts +3 -28
  234. package/src/router/router-interfaces.ts +83 -35
  235. package/src/router/router-options.ts +136 -5
  236. package/src/router/router-registry.ts +2 -5
  237. package/src/router/segment-resolution/fresh.ts +98 -84
  238. package/src/router/segment-resolution/helpers.ts +86 -6
  239. package/src/router/segment-resolution/loader-cache.ts +62 -37
  240. package/src/router/segment-resolution/revalidation.ts +274 -319
  241. package/src/router/segment-resolution/static-store.ts +19 -5
  242. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  243. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  244. package/src/router/segment-resolution.ts +5 -1
  245. package/src/router/segment-wrappers.ts +6 -5
  246. package/src/router/state-cookie-name.ts +33 -0
  247. package/src/router/substitute-pattern-params.ts +56 -0
  248. package/src/router/telemetry-otel.ts +161 -199
  249. package/src/router/telemetry.ts +96 -19
  250. package/src/router/timeout.ts +0 -20
  251. package/src/router/tracing.ts +206 -0
  252. package/src/router/trie-matching.ts +163 -59
  253. package/src/router/types.ts +9 -63
  254. package/src/router/url-params.ts +44 -0
  255. package/src/router.ts +110 -55
  256. package/src/rsc/handler-context.ts +3 -2
  257. package/src/rsc/handler.ts +279 -224
  258. package/src/rsc/helpers.ts +168 -46
  259. package/src/rsc/index.ts +2 -5
  260. package/src/rsc/json-route-result.ts +38 -0
  261. package/src/rsc/loader-fetch.ts +127 -31
  262. package/src/rsc/manifest-init.ts +28 -41
  263. package/src/rsc/origin-guard.ts +39 -25
  264. package/src/rsc/progressive-enhancement.ts +73 -11
  265. package/src/rsc/redirect-guard.ts +99 -0
  266. package/src/rsc/response-cache-serve.ts +238 -0
  267. package/src/rsc/response-error.ts +79 -12
  268. package/src/rsc/response-route-handler.ts +99 -189
  269. package/src/rsc/rsc-rendering.ts +104 -76
  270. package/src/rsc/runtime-warnings.ts +23 -10
  271. package/src/rsc/server-action.ts +262 -113
  272. package/src/rsc/ssr-setup.ts +16 -0
  273. package/src/rsc/types.ts +24 -5
  274. package/src/runtime-env.ts +18 -0
  275. package/src/search-params.ts +35 -30
  276. package/src/segment-content-promise.ts +67 -0
  277. package/src/segment-loader-promise.ts +149 -0
  278. package/src/segment-system.tsx +218 -202
  279. package/src/serialize.ts +243 -0
  280. package/src/server/context.ts +175 -53
  281. package/src/server/cookie-parse.ts +32 -0
  282. package/src/server/cookie-store.ts +80 -5
  283. package/src/server/handle-store.ts +40 -38
  284. package/src/server/loader-registry.ts +21 -42
  285. package/src/server/request-context.ts +258 -170
  286. package/src/ssr/index.tsx +21 -16
  287. package/src/static-handler.ts +10 -13
  288. package/src/testing/cache-status.ts +162 -0
  289. package/src/testing/collect-handle.ts +40 -0
  290. package/src/testing/dispatch.ts +701 -0
  291. package/src/testing/dom.entry.ts +22 -0
  292. package/src/testing/e2e/fixture.ts +188 -0
  293. package/src/testing/e2e/index.ts +128 -0
  294. package/src/testing/e2e/matchers.ts +35 -0
  295. package/src/testing/e2e/page-helpers.ts +272 -0
  296. package/src/testing/e2e/parity.ts +387 -0
  297. package/src/testing/e2e/server.ts +195 -0
  298. package/src/testing/flight-matchers.ts +97 -0
  299. package/src/testing/flight-normalize.ts +11 -0
  300. package/src/testing/flight-runtime.d.ts +57 -0
  301. package/src/testing/flight-tree.ts +682 -0
  302. package/src/testing/flight.entry.ts +52 -0
  303. package/src/testing/flight.ts +257 -0
  304. package/src/testing/generated-routes.ts +183 -0
  305. package/src/testing/index.ts +99 -0
  306. package/src/testing/internal/context.ts +371 -0
  307. package/src/testing/internal/flight-client-globals.ts +30 -0
  308. package/src/testing/internal/seed-vars.ts +54 -0
  309. package/src/testing/render-handler.ts +343 -0
  310. package/src/testing/render-route.tsx +581 -0
  311. package/src/testing/run-loader.ts +385 -0
  312. package/src/testing/run-middleware.ts +205 -0
  313. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  314. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  315. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  316. package/src/testing/vitest-stubs/version.ts +5 -0
  317. package/src/testing/vitest.ts +305 -0
  318. package/src/theme/ThemeProvider.tsx +20 -58
  319. package/src/theme/ThemeScript.tsx +7 -9
  320. package/src/theme/constants.ts +52 -13
  321. package/src/theme/index.ts +0 -7
  322. package/src/theme/theme-context.ts +1 -5
  323. package/src/theme/theme-script.ts +22 -21
  324. package/src/theme/use-theme.ts +0 -3
  325. package/src/types/boundaries.ts +0 -35
  326. package/src/types/cache-types.ts +13 -4
  327. package/src/types/error-types.ts +30 -90
  328. package/src/types/global-namespace.ts +54 -41
  329. package/src/types/handler-context.ts +109 -61
  330. package/src/types/index.ts +1 -10
  331. package/src/types/loader-types.ts +11 -9
  332. package/src/types/request-scope.ts +112 -0
  333. package/src/types/route-config.ts +6 -50
  334. package/src/types/route-entry.ts +11 -6
  335. package/src/types/segments.ts +36 -15
  336. package/src/urls/include-helper.ts +33 -70
  337. package/src/urls/index.ts +1 -11
  338. package/src/urls/path-helper-types.ts +49 -9
  339. package/src/urls/path-helper.ts +17 -106
  340. package/src/urls/pattern-types.ts +36 -19
  341. package/src/urls/response-types.ts +22 -29
  342. package/src/urls/type-extraction.ts +58 -139
  343. package/src/urls/urls-function.ts +1 -18
  344. package/src/use-loader.tsx +295 -107
  345. package/src/vite/debug.ts +185 -0
  346. package/src/vite/discovery/bundle-postprocess.ts +8 -7
  347. package/src/vite/discovery/discover-routers.ts +126 -85
  348. package/src/vite/discovery/discovery-errors.ts +194 -0
  349. package/src/vite/discovery/gate-state.ts +171 -0
  350. package/src/vite/discovery/prerender-collection.ts +211 -142
  351. package/src/vite/discovery/route-types-writer.ts +40 -84
  352. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  353. package/src/vite/discovery/state.ts +44 -0
  354. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  355. package/src/vite/index.ts +2 -0
  356. package/src/vite/inject-client-debug.ts +36 -0
  357. package/src/vite/plugin-types.ts +126 -8
  358. package/src/vite/plugins/cjs-to-esm.ts +16 -19
  359. package/src/vite/plugins/client-ref-dedup.ts +16 -11
  360. package/src/vite/plugins/client-ref-hashing.ts +28 -15
  361. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  362. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  363. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  364. package/src/vite/plugins/expose-action-id.ts +48 -95
  365. package/src/vite/plugins/expose-id-utils.ts +96 -51
  366. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  367. package/src/vite/plugins/expose-ids/handler-transform.ts +15 -64
  368. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  369. package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
  370. package/src/vite/plugins/expose-internal-ids.ts +553 -317
  371. package/src/vite/plugins/performance-tracks.ts +26 -25
  372. package/src/vite/plugins/refresh-cmd.ts +1 -1
  373. package/src/vite/plugins/use-cache-transform.ts +73 -83
  374. package/src/vite/plugins/version-injector.ts +21 -25
  375. package/src/vite/plugins/version-plugin.ts +37 -40
  376. package/src/vite/plugins/virtual-entries.ts +13 -18
  377. package/src/vite/rango.ts +109 -118
  378. package/src/vite/router-discovery.ts +777 -119
  379. package/src/vite/utils/ast-handler-extract.ts +26 -35
  380. package/src/vite/utils/banner.ts +1 -1
  381. package/src/vite/utils/bundle-analysis.ts +10 -15
  382. package/src/vite/utils/client-chunks.ts +184 -0
  383. package/src/vite/utils/directive-prologue.ts +40 -0
  384. package/src/vite/utils/forward-user-plugins.ts +171 -0
  385. package/src/vite/utils/manifest-utils.ts +4 -59
  386. package/src/vite/utils/package-resolution.ts +20 -52
  387. package/src/vite/utils/prerender-utils.ts +67 -38
  388. package/src/vite/utils/shared-utils.ts +90 -41
  389. package/dist/__internal.d.ts +0 -83
  390. package/dist/__internal.d.ts.map +0 -1
  391. package/dist/__internal.js +0 -19
  392. package/dist/__internal.js.map +0 -1
  393. package/dist/__mocks__/version.d.ts +0 -7
  394. package/dist/__mocks__/version.d.ts.map +0 -1
  395. package/dist/__mocks__/version.js +0 -7
  396. package/dist/__mocks__/version.js.map +0 -1
  397. package/dist/__tests__/client-href.test.d.ts +0 -2
  398. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  399. package/dist/__tests__/client-href.test.js +0 -74
  400. package/dist/__tests__/client-href.test.js.map +0 -1
  401. package/dist/__tests__/component-utils.test.d.ts +0 -2
  402. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  403. package/dist/__tests__/component-utils.test.js +0 -51
  404. package/dist/__tests__/component-utils.test.js.map +0 -1
  405. package/dist/__tests__/event-controller.test.d.ts +0 -2
  406. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  407. package/dist/__tests__/event-controller.test.js +0 -538
  408. package/dist/__tests__/event-controller.test.js.map +0 -1
  409. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  410. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  411. package/dist/__tests__/helpers/route-tree.js +0 -374
  412. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  413. package/dist/__tests__/match-result.test.d.ts +0 -2
  414. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  415. package/dist/__tests__/match-result.test.js +0 -154
  416. package/dist/__tests__/match-result.test.js.map +0 -1
  417. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  418. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  419. package/dist/__tests__/navigation-store.test.js +0 -440
  420. package/dist/__tests__/navigation-store.test.js.map +0 -1
  421. package/dist/__tests__/partial-update.test.d.ts +0 -2
  422. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  423. package/dist/__tests__/partial-update.test.js +0 -1009
  424. package/dist/__tests__/partial-update.test.js.map +0 -1
  425. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  426. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  427. package/dist/__tests__/reverse-types.test.js +0 -656
  428. package/dist/__tests__/reverse-types.test.js.map +0 -1
  429. package/dist/__tests__/route-definition.test.d.ts +0 -2
  430. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  431. package/dist/__tests__/route-definition.test.js +0 -55
  432. package/dist/__tests__/route-definition.test.js.map +0 -1
  433. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  434. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  435. package/dist/__tests__/router-helpers.test.js +0 -377
  436. package/dist/__tests__/router-helpers.test.js.map +0 -1
  437. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  438. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  439. package/dist/__tests__/router-integration-2.test.js +0 -426
  440. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  441. package/dist/__tests__/router-integration.test.d.ts +0 -2
  442. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  443. package/dist/__tests__/router-integration.test.js +0 -1051
  444. package/dist/__tests__/router-integration.test.js.map +0 -1
  445. package/dist/__tests__/search-params.test.d.ts +0 -5
  446. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  447. package/dist/__tests__/search-params.test.js +0 -306
  448. package/dist/__tests__/search-params.test.js.map +0 -1
  449. package/dist/__tests__/segment-system.test.d.ts +0 -2
  450. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  451. package/dist/__tests__/segment-system.test.js +0 -627
  452. package/dist/__tests__/segment-system.test.js.map +0 -1
  453. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  454. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  455. package/dist/__tests__/static-handler-types.test.js +0 -63
  456. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  457. package/dist/__tests__/urls.test.d.ts +0 -2
  458. package/dist/__tests__/urls.test.d.ts.map +0 -1
  459. package/dist/__tests__/urls.test.js +0 -421
  460. package/dist/__tests__/urls.test.js.map +0 -1
  461. package/dist/__tests__/use-mount.test.d.ts +0 -2
  462. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  463. package/dist/__tests__/use-mount.test.js +0 -35
  464. package/dist/__tests__/use-mount.test.js.map +0 -1
  465. package/dist/bin/rango.d.ts +0 -2
  466. package/dist/bin/rango.d.ts.map +0 -1
  467. package/dist/bin/rango.js.map +0 -1
  468. package/dist/browser/event-controller.d.ts +0 -191
  469. package/dist/browser/event-controller.d.ts.map +0 -1
  470. package/dist/browser/event-controller.js +0 -559
  471. package/dist/browser/event-controller.js.map +0 -1
  472. package/dist/browser/index.d.ts +0 -2
  473. package/dist/browser/index.d.ts.map +0 -1
  474. package/dist/browser/index.js +0 -14
  475. package/dist/browser/index.js.map +0 -1
  476. package/dist/browser/link-interceptor.d.ts +0 -38
  477. package/dist/browser/link-interceptor.d.ts.map +0 -1
  478. package/dist/browser/link-interceptor.js +0 -99
  479. package/dist/browser/link-interceptor.js.map +0 -1
  480. package/dist/browser/logging.d.ts +0 -10
  481. package/dist/browser/logging.d.ts.map +0 -1
  482. package/dist/browser/logging.js +0 -29
  483. package/dist/browser/logging.js.map +0 -1
  484. package/dist/browser/lru-cache.d.ts +0 -17
  485. package/dist/browser/lru-cache.d.ts.map +0 -1
  486. package/dist/browser/lru-cache.js +0 -50
  487. package/dist/browser/lru-cache.js.map +0 -1
  488. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  489. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  490. package/dist/browser/merge-segment-loaders.js +0 -102
  491. package/dist/browser/merge-segment-loaders.js.map +0 -1
  492. package/dist/browser/navigation-bridge.d.ts +0 -102
  493. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  494. package/dist/browser/navigation-bridge.js +0 -708
  495. package/dist/browser/navigation-bridge.js.map +0 -1
  496. package/dist/browser/navigation-client.d.ts +0 -25
  497. package/dist/browser/navigation-client.d.ts.map +0 -1
  498. package/dist/browser/navigation-client.js +0 -157
  499. package/dist/browser/navigation-client.js.map +0 -1
  500. package/dist/browser/navigation-store.d.ts +0 -101
  501. package/dist/browser/navigation-store.d.ts.map +0 -1
  502. package/dist/browser/navigation-store.js +0 -625
  503. package/dist/browser/navigation-store.js.map +0 -1
  504. package/dist/browser/partial-update.d.ts +0 -75
  505. package/dist/browser/partial-update.d.ts.map +0 -1
  506. package/dist/browser/partial-update.js +0 -426
  507. package/dist/browser/partial-update.js.map +0 -1
  508. package/dist/browser/react/Link.d.ts +0 -86
  509. package/dist/browser/react/Link.d.ts.map +0 -1
  510. package/dist/browser/react/Link.js +0 -128
  511. package/dist/browser/react/Link.js.map +0 -1
  512. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  513. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  514. package/dist/browser/react/NavigationProvider.js +0 -216
  515. package/dist/browser/react/NavigationProvider.js.map +0 -1
  516. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  517. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  518. package/dist/browser/react/ScrollRestoration.js +0 -57
  519. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  520. package/dist/browser/react/context.d.ts +0 -46
  521. package/dist/browser/react/context.d.ts.map +0 -1
  522. package/dist/browser/react/context.js +0 -10
  523. package/dist/browser/react/context.js.map +0 -1
  524. package/dist/browser/react/index.d.ts +0 -11
  525. package/dist/browser/react/index.d.ts.map +0 -1
  526. package/dist/browser/react/index.js +0 -22
  527. package/dist/browser/react/index.js.map +0 -1
  528. package/dist/browser/react/location-state-shared.d.ts +0 -63
  529. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  530. package/dist/browser/react/location-state-shared.js +0 -81
  531. package/dist/browser/react/location-state-shared.js.map +0 -1
  532. package/dist/browser/react/location-state.d.ts +0 -23
  533. package/dist/browser/react/location-state.d.ts.map +0 -1
  534. package/dist/browser/react/location-state.js +0 -29
  535. package/dist/browser/react/location-state.js.map +0 -1
  536. package/dist/browser/react/mount-context.d.ts +0 -24
  537. package/dist/browser/react/mount-context.d.ts.map +0 -1
  538. package/dist/browser/react/mount-context.js +0 -24
  539. package/dist/browser/react/mount-context.js.map +0 -1
  540. package/dist/browser/react/use-action.d.ts +0 -64
  541. package/dist/browser/react/use-action.d.ts.map +0 -1
  542. package/dist/browser/react/use-action.js +0 -134
  543. package/dist/browser/react/use-action.js.map +0 -1
  544. package/dist/browser/react/use-client-cache.d.ts +0 -41
  545. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  546. package/dist/browser/react/use-client-cache.js +0 -39
  547. package/dist/browser/react/use-client-cache.js.map +0 -1
  548. package/dist/browser/react/use-handle.d.ts +0 -31
  549. package/dist/browser/react/use-handle.d.ts.map +0 -1
  550. package/dist/browser/react/use-handle.js +0 -144
  551. package/dist/browser/react/use-handle.js.map +0 -1
  552. package/dist/browser/react/use-href.d.ts +0 -33
  553. package/dist/browser/react/use-href.d.ts.map +0 -1
  554. package/dist/browser/react/use-href.js +0 -39
  555. package/dist/browser/react/use-href.js.map +0 -1
  556. package/dist/browser/react/use-link-status.d.ts +0 -37
  557. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  558. package/dist/browser/react/use-link-status.js +0 -99
  559. package/dist/browser/react/use-link-status.js.map +0 -1
  560. package/dist/browser/react/use-mount.d.ts +0 -25
  561. package/dist/browser/react/use-mount.d.ts.map +0 -1
  562. package/dist/browser/react/use-mount.js +0 -30
  563. package/dist/browser/react/use-mount.js.map +0 -1
  564. package/dist/browser/react/use-navigation.d.ts +0 -27
  565. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  566. package/dist/browser/react/use-navigation.js +0 -87
  567. package/dist/browser/react/use-navigation.js.map +0 -1
  568. package/dist/browser/react/use-segments.d.ts +0 -38
  569. package/dist/browser/react/use-segments.d.ts.map +0 -1
  570. package/dist/browser/react/use-segments.js +0 -130
  571. package/dist/browser/react/use-segments.js.map +0 -1
  572. package/dist/browser/request-controller.d.ts +0 -26
  573. package/dist/browser/request-controller.d.ts.map +0 -1
  574. package/dist/browser/request-controller.js +0 -147
  575. package/dist/browser/request-controller.js.map +0 -1
  576. package/dist/browser/rsc-router.d.ts +0 -129
  577. package/dist/browser/rsc-router.d.ts.map +0 -1
  578. package/dist/browser/rsc-router.js +0 -195
  579. package/dist/browser/rsc-router.js.map +0 -1
  580. package/dist/browser/scroll-restoration.d.ts +0 -93
  581. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  582. package/dist/browser/scroll-restoration.js +0 -321
  583. package/dist/browser/scroll-restoration.js.map +0 -1
  584. package/dist/browser/segment-structure-assert.d.ts +0 -17
  585. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  586. package/dist/browser/segment-structure-assert.js +0 -59
  587. package/dist/browser/segment-structure-assert.js.map +0 -1
  588. package/dist/browser/server-action-bridge.d.ts +0 -26
  589. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  590. package/dist/browser/server-action-bridge.js +0 -668
  591. package/dist/browser/server-action-bridge.js.map +0 -1
  592. package/dist/browser/shallow.d.ts +0 -12
  593. package/dist/browser/shallow.d.ts.map +0 -1
  594. package/dist/browser/shallow.js +0 -34
  595. package/dist/browser/shallow.js.map +0 -1
  596. package/dist/browser/types.d.ts +0 -369
  597. package/dist/browser/types.d.ts.map +0 -1
  598. package/dist/browser/types.js +0 -2
  599. package/dist/browser/types.js.map +0 -1
  600. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  601. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  602. package/dist/build/__tests__/generate-cli.test.js +0 -237
  603. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  604. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  605. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  606. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  607. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  608. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  609. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  610. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  611. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  612. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  613. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  614. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  615. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  616. package/dist/build/generate-manifest.d.ts +0 -81
  617. package/dist/build/generate-manifest.d.ts.map +0 -1
  618. package/dist/build/generate-manifest.js +0 -276
  619. package/dist/build/generate-manifest.js.map +0 -1
  620. package/dist/build/generate-route-types.d.ts +0 -115
  621. package/dist/build/generate-route-types.d.ts.map +0 -1
  622. package/dist/build/generate-route-types.js +0 -740
  623. package/dist/build/generate-route-types.js.map +0 -1
  624. package/dist/build/index.d.ts +0 -21
  625. package/dist/build/index.d.ts.map +0 -1
  626. package/dist/build/index.js +0 -21
  627. package/dist/build/index.js.map +0 -1
  628. package/dist/build/route-trie.d.ts +0 -71
  629. package/dist/build/route-trie.d.ts.map +0 -1
  630. package/dist/build/route-trie.js +0 -175
  631. package/dist/build/route-trie.js.map +0 -1
  632. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  633. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  634. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  635. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  636. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  637. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  638. package/dist/cache/__tests__/document-cache.test.js +0 -345
  639. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  640. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  641. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  642. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  643. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  644. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  645. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  646. package/dist/cache/__tests__/memory-store.test.js +0 -367
  647. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  648. package/dist/cache/cache-scope.d.ts +0 -102
  649. package/dist/cache/cache-scope.d.ts.map +0 -1
  650. package/dist/cache/cache-scope.js +0 -440
  651. package/dist/cache/cache-scope.js.map +0 -1
  652. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  653. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  654. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  655. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  656. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  657. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  658. package/dist/cache/cf/cf-cache-store.js +0 -242
  659. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  660. package/dist/cache/cf/index.d.ts +0 -14
  661. package/dist/cache/cf/index.d.ts.map +0 -1
  662. package/dist/cache/cf/index.js +0 -17
  663. package/dist/cache/cf/index.js.map +0 -1
  664. package/dist/cache/document-cache.d.ts +0 -64
  665. package/dist/cache/document-cache.d.ts.map +0 -1
  666. package/dist/cache/document-cache.js +0 -228
  667. package/dist/cache/document-cache.js.map +0 -1
  668. package/dist/cache/index.d.ts +0 -19
  669. package/dist/cache/index.d.ts.map +0 -1
  670. package/dist/cache/index.js +0 -21
  671. package/dist/cache/index.js.map +0 -1
  672. package/dist/cache/memory-segment-store.d.ts +0 -110
  673. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  674. package/dist/cache/memory-segment-store.js +0 -117
  675. package/dist/cache/memory-segment-store.js.map +0 -1
  676. package/dist/cache/memory-store.d.ts +0 -41
  677. package/dist/cache/memory-store.d.ts.map +0 -1
  678. package/dist/cache/memory-store.js +0 -191
  679. package/dist/cache/memory-store.js.map +0 -1
  680. package/dist/cache/types.d.ts +0 -317
  681. package/dist/cache/types.d.ts.map +0 -1
  682. package/dist/cache/types.js +0 -12
  683. package/dist/cache/types.js.map +0 -1
  684. package/dist/client.d.ts +0 -248
  685. package/dist/client.d.ts.map +0 -1
  686. package/dist/client.js +0 -367
  687. package/dist/client.js.map +0 -1
  688. package/dist/client.rsc.d.ts +0 -26
  689. package/dist/client.rsc.d.ts.map +0 -1
  690. package/dist/client.rsc.js +0 -46
  691. package/dist/client.rsc.js.map +0 -1
  692. package/dist/component-utils.d.ts +0 -36
  693. package/dist/component-utils.d.ts.map +0 -1
  694. package/dist/component-utils.js +0 -61
  695. package/dist/component-utils.js.map +0 -1
  696. package/dist/components/DefaultDocument.d.ts +0 -13
  697. package/dist/components/DefaultDocument.d.ts.map +0 -1
  698. package/dist/components/DefaultDocument.js +0 -15
  699. package/dist/components/DefaultDocument.js.map +0 -1
  700. package/dist/debug.d.ts +0 -58
  701. package/dist/debug.d.ts.map +0 -1
  702. package/dist/debug.js +0 -157
  703. package/dist/debug.js.map +0 -1
  704. package/dist/default-error-boundary.d.ts +0 -11
  705. package/dist/default-error-boundary.d.ts.map +0 -1
  706. package/dist/default-error-boundary.js +0 -45
  707. package/dist/default-error-boundary.js.map +0 -1
  708. package/dist/deps/browser.d.ts +0 -2
  709. package/dist/deps/browser.d.ts.map +0 -1
  710. package/dist/deps/browser.js +0 -3
  711. package/dist/deps/browser.js.map +0 -1
  712. package/dist/deps/html-stream-client.d.ts +0 -2
  713. package/dist/deps/html-stream-client.d.ts.map +0 -1
  714. package/dist/deps/html-stream-client.js +0 -3
  715. package/dist/deps/html-stream-client.js.map +0 -1
  716. package/dist/deps/html-stream-server.d.ts +0 -2
  717. package/dist/deps/html-stream-server.d.ts.map +0 -1
  718. package/dist/deps/html-stream-server.js +0 -3
  719. package/dist/deps/html-stream-server.js.map +0 -1
  720. package/dist/deps/rsc.d.ts +0 -2
  721. package/dist/deps/rsc.d.ts.map +0 -1
  722. package/dist/deps/rsc.js +0 -4
  723. package/dist/deps/rsc.js.map +0 -1
  724. package/dist/deps/ssr.d.ts +0 -2
  725. package/dist/deps/ssr.d.ts.map +0 -1
  726. package/dist/deps/ssr.js +0 -3
  727. package/dist/deps/ssr.js.map +0 -1
  728. package/dist/errors.d.ts +0 -174
  729. package/dist/errors.d.ts.map +0 -1
  730. package/dist/errors.js +0 -241
  731. package/dist/errors.js.map +0 -1
  732. package/dist/handle.d.ts +0 -78
  733. package/dist/handle.d.ts.map +0 -1
  734. package/dist/handle.js +0 -82
  735. package/dist/handle.js.map +0 -1
  736. package/dist/handles/MetaTags.d.ts +0 -14
  737. package/dist/handles/MetaTags.d.ts.map +0 -1
  738. package/dist/handles/MetaTags.js +0 -136
  739. package/dist/handles/MetaTags.js.map +0 -1
  740. package/dist/handles/index.d.ts +0 -6
  741. package/dist/handles/index.d.ts.map +0 -1
  742. package/dist/handles/index.js +0 -6
  743. package/dist/handles/index.js.map +0 -1
  744. package/dist/handles/meta.d.ts +0 -39
  745. package/dist/handles/meta.d.ts.map +0 -1
  746. package/dist/handles/meta.js +0 -202
  747. package/dist/handles/meta.js.map +0 -1
  748. package/dist/host/__tests__/errors.test.d.ts +0 -2
  749. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  750. package/dist/host/__tests__/errors.test.js +0 -76
  751. package/dist/host/__tests__/errors.test.js.map +0 -1
  752. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  753. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  754. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  755. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  756. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  757. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  758. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  759. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  760. package/dist/host/__tests__/router.test.d.ts +0 -2
  761. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  762. package/dist/host/__tests__/router.test.js +0 -241
  763. package/dist/host/__tests__/router.test.js.map +0 -1
  764. package/dist/host/__tests__/testing.test.d.ts +0 -2
  765. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  766. package/dist/host/__tests__/testing.test.js +0 -64
  767. package/dist/host/__tests__/testing.test.js.map +0 -1
  768. package/dist/host/__tests__/utils.test.d.ts +0 -2
  769. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  770. package/dist/host/__tests__/utils.test.js +0 -29
  771. package/dist/host/__tests__/utils.test.js.map +0 -1
  772. package/dist/host/cookie-handler.d.ts +0 -34
  773. package/dist/host/cookie-handler.d.ts.map +0 -1
  774. package/dist/host/cookie-handler.js +0 -124
  775. package/dist/host/cookie-handler.js.map +0 -1
  776. package/dist/host/errors.d.ts +0 -56
  777. package/dist/host/errors.d.ts.map +0 -1
  778. package/dist/host/errors.js +0 -79
  779. package/dist/host/errors.js.map +0 -1
  780. package/dist/host/index.d.ts +0 -29
  781. package/dist/host/index.d.ts.map +0 -1
  782. package/dist/host/index.js +0 -32
  783. package/dist/host/index.js.map +0 -1
  784. package/dist/host/pattern-matcher.d.ts +0 -36
  785. package/dist/host/pattern-matcher.d.ts.map +0 -1
  786. package/dist/host/pattern-matcher.js +0 -172
  787. package/dist/host/pattern-matcher.js.map +0 -1
  788. package/dist/host/router.d.ts +0 -26
  789. package/dist/host/router.d.ts.map +0 -1
  790. package/dist/host/router.js +0 -218
  791. package/dist/host/router.js.map +0 -1
  792. package/dist/host/testing.d.ts +0 -36
  793. package/dist/host/testing.d.ts.map +0 -1
  794. package/dist/host/testing.js +0 -55
  795. package/dist/host/testing.js.map +0 -1
  796. package/dist/host/types.d.ts +0 -115
  797. package/dist/host/types.d.ts.map +0 -1
  798. package/dist/host/types.js +0 -7
  799. package/dist/host/types.js.map +0 -1
  800. package/dist/host/utils.d.ts +0 -21
  801. package/dist/host/utils.d.ts.map +0 -1
  802. package/dist/host/utils.js +0 -23
  803. package/dist/host/utils.js.map +0 -1
  804. package/dist/href-client.d.ts +0 -131
  805. package/dist/href-client.d.ts.map +0 -1
  806. package/dist/href-client.js +0 -64
  807. package/dist/href-client.js.map +0 -1
  808. package/dist/href-context.d.ts +0 -29
  809. package/dist/href-context.d.ts.map +0 -1
  810. package/dist/href-context.js +0 -21
  811. package/dist/href-context.js.map +0 -1
  812. package/dist/index.d.ts +0 -73
  813. package/dist/index.d.ts.map +0 -1
  814. package/dist/index.js +0 -91
  815. package/dist/index.js.map +0 -1
  816. package/dist/index.rsc.d.ts +0 -32
  817. package/dist/index.rsc.d.ts.map +0 -1
  818. package/dist/index.rsc.js +0 -40
  819. package/dist/index.rsc.js.map +0 -1
  820. package/dist/internal-debug.d.ts +0 -2
  821. package/dist/internal-debug.d.ts.map +0 -1
  822. package/dist/internal-debug.js +0 -5
  823. package/dist/internal-debug.js.map +0 -1
  824. package/dist/loader.d.ts +0 -14
  825. package/dist/loader.d.ts.map +0 -1
  826. package/dist/loader.js +0 -20
  827. package/dist/loader.js.map +0 -1
  828. package/dist/loader.rsc.d.ts +0 -19
  829. package/dist/loader.rsc.d.ts.map +0 -1
  830. package/dist/loader.rsc.js +0 -99
  831. package/dist/loader.rsc.js.map +0 -1
  832. package/dist/network-error-thrower.d.ts +0 -17
  833. package/dist/network-error-thrower.d.ts.map +0 -1
  834. package/dist/network-error-thrower.js +0 -14
  835. package/dist/network-error-thrower.js.map +0 -1
  836. package/dist/outlet-context.d.ts +0 -13
  837. package/dist/outlet-context.d.ts.map +0 -1
  838. package/dist/outlet-context.js +0 -3
  839. package/dist/outlet-context.js.map +0 -1
  840. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  841. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  842. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  843. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  844. package/dist/prerender/param-hash.d.ts +0 -16
  845. package/dist/prerender/param-hash.d.ts.map +0 -1
  846. package/dist/prerender/param-hash.js +0 -36
  847. package/dist/prerender/param-hash.js.map +0 -1
  848. package/dist/prerender/store.d.ts +0 -38
  849. package/dist/prerender/store.d.ts.map +0 -1
  850. package/dist/prerender/store.js +0 -61
  851. package/dist/prerender/store.js.map +0 -1
  852. package/dist/prerender.d.ts +0 -66
  853. package/dist/prerender.d.ts.map +0 -1
  854. package/dist/prerender.js +0 -57
  855. package/dist/prerender.js.map +0 -1
  856. package/dist/reverse.d.ts +0 -196
  857. package/dist/reverse.d.ts.map +0 -1
  858. package/dist/reverse.js +0 -78
  859. package/dist/reverse.js.map +0 -1
  860. package/dist/root-error-boundary.d.ts +0 -33
  861. package/dist/root-error-boundary.d.ts.map +0 -1
  862. package/dist/root-error-boundary.js +0 -165
  863. package/dist/root-error-boundary.js.map +0 -1
  864. package/dist/route-content-wrapper.d.ts +0 -46
  865. package/dist/route-content-wrapper.d.ts.map +0 -1
  866. package/dist/route-content-wrapper.js +0 -77
  867. package/dist/route-content-wrapper.js.map +0 -1
  868. package/dist/route-definition.d.ts +0 -421
  869. package/dist/route-definition.d.ts.map +0 -1
  870. package/dist/route-definition.js +0 -868
  871. package/dist/route-definition.js.map +0 -1
  872. package/dist/route-map-builder.d.ts +0 -155
  873. package/dist/route-map-builder.d.ts.map +0 -1
  874. package/dist/route-map-builder.js +0 -237
  875. package/dist/route-map-builder.js.map +0 -1
  876. package/dist/route-types.d.ts +0 -165
  877. package/dist/route-types.d.ts.map +0 -1
  878. package/dist/route-types.js +0 -7
  879. package/dist/route-types.js.map +0 -1
  880. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  881. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  882. package/dist/router/__tests__/handler-context.test.js +0 -65
  883. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  884. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  885. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  886. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  887. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  888. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  889. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  890. package/dist/router/__tests__/match-context.test.js +0 -92
  891. package/dist/router/__tests__/match-context.test.js.map +0 -1
  892. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  893. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  894. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  895. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  896. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  897. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  898. package/dist/router/__tests__/match-result.test.js +0 -457
  899. package/dist/router/__tests__/match-result.test.js.map +0 -1
  900. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  901. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  902. package/dist/router/__tests__/on-error.test.js +0 -678
  903. package/dist/router/__tests__/on-error.test.js.map +0 -1
  904. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  905. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  906. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  907. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  908. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  909. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  910. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  911. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  912. package/dist/router/error-handling.d.ts +0 -77
  913. package/dist/router/error-handling.d.ts.map +0 -1
  914. package/dist/router/error-handling.js +0 -202
  915. package/dist/router/error-handling.js.map +0 -1
  916. package/dist/router/handler-context.d.ts +0 -20
  917. package/dist/router/handler-context.d.ts.map +0 -1
  918. package/dist/router/handler-context.js +0 -198
  919. package/dist/router/handler-context.js.map +0 -1
  920. package/dist/router/intercept-resolution.d.ts +0 -66
  921. package/dist/router/intercept-resolution.d.ts.map +0 -1
  922. package/dist/router/intercept-resolution.js +0 -246
  923. package/dist/router/intercept-resolution.js.map +0 -1
  924. package/dist/router/loader-resolution.d.ts +0 -64
  925. package/dist/router/loader-resolution.d.ts.map +0 -1
  926. package/dist/router/loader-resolution.js +0 -284
  927. package/dist/router/loader-resolution.js.map +0 -1
  928. package/dist/router/logging.d.ts +0 -15
  929. package/dist/router/logging.d.ts.map +0 -1
  930. package/dist/router/logging.js +0 -99
  931. package/dist/router/logging.js.map +0 -1
  932. package/dist/router/manifest.d.ts +0 -22
  933. package/dist/router/manifest.d.ts.map +0 -1
  934. package/dist/router/manifest.js +0 -181
  935. package/dist/router/manifest.js.map +0 -1
  936. package/dist/router/match-api.d.ts +0 -35
  937. package/dist/router/match-api.d.ts.map +0 -1
  938. package/dist/router/match-api.js +0 -406
  939. package/dist/router/match-api.js.map +0 -1
  940. package/dist/router/match-context.d.ts +0 -206
  941. package/dist/router/match-context.d.ts.map +0 -1
  942. package/dist/router/match-context.js +0 -17
  943. package/dist/router/match-context.js.map +0 -1
  944. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  945. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  946. package/dist/router/match-middleware/background-revalidation.js +0 -75
  947. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  948. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  949. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  950. package/dist/router/match-middleware/cache-lookup.js +0 -257
  951. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  952. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  953. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  954. package/dist/router/match-middleware/cache-store.js +0 -108
  955. package/dist/router/match-middleware/cache-store.js.map +0 -1
  956. package/dist/router/match-middleware/index.d.ts +0 -81
  957. package/dist/router/match-middleware/index.d.ts.map +0 -1
  958. package/dist/router/match-middleware/index.js +0 -80
  959. package/dist/router/match-middleware/index.js.map +0 -1
  960. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  961. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  962. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  963. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  964. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  965. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  966. package/dist/router/match-middleware/segment-resolution.js +0 -53
  967. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  968. package/dist/router/match-pipelines.d.ts +0 -147
  969. package/dist/router/match-pipelines.d.ts.map +0 -1
  970. package/dist/router/match-pipelines.js +0 -82
  971. package/dist/router/match-pipelines.js.map +0 -1
  972. package/dist/router/match-result.d.ts +0 -126
  973. package/dist/router/match-result.d.ts.map +0 -1
  974. package/dist/router/match-result.js +0 -93
  975. package/dist/router/match-result.js.map +0 -1
  976. package/dist/router/metrics.d.ts +0 -20
  977. package/dist/router/metrics.d.ts.map +0 -1
  978. package/dist/router/metrics.js +0 -47
  979. package/dist/router/metrics.js.map +0 -1
  980. package/dist/router/middleware.d.ts +0 -249
  981. package/dist/router/middleware.d.ts.map +0 -1
  982. package/dist/router/middleware.js +0 -434
  983. package/dist/router/middleware.js.map +0 -1
  984. package/dist/router/middleware.test.d.ts +0 -2
  985. package/dist/router/middleware.test.d.ts.map +0 -1
  986. package/dist/router/middleware.test.js +0 -816
  987. package/dist/router/middleware.test.js.map +0 -1
  988. package/dist/router/pattern-matching.d.ts +0 -149
  989. package/dist/router/pattern-matching.d.ts.map +0 -1
  990. package/dist/router/pattern-matching.js +0 -349
  991. package/dist/router/pattern-matching.js.map +0 -1
  992. package/dist/router/revalidation.d.ts +0 -44
  993. package/dist/router/revalidation.d.ts.map +0 -1
  994. package/dist/router/revalidation.js +0 -147
  995. package/dist/router/revalidation.js.map +0 -1
  996. package/dist/router/router-context.d.ts +0 -135
  997. package/dist/router/router-context.d.ts.map +0 -1
  998. package/dist/router/router-context.js +0 -36
  999. package/dist/router/router-context.js.map +0 -1
  1000. package/dist/router/segment-resolution.d.ts +0 -127
  1001. package/dist/router/segment-resolution.d.ts.map +0 -1
  1002. package/dist/router/segment-resolution.js +0 -919
  1003. package/dist/router/segment-resolution.js.map +0 -1
  1004. package/dist/router/trie-matching.d.ts +0 -40
  1005. package/dist/router/trie-matching.d.ts.map +0 -1
  1006. package/dist/router/trie-matching.js +0 -127
  1007. package/dist/router/trie-matching.js.map +0 -1
  1008. package/dist/router/types.d.ts +0 -136
  1009. package/dist/router/types.d.ts.map +0 -1
  1010. package/dist/router/types.js +0 -7
  1011. package/dist/router/types.js.map +0 -1
  1012. package/dist/router.d.ts +0 -753
  1013. package/dist/router.d.ts.map +0 -1
  1014. package/dist/router.gen.d.ts +0 -6
  1015. package/dist/router.gen.d.ts.map +0 -1
  1016. package/dist/router.gen.js +0 -6
  1017. package/dist/router.gen.js.map +0 -1
  1018. package/dist/router.js +0 -1304
  1019. package/dist/router.js.map +0 -1
  1020. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  1021. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  1022. package/dist/rsc/__tests__/helpers.test.js +0 -140
  1023. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  1024. package/dist/rsc/handler.d.ts +0 -45
  1025. package/dist/rsc/handler.d.ts.map +0 -1
  1026. package/dist/rsc/handler.js +0 -1172
  1027. package/dist/rsc/handler.js.map +0 -1
  1028. package/dist/rsc/helpers.d.ts +0 -16
  1029. package/dist/rsc/helpers.d.ts.map +0 -1
  1030. package/dist/rsc/helpers.js +0 -55
  1031. package/dist/rsc/helpers.js.map +0 -1
  1032. package/dist/rsc/index.d.ts +0 -22
  1033. package/dist/rsc/index.d.ts.map +0 -1
  1034. package/dist/rsc/index.js +0 -23
  1035. package/dist/rsc/index.js.map +0 -1
  1036. package/dist/rsc/nonce.d.ts +0 -9
  1037. package/dist/rsc/nonce.d.ts.map +0 -1
  1038. package/dist/rsc/nonce.js +0 -18
  1039. package/dist/rsc/nonce.js.map +0 -1
  1040. package/dist/rsc/types.d.ts +0 -206
  1041. package/dist/rsc/types.d.ts.map +0 -1
  1042. package/dist/rsc/types.js +0 -8
  1043. package/dist/rsc/types.js.map +0 -1
  1044. package/dist/search-params.d.ts +0 -103
  1045. package/dist/search-params.d.ts.map +0 -1
  1046. package/dist/search-params.js +0 -74
  1047. package/dist/search-params.js.map +0 -1
  1048. package/dist/segment-system.d.ts +0 -75
  1049. package/dist/segment-system.d.ts.map +0 -1
  1050. package/dist/segment-system.js +0 -336
  1051. package/dist/segment-system.js.map +0 -1
  1052. package/dist/server/context.d.ts +0 -245
  1053. package/dist/server/context.d.ts.map +0 -1
  1054. package/dist/server/context.js +0 -197
  1055. package/dist/server/context.js.map +0 -1
  1056. package/dist/server/fetchable-loader-store.d.ts +0 -18
  1057. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  1058. package/dist/server/fetchable-loader-store.js +0 -18
  1059. package/dist/server/fetchable-loader-store.js.map +0 -1
  1060. package/dist/server/handle-store.d.ts +0 -85
  1061. package/dist/server/handle-store.d.ts.map +0 -1
  1062. package/dist/server/handle-store.js +0 -142
  1063. package/dist/server/handle-store.js.map +0 -1
  1064. package/dist/server/loader-registry.d.ts +0 -55
  1065. package/dist/server/loader-registry.d.ts.map +0 -1
  1066. package/dist/server/loader-registry.js +0 -132
  1067. package/dist/server/loader-registry.js.map +0 -1
  1068. package/dist/server/request-context.d.ts +0 -226
  1069. package/dist/server/request-context.d.ts.map +0 -1
  1070. package/dist/server/request-context.js +0 -290
  1071. package/dist/server/request-context.js.map +0 -1
  1072. package/dist/server/root-layout.d.ts +0 -4
  1073. package/dist/server/root-layout.d.ts.map +0 -1
  1074. package/dist/server/root-layout.js +0 -5
  1075. package/dist/server/root-layout.js.map +0 -1
  1076. package/dist/server.d.ts +0 -15
  1077. package/dist/server.d.ts.map +0 -1
  1078. package/dist/server.js +0 -20
  1079. package/dist/server.js.map +0 -1
  1080. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  1081. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  1082. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  1083. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  1084. package/dist/ssr/index.d.ts +0 -98
  1085. package/dist/ssr/index.d.ts.map +0 -1
  1086. package/dist/ssr/index.js +0 -158
  1087. package/dist/ssr/index.js.map +0 -1
  1088. package/dist/static-handler.d.ts +0 -50
  1089. package/dist/static-handler.d.ts.map +0 -1
  1090. package/dist/static-handler.gen.d.ts +0 -5
  1091. package/dist/static-handler.gen.d.ts.map +0 -1
  1092. package/dist/static-handler.gen.js +0 -5
  1093. package/dist/static-handler.gen.js.map +0 -1
  1094. package/dist/static-handler.js +0 -29
  1095. package/dist/static-handler.js.map +0 -1
  1096. package/dist/theme/ThemeProvider.d.ts +0 -20
  1097. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  1098. package/dist/theme/ThemeProvider.js +0 -240
  1099. package/dist/theme/ThemeProvider.js.map +0 -1
  1100. package/dist/theme/ThemeScript.d.ts +0 -48
  1101. package/dist/theme/ThemeScript.d.ts.map +0 -1
  1102. package/dist/theme/ThemeScript.js +0 -13
  1103. package/dist/theme/ThemeScript.js.map +0 -1
  1104. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  1105. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  1106. package/dist/theme/__tests__/theme.test.js +0 -103
  1107. package/dist/theme/__tests__/theme.test.js.map +0 -1
  1108. package/dist/theme/constants.d.ts +0 -29
  1109. package/dist/theme/constants.d.ts.map +0 -1
  1110. package/dist/theme/constants.js +0 -48
  1111. package/dist/theme/constants.js.map +0 -1
  1112. package/dist/theme/index.d.ts +0 -31
  1113. package/dist/theme/index.d.ts.map +0 -1
  1114. package/dist/theme/index.js +0 -36
  1115. package/dist/theme/index.js.map +0 -1
  1116. package/dist/theme/theme-context.d.ts +0 -40
  1117. package/dist/theme/theme-context.d.ts.map +0 -1
  1118. package/dist/theme/theme-context.js +0 -60
  1119. package/dist/theme/theme-context.js.map +0 -1
  1120. package/dist/theme/theme-script.d.ts +0 -27
  1121. package/dist/theme/theme-script.d.ts.map +0 -1
  1122. package/dist/theme/theme-script.js +0 -147
  1123. package/dist/theme/theme-script.js.map +0 -1
  1124. package/dist/theme/types.d.ts +0 -163
  1125. package/dist/theme/types.d.ts.map +0 -1
  1126. package/dist/theme/types.js +0 -11
  1127. package/dist/theme/types.js.map +0 -1
  1128. package/dist/theme/use-theme.d.ts +0 -12
  1129. package/dist/theme/use-theme.d.ts.map +0 -1
  1130. package/dist/theme/use-theme.js +0 -40
  1131. package/dist/theme/use-theme.js.map +0 -1
  1132. package/dist/types.d.ts +0 -1479
  1133. package/dist/types.d.ts.map +0 -1
  1134. package/dist/types.js +0 -10
  1135. package/dist/types.js.map +0 -1
  1136. package/dist/urls.d.ts +0 -441
  1137. package/dist/urls.d.ts.map +0 -1
  1138. package/dist/urls.gen.d.ts +0 -8
  1139. package/dist/urls.gen.d.ts.map +0 -1
  1140. package/dist/urls.gen.js +0 -8
  1141. package/dist/urls.gen.js.map +0 -1
  1142. package/dist/urls.js +0 -443
  1143. package/dist/urls.js.map +0 -1
  1144. package/dist/use-loader.d.ts +0 -127
  1145. package/dist/use-loader.d.ts.map +0 -1
  1146. package/dist/use-loader.js +0 -237
  1147. package/dist/use-loader.js.map +0 -1
  1148. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  1149. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  1150. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  1151. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  1152. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  1153. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  1154. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  1155. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  1156. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  1157. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  1158. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  1159. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  1160. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  1161. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  1162. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  1163. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  1164. package/dist/vite/ast-handler-extract.d.ts +0 -49
  1165. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  1166. package/dist/vite/ast-handler-extract.js +0 -249
  1167. package/dist/vite/ast-handler-extract.js.map +0 -1
  1168. package/dist/vite/expose-action-id.d.ts +0 -19
  1169. package/dist/vite/expose-action-id.d.ts.map +0 -1
  1170. package/dist/vite/expose-action-id.js +0 -250
  1171. package/dist/vite/expose-action-id.js.map +0 -1
  1172. package/dist/vite/expose-id-utils.d.ts +0 -69
  1173. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  1174. package/dist/vite/expose-id-utils.js +0 -289
  1175. package/dist/vite/expose-id-utils.js.map +0 -1
  1176. package/dist/vite/expose-internal-ids.d.ts +0 -22
  1177. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  1178. package/dist/vite/expose-internal-ids.js +0 -886
  1179. package/dist/vite/expose-internal-ids.js.map +0 -1
  1180. package/dist/vite/index.d.ts +0 -149
  1181. package/dist/vite/index.d.ts.map +0 -1
  1182. package/dist/vite/index.js.bak +0 -5448
  1183. package/dist/vite/index.js.map +0 -1
  1184. package/dist/vite/index.named-routes.gen.ts +0 -103
  1185. package/dist/vite/package-resolution.d.ts +0 -43
  1186. package/dist/vite/package-resolution.d.ts.map +0 -1
  1187. package/dist/vite/package-resolution.js +0 -112
  1188. package/dist/vite/package-resolution.js.map +0 -1
  1189. package/dist/vite/virtual-entries.d.ts +0 -25
  1190. package/dist/vite/virtual-entries.d.ts.map +0 -1
  1191. package/dist/vite/virtual-entries.js +0 -110
  1192. package/dist/vite/virtual-entries.js.map +0 -1
  1193. package/src/browser/action-response-classifier.ts +0 -99
  1194. package/src/browser/react/use-client-cache.ts +0 -58
  1195. package/src/browser/shallow.ts +0 -40
  1196. package/src/handles/index.ts +0 -7
  1197. package/src/network-error-thrower.tsx +0 -23
  1198. package/src/router/middleware-cookies.ts +0 -55
package/src/handle.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import { missingInjectedIdError } from "./missing-id-error.js";
2
+ import { isUnderTestRunner } from "./runtime-env.js";
3
+
1
4
  /**
2
5
  * Handle definition for accumulating data across route segments.
3
6
  *
@@ -43,10 +46,10 @@ function defaultCollect<T>(segments: T[][]): T[] {
43
46
  // Used by useHandle() to recover collect when handle is deserialized from RSC prop.
44
47
  const collectRegistry = new Map<string, (segments: unknown[][]) => unknown>();
45
48
 
46
- /**
47
- * Look up a collect function from the registry by handle $$id.
48
- * Returns undefined if not registered (falls back to defaultCollect in useHandle).
49
- */
49
+ // Monotonic counter for runtime fallback ids (see createHandle). Only used
50
+ // when no build id was injected (a bare unit test).
51
+ let runtimeHandleIdCounter = 0;
52
+
50
53
  export function getCollectFn(
51
54
  id: string,
52
55
  ): ((segments: unknown[][]) => unknown) | undefined {
@@ -93,28 +96,36 @@ export function createHandle<TData, TAccumulated = TData[]>(
93
96
  collect?: (segments: TData[][]) => TAccumulated,
94
97
  __injectedId?: string,
95
98
  ): Handle<TData, TAccumulated> {
96
- const handleId = __injectedId ?? "";
99
+ let handleId = __injectedId ?? "";
97
100
 
98
- if (!handleId && process.env.NODE_ENV === "development") {
99
- throw new Error(
100
- "[rsc-router] Handle is missing $$id. " +
101
- "Make sure the exposeInternalIds Vite plugin is enabled and " +
102
- "the handle is exported with: export const MyHandle = createHandle(...)",
103
- );
101
+ // No build-injected id. Under a test runner: fall back to a synthetic id so the
102
+ // collect registers below and the handle is exercisable in tests (useHandle,
103
+ // collectHandle, renderRoute's `handles` run the REAL collect). Otherwise (dev
104
+ // or a real build) it means an UNSUPPORTED handler shape the plugin skipped —
105
+ // fail loud. The rich, stack-parsing diagnostic stays behind the NODE_ENV check
106
+ // so a production build folds it away and tree-shakes missing-id-error.ts out,
107
+ // shipping the small throw instead. isUnderTestRunner() is runtime-safe.
108
+ if (!handleId) {
109
+ if (isUnderTestRunner()) {
110
+ handleId = `__rango_runtime_handle_${runtimeHandleIdCounter++}`;
111
+ } else if (process.env.NODE_ENV !== "production") {
112
+ throw missingInjectedIdError("Handle", "createHandle");
113
+ } else {
114
+ throw new Error(
115
+ "[rango] Handle is missing $$id — the build plugin did not inject one. " +
116
+ "Export it as `export const X = createHandle(...)`.",
117
+ );
118
+ }
104
119
  }
105
120
 
106
121
  const collectFn =
107
122
  collect ??
108
123
  (defaultCollect as unknown as (segments: TData[][]) => TAccumulated);
109
124
 
110
- // Register collect in module-level registry so useHandle() can recover it
111
- // when the handle is deserialized from RSC props (toJSON strips collect).
112
- if (handleId) {
113
- collectRegistry.set(
114
- handleId,
115
- collectFn as (segments: unknown[][]) => unknown,
116
- );
117
- }
125
+ collectRegistry.set(
126
+ handleId,
127
+ collectFn as (segments: unknown[][]) => unknown,
128
+ );
118
129
 
119
130
  return {
120
131
  __brand: "handle" as const,
@@ -122,9 +133,6 @@ export function createHandle<TData, TAccumulated = TData[]>(
122
133
  };
123
134
  }
124
135
 
125
- /**
126
- * Type guard to check if a value is a Handle.
127
- */
128
136
  export function isHandle(value: unknown): value is Handle<unknown, unknown> {
129
137
  return (
130
138
  typeof value === "object" &&
@@ -151,7 +159,7 @@ export function collectHandleData<TData, TAccumulated>(
151
159
  const collectFn = getCollectFn(handle.$$id);
152
160
  if (!collectFn && process.env.NODE_ENV !== "production") {
153
161
  console.warn(
154
- `[rsc-router] Handle "${handle.$$id}" has no registered collect function. ` +
162
+ `[rango] Handle "${handle.$$id}" has no registered collect function. ` +
155
163
  `Falling back to flat array. Ensure the handle module is imported so ` +
156
164
  `createHandle() runs and registers the collect function.`,
157
165
  );
@@ -8,6 +8,10 @@
8
8
  *
9
9
  * When theme is enabled in the router config, MetaTags also renders
10
10
  * the theme initialization script to prevent FOUC (flash of unstyled content).
11
+ * This makes MetaTags the sole FOUC-script injector for apps that render it;
12
+ * the standalone `<ThemeScript />` is only needed when MetaTags is not used.
13
+ * Rendering both is safe (the inline script guards listener registration) but
14
+ * redundant.
11
15
  *
12
16
  * @example
13
17
  * ```tsx
@@ -27,10 +31,12 @@
27
31
  import { use } from "react";
28
32
  import { useHandle } from "../browser/react/use-handle.js";
29
33
  import { Meta } from "./meta.js";
34
+ import { isThenable } from "./is-thenable.js";
30
35
  import type { MetaDescriptor, MetaDescriptorBase } from "../router/types.js";
31
36
  import { useThemeContext } from "../theme/theme-context.js";
32
37
  import { generateThemeScript } from "../theme/theme-script.js";
33
38
  import { useNonce } from "../browser/react/nonce-context.js";
39
+ import { escapeJsonForScript } from "../escape-script.js";
34
40
 
35
41
  // Type guards for MetaDescriptorBase variants
36
42
  function hasCharSet(d: MetaDescriptorBase): d is { charSet: "utf-8" } {
@@ -91,30 +97,27 @@ function hasTagName(
91
97
  }
92
98
 
93
99
  /**
94
- * Check if a value is a Promise.
100
+ * Check if a value is a Promise. Uses the shared thenable predicate (callable
101
+ * `then`) so collect (meta.ts) and render never disagree: an object carrying a
102
+ * non-callable `then` (e.g. `{ then: 5 }`) is a SYNC descriptor on both sides,
103
+ * not a Promise that would crash React's `use()`.
95
104
  */
96
105
  function isPromise(value: unknown): value is Promise<unknown> {
97
- return value !== null && typeof value === "object" && "then" in value;
106
+ return isThenable(value);
98
107
  }
99
108
 
100
- /**
101
- * Render a single meta descriptor as a React element.
102
- */
103
109
  function renderMetaDescriptor(
104
110
  descriptor: MetaDescriptorBase,
105
111
  index: number,
106
112
  ): React.ReactNode {
107
- // charset
108
113
  if (hasCharSet(descriptor)) {
109
114
  return <meta key="charSet" charSet={descriptor.charSet} />;
110
115
  }
111
116
 
112
- // title
113
117
  if (hasTitle(descriptor)) {
114
118
  return <title key="title">{descriptor.title}</title>;
115
119
  }
116
120
 
117
- // name + content (description, viewport, etc.)
118
121
  if (hasNameContent(descriptor)) {
119
122
  return (
120
123
  <meta
@@ -125,7 +128,6 @@ function renderMetaDescriptor(
125
128
  );
126
129
  }
127
130
 
128
- // property + content (Open Graph, etc.)
129
131
  if (hasPropertyContent(descriptor)) {
130
132
  return (
131
133
  <meta
@@ -136,7 +138,6 @@ function renderMetaDescriptor(
136
138
  );
137
139
  }
138
140
 
139
- // http-equiv + content
140
141
  if (hasHttpEquivContent(descriptor)) {
141
142
  return (
142
143
  <meta
@@ -147,9 +148,10 @@ function renderMetaDescriptor(
147
148
  );
148
149
  }
149
150
 
150
- // JSON-LD structured data
151
151
  if (hasScriptLdJson(descriptor)) {
152
- const json = JSON.stringify(descriptor["script:ld+json"]);
152
+ const json = escapeJsonForScript(
153
+ JSON.stringify(descriptor["script:ld+json"]),
154
+ );
153
155
  return (
154
156
  <script
155
157
  key={`ld-json-${index}`}
@@ -159,7 +161,6 @@ function renderMetaDescriptor(
159
161
  );
160
162
  }
161
163
 
162
- // Custom tagName (meta or link with arbitrary attributes)
163
164
  if (hasTagName(descriptor)) {
164
165
  const { tagName, ...rest } = descriptor;
165
166
  if (tagName === "link") {
@@ -180,7 +181,6 @@ function renderMetaDescriptor(
180
181
  }
181
182
  }
182
183
 
183
- // Fallback: treat as meta attributes
184
184
  return (
185
185
  <meta
186
186
  key={`meta-fallback-${index}`}
@@ -189,17 +189,54 @@ function renderMetaDescriptor(
189
189
  );
190
190
  }
191
191
 
192
- /**
193
- * Wrapper component to resolve a Promise<MetaDescriptorBase> using use().
194
- */
195
- function AsyncMetaTag({
192
+ // Sentinel a rejected async descriptor resolves to: renderMetaDescriptor sees
193
+ // no recognized fields and returns nothing renderable (see renderRejected).
194
+ const REJECTED_META: unique symbol = Symbol("rango.rejectedMeta");
195
+
196
+ // Cache the rejection-swallowing wrapper per source promise so use() gets a
197
+ // stable reference across re-renders (a fresh .then() each render would make
198
+ // React treat it as a new pending promise and never settle). WeakMap keys on
199
+ // the original promise so entries are collected with it.
200
+ const safeMetaPromises = new WeakMap<
201
+ Promise<MetaDescriptorBase>,
202
+ Promise<MetaDescriptorBase | typeof REJECTED_META>
203
+ >();
204
+
205
+ function toSafeMetaPromise(
206
+ promise: Promise<MetaDescriptorBase>,
207
+ ): Promise<MetaDescriptorBase | typeof REJECTED_META> {
208
+ let safe = safeMetaPromises.get(promise);
209
+ if (!safe) {
210
+ // Swallow the rejection at the promise boundary, not via an error boundary:
211
+ // an error boundary above a suspended use() makes React abandon the whole
212
+ // Suspense subtree (and on the server switch it to client rendering). A
213
+ // settled-to-sentinel promise degrades the single bad descriptor to nothing
214
+ // while every sibling descriptor still renders.
215
+ //
216
+ // Normalize via Promise.resolve first: a collected async descriptor may be a
217
+ // non-native thenable (a React wakeable in SSR/RSC) whose .then() returns
218
+ // void rather than a Promise. Calling .then directly would leave `safe`
219
+ // undefined and use(undefined) would throw ("unsupported type passed to
220
+ // use()"), 500-ing the page. Promise.resolve adopts the thenable into a
221
+ // native Promise whose .then always returns one.
222
+ safe = Promise.resolve(promise).then(
223
+ (value) => value,
224
+ () => REJECTED_META,
225
+ );
226
+ safeMetaPromises.set(promise, safe);
227
+ }
228
+ return safe;
229
+ }
230
+
231
+ export function AsyncMetaTag({
196
232
  promise,
197
233
  index,
198
234
  }: {
199
235
  promise: Promise<MetaDescriptorBase>;
200
236
  index: number;
201
237
  }): React.ReactNode {
202
- const resolved = use(promise);
238
+ const resolved = use(toSafeMetaPromise(promise));
239
+ if (resolved === REJECTED_META) return null;
203
240
  return renderMetaDescriptor(resolved, index);
204
241
  }
205
242
 
@@ -230,6 +267,12 @@ export function MetaTags(): React.ReactNode {
230
267
  />
231
268
  )}
232
269
  {descriptors.map((descriptor, index) => {
270
+ // A descriptor is only a Promise on the SSR/hydration path, where it is
271
+ // use()d to stream the tag into the document. On client navigation the
272
+ // store resolves deferred handle values before applying them (see
273
+ // processHandles), so MetaTags only ever receives resolved descriptors
274
+ // there and never suspends — which would otherwise revert the committed
275
+ // route (MetaTags lives in <head>, above the route's <Suspense>).
233
276
  if (isPromise(descriptor)) {
234
277
  return (
235
278
  <AsyncMetaTag
@@ -0,0 +1,183 @@
1
+ "use client";
2
+
3
+ /**
4
+ * Renders the scripts collected by the Script handle into the document.
5
+ *
6
+ * Place `<Scripts />` inside `<head>` (default) and, if you push body scripts,
7
+ * `<Scripts position="body" />` at the top of `<body>`. Each site renders the
8
+ * configs whose `position` matches; the request CSP nonce is applied
9
+ * automatically to every DOCUMENT-RENDERED <script> (consumers never pass it). An
10
+ * async script first encountered on a soft navigation is injected client-side
11
+ * where the nonce is unavailable, so it carries no nonce and relies on
12
+ * 'strict-dynamic' (or a host allowance) — see the nonce caveat in the /scripts
13
+ * skill.
14
+ *
15
+ * EXECUTION CONTRACT — see the Script handle's docs. Inline + ordered (defer)
16
+ * scripts are document-load: they execute only when present in the initial HTML,
17
+ * so this component FREEZES that set after hydration (the initializer below runs
18
+ * once) — a later soft navigation never inserts an inert <script> (React creates
19
+ * client-mounted scripts via innerHTML, which the HTML spec makes non-executing).
20
+ * Async external scripts are React resources and stay reactive: React loads them
21
+ * on first encounter, including after navigation, deduped by src.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * <html>
26
+ * <head>
27
+ * <MetaTags />
28
+ * <Scripts />
29
+ * </head>
30
+ * <body>
31
+ * <Scripts position="body" />
32
+ * {children}
33
+ * </body>
34
+ * </html>
35
+ * ```
36
+ */
37
+
38
+ import { useState, type ReactNode } from "react";
39
+ import { useHandle } from "../browser/react/use-handle.js";
40
+ import { useNonce } from "../browser/react/nonce-context.js";
41
+ import { escapeScriptBody } from "../escape-script.js";
42
+ import { Script, type ScriptAttributes, type ScriptConfig } from "./script.js";
43
+
44
+ /** An external async script is a React-managed resource (reactive on nav). */
45
+ function isAsyncResource(config: ScriptConfig): boolean {
46
+ return config.src != null && config.async === true;
47
+ }
48
+
49
+ // Fields the Script handle owns (set via the ScriptConfig fields, applied as
50
+ // explicit props by renderScript) plus the inline-content props. Dropped from the
51
+ // attributes bag so untyped/serialized input cannot smuggle them in — e.g.
52
+ // `children`/`dangerouslySetInnerHTML` alongside an inline body makes React throw,
53
+ // or `src` on an inline script. The discriminated type already excludes these;
54
+ // this is the runtime guard.
55
+ const MANAGED_ATTRS = new Set([
56
+ "id",
57
+ "src",
58
+ "async",
59
+ "defer",
60
+ "type",
61
+ "children",
62
+ "nonce",
63
+ "dangerouslySetInnerHTML",
64
+ ]);
65
+
66
+ // Drop managed fields + any `on*` event handlers (a config serializes across the
67
+ // server -> client boundary, so a function cannot survive it) from the passthrough
68
+ // attributes, warning in dev.
69
+ function passthroughAttributes(
70
+ attributes: ScriptAttributes | undefined,
71
+ ): Record<string, unknown> {
72
+ if (!attributes) return {};
73
+ const out: Record<string, unknown> = {};
74
+ const dev = process.env.NODE_ENV !== "production";
75
+ for (const [key, value] of Object.entries(
76
+ attributes as Record<string, unknown>,
77
+ )) {
78
+ const isHandler = key.startsWith("on");
79
+ if (isHandler || MANAGED_ATTRS.has(key)) {
80
+ if (dev) {
81
+ console.warn(
82
+ isHandler
83
+ ? `[Scripts] event handler "${key}" in a script's attributes is ` +
84
+ `dropped; callbacks cannot cross the server -> client handle ` +
85
+ `boundary. Use a "use client" component for load/error handling.`
86
+ : `[Scripts] managed field "${key}" in a script's attributes is ` +
87
+ `dropped; set it via the ScriptConfig fields (the request nonce ` +
88
+ `is applied automatically).`,
89
+ );
90
+ }
91
+ continue;
92
+ }
93
+ out[key] = value;
94
+ }
95
+ return out;
96
+ }
97
+
98
+ function renderScript(
99
+ config: ScriptConfig,
100
+ nonce: string | undefined,
101
+ index: number,
102
+ ): ReactNode {
103
+ const { id, src, children, async, defer, type, attributes } = config;
104
+ const key = id ?? src ?? `rango-script-${index}`;
105
+ const attrs = passthroughAttributes(attributes);
106
+
107
+ // Inline: rendered in place (never hoisted), escaped against </script> breakout.
108
+ // The server-only nonce makes the attribute differ from the (undefined) client
109
+ // value, so suppressHydrationWarning is required — the same sanctioned pattern
110
+ // as the theme/Meta inline scripts.
111
+ if (src == null) {
112
+ if (children == null) return null;
113
+ return (
114
+ <script
115
+ key={key}
116
+ {...attrs}
117
+ id={id}
118
+ type={type}
119
+ nonce={nonce}
120
+ suppressHydrationWarning
121
+ dangerouslySetInnerHTML={{ __html: escapeScriptBody(children) }}
122
+ />
123
+ );
124
+ }
125
+
126
+ if (
127
+ process.env.NODE_ENV !== "production" &&
128
+ config.position === "body" &&
129
+ async
130
+ ) {
131
+ console.warn(
132
+ `[Scripts] An async external script (src="${src}") is hoisted into ` +
133
+ `<head> by React; position: "body" is ignored for it.`,
134
+ );
135
+ }
136
+
137
+ // External: async => React-hoisted, src-deduped resource; otherwise in place
138
+ // (defer or plain), preserving authoring order.
139
+ return (
140
+ <script
141
+ key={key}
142
+ {...attrs}
143
+ id={id}
144
+ type={type}
145
+ src={src}
146
+ async={async}
147
+ defer={defer}
148
+ nonce={nonce}
149
+ suppressHydrationWarning
150
+ />
151
+ );
152
+ }
153
+
154
+ export function Scripts({
155
+ position = "head",
156
+ }: { position?: "head" | "body" } = {}): ReactNode {
157
+ const all = useHandle(Script) as ScriptConfig[];
158
+ const nonce = useNonce();
159
+
160
+ const forPosition = all.filter(
161
+ (config) => (config.position ?? "head") === position,
162
+ );
163
+
164
+ // Document-load scripts (inline + ordered external) execute only from the
165
+ // initial HTML, so freeze them to the first-render set. The initializer runs
166
+ // during SSR and again at hydration with the same handle data, so the output
167
+ // matches; afterwards a navigation cannot add an inert <script>.
168
+ const [documentLoad] = useState(() =>
169
+ forPosition.filter((config) => !isAsyncResource(config)),
170
+ );
171
+ // Async external scripts are resources React loads on first encounter; keep
172
+ // them reactive so a script first reached via navigation still loads.
173
+ const asyncResources = forPosition.filter(isAsyncResource);
174
+
175
+ return (
176
+ <>
177
+ {documentLoad.map((config, index) => renderScript(config, nonce, index))}
178
+ {asyncResources.map((config, index) =>
179
+ renderScript(config, nonce, index),
180
+ )}
181
+ </>
182
+ );
183
+ }
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * Each layout/route pushes breadcrumb items via `ctx.use(Breadcrumbs)`.
5
5
  * Items are collected in parent-to-child order with automatic deduplication
6
- * by `href` (last item for each href wins).
6
+ * by `href`: each href keeps its FIRST position but takes the LAST value, so a
7
+ * child re-pushing a parent href refreshes the label without reordering the trail.
7
8
  *
8
9
  * @example
9
10
  * ```tsx
@@ -22,6 +23,7 @@
22
23
 
23
24
  import type { ReactNode } from "react";
24
25
  import { createHandle, type Handle } from "../handle.js";
26
+ import { isThenable } from "./is-thenable.js";
25
27
 
26
28
  /**
27
29
  * A single breadcrumb item.
@@ -38,19 +40,46 @@ export interface BreadcrumbItem {
38
40
 
39
41
  /**
40
42
  * Collect function for Breadcrumbs handle.
41
- * Flattens segments in parent-to-child order with deduplication by href
42
- * (last item for each href wins).
43
+ * Flattens segments in parent-to-child order with deduplication by href: each
44
+ * href keeps its FIRST position but takes the LAST value (re-pushing a parent
45
+ * href refreshes the label in place without reordering the trail).
46
+ * Deferred slots (`ctx.use(Breadcrumbs).defer()`)
47
+ * arrive as pending Promise entries with no href yet; they are passed through by
48
+ * identity and excluded from the href dedup so concurrent deferred crumbs do not
49
+ * all collapse under a single `undefined` href.
43
50
  */
44
51
  function collectBreadcrumbs(segments: BreadcrumbItem[][]): BreadcrumbItem[] {
45
52
  const all = segments.flat();
46
- const seen = new Map<string, number>();
47
53
 
48
- for (let i = 0; i < all.length; i++) {
49
- seen.set(all[i].href, i);
54
+ const isResolvedItem = (item: unknown): item is BreadcrumbItem =>
55
+ item != null &&
56
+ typeof item === "object" &&
57
+ !isThenable(item) &&
58
+ typeof (item as { href?: unknown }).href === "string";
59
+
60
+ // Dedup resolved crumbs by href: keep the FIRST position (preserving
61
+ // parent->child order) but the LAST value (a child re-pushing a parent's href
62
+ // can refresh its label). Deferred items bypass dedup entirely (they have no
63
+ // href yet) and are passed through by identity at their original position.
64
+ const valueByHref = new Map<string, BreadcrumbItem>();
65
+ for (const item of all) {
66
+ if (isResolvedItem(item)) valueByHref.set(item.href, item);
50
67
  }
51
68
 
52
- // Return items in order, keeping only the last occurrence per href
53
- return all.filter((item, index) => seen.get(item.href) === index);
69
+ const result: BreadcrumbItem[] = [];
70
+ const emitted = new Set<string>();
71
+ for (const item of all) {
72
+ if (!isResolvedItem(item)) {
73
+ result.push(item);
74
+ continue;
75
+ }
76
+ // Emit each href once, at its first occurrence, with the final value.
77
+ if (!emitted.has(item.href)) {
78
+ emitted.add(item.href);
79
+ result.push(valueByHref.get(item.href)!);
80
+ }
81
+ }
82
+ return result;
54
83
  }
55
84
 
56
85
  /**
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Single thenable predicate shared by the built-in handles that distinguish a
3
+ * synchronous descriptor/item from a deferred `Promise` one (Meta collect, the
4
+ * MetaTags render side, and Breadcrumbs).
5
+ *
6
+ * Requires a CALLABLE `then` (`typeof obj.then === "function"`), not merely a
7
+ * `"then" in obj` membership check. The two had drifted: a descriptor carrying a
8
+ * non-callable `then` (e.g. a serialized shape `{ then: 5 }`) was classified as
9
+ * synchronous by collect but as a Promise by render — so render would call
10
+ * React's `use()` on a non-thenable and throw. One owner keeps the collect and
11
+ * render sides from ever disagreeing.
12
+ */
13
+ export function isThenable(value: unknown): value is PromiseLike<unknown> {
14
+ return (
15
+ value !== null &&
16
+ typeof value === "object" &&
17
+ typeof (value as { then?: unknown }).then === "function"
18
+ );
19
+ }