@timber-js/app 0.2.0-alpha.20 → 0.2.0-alpha.201

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 (1332) hide show
  1. package/LICENSE +8 -0
  2. package/agent-skill.md +346 -0
  3. package/bin/timber.mjs +15 -1
  4. package/dist/_chunks/actions-HUdJADAD.js +345 -0
  5. package/dist/_chunks/actions-HUdJADAD.js.map +1 -0
  6. package/dist/_chunks/als-registry-C6kcfprT.js +41 -0
  7. package/dist/_chunks/als-registry-C6kcfprT.js.map +1 -0
  8. package/dist/_chunks/als-slots-BEEIPKYm.js +26 -0
  9. package/dist/_chunks/als-slots-BEEIPKYm.js.map +1 -0
  10. package/dist/_chunks/base-path-DaQrzbez.js +80 -0
  11. package/dist/_chunks/base-path-DaQrzbez.js.map +1 -0
  12. package/dist/_chunks/build-manifest-DWppEdLB.js +86 -0
  13. package/dist/_chunks/build-manifest-DWppEdLB.js.map +1 -0
  14. package/dist/_chunks/build-output-helper-9dqCv1pZ.js +370 -0
  15. package/dist/_chunks/build-output-helper-9dqCv1pZ.js.map +1 -0
  16. package/dist/_chunks/cache-api-CAPbZTga.js +1149 -0
  17. package/dist/_chunks/cache-api-CAPbZTga.js.map +1 -0
  18. package/dist/_chunks/canonicalize-CgHoscYO.js +66 -0
  19. package/dist/_chunks/canonicalize-CgHoscYO.js.map +1 -0
  20. package/dist/_chunks/chains-CBNA0Ozj.js +412 -0
  21. package/dist/_chunks/chains-CBNA0Ozj.js.map +1 -0
  22. package/dist/_chunks/cli-check-BzMGuIH6.js +293 -0
  23. package/dist/_chunks/cli-check-BzMGuIH6.js.map +1 -0
  24. package/dist/_chunks/cli-schema-sync-DnXqcIIj.js +299 -0
  25. package/dist/_chunks/cli-schema-sync-DnXqcIIj.js.map +1 -0
  26. package/dist/_chunks/cloudflare-DxX1SU0g.js +1290 -0
  27. package/dist/_chunks/cloudflare-DxX1SU0g.js.map +1 -0
  28. package/dist/_chunks/codec-registry-oOUxugz3.js +21 -0
  29. package/dist/_chunks/codec-registry-oOUxugz3.js.map +1 -0
  30. package/dist/_chunks/convention-lint-DHOFvX5s.js +803 -0
  31. package/dist/_chunks/convention-lint-DHOFvX5s.js.map +1 -0
  32. package/dist/_chunks/csp-nonce-hOGniaG4.js +227 -0
  33. package/dist/_chunks/csp-nonce-hOGniaG4.js.map +1 -0
  34. package/dist/_chunks/dev-server-DioP7tkQ.js +2288 -0
  35. package/dist/_chunks/dev-server-DioP7tkQ.js.map +1 -0
  36. package/dist/_chunks/dist-DtrJyBbw.js +386 -0
  37. package/dist/_chunks/dist-DtrJyBbw.js.map +1 -0
  38. package/dist/_chunks/error-boundary-BQKxl6EX.js +1044 -0
  39. package/dist/_chunks/error-boundary-BQKxl6EX.js.map +1 -0
  40. package/dist/_chunks/fast-hash-C-tVYrLb.js +41 -0
  41. package/dist/_chunks/fast-hash-C-tVYrLb.js.map +1 -0
  42. package/dist/_chunks/file-cache-Dw6BJPG7.js +458 -0
  43. package/dist/_chunks/file-cache-Dw6BJPG7.js.map +1 -0
  44. package/dist/_chunks/format-BKclgVbk.js +14 -0
  45. package/dist/_chunks/format-BKclgVbk.js.map +1 -0
  46. package/dist/_chunks/fs-identity-D7vb6GdI.js +208 -0
  47. package/dist/_chunks/fs-identity-D7vb6GdI.js.map +1 -0
  48. package/dist/_chunks/graph-cache-Cv3njEH8.js +304 -0
  49. package/dist/_chunks/graph-cache-Cv3njEH8.js.map +1 -0
  50. package/dist/_chunks/href-validation-BIrxavIy.js +213 -0
  51. package/dist/_chunks/href-validation-BIrxavIy.js.map +1 -0
  52. package/dist/_chunks/json-lossy-check-ClNvBM_3.js +63 -0
  53. package/dist/_chunks/json-lossy-check-ClNvBM_3.js.map +1 -0
  54. package/dist/_chunks/live-graph-VjHFF5EV.js +150 -0
  55. package/dist/_chunks/live-graph-VjHFF5EV.js.map +1 -0
  56. package/dist/_chunks/logger-DqJ2VoAY.js +1476 -0
  57. package/dist/_chunks/logger-DqJ2VoAY.js.map +1 -0
  58. package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js → metadata-routes-DSDjM_hJ.js} +71 -27
  59. package/dist/_chunks/metadata-routes-DSDjM_hJ.js.map +1 -0
  60. package/dist/_chunks/navigation-context-D0TU0Jog.js +135 -0
  61. package/dist/_chunks/navigation-context-D0TU0Jog.js.map +1 -0
  62. package/dist/_chunks/navigation-root-mHSK9psY.js +126 -0
  63. package/dist/_chunks/navigation-root-mHSK9psY.js.map +1 -0
  64. package/dist/_chunks/param-value-C8TNYchQ.js +66 -0
  65. package/dist/_chunks/param-value-C8TNYchQ.js.map +1 -0
  66. package/dist/_chunks/plugin-context-8idfR3UZ.js +321 -0
  67. package/dist/_chunks/plugin-context-8idfR3UZ.js.map +1 -0
  68. package/dist/_chunks/poison-rules-DoEhbqaY.js +110 -0
  69. package/dist/_chunks/poison-rules-DoEhbqaY.js.map +1 -0
  70. package/dist/_chunks/poison-scan-lEbz4pQE.js +101 -0
  71. package/dist/_chunks/poison-scan-lEbz4pQE.js.map +1 -0
  72. package/dist/_chunks/purge-store-Byr8XOjU.js +14 -0
  73. package/dist/_chunks/purge-store-Byr8XOjU.js.map +1 -0
  74. package/dist/_chunks/resolve-schema-CBR6Lm4i.js +50 -0
  75. package/dist/_chunks/resolve-schema-CBR6Lm4i.js.map +1 -0
  76. package/dist/_chunks/rolldown-runtime-D7D4PA-g.js +13 -0
  77. package/dist/_chunks/rsc-cache-key-ClUiXQnK.js +243 -0
  78. package/dist/_chunks/rsc-cache-key-ClUiXQnK.js.map +1 -0
  79. package/dist/_chunks/rsc-media-type-DDc7duTD.js +61 -0
  80. package/dist/_chunks/rsc-media-type-DDc7duTD.js.map +1 -0
  81. package/dist/_chunks/rsc-payload-path-B_LBodc2.js +48 -0
  82. package/dist/_chunks/rsc-payload-path-B_LBodc2.js.map +1 -0
  83. package/dist/_chunks/scan-BoP17W3w.js +140 -0
  84. package/dist/_chunks/scan-BoP17W3w.js.map +1 -0
  85. package/dist/_chunks/scanner-B_tnqFcF.js +1671 -0
  86. package/dist/_chunks/scanner-B_tnqFcF.js.map +1 -0
  87. package/dist/_chunks/schema-bridge-C83xa9lT.js +199 -0
  88. package/dist/_chunks/schema-bridge-C83xa9lT.js.map +1 -0
  89. package/dist/_chunks/segment-classify-C539Pa2O.js +197 -0
  90. package/dist/_chunks/segment-classify-C539Pa2O.js.map +1 -0
  91. package/dist/_chunks/segment-context-D9_89u34.js +34 -0
  92. package/dist/_chunks/segment-context-D9_89u34.js.map +1 -0
  93. package/dist/_chunks/segment-keys-D5hu1hz4.js +62 -0
  94. package/dist/_chunks/segment-keys-D5hu1hz4.js.map +1 -0
  95. package/dist/_chunks/singleflight-2lUWfcAk.js +54 -0
  96. package/dist/_chunks/singleflight-2lUWfcAk.js.map +1 -0
  97. package/dist/_chunks/sizeof-lXffQ1Vr.js +35 -0
  98. package/dist/_chunks/sizeof-lXffQ1Vr.js.map +1 -0
  99. package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-D6T6Y3ef.js} +3 -31
  100. package/dist/_chunks/ssr-data-D6T6Y3ef.js.map +1 -0
  101. package/dist/_chunks/state-FippDgxN.js +52 -0
  102. package/dist/_chunks/state-FippDgxN.js.map +1 -0
  103. package/dist/_chunks/status-page-marker-DwQBrLBz.js +496 -0
  104. package/dist/_chunks/status-page-marker-DwQBrLBz.js.map +1 -0
  105. package/dist/_chunks/tree-match-CdbvYTBz.js +122 -0
  106. package/dist/_chunks/tree-match-CdbvYTBz.js.map +1 -0
  107. package/dist/_chunks/use-query-states-I3JMng6J.js +226 -0
  108. package/dist/_chunks/use-query-states-I3JMng6J.js.map +1 -0
  109. package/dist/_chunks/walkers-Cm3PC5JT.js +144 -0
  110. package/dist/_chunks/walkers-Cm3PC5JT.js.map +1 -0
  111. package/dist/adapters/build-output-helper.d.ts +72 -0
  112. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  113. package/dist/adapters/cloudflare-dev.d.ts +109 -0
  114. package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
  115. package/dist/adapters/cloudflare-dev.js +74 -0
  116. package/dist/adapters/cloudflare-dev.js.map +1 -0
  117. package/dist/adapters/cloudflare-kv-cache.d.ts +65 -0
  118. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
  119. package/dist/adapters/cloudflare-kv-cache.js +123 -0
  120. package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
  121. package/dist/adapters/cloudflare.d.ts +200 -22
  122. package/dist/adapters/cloudflare.d.ts.map +1 -1
  123. package/dist/adapters/cloudflare.js +2 -188
  124. package/dist/adapters/compress-module.d.ts +17 -4
  125. package/dist/adapters/compress-module.d.ts.map +1 -1
  126. package/dist/adapters/fs-identity.d.ts +64 -0
  127. package/dist/adapters/fs-identity.d.ts.map +1 -0
  128. package/dist/adapters/nitro-presets.d.ts +37 -0
  129. package/dist/adapters/nitro-presets.d.ts.map +1 -0
  130. package/dist/adapters/nitro-preview.d.ts +32 -0
  131. package/dist/adapters/nitro-preview.d.ts.map +1 -0
  132. package/dist/adapters/nitro.d.ts +66 -37
  133. package/dist/adapters/nitro.d.ts.map +1 -1
  134. package/dist/adapters/nitro.js +457 -300
  135. package/dist/adapters/nitro.js.map +1 -1
  136. package/dist/adapters/shared.d.ts +62 -0
  137. package/dist/adapters/shared.d.ts.map +1 -0
  138. package/dist/adapters/types.d.ts +28 -6
  139. package/dist/adapters/types.d.ts.map +1 -1
  140. package/dist/analyze/chains.d.ts +124 -0
  141. package/dist/analyze/chains.d.ts.map +1 -0
  142. package/dist/analyze/classify.d.ts +150 -0
  143. package/dist/analyze/classify.d.ts.map +1 -0
  144. package/dist/analyze/crawl-entry.d.ts +17 -0
  145. package/dist/analyze/crawl-entry.d.ts.map +1 -0
  146. package/dist/analyze/crawl-entry.js +313 -0
  147. package/dist/analyze/crawl-entry.js.map +1 -0
  148. package/dist/analyze/crawl.d.ts +134 -0
  149. package/dist/analyze/crawl.d.ts.map +1 -0
  150. package/dist/analyze/graph-cache.d.ts +104 -0
  151. package/dist/analyze/graph-cache.d.ts.map +1 -0
  152. package/dist/analyze/graph-command.d.ts +43 -0
  153. package/dist/analyze/graph-command.d.ts.map +1 -0
  154. package/dist/analyze/graph-command.js +472 -0
  155. package/dist/analyze/graph-command.js.map +1 -0
  156. package/dist/analyze/live-graph.d.ts +81 -0
  157. package/dist/analyze/live-graph.d.ts.map +1 -0
  158. package/dist/analyze/poison-rules.d.ts +72 -0
  159. package/dist/analyze/poison-rules.d.ts.map +1 -0
  160. package/dist/analyze/poison-scan.d.ts +48 -0
  161. package/dist/analyze/poison-scan.d.ts.map +1 -0
  162. package/dist/analyze/scan.d.ts +73 -0
  163. package/dist/analyze/scan.d.ts.map +1 -0
  164. package/dist/cache/cache-api.d.ts +48 -0
  165. package/dist/cache/cache-api.d.ts.map +1 -0
  166. package/dist/cache/fast-hash.d.ts +5 -0
  167. package/dist/cache/fast-hash.d.ts.map +1 -1
  168. package/dist/cache/handler-store.d.ts +33 -0
  169. package/dist/cache/handler-store.d.ts.map +1 -0
  170. package/dist/cache/index.d.ts +32 -9
  171. package/dist/cache/index.d.ts.map +1 -1
  172. package/dist/cache/index.js +3 -326
  173. package/dist/cache/invalidation-epoch.d.ts +43 -0
  174. package/dist/cache/invalidation-epoch.d.ts.map +1 -0
  175. package/dist/cache/json-lossy-check.d.ts +11 -0
  176. package/dist/cache/json-lossy-check.d.ts.map +1 -0
  177. package/dist/cache/redis-handler.d.ts +141 -9
  178. package/dist/cache/redis-handler.d.ts.map +1 -1
  179. package/dist/cache/singleflight.d.ts +21 -2
  180. package/dist/cache/singleflight.d.ts.map +1 -1
  181. package/dist/cache/sizeof.d.ts +22 -0
  182. package/dist/cache/sizeof.d.ts.map +1 -0
  183. package/dist/cache/stable-stringify.d.ts +9 -0
  184. package/dist/cache/stable-stringify.d.ts.map +1 -1
  185. package/dist/cache/store.d.ts +53 -0
  186. package/dist/cache/store.d.ts.map +1 -0
  187. package/dist/cache/stores/cloudflare-kv.d.ts +38 -0
  188. package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -0
  189. package/dist/cache/stores/cloudflare-kv.js +29 -0
  190. package/dist/cache/stores/cloudflare-kv.js.map +1 -0
  191. package/dist/cache/stores/memory.d.ts +42 -0
  192. package/dist/cache/stores/memory.d.ts.map +1 -0
  193. package/dist/cache/stores/memory.js +90 -0
  194. package/dist/cache/stores/memory.js.map +1 -0
  195. package/dist/cache/stores/redis.d.ts +69 -0
  196. package/dist/cache/stores/redis.d.ts.map +1 -0
  197. package/dist/cache/stores/redis.js +35 -0
  198. package/dist/cache/stores/redis.js.map +1 -0
  199. package/dist/cache/stores/vercel.d.ts +36 -0
  200. package/dist/cache/stores/vercel.d.ts.map +1 -0
  201. package/dist/cache/stores/vercel.js +33 -0
  202. package/dist/cache/stores/vercel.js.map +1 -0
  203. package/dist/cache/tag-aware-handler.d.ts +52 -0
  204. package/dist/cache/tag-aware-handler.d.ts.map +1 -0
  205. package/dist/cache/timber-cache.d.ts +21 -11
  206. package/dist/cache/timber-cache.d.ts.map +1 -1
  207. package/dist/cdn/cloudflare-purge.d.ts +23 -0
  208. package/dist/cdn/cloudflare-purge.d.ts.map +1 -0
  209. package/dist/cdn/cloudflare-purge.js +30 -0
  210. package/dist/cdn/cloudflare-purge.js.map +1 -0
  211. package/dist/cdn/fastly-purge.d.ts +25 -0
  212. package/dist/cdn/fastly-purge.d.ts.map +1 -0
  213. package/dist/cdn/fastly-purge.js +33 -0
  214. package/dist/cdn/fastly-purge.js.map +1 -0
  215. package/dist/cdn/headers.d.ts +97 -0
  216. package/dist/cdn/headers.d.ts.map +1 -0
  217. package/dist/cdn/index.d.ts +5 -0
  218. package/dist/cdn/index.d.ts.map +1 -0
  219. package/dist/cdn/index.js +94 -0
  220. package/dist/cdn/index.js.map +1 -0
  221. package/dist/cdn/purge-store.d.ts +23 -0
  222. package/dist/cdn/purge-store.d.ts.map +1 -0
  223. package/dist/cdn/workers-cache-purge.d.ts +20 -0
  224. package/dist/cdn/workers-cache-purge.d.ts.map +1 -0
  225. package/dist/cdn/workers-cache-purge.js +35 -0
  226. package/dist/cdn/workers-cache-purge.js.map +1 -0
  227. package/dist/cli-check.d.ts +163 -0
  228. package/dist/cli-check.d.ts.map +1 -0
  229. package/dist/cli-schema-sync.d.ts +59 -0
  230. package/dist/cli-schema-sync.d.ts.map +1 -0
  231. package/dist/cli.d.ts +81 -9
  232. package/dist/cli.d.ts.map +1 -1
  233. package/dist/cli.js +216 -51
  234. package/dist/cli.js.map +1 -1
  235. package/dist/client/browser-dev.d.ts +37 -1
  236. package/dist/client/browser-dev.d.ts.map +1 -1
  237. package/dist/client/browser-entry/action-dispatch.d.ts +19 -0
  238. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  239. package/dist/client/browser-entry/action-queue.d.ts +63 -0
  240. package/dist/client/browser-entry/action-queue.d.ts.map +1 -0
  241. package/dist/client/browser-entry/hmr.d.ts +21 -0
  242. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  243. package/dist/client/browser-entry/hydrate.d.ts +63 -0
  244. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  245. package/dist/client/browser-entry/index.d.ts +30 -0
  246. package/dist/client/browser-entry/index.d.ts.map +1 -0
  247. package/dist/client/browser-entry/post-hydration.d.ts +29 -0
  248. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  249. package/dist/client/browser-entry/router-init.d.ts +46 -0
  250. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  251. package/dist/client/browser-entry/rsc-stream.d.ts +32 -0
  252. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  253. package/dist/client/browser-entry/scroll.d.ts +28 -0
  254. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  255. package/dist/client/deny-last-resort.d.ts +29 -0
  256. package/dist/client/deny-last-resort.d.ts.map +1 -0
  257. package/dist/client/error-boundary.d.ts +55 -7
  258. package/dist/client/error-boundary.d.ts.map +1 -1
  259. package/dist/client/error-boundary.js +2 -126
  260. package/dist/client/error-reconstituter.d.ts +61 -0
  261. package/dist/client/error-reconstituter.d.ts.map +1 -0
  262. package/dist/client/form.d.ts +16 -27
  263. package/dist/client/form.d.ts.map +1 -1
  264. package/dist/client/global-context.d.ts +15 -0
  265. package/dist/client/global-context.d.ts.map +1 -0
  266. package/dist/client/history.d.ts +50 -9
  267. package/dist/client/history.d.ts.map +1 -1
  268. package/dist/client/index.d.ts +20 -33
  269. package/dist/client/index.d.ts.map +1 -1
  270. package/dist/client/index.js +323 -1148
  271. package/dist/client/index.js.map +1 -1
  272. package/dist/client/internal.d.ts +20 -0
  273. package/dist/client/internal.d.ts.map +1 -0
  274. package/dist/client/internal.js +818 -0
  275. package/dist/client/internal.js.map +1 -0
  276. package/dist/client/link.d.ts +63 -60
  277. package/dist/client/link.d.ts.map +1 -1
  278. package/dist/client/location-search.d.ts +12 -0
  279. package/dist/client/location-search.d.ts.map +1 -0
  280. package/dist/client/navigation-api.d.ts +121 -0
  281. package/dist/client/navigation-api.d.ts.map +1 -0
  282. package/dist/client/navigation-commit.d.ts +98 -0
  283. package/dist/client/navigation-commit.d.ts.map +1 -0
  284. package/dist/client/navigation-context.d.ts +51 -31
  285. package/dist/client/navigation-context.d.ts.map +1 -1
  286. package/dist/client/navigation-root.d.ts +98 -0
  287. package/dist/client/navigation-root.d.ts.map +1 -0
  288. package/dist/client/navigation-transition.d.ts +187 -0
  289. package/dist/client/navigation-transition.d.ts.map +1 -0
  290. package/dist/client/nuqs-adapter.d.ts +1 -1
  291. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  292. package/dist/client/params-context.d.ts +81 -0
  293. package/dist/client/params-context.d.ts.map +1 -0
  294. package/dist/client/react-root.d.ts +44 -0
  295. package/dist/client/react-root.d.ts.map +1 -0
  296. package/dist/client/router-effects.d.ts +130 -0
  297. package/dist/client/router-effects.d.ts.map +1 -0
  298. package/dist/client/router-lifecycle.d.ts +98 -0
  299. package/dist/client/router-lifecycle.d.ts.map +1 -0
  300. package/dist/client/router-pipeline.d.ts +87 -0
  301. package/dist/client/router-pipeline.d.ts.map +1 -0
  302. package/dist/client/router-ref.d.ts +2 -2
  303. package/dist/client/router-ref.d.ts.map +1 -1
  304. package/dist/client/router-skew.d.ts +21 -0
  305. package/dist/client/router-skew.d.ts.map +1 -0
  306. package/dist/client/router-types.d.ts +272 -0
  307. package/dist/client/router-types.d.ts.map +1 -0
  308. package/dist/client/router.d.ts +1 -97
  309. package/dist/client/router.d.ts.map +1 -1
  310. package/dist/client/rsc-fetch.d.ts +104 -26
  311. package/dist/client/rsc-fetch.d.ts.map +1 -1
  312. package/dist/client/segment-cache.d.ts +161 -25
  313. package/dist/client/segment-cache.d.ts.map +1 -1
  314. package/dist/client/segment-context.d.ts.map +1 -1
  315. package/dist/client/segment-outlet.d.ts +68 -0
  316. package/dist/client/segment-outlet.d.ts.map +1 -0
  317. package/dist/client/segment-update-context.d.ts +15 -0
  318. package/dist/client/segment-update-context.d.ts.map +1 -0
  319. package/dist/client/shallow-url.d.ts +10 -0
  320. package/dist/client/shallow-url.d.ts.map +1 -0
  321. package/dist/client/slot-content-cache-context.d.ts +35 -0
  322. package/dist/client/slot-content-cache-context.d.ts.map +1 -0
  323. package/dist/client/slot-context.d.ts +31 -0
  324. package/dist/client/slot-context.d.ts.map +1 -0
  325. package/dist/client/slot-outlet.d.ts +16 -0
  326. package/dist/client/slot-outlet.d.ts.map +1 -0
  327. package/dist/client/slot-provider.d.ts +25 -0
  328. package/dist/client/slot-provider.d.ts.map +1 -0
  329. package/dist/client/ssr-data.d.ts +29 -7
  330. package/dist/client/ssr-data.d.ts.map +1 -1
  331. package/dist/client/stale-client.d.ts +69 -0
  332. package/dist/client/stale-client.d.ts.map +1 -0
  333. package/dist/client/state.d.ts +19 -8
  334. package/dist/client/state.d.ts.map +1 -1
  335. package/dist/client/status-page-marker.d.ts +25 -0
  336. package/dist/client/status-page-marker.d.ts.map +1 -0
  337. package/dist/client/top-loader.d.ts +7 -6
  338. package/dist/client/top-loader.d.ts.map +1 -1
  339. package/dist/client/unload-guard.d.ts +5 -0
  340. package/dist/client/unload-guard.d.ts.map +1 -1
  341. package/dist/client/use-cookie.d.ts +12 -0
  342. package/dist/client/use-cookie.d.ts.map +1 -1
  343. package/dist/client/use-link-status.d.ts +5 -5
  344. package/dist/client/use-link-status.d.ts.map +1 -1
  345. package/dist/client/use-pathname.d.ts +13 -11
  346. package/dist/client/use-pathname.d.ts.map +1 -1
  347. package/dist/client/use-pending-navigation.d.ts +23 -0
  348. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  349. package/dist/client/use-query-states.d.ts +10 -4
  350. package/dist/client/use-query-states.d.ts.map +1 -1
  351. package/dist/client/use-router.d.ts +2 -2
  352. package/dist/client/use-router.d.ts.map +1 -1
  353. package/dist/client/use-search-params.d.ts +15 -8
  354. package/dist/client/use-search-params.d.ts.map +1 -1
  355. package/dist/client/use-segment-params.d.ts +55 -0
  356. package/dist/client/use-segment-params.d.ts.map +1 -0
  357. package/dist/codec.d.ts +69 -0
  358. package/dist/codec.d.ts.map +1 -0
  359. package/dist/codec.js +76 -0
  360. package/dist/codec.js.map +1 -0
  361. package/dist/config-types.d.ts +322 -0
  362. package/dist/config-types.d.ts.map +1 -0
  363. package/dist/config-validation.d.ts +51 -0
  364. package/dist/config-validation.d.ts.map +1 -0
  365. package/dist/cookies/define-cookie.d.ts +58 -25
  366. package/dist/cookies/define-cookie.d.ts.map +1 -1
  367. package/dist/cookies/index.d.ts +3 -2
  368. package/dist/cookies/index.d.ts.map +1 -1
  369. package/dist/cookies/index.js +256 -36
  370. package/dist/cookies/index.js.map +1 -1
  371. package/dist/cookies/json-cookie.d.ts +64 -0
  372. package/dist/cookies/json-cookie.d.ts.map +1 -0
  373. package/dist/cookies/validation.d.ts +34 -0
  374. package/dist/cookies/validation.d.ts.map +1 -0
  375. package/dist/dev-tools/404-page.d.ts +50 -0
  376. package/dist/dev-tools/404-page.d.ts.map +1 -0
  377. package/dist/dev-tools/browser-logs.d.ts +40 -0
  378. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  379. package/dist/dev-tools/debug-channel.d.ts +55 -0
  380. package/dist/dev-tools/debug-channel.d.ts.map +1 -0
  381. package/dist/dev-tools/dev-page-shell.d.ts +78 -0
  382. package/dist/dev-tools/dev-page-shell.d.ts.map +1 -0
  383. package/dist/dev-tools/error-page.d.ts +32 -0
  384. package/dist/dev-tools/error-page.d.ts.map +1 -0
  385. package/dist/dev-tools/holding-server.d.ts +46 -0
  386. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  387. package/dist/dev-tools/hydration-overlay.d.ts +11 -0
  388. package/dist/dev-tools/hydration-overlay.d.ts.map +1 -0
  389. package/dist/dev-tools/index.d.ts +31 -0
  390. package/dist/dev-tools/index.d.ts.map +1 -0
  391. package/dist/dev-tools/instrumentation.d.ts +59 -0
  392. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  393. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  394. package/dist/dev-tools/logger.d.ts.map +1 -0
  395. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +17 -3
  396. package/dist/dev-tools/logs.d.ts.map +1 -0
  397. package/dist/dev-tools/overlay.d.ts +91 -0
  398. package/dist/dev-tools/overlay.d.ts.map +1 -0
  399. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  400. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  401. package/dist/dev-tools/terminal.d.ts +28 -0
  402. package/dist/dev-tools/terminal.d.ts.map +1 -0
  403. package/dist/fonts/ast-walk.d.ts +68 -0
  404. package/dist/fonts/ast-walk.d.ts.map +1 -0
  405. package/dist/fonts/ast.d.ts +112 -8
  406. package/dist/fonts/ast.d.ts.map +1 -1
  407. package/dist/fonts/bundle.d.ts +50 -0
  408. package/dist/fonts/bundle.d.ts.map +1 -0
  409. package/dist/fonts/css.d.ts +1 -1
  410. package/dist/fonts/dev-middleware.d.ts +22 -0
  411. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  412. package/dist/fonts/fallbacks.d.ts +0 -7
  413. package/dist/fonts/fallbacks.d.ts.map +1 -1
  414. package/dist/fonts/google.d.ts +5 -3
  415. package/dist/fonts/google.d.ts.map +1 -1
  416. package/dist/fonts/local.d.ts +5 -5
  417. package/dist/fonts/local.d.ts.map +1 -1
  418. package/dist/fonts/paths.d.ts +43 -0
  419. package/dist/fonts/paths.d.ts.map +1 -0
  420. package/dist/fonts/pipeline.d.ts +177 -0
  421. package/dist/fonts/pipeline.d.ts.map +1 -0
  422. package/dist/fonts/transform.d.ts +82 -0
  423. package/dist/fonts/transform.d.ts.map +1 -0
  424. package/dist/fonts/types.d.ts +47 -1
  425. package/dist/fonts/types.d.ts.map +1 -1
  426. package/dist/fonts/virtual-modules.d.ts +77 -0
  427. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  428. package/dist/index.d.ts +35 -181
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +8462 -14279
  431. package/dist/index.js.map +1 -1
  432. package/dist/params/codec-registry.d.ts +26 -0
  433. package/dist/params/codec-registry.d.ts.map +1 -0
  434. package/dist/params/define-schema.d.ts +81 -0
  435. package/dist/params/define-schema.d.ts.map +1 -0
  436. package/dist/params/index.d.ts +5 -0
  437. package/dist/params/index.d.ts.map +1 -0
  438. package/dist/params/index.js +34 -0
  439. package/dist/params/index.js.map +1 -0
  440. package/dist/params/resolve-schema.d.ts +34 -0
  441. package/dist/params/resolve-schema.d.ts.map +1 -0
  442. package/dist/plugin-context.d.ts +276 -0
  443. package/dist/plugin-context.d.ts.map +1 -0
  444. package/dist/plugins/adapter-build.d.ts +21 -1
  445. package/dist/plugins/adapter-build.d.ts.map +1 -1
  446. package/dist/plugins/build-manifest.d.ts +7 -3
  447. package/dist/plugins/build-manifest.d.ts.map +1 -1
  448. package/dist/plugins/build-report.d.ts +47 -10
  449. package/dist/plugins/build-report.d.ts.map +1 -1
  450. package/dist/plugins/cache.d.ts +64 -0
  451. package/dist/plugins/cache.d.ts.map +1 -0
  452. package/dist/plugins/callsite-ast.d.ts +117 -0
  453. package/dist/plugins/callsite-ast.d.ts.map +1 -0
  454. package/dist/plugins/callsite-jsx.d.ts +35 -0
  455. package/dist/plugins/callsite-jsx.d.ts.map +1 -0
  456. package/dist/plugins/chunks.d.ts +11 -4
  457. package/dist/plugins/chunks.d.ts.map +1 -1
  458. package/dist/plugins/client-chunks.d.ts +40 -0
  459. package/dist/plugins/client-chunks.d.ts.map +1 -0
  460. package/dist/plugins/cloudflare-wasm.d.ts +21 -0
  461. package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
  462. package/dist/plugins/content.d.ts +1 -1
  463. package/dist/plugins/content.d.ts.map +1 -1
  464. package/dist/plugins/dev-discovery.d.ts +123 -0
  465. package/dist/plugins/dev-discovery.d.ts.map +1 -0
  466. package/dist/plugins/dev-server.d.ts +24 -1
  467. package/dist/plugins/dev-server.d.ts.map +1 -1
  468. package/dist/plugins/entries.d.ts +28 -4
  469. package/dist/plugins/entries.d.ts.map +1 -1
  470. package/dist/plugins/fonts.d.ts +16 -73
  471. package/dist/plugins/fonts.d.ts.map +1 -1
  472. package/dist/plugins/graph-endpoint.d.ts +112 -0
  473. package/dist/plugins/graph-endpoint.d.ts.map +1 -0
  474. package/dist/plugins/mdx.d.ts +18 -5
  475. package/dist/plugins/mdx.d.ts.map +1 -1
  476. package/dist/plugins/prebuilt-capture.d.ts +60 -0
  477. package/dist/plugins/prebuilt-capture.d.ts.map +1 -0
  478. package/dist/plugins/prebuilt-options-analysis.d.ts +40 -0
  479. package/dist/plugins/prebuilt-options-analysis.d.ts.map +1 -0
  480. package/dist/plugins/prebuilt.d.ts +82 -0
  481. package/dist/plugins/prebuilt.d.ts.map +1 -0
  482. package/dist/plugins/prerender-sugar.d.ts +39 -0
  483. package/dist/plugins/prerender-sugar.d.ts.map +1 -0
  484. package/dist/plugins/request-dep/analysis.d.ts +106 -0
  485. package/dist/plugins/request-dep/analysis.d.ts.map +1 -0
  486. package/dist/plugins/request-dep/index.d.ts +75 -0
  487. package/dist/plugins/request-dep/index.d.ts.map +1 -0
  488. package/dist/plugins/request-dep/origin.d.ts +61 -0
  489. package/dist/plugins/request-dep/origin.d.ts.map +1 -0
  490. package/dist/plugins/routing.d.ts +1 -1
  491. package/dist/plugins/routing.d.ts.map +1 -1
  492. package/dist/plugins/server-bundle.d.ts.map +1 -1
  493. package/dist/plugins/shims.d.ts +29 -5
  494. package/dist/plugins/shims.d.ts.map +1 -1
  495. package/dist/plugins/static-build.d.ts +218 -21
  496. package/dist/plugins/static-build.d.ts.map +1 -1
  497. package/dist/routing/codegen-shared.d.ts +26 -0
  498. package/dist/routing/codegen-shared.d.ts.map +1 -0
  499. package/dist/routing/codegen-types.d.ts +61 -0
  500. package/dist/routing/codegen-types.d.ts.map +1 -0
  501. package/dist/routing/codegen-write.d.ts +51 -0
  502. package/dist/routing/codegen-write.d.ts.map +1 -0
  503. package/dist/routing/codegen.d.ts +8 -3
  504. package/dist/routing/codegen.d.ts.map +1 -1
  505. package/dist/routing/collision-probe.d.ts +104 -0
  506. package/dist/routing/collision-probe.d.ts.map +1 -0
  507. package/dist/routing/collision-spaces.d.ts +26 -0
  508. package/dist/routing/collision-spaces.d.ts.map +1 -0
  509. package/dist/routing/convention-lint.d.ts +55 -0
  510. package/dist/routing/convention-lint.d.ts.map +1 -0
  511. package/dist/routing/export-detect.d.ts +72 -0
  512. package/dist/routing/export-detect.d.ts.map +1 -0
  513. package/dist/routing/file-cache.d.ts +8 -0
  514. package/dist/routing/file-cache.d.ts.map +1 -0
  515. package/dist/routing/index.d.ts +13 -7
  516. package/dist/routing/index.d.ts.map +1 -1
  517. package/dist/routing/index.js +5 -2
  518. package/dist/routing/interception-overlap.d.ts +35 -0
  519. package/dist/routing/interception-overlap.d.ts.map +1 -0
  520. package/dist/routing/interception.d.ts +234 -10
  521. package/dist/routing/interception.d.ts.map +1 -1
  522. package/dist/routing/link-codegen.d.ts +105 -0
  523. package/dist/routing/link-codegen.d.ts.map +1 -0
  524. package/dist/routing/manifest-codegen.d.ts +26 -0
  525. package/dist/routing/manifest-codegen.d.ts.map +1 -0
  526. package/dist/routing/scanner.d.ts +14 -10
  527. package/dist/routing/scanner.d.ts.map +1 -1
  528. package/dist/routing/schema-validation.d.ts +35 -0
  529. package/dist/routing/schema-validation.d.ts.map +1 -0
  530. package/dist/routing/segment-classify.d.ts +114 -0
  531. package/dist/routing/segment-classify.d.ts.map +1 -0
  532. package/dist/routing/segment-codegen.d.ts +38 -0
  533. package/dist/routing/segment-codegen.d.ts.map +1 -0
  534. package/dist/routing/segment-keys.d.ts +118 -0
  535. package/dist/routing/segment-keys.d.ts.map +1 -0
  536. package/dist/routing/slot-placement.d.ts +48 -0
  537. package/dist/routing/slot-placement.d.ts.map +1 -0
  538. package/dist/routing/types.d.ts +74 -26
  539. package/dist/routing/types.d.ts.map +1 -1
  540. package/dist/routing/walkers.d.ts +57 -0
  541. package/dist/routing/walkers.d.ts.map +1 -0
  542. package/dist/rsc-runtime/rsc.d.ts +1 -1
  543. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  544. package/dist/rsc-runtime/ssr.d.ts +14 -0
  545. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  546. package/dist/rsc-runtime/transforms.d.ts +13 -0
  547. package/dist/rsc-runtime/transforms.d.ts.map +1 -0
  548. package/dist/schema-bridge.d.ts +145 -0
  549. package/dist/schema-bridge.d.ts.map +1 -0
  550. package/dist/search-params/define.d.ts +262 -0
  551. package/dist/search-params/define.d.ts.map +1 -0
  552. package/dist/search-params/index.d.ts +3 -7
  553. package/dist/search-params/index.d.ts.map +1 -1
  554. package/dist/search-params/index.js +179 -360
  555. package/dist/search-params/index.js.map +1 -1
  556. package/dist/search-params/parse-total.d.ts +81 -0
  557. package/dist/search-params/parse-total.d.ts.map +1 -0
  558. package/dist/search-params/serialize-equal.d.ts +9 -0
  559. package/dist/search-params/serialize-equal.d.ts.map +1 -0
  560. package/dist/search-params/wrappers.d.ts +76 -0
  561. package/dist/search-params/wrappers.d.ts.map +1 -0
  562. package/dist/server/access-gate.d.ts +98 -10
  563. package/dist/server/access-gate.d.ts.map +1 -1
  564. package/dist/server/action-client.d.ts +42 -7
  565. package/dist/server/action-client.d.ts.map +1 -1
  566. package/dist/server/action-encryption.d.ts +76 -0
  567. package/dist/server/action-encryption.d.ts.map +1 -0
  568. package/dist/server/action-handler.d.ts +39 -5
  569. package/dist/server/action-handler.d.ts.map +1 -1
  570. package/dist/server/actions.d.ts +29 -35
  571. package/dist/server/actions.d.ts.map +1 -1
  572. package/dist/server/als-registry.d.ts +117 -13
  573. package/dist/server/als-registry.d.ts.map +1 -1
  574. package/dist/server/asset-headers.d.ts +8 -18
  575. package/dist/server/asset-headers.d.ts.map +1 -1
  576. package/dist/server/body-limits.d.ts.map +1 -1
  577. package/dist/server/build-manifest.d.ts +25 -30
  578. package/dist/server/build-manifest.d.ts.map +1 -1
  579. package/dist/server/canonicalize.d.ts +10 -0
  580. package/dist/server/canonicalize.d.ts.map +1 -1
  581. package/dist/server/chain-url-parts.d.ts +82 -0
  582. package/dist/server/chain-url-parts.d.ts.map +1 -0
  583. package/dist/server/children-interception.d.ts +49 -0
  584. package/dist/server/children-interception.d.ts.map +1 -0
  585. package/dist/server/coalesce-tick.d.ts +40 -0
  586. package/dist/server/coalesce-tick.d.ts.map +1 -0
  587. package/dist/server/compress.d.ts.map +1 -1
  588. package/dist/server/cookie-context.d.ts +170 -0
  589. package/dist/server/cookie-context.d.ts.map +1 -0
  590. package/dist/server/cookie-parsing.d.ts +65 -0
  591. package/dist/server/cookie-parsing.d.ts.map +1 -0
  592. package/dist/server/csp-nonce.d.ts +45 -0
  593. package/dist/server/csp-nonce.d.ts.map +1 -0
  594. package/dist/server/csrf.d.ts +3 -2
  595. package/dist/server/csrf.d.ts.map +1 -1
  596. package/dist/server/default-logger.d.ts +22 -0
  597. package/dist/server/default-logger.d.ts.map +1 -0
  598. package/dist/server/default-status-page.d.ts +45 -0
  599. package/dist/server/default-status-page.d.ts.map +1 -0
  600. package/dist/server/deny-boundary.d.ts +251 -0
  601. package/dist/server/deny-boundary.d.ts.map +1 -0
  602. package/dist/server/deny-renderer.d.ts +20 -10
  603. package/dist/server/deny-renderer.d.ts.map +1 -1
  604. package/dist/server/dev-source-map.d.ts +22 -0
  605. package/dist/server/dev-source-map.d.ts.map +1 -0
  606. package/dist/server/early-hints-sender.d.ts.map +1 -1
  607. package/dist/server/early-hints.d.ts +14 -12
  608. package/dist/server/early-hints.d.ts.map +1 -1
  609. package/dist/server/error-boundary-wrapper.d.ts +94 -10
  610. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  611. package/dist/server/error-response-headers.d.ts +3 -0
  612. package/dist/server/error-response-headers.d.ts.map +1 -0
  613. package/dist/server/fallback-error.d.ts +12 -7
  614. package/dist/server/fallback-error.d.ts.map +1 -1
  615. package/dist/server/flight-injection-state.d.ts +66 -0
  616. package/dist/server/flight-injection-state.d.ts.map +1 -0
  617. package/dist/server/flight-scripts.d.ts +45 -0
  618. package/dist/server/flight-scripts.d.ts.map +1 -0
  619. package/dist/server/form-data.d.ts +41 -0
  620. package/dist/server/form-data.d.ts.map +1 -1
  621. package/dist/server/form-flash.d.ts +1 -1
  622. package/dist/server/head-response.d.ts +35 -0
  623. package/dist/server/head-response.d.ts.map +1 -0
  624. package/dist/server/html-injector-core.d.ts +257 -0
  625. package/dist/server/html-injector-core.d.ts.map +1 -0
  626. package/dist/server/html-injectors.d.ts +84 -42
  627. package/dist/server/html-injectors.d.ts.map +1 -1
  628. package/dist/server/index.d.ts +18 -54
  629. package/dist/server/index.d.ts.map +1 -1
  630. package/dist/server/index.js +195 -2922
  631. package/dist/server/index.js.map +1 -1
  632. package/dist/server/instrumentation.d.ts +1 -1
  633. package/dist/server/internal.d.ts +50 -0
  634. package/dist/server/internal.d.ts.map +1 -0
  635. package/dist/server/internal.js +3859 -0
  636. package/dist/server/internal.js.map +1 -0
  637. package/dist/server/logger.d.ts +39 -7
  638. package/dist/server/logger.d.ts.map +1 -1
  639. package/dist/server/metadata-collector.d.ts +71 -0
  640. package/dist/server/metadata-collector.d.ts.map +1 -0
  641. package/dist/server/metadata-platform.d.ts +2 -2
  642. package/dist/server/metadata-render.d.ts +2 -2
  643. package/dist/server/metadata-render.d.ts.map +1 -1
  644. package/dist/server/metadata-routes.d.ts +60 -11
  645. package/dist/server/metadata-routes.d.ts.map +1 -1
  646. package/dist/server/metadata-social.d.ts +2 -2
  647. package/dist/server/metadata.d.ts +10 -2
  648. package/dist/server/metadata.d.ts.map +1 -1
  649. package/dist/server/middleware-runner.d.ts +20 -5
  650. package/dist/server/middleware-runner.d.ts.map +1 -1
  651. package/dist/server/node-stream-transforms.d.ts +105 -0
  652. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  653. package/dist/server/nuqs-ssr-provider.d.ts +7 -3
  654. package/dist/server/nuqs-ssr-provider.d.ts.map +1 -1
  655. package/dist/server/param-coercion.d.ts +78 -0
  656. package/dist/server/param-coercion.d.ts.map +1 -0
  657. package/dist/server/pipeline-helpers.d.ts +77 -0
  658. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  659. package/dist/server/pipeline-interception.d.ts +59 -9
  660. package/dist/server/pipeline-interception.d.ts.map +1 -1
  661. package/dist/server/pipeline-metadata.d.ts +7 -1
  662. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  663. package/dist/server/pipeline-outcome.d.ts +49 -0
  664. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  665. package/dist/server/pipeline-phases.d.ts +70 -0
  666. package/dist/server/pipeline-phases.d.ts.map +1 -0
  667. package/dist/server/pipeline.d.ts +161 -20
  668. package/dist/server/pipeline.d.ts.map +1 -1
  669. package/dist/server/port-resolution.d.ts +31 -0
  670. package/dist/server/port-resolution.d.ts.map +1 -0
  671. package/dist/server/prebuilt/cache-key.d.ts +63 -0
  672. package/dist/server/prebuilt/cache-key.d.ts.map +1 -0
  673. package/dist/server/prebuilt/capture-state.d.ts +57 -0
  674. package/dist/server/prebuilt/capture-state.d.ts.map +1 -0
  675. package/dist/server/prebuilt/key-discipline.d.ts +52 -0
  676. package/dist/server/prebuilt/key-discipline.d.ts.map +1 -0
  677. package/dist/server/prebuilt/manifest-tag-index.d.ts +27 -0
  678. package/dist/server/prebuilt/manifest-tag-index.d.ts.map +1 -0
  679. package/dist/server/prebuilt/overlay.d.ts +100 -0
  680. package/dist/server/prebuilt/overlay.d.ts.map +1 -0
  681. package/dist/server/prebuilt/payload-source.d.ts +79 -0
  682. package/dist/server/prebuilt/payload-source.d.ts.map +1 -0
  683. package/dist/server/prebuilt/slots.d.ts +99 -0
  684. package/dist/server/prebuilt/slots.d.ts.map +1 -0
  685. package/dist/server/prebuilt/synthetic-store.d.ts +67 -0
  686. package/dist/server/prebuilt/synthetic-store.d.ts.map +1 -0
  687. package/dist/server/prebuilt-builder.d.ts +121 -0
  688. package/dist/server/prebuilt-builder.d.ts.map +1 -0
  689. package/dist/server/prebuilt-runtime.d.ts +111 -0
  690. package/dist/server/prebuilt-runtime.d.ts.map +1 -0
  691. package/dist/server/primitives.d.ts +131 -45
  692. package/dist/server/primitives.d.ts.map +1 -1
  693. package/dist/server/publish-params.d.ts +33 -0
  694. package/dist/server/publish-params.d.ts.map +1 -0
  695. package/dist/server/render-timeout.d.ts +51 -0
  696. package/dist/server/render-timeout.d.ts.map +1 -0
  697. package/dist/server/render-utils.d.ts +26 -0
  698. package/dist/server/render-utils.d.ts.map +1 -0
  699. package/dist/server/request-context.d.ts +111 -107
  700. package/dist/server/request-context.d.ts.map +1 -1
  701. package/dist/server/request-dep.d.ts +15 -0
  702. package/dist/server/request-dep.d.ts.map +1 -0
  703. package/dist/server/response-cache-policy.d.ts +3 -0
  704. package/dist/server/response-cache-policy.d.ts.map +1 -0
  705. package/dist/server/route-element-builder.d.ts +57 -30
  706. package/dist/server/route-element-builder.d.ts.map +1 -1
  707. package/dist/server/route-element-helpers.d.ts +12 -0
  708. package/dist/server/route-element-helpers.d.ts.map +1 -0
  709. package/dist/server/route-handler.d.ts +1 -1
  710. package/dist/server/route-handler.d.ts.map +1 -1
  711. package/dist/server/route-matcher.d.ts +40 -38
  712. package/dist/server/route-matcher.d.ts.map +1 -1
  713. package/dist/server/route-module-loader.d.ts +37 -0
  714. package/dist/server/route-module-loader.d.ts.map +1 -0
  715. package/dist/server/rsc-cache-key-guard.d.ts +78 -0
  716. package/dist/server/rsc-cache-key-guard.d.ts.map +1 -0
  717. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  718. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  719. package/dist/server/rsc-entry/api-handler.d.ts +12 -3
  720. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  721. package/dist/server/rsc-entry/deny-fallback.d.ts +29 -0
  722. package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -0
  723. package/dist/server/rsc-entry/error-renderer.d.ts +34 -13
  724. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  725. package/dist/server/rsc-entry/helpers.d.ts +47 -51
  726. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  727. package/dist/server/rsc-entry/index.d.ts +40 -6
  728. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  729. package/dist/server/rsc-entry/render-route.d.ts +52 -0
  730. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  731. package/dist/server/rsc-entry/revalidate-renderer.d.ts +108 -0
  732. package/dist/server/rsc-entry/revalidate-renderer.d.ts.map +1 -0
  733. package/dist/server/rsc-entry/rsc-payload.d.ts +26 -6
  734. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  735. package/dist/server/rsc-entry/rsc-stream.d.ts +36 -3
  736. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  737. package/dist/server/rsc-entry/ssr-bridge.d.ts +5 -1
  738. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  739. package/dist/server/rsc-entry/ssr-renderer.d.ts +38 -5
  740. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  741. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +89 -0
  742. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  743. package/dist/server/rsc-error-envelope.d.ts +11 -0
  744. package/dist/server/rsc-error-envelope.d.ts.map +1 -0
  745. package/dist/server/safe-load.d.ts +46 -0
  746. package/dist/server/safe-load.d.ts.map +1 -0
  747. package/dist/server/sensitive-fields.d.ts +74 -0
  748. package/dist/server/sensitive-fields.d.ts.map +1 -0
  749. package/dist/server/sitemap-generator.d.ts +130 -0
  750. package/dist/server/sitemap-generator.d.ts.map +1 -0
  751. package/dist/server/sitemap-handler.d.ts +22 -0
  752. package/dist/server/sitemap-handler.d.ts.map +1 -0
  753. package/dist/server/skippable-prefix.d.ts +29 -0
  754. package/dist/server/skippable-prefix.d.ts.map +1 -0
  755. package/dist/server/slot-interception.d.ts +80 -0
  756. package/dist/server/slot-interception.d.ts.map +1 -0
  757. package/dist/server/slot-resolver.d.ts +137 -7
  758. package/dist/server/slot-resolver.d.ts.map +1 -1
  759. package/dist/server/slot-subtree-contain.d.ts +54 -0
  760. package/dist/server/slot-subtree-contain.d.ts.map +1 -0
  761. package/dist/server/ssr-bridge-types.d.ts +160 -0
  762. package/dist/server/ssr-bridge-types.d.ts.map +1 -0
  763. package/dist/server/ssr-entry.d.ts +1 -43
  764. package/dist/server/ssr-entry.d.ts.map +1 -1
  765. package/dist/server/ssr-render.d.ts +69 -22
  766. package/dist/server/ssr-render.d.ts.map +1 -1
  767. package/dist/server/ssr-wrappers.d.ts +93 -0
  768. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  769. package/dist/server/state-tree-diff.d.ts +44 -9
  770. package/dist/server/state-tree-diff.d.ts.map +1 -1
  771. package/dist/server/static-generator.d.ts +112 -0
  772. package/dist/server/static-generator.d.ts.map +1 -0
  773. package/dist/server/static-not-found.d.ts +52 -0
  774. package/dist/server/static-not-found.d.ts.map +1 -0
  775. package/dist/server/status-code-resolver.d.ts +26 -15
  776. package/dist/server/status-code-resolver.d.ts.map +1 -1
  777. package/dist/server/stream-utils.d.ts +47 -0
  778. package/dist/server/stream-utils.d.ts.map +1 -0
  779. package/dist/server/tracing.d.ts +46 -11
  780. package/dist/server/tracing.d.ts.map +1 -1
  781. package/dist/server/tree-match.d.ts +49 -0
  782. package/dist/server/tree-match.d.ts.map +1 -0
  783. package/dist/server/types.d.ts +88 -7
  784. package/dist/server/types.d.ts.map +1 -1
  785. package/dist/server/utils/element-type.d.ts +50 -0
  786. package/dist/server/utils/element-type.d.ts.map +1 -0
  787. package/dist/server/utils/escape-html.d.ts +14 -0
  788. package/dist/server/utils/escape-html.d.ts.map +1 -0
  789. package/dist/server/version-skew.d.ts +61 -0
  790. package/dist/server/version-skew.d.ts.map +1 -0
  791. package/dist/server/workers-cache-bridge.d.ts +26 -0
  792. package/dist/server/workers-cache-bridge.d.ts.map +1 -0
  793. package/dist/shared/als-slots.d.ts +42 -0
  794. package/dist/shared/als-slots.d.ts.map +1 -0
  795. package/dist/shared/base-path.d.ts +56 -0
  796. package/dist/shared/base-path.d.ts.map +1 -0
  797. package/dist/shared/href-validation.d.ts +49 -0
  798. package/dist/shared/href-validation.d.ts.map +1 -0
  799. package/dist/shared/merge-search-params.d.ts +22 -0
  800. package/dist/shared/merge-search-params.d.ts.map +1 -0
  801. package/dist/shared/param-value.d.ts +104 -0
  802. package/dist/shared/param-value.d.ts.map +1 -0
  803. package/dist/shared/payload-root.d.ts +109 -0
  804. package/dist/shared/payload-root.d.ts.map +1 -0
  805. package/dist/shared/redirect-type.d.ts +17 -0
  806. package/dist/shared/redirect-type.d.ts.map +1 -0
  807. package/dist/shared/rsc-cache-key.d.ts +163 -0
  808. package/dist/shared/rsc-cache-key.d.ts.map +1 -0
  809. package/dist/shared/rsc-error-envelope.d.ts +16 -0
  810. package/dist/shared/rsc-error-envelope.d.ts.map +1 -0
  811. package/dist/shared/rsc-manifest.d.ts +28 -0
  812. package/dist/shared/rsc-manifest.d.ts.map +1 -0
  813. package/dist/shared/rsc-media-type.d.ts +52 -0
  814. package/dist/shared/rsc-media-type.d.ts.map +1 -0
  815. package/dist/shared/rsc-payload-path.d.ts +42 -0
  816. package/dist/shared/rsc-payload-path.d.ts.map +1 -0
  817. package/dist/shared/segment-info.d.ts +66 -0
  818. package/dist/shared/segment-info.d.ts.map +1 -0
  819. package/dist/shared/slot-params.d.ts +52 -0
  820. package/dist/shared/slot-params.d.ts.map +1 -0
  821. package/dist/shared/static-platform-files.d.ts +71 -0
  822. package/dist/shared/static-platform-files.d.ts.map +1 -0
  823. package/dist/shared/status-reason-phrase.d.ts +26 -0
  824. package/dist/shared/status-reason-phrase.d.ts.map +1 -0
  825. package/dist/shims/font-google.d.ts +1 -1
  826. package/dist/shims/font-google.d.ts.map +1 -1
  827. package/dist/shims/font-google.js +42 -0
  828. package/dist/shims/font-google.js.map +1 -0
  829. package/dist/shims/font-local.d.ts +26 -0
  830. package/dist/shims/font-local.d.ts.map +1 -0
  831. package/dist/shims/font-local.js +20 -0
  832. package/dist/shims/font-local.js.map +1 -0
  833. package/dist/shims/headers.d.ts +53 -1
  834. package/dist/shims/headers.d.ts.map +1 -1
  835. package/dist/shims/image.d.ts +120 -120
  836. package/dist/shims/image.d.ts.map +1 -1
  837. package/dist/shims/navigation-client.d.ts +25 -12
  838. package/dist/shims/navigation-client.d.ts.map +1 -1
  839. package/dist/shims/navigation-rsc.d.ts +21 -0
  840. package/dist/shims/navigation-rsc.d.ts.map +1 -0
  841. package/dist/shims/navigation.d.ts +10 -5
  842. package/dist/shims/navigation.d.ts.map +1 -1
  843. package/dist/utils/state-machine.d.ts +80 -0
  844. package/dist/utils/state-machine.d.ts.map +1 -0
  845. package/docs/api/30-api-server.mdx +236 -0
  846. package/docs/api/31-api-client.mdx +167 -0
  847. package/docs/api/32-api-cache.mdx +311 -0
  848. package/docs/api/33-api-search-params.mdx +176 -0
  849. package/docs/api/34-api-config.mdx +329 -0
  850. package/docs/api/35-api-typescript.mdx +91 -0
  851. package/docs/api/36-cli.mdx +192 -0
  852. package/docs/learn/00-introduction.mdx +109 -0
  853. package/docs/learn/01-quick-start.mdx +94 -0
  854. package/docs/learn/02-pages-and-layouts.mdx +147 -0
  855. package/docs/learn/03-fetching-data.mdx +211 -0
  856. package/docs/learn/04-access-control.mdx +115 -0
  857. package/docs/learn/05-the-flush-point.mdx +175 -0
  858. package/docs/learn/06-typed-params.mdx +275 -0
  859. package/docs/learn/07-typed-routes.mdx +108 -0
  860. package/docs/learn/08-forms-and-actions.mdx +146 -0
  861. package/docs/learn/09-streaming.mdx +140 -0
  862. package/docs/learn/10-caching.mdx +252 -0
  863. package/docs/learn/11-middleware.mdx +158 -0
  864. package/docs/learn/12-error-handling.mdx +187 -0
  865. package/docs/learn/13-deploying.mdx +287 -0
  866. package/llms.txt +55 -0
  867. package/package.json +116 -30
  868. package/src/adapters/build-output-helper.ts +351 -0
  869. package/src/adapters/cloudflare-dev.ts +183 -0
  870. package/src/adapters/cloudflare-kv-cache.ts +207 -0
  871. package/src/adapters/cloudflare.ts +747 -130
  872. package/src/adapters/compress-module.ts +101 -88
  873. package/src/adapters/fs-identity.ts +156 -0
  874. package/src/adapters/nitro-presets.ts +139 -0
  875. package/src/adapters/nitro-preview.ts +340 -0
  876. package/src/adapters/nitro.ts +249 -426
  877. package/src/adapters/raw-imports.d.ts +5 -0
  878. package/src/adapters/shared.ts +274 -0
  879. package/src/adapters/types.ts +28 -7
  880. package/src/adapters/wrangler.d.ts +7 -0
  881. package/src/analyze/chains.ts +411 -0
  882. package/src/analyze/classify.ts +258 -0
  883. package/src/analyze/crawl-entry.ts +68 -0
  884. package/src/analyze/crawl.ts +500 -0
  885. package/src/analyze/graph-cache.ts +332 -0
  886. package/src/analyze/graph-command.ts +762 -0
  887. package/src/analyze/live-graph.ts +232 -0
  888. package/src/analyze/poison-rules.ts +165 -0
  889. package/src/analyze/poison-scan.ts +162 -0
  890. package/src/analyze/scan.ts +149 -0
  891. package/src/cache/cache-api.ts +107 -0
  892. package/src/cache/fast-hash.ts +5 -0
  893. package/src/cache/handler-store.ts +76 -0
  894. package/src/cache/index.ts +115 -22
  895. package/src/cache/invalidation-epoch.ts +93 -0
  896. package/src/cache/json-lossy-check.ts +75 -0
  897. package/src/cache/redis-handler.ts +198 -20
  898. package/src/cache/singleflight.ts +69 -6
  899. package/src/cache/sizeof.ts +33 -0
  900. package/src/cache/stable-stringify.ts +65 -2
  901. package/src/cache/store.ts +71 -0
  902. package/src/cache/stores/cloudflare-kv.ts +52 -0
  903. package/src/cache/stores/memory.ts +125 -0
  904. package/src/cache/stores/redis.ts +97 -0
  905. package/src/cache/stores/vercel.ts +59 -0
  906. package/src/cache/tag-aware-handler.ts +237 -0
  907. package/src/cache/timber-cache.ts +165 -40
  908. package/src/cdn/cloudflare-purge.ts +50 -0
  909. package/src/cdn/fastly-purge.ts +63 -0
  910. package/src/cdn/headers.ts +153 -0
  911. package/src/cdn/index.ts +23 -0
  912. package/src/cdn/purge-store.ts +34 -0
  913. package/src/cdn/workers-cache-purge.ts +34 -0
  914. package/src/cli-check.ts +507 -0
  915. package/src/cli-schema-sync.ts +401 -0
  916. package/src/cli.ts +323 -62
  917. package/src/client/browser-dev.ts +157 -2
  918. package/src/client/browser-entry/action-dispatch.ts +209 -0
  919. package/src/client/browser-entry/action-queue.ts +152 -0
  920. package/src/client/browser-entry/hmr.ts +70 -0
  921. package/src/client/browser-entry/hydrate.ts +148 -0
  922. package/src/client/browser-entry/index.ts +131 -0
  923. package/src/client/browser-entry/post-hydration.ts +123 -0
  924. package/src/client/browser-entry/router-init.ts +418 -0
  925. package/src/client/browser-entry/rsc-stream.ts +222 -0
  926. package/src/client/browser-entry/scroll.ts +50 -0
  927. package/src/client/deny-last-resort.tsx +54 -0
  928. package/src/client/error-boundary.tsx +289 -39
  929. package/src/client/error-reconstituter.tsx +79 -0
  930. package/src/client/form.tsx +36 -32
  931. package/src/client/global-context.ts +31 -0
  932. package/src/client/history.ts +81 -10
  933. package/src/client/index.ts +89 -53
  934. package/src/client/internal.ts +59 -0
  935. package/src/client/link.tsx +439 -151
  936. package/src/client/location-search.ts +15 -0
  937. package/src/client/navigation-api.ts +347 -0
  938. package/src/client/navigation-commit.ts +295 -0
  939. package/src/client/navigation-context.ts +67 -98
  940. package/src/client/navigation-root.tsx +224 -0
  941. package/src/client/navigation-transition.ts +327 -0
  942. package/src/client/nuqs-adapter.tsx +21 -9
  943. package/src/client/params-context.ts +187 -0
  944. package/src/client/react-root.ts +72 -0
  945. package/src/client/router-effects.ts +228 -0
  946. package/src/client/router-lifecycle.ts +354 -0
  947. package/src/client/router-pipeline.ts +490 -0
  948. package/src/client/router-ref.ts +3 -3
  949. package/src/client/router-skew.ts +30 -0
  950. package/src/client/router-types.ts +294 -0
  951. package/src/client/router.ts +435 -421
  952. package/src/client/rsc-fetch.ts +512 -73
  953. package/src/client/segment-cache.ts +327 -40
  954. package/src/client/segment-context.ts +7 -4
  955. package/src/client/segment-outlet.tsx +96 -0
  956. package/src/client/segment-update-context.ts +23 -0
  957. package/src/client/shallow-url.ts +22 -0
  958. package/src/client/slot-content-cache-context.ts +43 -0
  959. package/src/client/slot-context.ts +50 -0
  960. package/src/client/slot-outlet.tsx +22 -0
  961. package/src/client/slot-provider.tsx +32 -0
  962. package/src/client/ssr-data.ts +30 -9
  963. package/src/client/stale-client.ts +191 -0
  964. package/src/client/state.ts +29 -15
  965. package/src/client/status-page-marker.tsx +32 -0
  966. package/src/client/top-loader.tsx +13 -10
  967. package/src/client/unload-guard.ts +35 -3
  968. package/src/client/use-cookie.ts +70 -18
  969. package/src/client/use-link-status.ts +7 -7
  970. package/src/client/use-pathname.ts +22 -31
  971. package/src/client/use-pending-navigation.ts +40 -0
  972. package/src/client/use-query-states.ts +206 -36
  973. package/src/client/use-router.ts +6 -3
  974. package/src/client/use-search-params.ts +38 -49
  975. package/src/client/use-segment-params.ts +69 -0
  976. package/src/client/use-selected-layout-segment.ts +2 -2
  977. package/src/codec.ts +149 -0
  978. package/src/config-types.ts +322 -0
  979. package/src/config-validation.ts +347 -0
  980. package/src/cookies/define-cookie.ts +222 -53
  981. package/src/cookies/index.ts +13 -2
  982. package/src/cookies/json-cookie.ts +105 -0
  983. package/src/cookies/validation.ts +192 -0
  984. package/src/dev-tools/404-page.ts +286 -0
  985. package/src/dev-tools/browser-logs.ts +55 -0
  986. package/src/dev-tools/debug-channel.ts +151 -0
  987. package/src/dev-tools/dev-page-shell.ts +260 -0
  988. package/src/dev-tools/error-page.ts +331 -0
  989. package/src/dev-tools/holding-server.ts +185 -0
  990. package/src/dev-tools/hydration-overlay.ts +158 -0
  991. package/src/dev-tools/index.ts +83 -0
  992. package/src/dev-tools/instrumentation.ts +213 -0
  993. package/src/{server/dev-logger.ts → dev-tools/logger.ts} +33 -51
  994. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +122 -26
  995. package/src/dev-tools/overlay.ts +469 -0
  996. package/src/dev-tools/stack-classifier.ts +75 -0
  997. package/src/dev-tools/terminal.ts +182 -0
  998. package/src/fonts/ast-walk.ts +235 -0
  999. package/src/fonts/ast.ts +479 -128
  1000. package/src/fonts/bundle.ts +138 -0
  1001. package/src/fonts/css.ts +1 -1
  1002. package/src/fonts/dev-middleware.ts +85 -0
  1003. package/src/fonts/fallbacks.ts +0 -23
  1004. package/src/fonts/google.ts +101 -19
  1005. package/src/fonts/local.ts +12 -11
  1006. package/src/fonts/paths.ts +58 -0
  1007. package/src/fonts/pipeline.ts +348 -0
  1008. package/src/fonts/transform.ts +311 -0
  1009. package/src/fonts/types.ts +52 -1
  1010. package/src/fonts/virtual-modules.ts +179 -0
  1011. package/src/index.ts +482 -377
  1012. package/src/params/codec-registry.ts +34 -0
  1013. package/src/params/define-schema.ts +115 -0
  1014. package/src/params/index.ts +17 -0
  1015. package/src/params/resolve-schema.ts +84 -0
  1016. package/src/plugin-context.ts +503 -0
  1017. package/src/plugins/adapter-build.ts +229 -7
  1018. package/src/plugins/build-manifest.ts +201 -26
  1019. package/src/plugins/build-report.ts +259 -47
  1020. package/src/plugins/cache.ts +243 -0
  1021. package/src/plugins/callsite-ast.ts +472 -0
  1022. package/src/plugins/callsite-jsx.ts +243 -0
  1023. package/src/plugins/chunks.ts +74 -5
  1024. package/src/plugins/client-chunks.ts +185 -0
  1025. package/src/plugins/cloudflare-wasm.ts +141 -0
  1026. package/src/plugins/content.ts +5 -1
  1027. package/src/plugins/dev-discovery.ts +218 -0
  1028. package/src/plugins/dev-server.ts +418 -94
  1029. package/src/plugins/entries.ts +141 -16
  1030. package/src/plugins/fonts.ts +234 -659
  1031. package/src/plugins/graph-endpoint.ts +532 -0
  1032. package/src/plugins/mdx.ts +108 -35
  1033. package/src/plugins/prebuilt-capture.ts +217 -0
  1034. package/src/plugins/prebuilt-options-analysis.ts +175 -0
  1035. package/src/plugins/prebuilt.ts +655 -0
  1036. package/src/plugins/prerender-sugar.ts +320 -0
  1037. package/src/plugins/request-dep/analysis.ts +447 -0
  1038. package/src/plugins/request-dep/index.ts +376 -0
  1039. package/src/plugins/request-dep/origin.ts +310 -0
  1040. package/src/plugins/routing.ts +273 -277
  1041. package/src/plugins/server-bundle.ts +99 -14
  1042. package/src/plugins/shims.ts +259 -97
  1043. package/src/plugins/static-build.ts +708 -66
  1044. package/src/react-canary.d.ts +2 -0
  1045. package/src/routing/codegen-shared.ts +39 -0
  1046. package/src/routing/codegen-types.ts +62 -0
  1047. package/src/routing/codegen-write.ts +141 -0
  1048. package/src/routing/codegen.ts +349 -232
  1049. package/src/routing/collision-probe.ts +438 -0
  1050. package/src/routing/collision-spaces.ts +281 -0
  1051. package/src/routing/convention-lint.ts +516 -0
  1052. package/src/routing/export-detect.ts +448 -0
  1053. package/src/routing/file-cache.ts +23 -0
  1054. package/src/routing/index.ts +16 -7
  1055. package/src/routing/interception-overlap.ts +141 -0
  1056. package/src/routing/interception.ts +1044 -67
  1057. package/src/routing/link-codegen.ts +280 -0
  1058. package/src/routing/manifest-codegen.ts +226 -0
  1059. package/src/routing/scanner.ts +408 -223
  1060. package/src/routing/schema-validation.ts +155 -0
  1061. package/src/routing/segment-classify.ts +280 -0
  1062. package/src/routing/segment-codegen.ts +98 -0
  1063. package/src/routing/segment-keys.ts +186 -0
  1064. package/src/routing/slot-placement.ts +97 -0
  1065. package/src/routing/types.ts +75 -26
  1066. package/src/routing/walkers.ts +98 -0
  1067. package/src/rsc-runtime/rsc.ts +9 -0
  1068. package/src/rsc-runtime/ssr.ts +51 -0
  1069. package/src/rsc-runtime/transforms.ts +13 -0
  1070. package/src/rsc-runtime/vendor-types.d.ts +19 -0
  1071. package/src/schema-bridge.ts +380 -0
  1072. package/src/search-params/define.ts +677 -0
  1073. package/src/search-params/index.ts +14 -20
  1074. package/src/search-params/parse-total.ts +91 -0
  1075. package/src/search-params/serialize-equal.ts +14 -0
  1076. package/src/search-params/wrappers.ts +150 -0
  1077. package/src/server/access-gate.tsx +194 -56
  1078. package/src/server/action-client.ts +122 -31
  1079. package/src/server/action-encryption.ts +144 -0
  1080. package/src/server/action-handler.ts +256 -56
  1081. package/src/server/actions.ts +112 -68
  1082. package/src/server/als-registry.ts +160 -21
  1083. package/src/server/asset-headers.ts +15 -37
  1084. package/src/server/body-limits.ts +10 -2
  1085. package/src/server/build-manifest.ts +33 -57
  1086. package/src/server/canonicalize.ts +6 -3
  1087. package/src/server/chain-url-parts.ts +163 -0
  1088. package/src/server/children-interception.ts +115 -0
  1089. package/src/server/coalesce-tick.ts +75 -0
  1090. package/src/server/compress.ts +43 -8
  1091. package/src/server/cookie-context.ts +484 -0
  1092. package/src/server/cookie-parsing.ts +163 -0
  1093. package/src/server/csp-nonce.ts +70 -0
  1094. package/src/server/csrf.ts +39 -6
  1095. package/src/server/default-logger.ts +99 -0
  1096. package/src/server/default-status-page.ts +88 -0
  1097. package/src/server/deny-boundary.ts +515 -0
  1098. package/src/server/deny-renderer.ts +211 -113
  1099. package/src/server/dev-source-map.ts +31 -0
  1100. package/src/server/early-hints-sender.ts +4 -3
  1101. package/src/server/early-hints.ts +39 -29
  1102. package/src/server/error-boundary-wrapper.ts +157 -44
  1103. package/src/server/error-response-headers.ts +18 -0
  1104. package/src/server/fallback-error.ts +79 -102
  1105. package/src/server/flight-injection-state.ts +113 -0
  1106. package/src/server/flight-scripts.ts +67 -0
  1107. package/src/server/form-data.ts +124 -12
  1108. package/src/server/form-flash.ts +2 -2
  1109. package/src/server/head-response.ts +54 -0
  1110. package/src/server/html-injector-core.ts +512 -0
  1111. package/src/server/html-injectors.ts +272 -255
  1112. package/src/server/index.ts +40 -192
  1113. package/src/server/instrumentation.ts +1 -1
  1114. package/src/server/internal.ts +173 -0
  1115. package/src/server/logger.ts +73 -37
  1116. package/src/server/metadata-collector.ts +174 -0
  1117. package/src/server/metadata-platform.ts +2 -2
  1118. package/src/server/metadata-render.ts +30 -8
  1119. package/src/server/metadata-routes.ts +205 -24
  1120. package/src/server/metadata-social.ts +2 -2
  1121. package/src/server/metadata.ts +23 -2
  1122. package/src/server/middleware-runner.ts +32 -5
  1123. package/src/server/node-stream-transforms.ts +323 -0
  1124. package/src/server/nuqs-ssr-provider.tsx +8 -7
  1125. package/src/server/param-coercion.ts +198 -0
  1126. package/src/server/pipeline-helpers.ts +159 -0
  1127. package/src/server/pipeline-interception.ts +109 -33
  1128. package/src/server/pipeline-metadata.ts +15 -1
  1129. package/src/server/pipeline-outcome.ts +218 -0
  1130. package/src/server/pipeline-phases.ts +606 -0
  1131. package/src/server/pipeline.ts +333 -384
  1132. package/src/server/port-resolution.ts +53 -0
  1133. package/src/server/prebuilt/cache-key.ts +299 -0
  1134. package/src/server/prebuilt/capture-state.ts +89 -0
  1135. package/src/server/prebuilt/key-discipline.ts +122 -0
  1136. package/src/server/prebuilt/manifest-tag-index.ts +46 -0
  1137. package/src/server/prebuilt/overlay.ts +256 -0
  1138. package/src/server/prebuilt/payload-source.ts +202 -0
  1139. package/src/server/prebuilt/slots.ts +190 -0
  1140. package/src/server/prebuilt/synthetic-store.ts +122 -0
  1141. package/src/server/prebuilt-builder.ts +804 -0
  1142. package/src/server/prebuilt-runtime.ts +817 -0
  1143. package/src/server/primitives.ts +240 -98
  1144. package/src/server/publish-params.ts +42 -0
  1145. package/src/server/render-timeout.ts +108 -0
  1146. package/src/server/render-utils.ts +35 -0
  1147. package/src/server/request-context.ts +244 -334
  1148. package/src/server/request-dep.ts +37 -0
  1149. package/src/server/response-cache-policy.ts +45 -0
  1150. package/src/server/route-element-builder.ts +508 -355
  1151. package/src/server/route-element-helpers.ts +37 -0
  1152. package/src/server/route-handler.ts +40 -13
  1153. package/src/server/route-matcher.ts +165 -272
  1154. package/src/server/route-module-loader.ts +161 -0
  1155. package/src/server/rsc-cache-key-guard.ts +122 -0
  1156. package/src/server/rsc-entry/action-middleware-runner.ts +174 -0
  1157. package/src/server/rsc-entry/api-handler.ts +78 -34
  1158. package/src/server/rsc-entry/deny-fallback.ts +93 -0
  1159. package/src/server/rsc-entry/error-renderer.ts +341 -91
  1160. package/src/server/rsc-entry/helpers.ts +180 -106
  1161. package/src/server/rsc-entry/index.ts +371 -331
  1162. package/src/server/rsc-entry/render-route.ts +315 -0
  1163. package/src/server/rsc-entry/revalidate-renderer.ts +350 -0
  1164. package/src/server/rsc-entry/rsc-payload.ts +209 -55
  1165. package/src/server/rsc-entry/rsc-stream.ts +154 -26
  1166. package/src/server/rsc-entry/ssr-bridge.ts +18 -5
  1167. package/src/server/rsc-entry/ssr-renderer.ts +317 -60
  1168. package/src/server/rsc-entry/wrap-action-dispatch.ts +186 -0
  1169. package/src/server/rsc-error-envelope.ts +18 -0
  1170. package/src/server/rsc-prop-warnings.ts +1 -1
  1171. package/src/server/safe-load.ts +60 -0
  1172. package/src/server/sensitive-fields.ts +230 -0
  1173. package/src/server/server-only-guard-noop.js +3 -0
  1174. package/src/server/server-timing.ts +1 -1
  1175. package/src/server/sitemap-generator.ts +337 -0
  1176. package/src/server/sitemap-handler.ts +157 -0
  1177. package/src/server/skippable-prefix.ts +172 -0
  1178. package/src/server/slot-interception.ts +168 -0
  1179. package/src/server/slot-resolver.ts +707 -300
  1180. package/src/server/slot-subtree-contain.ts +255 -0
  1181. package/src/server/ssr-bridge-types.ts +165 -0
  1182. package/src/server/ssr-entry.ts +230 -85
  1183. package/src/server/ssr-render.ts +357 -85
  1184. package/src/server/ssr-wrappers.tsx +162 -0
  1185. package/src/server/state-tree-diff.ts +85 -30
  1186. package/src/server/static-generator.ts +715 -0
  1187. package/src/server/static-not-found.ts +134 -0
  1188. package/src/server/status-code-resolver.ts +107 -148
  1189. package/src/server/stream-utils.ts +292 -0
  1190. package/src/server/tracing.ts +128 -16
  1191. package/src/server/tree-match.ts +262 -0
  1192. package/src/server/types.ts +95 -10
  1193. package/src/server/utils/element-type.ts +88 -0
  1194. package/src/server/utils/escape-html.ts +20 -0
  1195. package/src/server/version-skew.ts +104 -0
  1196. package/src/server/waituntil-bridge.ts +1 -1
  1197. package/src/server/workers-cache-bridge.ts +33 -0
  1198. package/src/shared/als-slots.ts +74 -0
  1199. package/src/shared/base-path.ts +80 -0
  1200. package/src/shared/href-validation.ts +159 -0
  1201. package/src/shared/merge-search-params.ts +55 -0
  1202. package/src/shared/param-value.ts +281 -0
  1203. package/src/shared/payload-root.ts +152 -0
  1204. package/src/shared/redirect-type.ts +17 -0
  1205. package/src/shared/rsc-cache-key.ts +269 -0
  1206. package/src/shared/rsc-error-envelope.ts +16 -0
  1207. package/src/shared/rsc-manifest.ts +29 -0
  1208. package/src/shared/rsc-media-type.ts +59 -0
  1209. package/src/shared/rsc-payload-path.ts +45 -0
  1210. package/src/shared/segment-info.ts +67 -0
  1211. package/src/shared/slot-params.ts +109 -0
  1212. package/src/shared/static-platform-files.ts +75 -0
  1213. package/src/shared/status-reason-phrase.ts +61 -0
  1214. package/src/shims/font-google.ts +1 -1
  1215. package/src/shims/font-local.ts +34 -0
  1216. package/src/shims/headers.ts +122 -1
  1217. package/src/shims/navigation-client.ts +36 -32
  1218. package/src/shims/navigation-rsc.ts +47 -0
  1219. package/src/shims/navigation.ts +10 -7
  1220. package/src/utils/state-machine.ts +111 -0
  1221. package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
  1222. package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
  1223. package/dist/_chunks/debug-B3Gypr3D.js +0 -108
  1224. package/dist/_chunks/debug-B3Gypr3D.js.map +0 -1
  1225. package/dist/_chunks/format-RyoGQL74.js +0 -164
  1226. package/dist/_chunks/format-RyoGQL74.js.map +0 -1
  1227. package/dist/_chunks/interception-BOoWmLUA.js +0 -676
  1228. package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
  1229. package/dist/_chunks/metadata-routes-Cjmvi3rQ.js.map +0 -1
  1230. package/dist/_chunks/request-context-BQUC8PHn.js +0 -330
  1231. package/dist/_chunks/request-context-BQUC8PHn.js.map +0 -1
  1232. package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
  1233. package/dist/_chunks/tracing-CemImE6h.js +0 -187
  1234. package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
  1235. package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
  1236. package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
  1237. package/dist/_chunks/use-query-states-D5KaffOK.js +0 -109
  1238. package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
  1239. package/dist/adapters/cloudflare.js.map +0 -1
  1240. package/dist/cache/index.js.map +0 -1
  1241. package/dist/cache/register-cached-function.d.ts +0 -17
  1242. package/dist/cache/register-cached-function.d.ts.map +0 -1
  1243. package/dist/client/browser-entry.d.ts +0 -21
  1244. package/dist/client/browser-entry.d.ts.map +0 -1
  1245. package/dist/client/error-boundary.js.map +0 -1
  1246. package/dist/client/head.d.ts +0 -16
  1247. package/dist/client/head.d.ts.map +0 -1
  1248. package/dist/client/link-status-provider.d.ts +0 -11
  1249. package/dist/client/link-status-provider.d.ts.map +0 -1
  1250. package/dist/client/segment-merger.d.ts +0 -119
  1251. package/dist/client/segment-merger.d.ts.map +0 -1
  1252. package/dist/client/stale-reload.d.ts +0 -44
  1253. package/dist/client/stale-reload.d.ts.map +0 -1
  1254. package/dist/client/transition-root.d.ts +0 -74
  1255. package/dist/client/transition-root.d.ts.map +0 -1
  1256. package/dist/client/use-navigation-pending.d.ts +0 -26
  1257. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  1258. package/dist/client/use-params.d.ts +0 -92
  1259. package/dist/client/use-params.d.ts.map +0 -1
  1260. package/dist/content/index.d.ts +0 -11
  1261. package/dist/content/index.d.ts.map +0 -1
  1262. package/dist/content/index.js +0 -2
  1263. package/dist/plugins/cache-transform.d.ts +0 -36
  1264. package/dist/plugins/cache-transform.d.ts.map +0 -1
  1265. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  1266. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  1267. package/dist/plugins/dev-logs.d.ts.map +0 -1
  1268. package/dist/plugins/dynamic-transform.d.ts +0 -72
  1269. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  1270. package/dist/plugins/server-action-exports.d.ts +0 -26
  1271. package/dist/plugins/server-action-exports.d.ts.map +0 -1
  1272. package/dist/routing/status-file-lint.d.ts +0 -33
  1273. package/dist/routing/status-file-lint.d.ts.map +0 -1
  1274. package/dist/search-params/analyze.d.ts +0 -54
  1275. package/dist/search-params/analyze.d.ts.map +0 -1
  1276. package/dist/search-params/builtin-codecs.d.ts +0 -105
  1277. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  1278. package/dist/search-params/codecs.d.ts +0 -53
  1279. package/dist/search-params/codecs.d.ts.map +0 -1
  1280. package/dist/search-params/create.d.ts +0 -106
  1281. package/dist/search-params/create.d.ts.map +0 -1
  1282. package/dist/search-params/registry.d.ts +0 -20
  1283. package/dist/search-params/registry.d.ts.map +0 -1
  1284. package/dist/server/client-module-map.d.ts +0 -47
  1285. package/dist/server/client-module-map.d.ts.map +0 -1
  1286. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  1287. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  1288. package/dist/server/dev-logger.d.ts.map +0 -1
  1289. package/dist/server/dev-span-processor.d.ts +0 -29
  1290. package/dist/server/dev-span-processor.d.ts.map +0 -1
  1291. package/dist/server/dev-warnings.d.ts +0 -129
  1292. package/dist/server/dev-warnings.d.ts.map +0 -1
  1293. package/dist/server/flush.d.ts +0 -74
  1294. package/dist/server/flush.d.ts.map +0 -1
  1295. package/dist/server/manifest-status-resolver.d.ts +0 -58
  1296. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  1297. package/dist/server/prerender.d.ts +0 -77
  1298. package/dist/server/prerender.d.ts.map +0 -1
  1299. package/dist/server/tree-builder.d.ts +0 -126
  1300. package/dist/server/tree-builder.d.ts.map +0 -1
  1301. package/dist/utils/directive-parser.d.ts +0 -70
  1302. package/dist/utils/directive-parser.d.ts.map +0 -1
  1303. package/src/cache/register-cached-function.ts +0 -103
  1304. package/src/client/browser-entry.ts +0 -678
  1305. package/src/client/head.ts +0 -61
  1306. package/src/client/link-status-provider.tsx +0 -30
  1307. package/src/client/segment-merger.ts +0 -339
  1308. package/src/client/stale-reload.ts +0 -87
  1309. package/src/client/transition-root.tsx +0 -166
  1310. package/src/client/use-navigation-pending.ts +0 -38
  1311. package/src/client/use-params.ts +0 -141
  1312. package/src/content/index.ts +0 -13
  1313. package/src/plugins/cache-transform.ts +0 -199
  1314. package/src/plugins/dev-error-overlay.ts +0 -230
  1315. package/src/plugins/dynamic-transform.ts +0 -161
  1316. package/src/plugins/server-action-exports.ts +0 -220
  1317. package/src/routing/status-file-lint.ts +0 -112
  1318. package/src/search-params/analyze.ts +0 -192
  1319. package/src/search-params/builtin-codecs.ts +0 -228
  1320. package/src/search-params/codecs.ts +0 -153
  1321. package/src/search-params/create.ts +0 -321
  1322. package/src/search-params/registry.ts +0 -31
  1323. package/src/server/client-module-map.ts +0 -58
  1324. package/src/server/dev-fetch-instrumentation.ts +0 -96
  1325. package/src/server/dev-span-processor.ts +0 -78
  1326. package/src/server/dev-warnings.ts +0 -283
  1327. package/src/server/flush.ts +0 -182
  1328. package/src/server/manifest-status-resolver.ts +0 -215
  1329. package/src/server/prerender.ts +0 -139
  1330. package/src/server/tree-builder.ts +0 -382
  1331. package/src/shims/server-only-noop.js +0 -6
  1332. package/src/utils/directive-parser.ts +0 -529
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Router Effects — full-page navigation and post-paint scroll.
3
+ *
4
+ * The two things the router does *to the document* rather than to its own
5
+ * state: leaving the SPA entirely, and moving the scroll position once React
6
+ * has committed. Extracted from `router.ts` to keep that file focused on
7
+ * navigation state (see design/18-build-system.md §"No file >500 lines").
8
+ *
9
+ * See design/19-client-navigation.md §"Scroll Restoration"
10
+ */
11
+
12
+ import { setHardNavigating } from './navigation-root.tsx';
13
+ import type { RenderOwner } from './navigation-transition.ts';
14
+ import { RedirectError, ServerErrorResponse, NonRscResponse } from './rsc-fetch.ts';
15
+ import { recordSkew } from './router-skew.ts';
16
+
17
+ /** The subset of `RouterDeps` the post-paint scroll effects need. */
18
+ export interface ScrollEffectDeps {
19
+ scrollTo: (x: number, y: number) => void;
20
+ afterPaint?: (callback: () => void) => void;
21
+ scrollToHash?: (hash: string) => boolean;
22
+ }
23
+
24
+ export interface ScrollEffects {
25
+ /**
26
+ * Schedule scroll restoration after the next paint and fire the
27
+ * scroll-restored event. Used by navigate, popstate, and refresh.
28
+ */
29
+ restoreScrollAfterPaint: (scrollY: number) => void;
30
+ /**
31
+ * Scroll to the element matching the URL #fragment after paint, falling
32
+ * back to scroll-to-top when no element matches (matching full-page-load
33
+ * behavior for an unknown fragment). Used by forward navigation to a
34
+ * hash-bearing URL (TIM-1035).
35
+ */
36
+ scrollToHashAfterPaint: (hash: string) => void;
37
+ }
38
+
39
+ export function createScrollEffects(deps: ScrollEffectDeps): ScrollEffects {
40
+ /** Run a callback after the next paint (after React commit). */
41
+ function afterPaint(callback: () => void): void {
42
+ if (deps.afterPaint) {
43
+ deps.afterPaint(callback);
44
+ } else {
45
+ callback();
46
+ }
47
+ }
48
+
49
+ function restoreScrollAfterPaint(scrollY: number): void {
50
+ afterPaint(() => {
51
+ deps.scrollTo(0, scrollY);
52
+ window.dispatchEvent(new Event('timber:scroll-restored'));
53
+ });
54
+ }
55
+
56
+ function scrollToHashAfterPaint(hash: string): void {
57
+ afterPaint(() => {
58
+ if (deps.scrollToHash?.(hash) !== true) {
59
+ deps.scrollTo(0, 0);
60
+ }
61
+ window.dispatchEvent(new Event('timber:scroll-restored'));
62
+ });
63
+ }
64
+
65
+ return { restoreScrollAfterPaint, scrollToHashAfterPaint };
66
+ }
67
+
68
+ /**
69
+ * Leave the SPA and never come back.
70
+ *
71
+ * Every router path that gives up on client-side navigation does the same
72
+ * three things: flag the hard navigation so the Navigation API and React stop
73
+ * acting on a dying document, perform the document load, then block forever so
74
+ * the caller cannot carry on rendering into it. The returned promise is
75
+ * deliberately unresolvable — `location` assignment does not stop this turn of
76
+ * the event loop.
77
+ *
78
+ * Callers: server error, non-RSC response, and every version skew path
79
+ * ([33-version-skew.md](../../../../design/33-version-skew.md)).
80
+ */
81
+ export function leaveSpa(url: string, fromUrl: string): Promise<never> {
82
+ setHardNavigating(true);
83
+ hardNavigate(url, fromUrl);
84
+ return new Promise<never>(() => {});
85
+ }
86
+
87
+ export interface SpaExitDeps {
88
+ /** The owner that holds the router right now, or null when idle. */
89
+ currentOwner: () => RenderOwner | null;
90
+ /** Supersede whatever is in flight and take ownership. */
91
+ supersede: () => void;
92
+ }
93
+
94
+ export interface SpaExits {
95
+ /**
96
+ * Leave the SPA — but only if `owner` still owns the router. Every
97
+ * failure a navigation can end on (a server error, a non-RSC response, a
98
+ * version skew) can surface long after the user has clicked something else:
99
+ * a fetch that was never cancellable, a Flight thenable that rejects late.
100
+ * Hard navigating to the abandoned URL would undo that click, so a
101
+ * navigation that no longer owns the router does nothing and lets the one
102
+ * that does drive. Never resolves when it does navigate.
103
+ *
104
+ * Must be called from inside the `runNavigation()` callback. That function's
105
+ * `finally` clears the current controller, so an ownership check downstream
106
+ * of it compares against `null` and never leaves at all.
107
+ */
108
+ leaveSpaIfOwned: (owner: RenderOwner, url: string, fromUrl: string) => Promise<void>;
109
+
110
+ /**
111
+ * Leave the SPA from a path that never entered `runNavigation()` — the
112
+ * stale-client short circuits, which decide before any fetch is attempted.
113
+ *
114
+ * Supersedes first. Nothing else on those paths takes ownership, so without
115
+ * it an in-flight navigation keeps the router: when its fetch or decode
116
+ * fails a moment later it still passes its own ownership check and hard
117
+ * navigates to *its* URL, overwriting the document load started here.
118
+ */
119
+ leaveSpaSuperseding: (url: string, fromUrl: string) => Promise<never>;
120
+ }
121
+
122
+ /**
123
+ * The two ownership-aware ways out of the SPA.
124
+ *
125
+ * Both wrap {@link leaveSpa} with the question "is this navigation still the
126
+ * one the user is waiting for?" — asked before leaving on a failure, answered
127
+ * by force on a path that decided before any navigation began. They live
128
+ * together because every caller of `leaveSpa()` needs one or the other, and
129
+ * an unguarded call is the bug (TIM-1275, TIM-1276).
130
+ */
131
+ export function createSpaExits({ currentOwner, supersede }: SpaExitDeps): SpaExits {
132
+ async function leaveSpaIfOwned(owner: RenderOwner, url: string, fromUrl: string): Promise<void> {
133
+ if (currentOwner() !== owner) return;
134
+ await leaveSpa(url, fromUrl);
135
+ }
136
+
137
+ function leaveSpaSuperseding(url: string, fromUrl: string): Promise<never> {
138
+ supersede();
139
+ return leaveSpa(url, fromUrl);
140
+ }
141
+
142
+ return { leaveSpaIfOwned, leaveSpaSuperseding };
143
+ }
144
+
145
+ export interface NavigationRecoveryDeps {
146
+ /** The owner that holds the router right now, or null when idle. */
147
+ currentOwner: () => RenderOwner | null;
148
+ leaveSpaIfOwned: SpaExits['leaveSpaIfOwned'];
149
+ /** Replace the current entry with `url` — the router's own `navigate()`. */
150
+ navigate: (url: string) => Promise<void>;
151
+ }
152
+
153
+ /**
154
+ * Answer the failures an RSC fetch can end on, or report that this one is not
155
+ * ours to answer.
156
+ *
157
+ * Returns `true` when the error was handled; the caller rethrows on `false`.
158
+ * Handling a failure by leaving the SPA never resolves at all — the document
159
+ * is going away and the caller must not carry on rendering into it.
160
+ *
161
+ * There is exactly one family of these and one response to it, so it lives in
162
+ * one function rather than once per fetch path. `navigate()`, `refresh()` and
163
+ * an uncached traversal all reach it: the latter two used to rethrow instead,
164
+ * and since nobody awaits a traversal that meant pressing Back on a 500 left
165
+ * the user on the old document with an unhandled rejection (TIM-1277).
166
+ *
167
+ * Order matters in exactly one way: `recordSkew()` ends in error-*text*
168
+ * matching, so it goes last and can never pre-empt a framework control-flow
169
+ * signal whose message happens to read like a stale bundle. The class checks
170
+ * above it are mutually exclusive, so their order is free.
171
+ *
172
+ * Must be called from inside the `runNavigation()` callback — see
173
+ * {@link SpaExits.leaveSpaIfOwned}.
174
+ */
175
+ export function createNavigationRecovery({
176
+ currentOwner,
177
+ leaveSpaIfOwned,
178
+ navigate,
179
+ }: NavigationRecoveryDeps) {
180
+ return async function recoverFromNavigationError(
181
+ error: unknown,
182
+ owner: RenderOwner,
183
+ url: string,
184
+ fromUrl: string
185
+ ): Promise<boolean> {
186
+ if (error instanceof RedirectError) {
187
+ // Same ownership rule as leaving the SPA: a superseded navigation must
188
+ // not steer the document to the destination it was abandoned for.
189
+ if (currentOwner() !== owner) return true;
190
+ await navigate(error.redirectUrl);
191
+ return true;
192
+ }
193
+ // A server error, a non-RSC response and a version skew all end the same
194
+ // way: hand `url` back to the server as a document load, so it can render
195
+ // the outcome as HTML (design/10-error-handling.md §"Error Page Rendering
196
+ // for Client Navigation").
197
+ if (
198
+ error instanceof ServerErrorResponse ||
199
+ error instanceof NonRscResponse ||
200
+ recordSkew(error)
201
+ ) {
202
+ await leaveSpaIfOwned(owner, url, fromUrl);
203
+ return true;
204
+ }
205
+ return false;
206
+ };
207
+ }
208
+
209
+ /**
210
+ * Perform the full document load.
211
+ *
212
+ * `fromUrl` is the URL the navigation departed from, passed explicitly
213
+ * because the address bar may have already been updated.
214
+ *
215
+ * When the target differs from the departure point only by #fragment,
216
+ * assigning `href` is a hash change, not a load — so assign first (to update
217
+ * the address bar) and then reload (TIM-1235).
218
+ */
219
+ export function hardNavigate(url: string, fromUrl: string): void {
220
+ const current = new URL(fromUrl, window.location.origin);
221
+ const target = new URL(url, window.location.origin);
222
+ if (target.pathname === current.pathname && target.search === current.search) {
223
+ window.location.href = url;
224
+ window.location.reload();
225
+ } else {
226
+ window.location.href = url;
227
+ }
228
+ }
@@ -0,0 +1,354 @@
1
+ /**
2
+ * Navigation Lifecycle — who owns the router, and when a fetch may be cut.
3
+ *
4
+ * One navigation at a time owns the router. This module holds that ownership
5
+ * as a single `RenderOwner` slot, the rule for taking it (`createNavOwner`
6
+ * supersedes), the wrapper every navigation runs inside (`runNavigation`),
7
+ * and the pending store that `TopLoader` and `usePendingNavigation()`
8
+ * subscribe to.
9
+ *
10
+ * TIM-1481: replaced the transition counter, the `handedOffNavAborts` set,
11
+ * and the `AbortController`-as-owner pattern with `RenderOwner`. Supersession
12
+ * is "take the slot": settle the previous owner and abort its fetch unless
13
+ * handed off.
14
+ *
15
+ * See design/19-client-navigation.md §"How Pending State Works".
16
+ */
17
+
18
+ import { createRenderOwner, type RenderOwner } from './navigation-transition.ts';
19
+ import type { RouterPhase } from './router-types.ts';
20
+
21
+ /**
22
+ * A snapshot of "which page, and was a navigation in flight" at one instant.
23
+ * Captured before an action's POST and compared at response time so the
24
+ * router can tell whether the response still describes the page on screen.
25
+ *
26
+ * `seq` is a monotonic counter bumped on every `createNavOwner` — covering
27
+ * every path through `runNavigation`. `idle` is false when the router is
28
+ * mid-navigation OR a handed-off tree has not yet committed (the
29
+ * handover-to-commit window on the History API fallback).
30
+ *
31
+ * See design/19-client-navigation.md §State Update Invariants (TIM-1474).
32
+ */
33
+ export interface NavigationEpoch {
34
+ readonly seq: number;
35
+ readonly idle: boolean;
36
+ }
37
+
38
+ /** The subset of `RouterDeps` the navigation lifecycle needs. */
39
+ export interface NavigationLifecycleDeps {
40
+ /**
41
+ * Signal that a router-initiated navigation has completed. Resolves the
42
+ * deferred promise that ties the browser's native loading state to the
43
+ * navigation lifecycle.
44
+ */
45
+ completeRouterNavigation?: () => void;
46
+ }
47
+
48
+ export interface NavigationLifecycle {
49
+ /** The owner that holds the router right now, or null when idle. */
50
+ currentOwner: () => RenderOwner | null;
51
+ /**
52
+ * Take ownership of the router, superseding whatever held it. Returns
53
+ * a fresh `RenderOwner` for the new navigation. See the implementation
54
+ * for the three parts of superseding.
55
+ */
56
+ createNavOwner: (
57
+ kind: 'navigation' | 'revalidation',
58
+ externalSignal?: AbortSignal
59
+ ) => RenderOwner;
60
+ /**
61
+ * Run `fn` inside the abort/pending/cleanup lifecycle. AbortErrors are
62
+ * swallowed (not application errors); all other errors propagate.
63
+ */
64
+ runNavigation: (
65
+ url: string,
66
+ fn: (owner: RenderOwner) => Promise<void>,
67
+ externalSignal?: AbortSignal
68
+ ) => Promise<void>;
69
+ /**
70
+ * Record that `owner`'s payload has reached React, so its stream is no
71
+ * longer cuttable. No-op when `owner` no longer owns the router.
72
+ */
73
+ markHandedOff: (owner: RenderOwner) => void;
74
+ /** React has committed `owner`'s tree — every earlier handoff is off screen. */
75
+ forgetOlderHandoffs: (owner: RenderOwner) => void;
76
+
77
+ /** Whether a navigation is currently in flight. */
78
+ isPending: () => boolean;
79
+ /** The URL currently being navigated to, or null if idle. */
80
+ getPendingUrl: () => string | null;
81
+ /** Subscribe to pending state changes. */
82
+ onPendingChange: (listener: (pending: boolean) => void) => () => void;
83
+
84
+ /**
85
+ * Place a revalidation owner in the slot without bumping the navigation
86
+ * sequence. Unlike `createNavOwner`, this does not supersede what's in the
87
+ * slot — the caller (applyActionResult) has already verified the slot is
88
+ * idle via the epoch check. A concurrent navigation will supersede this
89
+ * owner through the normal `createNavOwner` path.
90
+ */
91
+ placeRevalidationOwner: (owner: RenderOwner) => void;
92
+ /** Snapshot the router's navigation state (TIM-1474). */
93
+ epoch: () => NavigationEpoch;
94
+ /** True iff no navigation has started or is in flight since `e` was taken. */
95
+ isEpochCurrent: (e: NavigationEpoch) => boolean;
96
+ /**
97
+ * Run `task` now if the router is idle, otherwise once when it next becomes
98
+ * idle (pending false AND commit done). Single slot — a later request
99
+ * replaces an earlier one (TIM-1474).
100
+ */
101
+ runWhenIdle: (task: () => void) => void;
102
+ /**
103
+ * Settle any handed-off-but-uncommitted owners as superseded, then flush
104
+ * the idle task if the router is now idle. Called by `syncShallowSearch`
105
+ * when a shallow URL update displaces a suspended transition — without
106
+ * it, `hasUncommittedNav` stays true indefinitely and `runWhenIdle`
107
+ * tasks never fire (TIM-1480).
108
+ */
109
+ settleHandoffs: () => void;
110
+ }
111
+
112
+ /**
113
+ * Check if an error is an abort error (connection closed / fetch aborted).
114
+ * Browsers throw DOMException with name 'AbortError' when a fetch is aborted.
115
+ */
116
+ function isAbortError(error: unknown): boolean {
117
+ if (error instanceof DOMException && error.name === 'AbortError') return true;
118
+ if (error instanceof Error && error.name === 'AbortError') return true;
119
+ return false;
120
+ }
121
+
122
+ export function createNavigationLifecycle(deps: NavigationLifecycleDeps): NavigationLifecycle {
123
+ // The single ownership slot. One navigation at a time.
124
+ let current: RenderOwner | null = null;
125
+
126
+ // A handed-off-but-uncommitted owner that `runNavigation`'s finally has
127
+ // already cleared from `current`. Tracked separately so `createNavOwner`
128
+ // can settle it as superseded if a new navigation starts before the
129
+ // commit (P1 from codex on #1127). Cleared by `forgetOlderHandoffs`
130
+ // (commit) or by `createNavOwner` (supersession).
131
+ let pendingCommit: RenderOwner | null = null;
132
+
133
+ let routerPhase: RouterPhase = { phase: 'idle' };
134
+ const pendingListeners = new Set<(pending: boolean) => void>();
135
+
136
+ let navigationSeq = 0;
137
+ let idleTask: (() => void) | null = null;
138
+
139
+ /**
140
+ * Whether a handed-off tree has not yet committed. Derived from the slot:
141
+ * true when `current` is handed off but not yet settled.
142
+ */
143
+ function hasUncommittedNav(): boolean {
144
+ return (
145
+ pendingCommit !== null || (current !== null && current.handedOff && current.outcome === null)
146
+ );
147
+ }
148
+
149
+ /**
150
+ * Cancel a navigation's RSC fetch — unless its tree is the one on screen.
151
+ *
152
+ * THE only place a navigation controller is aborted. Every path that gives
153
+ * up on a navigation calls this, so the "is this tree displayed?" question
154
+ * is asked once rather than at each site. A new abort path is a call to
155
+ * this, not a copy of `controller.abort()`.
156
+ *
157
+ * See design/19-client-navigation.md §"A navigation that reached React
158
+ * keeps its stream".
159
+ */
160
+ function abortUnlessHandedOff(owner: RenderOwner): void {
161
+ if (owner.handedOff) return;
162
+ owner.fetchAbort.abort();
163
+ }
164
+
165
+ /**
166
+ * Create a new RenderOwner for a navigation, superseding any previous
167
+ * in-flight navigation. Optionally links to an external signal (e.g.,
168
+ * from the Navigation API's NavigateEvent.signal).
169
+ *
170
+ * Superseding is one operation with three parts:
171
+ * 1. Abort the previous navigation's fetch — UNLESS its tree is the one on
172
+ * screen, in which case tearing the stream down would error the page the
173
+ * user is currently looking at. See `RenderOwner.handedOff`.
174
+ * 2. Settle the previous owner as 'superseded' so its transition detects
175
+ * it lost and never hands a stale tree to React. This replaces both
176
+ * `supersedeNavigationTransitions()` and the transition counter bump.
177
+ * 3. Resolve its Navigation API deferred — the superseded navigation's
178
+ * finally block is staleness-guarded (see TIM-1034) and no longer
179
+ * cleans up after itself, so the browser's native loading state for
180
+ * the dead navigation is cleared here.
181
+ */
182
+ function createNavOwner(
183
+ kind: 'navigation' | 'revalidation',
184
+ externalSignal?: AbortSignal
185
+ ): RenderOwner {
186
+ if (current) {
187
+ abortUnlessHandedOff(current);
188
+ current.settle('superseded');
189
+ deps.completeRouterNavigation?.();
190
+ }
191
+ // A handed-off owner whose runNavigation has already finished but whose
192
+ // tree hasn't committed yet. Settle it so its onCommit fires.
193
+ if (pendingCommit) {
194
+ pendingCommit.settle('superseded');
195
+ pendingCommit = null;
196
+ }
197
+ navigationSeq += 1;
198
+ const owner = createRenderOwner(kind);
199
+ current = owner;
200
+
201
+ // If an external signal is provided (e.g., Navigation API),
202
+ // forward its abort to our controller.
203
+ //
204
+ // This is a second, independent way a navigation dies, and it fires for
205
+ // the same reason as the branch above: the browser aborts a
206
+ // NavigateEvent's signal when that navigation is superseded. So it needs
207
+ // the same guard — without it, an intercepted push/replace or traversal
208
+ // whose tree is already on screen still loses its stream, and the guard
209
+ // above only appears to work because plain `router.navigate()` carries no
210
+ // external signal (codex on #1004).
211
+ if (externalSignal) {
212
+ if (externalSignal.aborted) {
213
+ abortUnlessHandedOff(owner);
214
+ } else {
215
+ externalSignal.addEventListener('abort', () => abortUnlessHandedOff(owner), { once: true });
216
+ }
217
+ }
218
+
219
+ return owner;
220
+ }
221
+
222
+ function setPending(value: boolean, url?: string): void {
223
+ const next: RouterPhase =
224
+ value && url ? { phase: 'navigating', targetUrl: url } : { phase: 'idle' };
225
+ // Skip no-op updates
226
+ if (
227
+ routerPhase.phase === next.phase &&
228
+ (routerPhase.phase === 'idle' ||
229
+ (routerPhase.phase === 'navigating' &&
230
+ next.phase === 'navigating' &&
231
+ routerPhase.targetUrl === next.targetUrl))
232
+ ) {
233
+ return;
234
+ }
235
+ routerPhase = next;
236
+ // Notify subscribers. This is the ONLY pending representation — React and
237
+ // non-React consumers alike read it, React ones through
238
+ // `usePendingNavigation()`'s `useSyncExternalStore` (TIM-1307).
239
+ for (const listener of pendingListeners) {
240
+ listener(value);
241
+ }
242
+ }
243
+
244
+ /**
245
+ * Wrap a navigation in the standard abort/pending/cleanup lifecycle.
246
+ * Consolidates the createNavOwner + setPending + staleness-guarded
247
+ * finally that was duplicated across navigate, refresh, and both
248
+ * handlePopState paths. AbortErrors are swallowed (not application
249
+ * errors); all other errors propagate to the caller.
250
+ */
251
+ async function runNavigation(
252
+ url: string,
253
+ fn: (owner: RenderOwner) => Promise<void>,
254
+ externalSignal?: AbortSignal
255
+ ): Promise<void> {
256
+ const owner = createNavOwner('navigation', externalSignal);
257
+ setPending(true, url);
258
+ try {
259
+ await fn(owner);
260
+ } catch (error) {
261
+ if (isAbortError(error)) return;
262
+ throw error;
263
+ } finally {
264
+ if (current === owner) {
265
+ current = null;
266
+ setPending(false);
267
+ deps.completeRouterNavigation?.();
268
+ flushIdleTask();
269
+ }
270
+ }
271
+ }
272
+
273
+ function flushIdleTask(): void {
274
+ if (routerPhase.phase !== 'idle' || hasUncommittedNav() || !idleTask) return;
275
+ const task = idleTask;
276
+ idleTask = null;
277
+ task();
278
+ }
279
+
280
+ return {
281
+ currentOwner: () => current,
282
+ createNavOwner,
283
+ runNavigation,
284
+
285
+ // Guarded on still owning the router. A superseded navigation can still
286
+ // reach here: a prefetch hit answers from `prefetchCache`, whose payload
287
+ // was fetched under the PREFETCH's controller, so aborting this
288
+ // navigation's controller does not stop it and `perform()` runs to
289
+ // completion. `navigateTransition`'s stale check happens after
290
+ // `perform()` returns, so without this the loser would claim ownership
291
+ // moments before being discarded — and the next navigation would then
292
+ // abort the winner's still-streaming response, erroring the visible tree
293
+ // (codex on #1004).
294
+ markHandedOff(owner: RenderOwner): void {
295
+ if (current !== owner) return;
296
+ owner.handedOff = true;
297
+ pendingCommit = owner;
298
+ },
299
+
300
+ // React has committed THIS tree, so every earlier one is unmounted and
301
+ // their streams no longer feed anything on screen. The owner's `handedOff`
302
+ // boolean already captured the individual state; settling clears the
303
+ // "uncommitted" window. Unlike the old `handedOffNavAborts` set, there is
304
+ // no set to prune — the single slot means at most one owner is current.
305
+ forgetOlderHandoffs(owner: RenderOwner): void {
306
+ owner.settle('committed');
307
+ if (pendingCommit === owner) {
308
+ pendingCommit = null;
309
+ }
310
+ flushIdleTask();
311
+ },
312
+
313
+ placeRevalidationOwner(owner: RenderOwner): void {
314
+ current = owner;
315
+ },
316
+
317
+ isPending: () => routerPhase.phase === 'navigating',
318
+ getPendingUrl: () => (routerPhase.phase === 'navigating' ? routerPhase.targetUrl : null),
319
+ onPendingChange(listener) {
320
+ pendingListeners.add(listener);
321
+ return () => pendingListeners.delete(listener);
322
+ },
323
+
324
+ epoch(): NavigationEpoch {
325
+ return {
326
+ seq: navigationSeq,
327
+ idle: routerPhase.phase === 'idle' && !hasUncommittedNav(),
328
+ };
329
+ },
330
+ isEpochCurrent(e: NavigationEpoch): boolean {
331
+ return (
332
+ e.idle && routerPhase.phase === 'idle' && !hasUncommittedNav() && navigationSeq === e.seq
333
+ );
334
+ },
335
+ runWhenIdle(task: () => void): void {
336
+ if (routerPhase.phase === 'idle' && !hasUncommittedNav()) {
337
+ task();
338
+ return;
339
+ }
340
+ idleTask = task;
341
+ },
342
+
343
+ settleHandoffs(): void {
344
+ if (pendingCommit) {
345
+ pendingCommit.settle('superseded');
346
+ pendingCommit = null;
347
+ }
348
+ if (current !== null && current.handedOff && current.outcome === null) {
349
+ current.settle('superseded');
350
+ }
351
+ flushIdleTask();
352
+ },
353
+ };
354
+ }