@timber-js/app 0.2.0-alpha.2 → 0.2.0-alpha.200

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 (1329) hide show
  1. package/LICENSE +8 -0
  2. package/agent-skill.md +346 -0
  3. package/dist/_chunks/actions-d1hCqnU3.js +345 -0
  4. package/dist/_chunks/actions-d1hCqnU3.js.map +1 -0
  5. package/dist/_chunks/als-registry-C6kcfprT.js +41 -0
  6. package/dist/_chunks/als-registry-C6kcfprT.js.map +1 -0
  7. package/dist/_chunks/als-slots-BEEIPKYm.js +26 -0
  8. package/dist/_chunks/als-slots-BEEIPKYm.js.map +1 -0
  9. package/dist/_chunks/base-path-DaQrzbez.js +80 -0
  10. package/dist/_chunks/base-path-DaQrzbez.js.map +1 -0
  11. package/dist/_chunks/build-manifest-DTmSGLRz.js +135 -0
  12. package/dist/_chunks/build-manifest-DTmSGLRz.js.map +1 -0
  13. package/dist/_chunks/build-output-helper-9dqCv1pZ.js +370 -0
  14. package/dist/_chunks/build-output-helper-9dqCv1pZ.js.map +1 -0
  15. package/dist/_chunks/cache-api-ByagcC-J.js +1149 -0
  16. package/dist/_chunks/cache-api-ByagcC-J.js.map +1 -0
  17. package/dist/_chunks/canonicalize-CgHoscYO.js +66 -0
  18. package/dist/_chunks/canonicalize-CgHoscYO.js.map +1 -0
  19. package/dist/_chunks/chains-Bpb0W4ax.js +412 -0
  20. package/dist/_chunks/chains-Bpb0W4ax.js.map +1 -0
  21. package/dist/_chunks/cli-check-D6VolrDV.js +293 -0
  22. package/dist/_chunks/cli-check-D6VolrDV.js.map +1 -0
  23. package/dist/_chunks/cli-schema-sync-D6rO-VcS.js +299 -0
  24. package/dist/_chunks/cli-schema-sync-D6rO-VcS.js.map +1 -0
  25. package/dist/_chunks/cloudflare-BFb__LYG.js +1290 -0
  26. package/dist/_chunks/cloudflare-BFb__LYG.js.map +1 -0
  27. package/dist/_chunks/codec-registry-oOUxugz3.js +21 -0
  28. package/dist/_chunks/codec-registry-oOUxugz3.js.map +1 -0
  29. package/dist/_chunks/convention-lint-fRkwVwEH.js +893 -0
  30. package/dist/_chunks/convention-lint-fRkwVwEH.js.map +1 -0
  31. package/dist/_chunks/dist-DtrJyBbw.js +386 -0
  32. package/dist/_chunks/dist-DtrJyBbw.js.map +1 -0
  33. package/dist/_chunks/error-boundary-BfPHZjm0.js +1050 -0
  34. package/dist/_chunks/error-boundary-BfPHZjm0.js.map +1 -0
  35. package/dist/_chunks/fast-hash-C-tVYrLb.js +41 -0
  36. package/dist/_chunks/fast-hash-C-tVYrLb.js.map +1 -0
  37. package/dist/_chunks/file-cache-Dw6BJPG7.js +458 -0
  38. package/dist/_chunks/file-cache-Dw6BJPG7.js.map +1 -0
  39. package/dist/_chunks/format-BKclgVbk.js +14 -0
  40. package/dist/_chunks/format-BKclgVbk.js.map +1 -0
  41. package/dist/_chunks/fs-identity-D7vb6GdI.js +208 -0
  42. package/dist/_chunks/fs-identity-D7vb6GdI.js.map +1 -0
  43. package/dist/_chunks/graph-cache-CP4GEmf9.js +304 -0
  44. package/dist/_chunks/graph-cache-CP4GEmf9.js.map +1 -0
  45. package/dist/_chunks/href-validation-BIrxavIy.js +213 -0
  46. package/dist/_chunks/href-validation-BIrxavIy.js.map +1 -0
  47. package/dist/_chunks/json-lossy-check-ClNvBM_3.js +63 -0
  48. package/dist/_chunks/json-lossy-check-ClNvBM_3.js.map +1 -0
  49. package/dist/_chunks/live-graph-D_2D32Ad.js +150 -0
  50. package/dist/_chunks/live-graph-D_2D32Ad.js.map +1 -0
  51. package/dist/_chunks/logger-uLBuGKDI.js +1484 -0
  52. package/dist/_chunks/logger-uLBuGKDI.js.map +1 -0
  53. package/dist/_chunks/navigation-context-D0TU0Jog.js +135 -0
  54. package/dist/_chunks/navigation-context-D0TU0Jog.js.map +1 -0
  55. package/dist/_chunks/navigation-root-mHSK9psY.js +126 -0
  56. package/dist/_chunks/navigation-root-mHSK9psY.js.map +1 -0
  57. package/dist/_chunks/param-value-C8TNYchQ.js +66 -0
  58. package/dist/_chunks/param-value-C8TNYchQ.js.map +1 -0
  59. package/dist/_chunks/plugin-context-8idfR3UZ.js +321 -0
  60. package/dist/_chunks/plugin-context-8idfR3UZ.js.map +1 -0
  61. package/dist/_chunks/poison-rules-DoEhbqaY.js +110 -0
  62. package/dist/_chunks/poison-rules-DoEhbqaY.js.map +1 -0
  63. package/dist/_chunks/poison-scan-Bm9Yyqk9.js +101 -0
  64. package/dist/_chunks/poison-scan-Bm9Yyqk9.js.map +1 -0
  65. package/dist/_chunks/purge-store-Byr8XOjU.js +14 -0
  66. package/dist/_chunks/purge-store-Byr8XOjU.js.map +1 -0
  67. package/dist/_chunks/resolve-schema-CBR6Lm4i.js +50 -0
  68. package/dist/_chunks/resolve-schema-CBR6Lm4i.js.map +1 -0
  69. package/dist/_chunks/rolldown-runtime-D7D4PA-g.js +13 -0
  70. package/dist/_chunks/rsc-cache-key-ClUiXQnK.js +243 -0
  71. package/dist/_chunks/rsc-cache-key-ClUiXQnK.js.map +1 -0
  72. package/dist/_chunks/rsc-media-type-DDc7duTD.js +61 -0
  73. package/dist/_chunks/rsc-media-type-DDc7duTD.js.map +1 -0
  74. package/dist/_chunks/rsc-payload-path-B_LBodc2.js +48 -0
  75. package/dist/_chunks/rsc-payload-path-B_LBodc2.js.map +1 -0
  76. package/dist/_chunks/scan-BoP17W3w.js +140 -0
  77. package/dist/_chunks/scan-BoP17W3w.js.map +1 -0
  78. package/dist/_chunks/scanner-AiazgH_f.js +1771 -0
  79. package/dist/_chunks/scanner-AiazgH_f.js.map +1 -0
  80. package/dist/_chunks/schema-bridge-C83xa9lT.js +199 -0
  81. package/dist/_chunks/schema-bridge-C83xa9lT.js.map +1 -0
  82. package/dist/_chunks/segment-classify-C539Pa2O.js +197 -0
  83. package/dist/_chunks/segment-classify-C539Pa2O.js.map +1 -0
  84. package/dist/_chunks/segment-context-D9_89u34.js +34 -0
  85. package/dist/_chunks/segment-context-D9_89u34.js.map +1 -0
  86. package/dist/_chunks/segment-keys-lqtdookO.js +256 -0
  87. package/dist/_chunks/segment-keys-lqtdookO.js.map +1 -0
  88. package/dist/_chunks/singleflight-2lUWfcAk.js +54 -0
  89. package/dist/_chunks/singleflight-2lUWfcAk.js.map +1 -0
  90. package/dist/_chunks/sizeof-lXffQ1Vr.js +35 -0
  91. package/dist/_chunks/sizeof-lXffQ1Vr.js.map +1 -0
  92. package/dist/_chunks/{ssr-data-DLnbYpj1.js → ssr-data-D6T6Y3ef.js} +3 -31
  93. package/dist/_chunks/ssr-data-D6T6Y3ef.js.map +1 -0
  94. package/dist/_chunks/state-FippDgxN.js +52 -0
  95. package/dist/_chunks/state-FippDgxN.js.map +1 -0
  96. package/dist/_chunks/status-page-marker-DwQBrLBz.js +496 -0
  97. package/dist/_chunks/status-page-marker-DwQBrLBz.js.map +1 -0
  98. package/dist/_chunks/use-query-states-I3JMng6J.js +226 -0
  99. package/dist/_chunks/use-query-states-I3JMng6J.js.map +1 -0
  100. package/dist/_chunks/walkers-B6XUtmqK.js +144 -0
  101. package/dist/_chunks/walkers-B6XUtmqK.js.map +1 -0
  102. package/dist/adapters/build-output-helper.d.ts +72 -0
  103. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  104. package/dist/adapters/cloudflare-dev.d.ts +109 -0
  105. package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
  106. package/dist/adapters/cloudflare-dev.js +74 -0
  107. package/dist/adapters/cloudflare-dev.js.map +1 -0
  108. package/dist/adapters/cloudflare-kv-cache.d.ts +65 -0
  109. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
  110. package/dist/adapters/cloudflare-kv-cache.js +123 -0
  111. package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
  112. package/dist/adapters/cloudflare.d.ts +200 -22
  113. package/dist/adapters/cloudflare.d.ts.map +1 -1
  114. package/dist/adapters/cloudflare.js +2 -188
  115. package/dist/adapters/compress-module.d.ts +17 -4
  116. package/dist/adapters/compress-module.d.ts.map +1 -1
  117. package/dist/adapters/fs-identity.d.ts +64 -0
  118. package/dist/adapters/fs-identity.d.ts.map +1 -0
  119. package/dist/adapters/nitro-presets.d.ts +37 -0
  120. package/dist/adapters/nitro-presets.d.ts.map +1 -0
  121. package/dist/adapters/nitro-preview.d.ts +32 -0
  122. package/dist/adapters/nitro-preview.d.ts.map +1 -0
  123. package/dist/adapters/nitro.d.ts +82 -37
  124. package/dist/adapters/nitro.d.ts.map +1 -1
  125. package/dist/adapters/nitro.js +457 -288
  126. package/dist/adapters/nitro.js.map +1 -1
  127. package/dist/adapters/shared.d.ts +62 -0
  128. package/dist/adapters/shared.d.ts.map +1 -0
  129. package/dist/adapters/types.d.ts +28 -6
  130. package/dist/adapters/types.d.ts.map +1 -1
  131. package/dist/analyze/chains.d.ts +124 -0
  132. package/dist/analyze/chains.d.ts.map +1 -0
  133. package/dist/analyze/classify.d.ts +150 -0
  134. package/dist/analyze/classify.d.ts.map +1 -0
  135. package/dist/analyze/crawl-entry.d.ts +17 -0
  136. package/dist/analyze/crawl-entry.d.ts.map +1 -0
  137. package/dist/analyze/crawl-entry.js +313 -0
  138. package/dist/analyze/crawl-entry.js.map +1 -0
  139. package/dist/analyze/crawl.d.ts +134 -0
  140. package/dist/analyze/crawl.d.ts.map +1 -0
  141. package/dist/analyze/graph-cache.d.ts +104 -0
  142. package/dist/analyze/graph-cache.d.ts.map +1 -0
  143. package/dist/analyze/graph-command.d.ts +43 -0
  144. package/dist/analyze/graph-command.d.ts.map +1 -0
  145. package/dist/analyze/graph-command.js +472 -0
  146. package/dist/analyze/graph-command.js.map +1 -0
  147. package/dist/analyze/live-graph.d.ts +81 -0
  148. package/dist/analyze/live-graph.d.ts.map +1 -0
  149. package/dist/analyze/poison-rules.d.ts +72 -0
  150. package/dist/analyze/poison-rules.d.ts.map +1 -0
  151. package/dist/analyze/poison-scan.d.ts +48 -0
  152. package/dist/analyze/poison-scan.d.ts.map +1 -0
  153. package/dist/analyze/scan.d.ts +73 -0
  154. package/dist/analyze/scan.d.ts.map +1 -0
  155. package/dist/cache/cache-api.d.ts +48 -0
  156. package/dist/cache/cache-api.d.ts.map +1 -0
  157. package/dist/cache/fast-hash.d.ts +27 -0
  158. package/dist/cache/fast-hash.d.ts.map +1 -0
  159. package/dist/cache/handler-store.d.ts +33 -0
  160. package/dist/cache/handler-store.d.ts.map +1 -0
  161. package/dist/cache/index.d.ts +32 -9
  162. package/dist/cache/index.d.ts.map +1 -1
  163. package/dist/cache/index.js +3 -284
  164. package/dist/cache/invalidation-epoch.d.ts +43 -0
  165. package/dist/cache/invalidation-epoch.d.ts.map +1 -0
  166. package/dist/cache/json-lossy-check.d.ts +11 -0
  167. package/dist/cache/json-lossy-check.d.ts.map +1 -0
  168. package/dist/cache/redis-handler.d.ts +141 -9
  169. package/dist/cache/redis-handler.d.ts.map +1 -1
  170. package/dist/cache/singleflight.d.ts +21 -2
  171. package/dist/cache/singleflight.d.ts.map +1 -1
  172. package/dist/cache/sizeof.d.ts +22 -0
  173. package/dist/cache/sizeof.d.ts.map +1 -0
  174. package/dist/cache/stable-stringify.d.ts +9 -0
  175. package/dist/cache/stable-stringify.d.ts.map +1 -1
  176. package/dist/cache/store.d.ts +53 -0
  177. package/dist/cache/store.d.ts.map +1 -0
  178. package/dist/cache/stores/cloudflare-kv.d.ts +38 -0
  179. package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -0
  180. package/dist/cache/stores/cloudflare-kv.js +29 -0
  181. package/dist/cache/stores/cloudflare-kv.js.map +1 -0
  182. package/dist/cache/stores/memory.d.ts +42 -0
  183. package/dist/cache/stores/memory.d.ts.map +1 -0
  184. package/dist/cache/stores/memory.js +90 -0
  185. package/dist/cache/stores/memory.js.map +1 -0
  186. package/dist/cache/stores/redis.d.ts +69 -0
  187. package/dist/cache/stores/redis.d.ts.map +1 -0
  188. package/dist/cache/stores/redis.js +35 -0
  189. package/dist/cache/stores/redis.js.map +1 -0
  190. package/dist/cache/stores/vercel.d.ts +36 -0
  191. package/dist/cache/stores/vercel.d.ts.map +1 -0
  192. package/dist/cache/stores/vercel.js +33 -0
  193. package/dist/cache/stores/vercel.js.map +1 -0
  194. package/dist/cache/tag-aware-handler.d.ts +52 -0
  195. package/dist/cache/tag-aware-handler.d.ts.map +1 -0
  196. package/dist/cache/timber-cache.d.ts +21 -11
  197. package/dist/cache/timber-cache.d.ts.map +1 -1
  198. package/dist/cdn/cloudflare-purge.d.ts +23 -0
  199. package/dist/cdn/cloudflare-purge.d.ts.map +1 -0
  200. package/dist/cdn/cloudflare-purge.js +30 -0
  201. package/dist/cdn/cloudflare-purge.js.map +1 -0
  202. package/dist/cdn/fastly-purge.d.ts +25 -0
  203. package/dist/cdn/fastly-purge.d.ts.map +1 -0
  204. package/dist/cdn/fastly-purge.js +33 -0
  205. package/dist/cdn/fastly-purge.js.map +1 -0
  206. package/dist/cdn/headers.d.ts +97 -0
  207. package/dist/cdn/headers.d.ts.map +1 -0
  208. package/dist/cdn/index.d.ts +5 -0
  209. package/dist/cdn/index.d.ts.map +1 -0
  210. package/dist/cdn/index.js +94 -0
  211. package/dist/cdn/index.js.map +1 -0
  212. package/dist/cdn/purge-store.d.ts +23 -0
  213. package/dist/cdn/purge-store.d.ts.map +1 -0
  214. package/dist/cdn/workers-cache-purge.d.ts +20 -0
  215. package/dist/cdn/workers-cache-purge.d.ts.map +1 -0
  216. package/dist/cdn/workers-cache-purge.js +35 -0
  217. package/dist/cdn/workers-cache-purge.js.map +1 -0
  218. package/dist/cli-check.d.ts +163 -0
  219. package/dist/cli-check.d.ts.map +1 -0
  220. package/dist/cli-schema-sync.d.ts +59 -0
  221. package/dist/cli-schema-sync.d.ts.map +1 -0
  222. package/dist/cli.d.ts +75 -8
  223. package/dist/cli.d.ts.map +1 -1
  224. package/dist/cli.js +175 -47
  225. package/dist/cli.js.map +1 -1
  226. package/dist/client/browser-dev.d.ts +37 -1
  227. package/dist/client/browser-dev.d.ts.map +1 -1
  228. package/dist/client/browser-entry/action-dispatch.d.ts +19 -0
  229. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  230. package/dist/client/browser-entry/action-queue.d.ts +44 -0
  231. package/dist/client/browser-entry/action-queue.d.ts.map +1 -0
  232. package/dist/client/browser-entry/hmr.d.ts +21 -0
  233. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  234. package/dist/client/browser-entry/hydrate.d.ts +63 -0
  235. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  236. package/dist/client/browser-entry/index.d.ts +30 -0
  237. package/dist/client/browser-entry/index.d.ts.map +1 -0
  238. package/dist/client/browser-entry/post-hydration.d.ts +29 -0
  239. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  240. package/dist/client/browser-entry/router-init.d.ts +46 -0
  241. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  242. package/dist/client/browser-entry/rsc-stream.d.ts +32 -0
  243. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  244. package/dist/client/browser-entry/scroll.d.ts +28 -0
  245. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  246. package/dist/client/deny-last-resort.d.ts +29 -0
  247. package/dist/client/deny-last-resort.d.ts.map +1 -0
  248. package/dist/client/error-boundary.d.ts +66 -6
  249. package/dist/client/error-boundary.d.ts.map +1 -1
  250. package/dist/client/error-boundary.js +2 -126
  251. package/dist/client/error-reconstituter.d.ts +61 -0
  252. package/dist/client/error-reconstituter.d.ts.map +1 -0
  253. package/dist/client/form.d.ts +16 -27
  254. package/dist/client/form.d.ts.map +1 -1
  255. package/dist/client/global-context.d.ts +15 -0
  256. package/dist/client/global-context.d.ts.map +1 -0
  257. package/dist/client/history.d.ts +50 -9
  258. package/dist/client/history.d.ts.map +1 -1
  259. package/dist/client/index.d.ts +20 -33
  260. package/dist/client/index.d.ts.map +1 -1
  261. package/dist/client/index.js +323 -1148
  262. package/dist/client/index.js.map +1 -1
  263. package/dist/client/internal.d.ts +20 -0
  264. package/dist/client/internal.d.ts.map +1 -0
  265. package/dist/client/internal.js +818 -0
  266. package/dist/client/internal.js.map +1 -0
  267. package/dist/client/link.d.ts +63 -60
  268. package/dist/client/link.d.ts.map +1 -1
  269. package/dist/client/location-search.d.ts +12 -0
  270. package/dist/client/location-search.d.ts.map +1 -0
  271. package/dist/client/navigation-api.d.ts +121 -0
  272. package/dist/client/navigation-api.d.ts.map +1 -0
  273. package/dist/client/navigation-commit.d.ts +98 -0
  274. package/dist/client/navigation-commit.d.ts.map +1 -0
  275. package/dist/client/navigation-context.d.ts +51 -31
  276. package/dist/client/navigation-context.d.ts.map +1 -1
  277. package/dist/client/navigation-root.d.ts +98 -0
  278. package/dist/client/navigation-root.d.ts.map +1 -0
  279. package/dist/client/navigation-transition.d.ts +187 -0
  280. package/dist/client/navigation-transition.d.ts.map +1 -0
  281. package/dist/client/nuqs-adapter.d.ts +1 -1
  282. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  283. package/dist/client/params-context.d.ts +81 -0
  284. package/dist/client/params-context.d.ts.map +1 -0
  285. package/dist/client/react-root.d.ts +44 -0
  286. package/dist/client/react-root.d.ts.map +1 -0
  287. package/dist/client/router-effects.d.ts +130 -0
  288. package/dist/client/router-effects.d.ts.map +1 -0
  289. package/dist/client/router-lifecycle.d.ts +98 -0
  290. package/dist/client/router-lifecycle.d.ts.map +1 -0
  291. package/dist/client/router-pipeline.d.ts +87 -0
  292. package/dist/client/router-pipeline.d.ts.map +1 -0
  293. package/dist/client/router-ref.d.ts +2 -2
  294. package/dist/client/router-ref.d.ts.map +1 -1
  295. package/dist/client/router-skew.d.ts +21 -0
  296. package/dist/client/router-skew.d.ts.map +1 -0
  297. package/dist/client/router-types.d.ts +272 -0
  298. package/dist/client/router-types.d.ts.map +1 -0
  299. package/dist/client/router.d.ts +1 -97
  300. package/dist/client/router.d.ts.map +1 -1
  301. package/dist/client/rsc-fetch.d.ts +104 -26
  302. package/dist/client/rsc-fetch.d.ts.map +1 -1
  303. package/dist/client/segment-cache.d.ts +161 -25
  304. package/dist/client/segment-cache.d.ts.map +1 -1
  305. package/dist/client/segment-context.d.ts +1 -1
  306. package/dist/client/segment-context.d.ts.map +1 -1
  307. package/dist/client/segment-outlet.d.ts +68 -0
  308. package/dist/client/segment-outlet.d.ts.map +1 -0
  309. package/dist/client/segment-update-context.d.ts +15 -0
  310. package/dist/client/segment-update-context.d.ts.map +1 -0
  311. package/dist/client/shallow-url.d.ts +10 -0
  312. package/dist/client/shallow-url.d.ts.map +1 -0
  313. package/dist/client/slot-content-cache-context.d.ts +35 -0
  314. package/dist/client/slot-content-cache-context.d.ts.map +1 -0
  315. package/dist/client/slot-context.d.ts +31 -0
  316. package/dist/client/slot-context.d.ts.map +1 -0
  317. package/dist/client/slot-outlet.d.ts +16 -0
  318. package/dist/client/slot-outlet.d.ts.map +1 -0
  319. package/dist/client/slot-provider.d.ts +25 -0
  320. package/dist/client/slot-provider.d.ts.map +1 -0
  321. package/dist/client/ssr-data.d.ts +29 -7
  322. package/dist/client/ssr-data.d.ts.map +1 -1
  323. package/dist/client/stale-client.d.ts +69 -0
  324. package/dist/client/stale-client.d.ts.map +1 -0
  325. package/dist/client/state.d.ts +19 -8
  326. package/dist/client/state.d.ts.map +1 -1
  327. package/dist/client/status-page-marker.d.ts +25 -0
  328. package/dist/client/status-page-marker.d.ts.map +1 -0
  329. package/dist/client/top-loader.d.ts +7 -6
  330. package/dist/client/top-loader.d.ts.map +1 -1
  331. package/dist/client/unload-guard.d.ts +5 -0
  332. package/dist/client/unload-guard.d.ts.map +1 -1
  333. package/dist/client/use-cookie.d.ts +12 -0
  334. package/dist/client/use-cookie.d.ts.map +1 -1
  335. package/dist/client/use-link-status.d.ts +5 -5
  336. package/dist/client/use-link-status.d.ts.map +1 -1
  337. package/dist/client/use-pathname.d.ts +13 -11
  338. package/dist/client/use-pathname.d.ts.map +1 -1
  339. package/dist/client/use-pending-navigation.d.ts +23 -0
  340. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  341. package/dist/client/use-query-states.d.ts +10 -4
  342. package/dist/client/use-query-states.d.ts.map +1 -1
  343. package/dist/client/use-router.d.ts +2 -2
  344. package/dist/client/use-router.d.ts.map +1 -1
  345. package/dist/client/use-search-params.d.ts +15 -8
  346. package/dist/client/use-search-params.d.ts.map +1 -1
  347. package/dist/client/use-segment-params.d.ts +55 -0
  348. package/dist/client/use-segment-params.d.ts.map +1 -0
  349. package/dist/codec.d.ts +69 -0
  350. package/dist/codec.d.ts.map +1 -0
  351. package/dist/codec.js +76 -0
  352. package/dist/codec.js.map +1 -0
  353. package/dist/config-types.d.ts +322 -0
  354. package/dist/config-types.d.ts.map +1 -0
  355. package/dist/config-validation.d.ts +51 -0
  356. package/dist/config-validation.d.ts.map +1 -0
  357. package/dist/cookies/define-cookie.d.ts +58 -25
  358. package/dist/cookies/define-cookie.d.ts.map +1 -1
  359. package/dist/cookies/index.d.ts +3 -2
  360. package/dist/cookies/index.d.ts.map +1 -1
  361. package/dist/cookies/index.js +256 -36
  362. package/dist/cookies/index.js.map +1 -1
  363. package/dist/cookies/json-cookie.d.ts +64 -0
  364. package/dist/cookies/json-cookie.d.ts.map +1 -0
  365. package/dist/cookies/validation.d.ts +34 -0
  366. package/dist/cookies/validation.d.ts.map +1 -0
  367. package/dist/dev-tools/404-page.d.ts +50 -0
  368. package/dist/dev-tools/404-page.d.ts.map +1 -0
  369. package/dist/dev-tools/browser-logs.d.ts +40 -0
  370. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  371. package/dist/dev-tools/dev-page-shell.d.ts +78 -0
  372. package/dist/dev-tools/dev-page-shell.d.ts.map +1 -0
  373. package/dist/dev-tools/error-page.d.ts +32 -0
  374. package/dist/dev-tools/error-page.d.ts.map +1 -0
  375. package/dist/dev-tools/holding-server.d.ts +46 -0
  376. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  377. package/dist/dev-tools/hydration-overlay.d.ts +11 -0
  378. package/dist/dev-tools/hydration-overlay.d.ts.map +1 -0
  379. package/dist/dev-tools/index.d.ts +31 -0
  380. package/dist/dev-tools/index.d.ts.map +1 -0
  381. package/dist/dev-tools/instrumentation.d.ts +59 -0
  382. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  383. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  384. package/dist/dev-tools/logger.d.ts.map +1 -0
  385. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +17 -3
  386. package/dist/dev-tools/logs.d.ts.map +1 -0
  387. package/dist/dev-tools/overlay.d.ts +91 -0
  388. package/dist/dev-tools/overlay.d.ts.map +1 -0
  389. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  390. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  391. package/dist/dev-tools/terminal.d.ts +28 -0
  392. package/dist/dev-tools/terminal.d.ts.map +1 -0
  393. package/dist/fonts/ast-walk.d.ts +68 -0
  394. package/dist/fonts/ast-walk.d.ts.map +1 -0
  395. package/dist/fonts/ast.d.ts +112 -8
  396. package/dist/fonts/ast.d.ts.map +1 -1
  397. package/dist/fonts/bundle.d.ts +50 -0
  398. package/dist/fonts/bundle.d.ts.map +1 -0
  399. package/dist/fonts/css.d.ts +2 -1
  400. package/dist/fonts/css.d.ts.map +1 -1
  401. package/dist/fonts/dev-middleware.d.ts +22 -0
  402. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  403. package/dist/fonts/fallbacks.d.ts +0 -7
  404. package/dist/fonts/fallbacks.d.ts.map +1 -1
  405. package/dist/fonts/google.d.ts +5 -3
  406. package/dist/fonts/google.d.ts.map +1 -1
  407. package/dist/fonts/local.d.ts +6 -4
  408. package/dist/fonts/local.d.ts.map +1 -1
  409. package/dist/fonts/paths.d.ts +43 -0
  410. package/dist/fonts/paths.d.ts.map +1 -0
  411. package/dist/fonts/pipeline.d.ts +177 -0
  412. package/dist/fonts/pipeline.d.ts.map +1 -0
  413. package/dist/fonts/transform.d.ts +82 -0
  414. package/dist/fonts/transform.d.ts.map +1 -0
  415. package/dist/fonts/types.d.ts +47 -1
  416. package/dist/fonts/types.d.ts.map +1 -1
  417. package/dist/fonts/virtual-modules.d.ts +77 -0
  418. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  419. package/dist/index.d.ts +35 -153
  420. package/dist/index.d.ts.map +1 -1
  421. package/dist/index.js +10488 -13975
  422. package/dist/index.js.map +1 -1
  423. package/dist/params/codec-registry.d.ts +26 -0
  424. package/dist/params/codec-registry.d.ts.map +1 -0
  425. package/dist/params/define-schema.d.ts +81 -0
  426. package/dist/params/define-schema.d.ts.map +1 -0
  427. package/dist/params/index.d.ts +5 -0
  428. package/dist/params/index.d.ts.map +1 -0
  429. package/dist/params/index.js +34 -0
  430. package/dist/params/index.js.map +1 -0
  431. package/dist/params/resolve-schema.d.ts +34 -0
  432. package/dist/params/resolve-schema.d.ts.map +1 -0
  433. package/dist/plugin-context.d.ts +276 -0
  434. package/dist/plugin-context.d.ts.map +1 -0
  435. package/dist/plugins/adapter-build.d.ts +21 -1
  436. package/dist/plugins/adapter-build.d.ts.map +1 -1
  437. package/dist/plugins/build-manifest.d.ts +7 -3
  438. package/dist/plugins/build-manifest.d.ts.map +1 -1
  439. package/dist/plugins/build-report.d.ts +54 -7
  440. package/dist/plugins/build-report.d.ts.map +1 -1
  441. package/dist/plugins/cache.d.ts +64 -0
  442. package/dist/plugins/cache.d.ts.map +1 -0
  443. package/dist/plugins/callsite-ast.d.ts +117 -0
  444. package/dist/plugins/callsite-ast.d.ts.map +1 -0
  445. package/dist/plugins/callsite-jsx.d.ts +35 -0
  446. package/dist/plugins/callsite-jsx.d.ts.map +1 -0
  447. package/dist/plugins/chunks.d.ts +11 -4
  448. package/dist/plugins/chunks.d.ts.map +1 -1
  449. package/dist/plugins/client-chunks.d.ts +40 -0
  450. package/dist/plugins/client-chunks.d.ts.map +1 -0
  451. package/dist/plugins/cloudflare-wasm.d.ts +21 -0
  452. package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
  453. package/dist/plugins/content.d.ts +1 -1
  454. package/dist/plugins/content.d.ts.map +1 -1
  455. package/dist/plugins/dev-discovery.d.ts +123 -0
  456. package/dist/plugins/dev-discovery.d.ts.map +1 -0
  457. package/dist/plugins/dev-server.d.ts +17 -1
  458. package/dist/plugins/dev-server.d.ts.map +1 -1
  459. package/dist/plugins/entries.d.ts +32 -1
  460. package/dist/plugins/entries.d.ts.map +1 -1
  461. package/dist/plugins/fonts.d.ts +16 -65
  462. package/dist/plugins/fonts.d.ts.map +1 -1
  463. package/dist/plugins/graph-endpoint.d.ts +112 -0
  464. package/dist/plugins/graph-endpoint.d.ts.map +1 -0
  465. package/dist/plugins/mdx.d.ts +24 -5
  466. package/dist/plugins/mdx.d.ts.map +1 -1
  467. package/dist/plugins/prebuilt-capture.d.ts +60 -0
  468. package/dist/plugins/prebuilt-capture.d.ts.map +1 -0
  469. package/dist/plugins/prebuilt-options-analysis.d.ts +40 -0
  470. package/dist/plugins/prebuilt-options-analysis.d.ts.map +1 -0
  471. package/dist/plugins/prebuilt.d.ts +82 -0
  472. package/dist/plugins/prebuilt.d.ts.map +1 -0
  473. package/dist/plugins/prerender-sugar.d.ts +39 -0
  474. package/dist/plugins/prerender-sugar.d.ts.map +1 -0
  475. package/dist/plugins/request-dep/analysis.d.ts +106 -0
  476. package/dist/plugins/request-dep/analysis.d.ts.map +1 -0
  477. package/dist/plugins/request-dep/index.d.ts +75 -0
  478. package/dist/plugins/request-dep/index.d.ts.map +1 -0
  479. package/dist/plugins/request-dep/origin.d.ts +61 -0
  480. package/dist/plugins/request-dep/origin.d.ts.map +1 -0
  481. package/dist/plugins/routing.d.ts +1 -1
  482. package/dist/plugins/routing.d.ts.map +1 -1
  483. package/dist/plugins/server-bundle.d.ts.map +1 -1
  484. package/dist/plugins/shims.d.ts +29 -5
  485. package/dist/plugins/shims.d.ts.map +1 -1
  486. package/dist/plugins/static-build.d.ts +218 -21
  487. package/dist/plugins/static-build.d.ts.map +1 -1
  488. package/dist/routing/codegen-shared.d.ts +26 -0
  489. package/dist/routing/codegen-shared.d.ts.map +1 -0
  490. package/dist/routing/codegen-types.d.ts +61 -0
  491. package/dist/routing/codegen-types.d.ts.map +1 -0
  492. package/dist/routing/codegen-write.d.ts +51 -0
  493. package/dist/routing/codegen-write.d.ts.map +1 -0
  494. package/dist/routing/codegen.d.ts +8 -3
  495. package/dist/routing/codegen.d.ts.map +1 -1
  496. package/dist/routing/collision-probe.d.ts +104 -0
  497. package/dist/routing/collision-probe.d.ts.map +1 -0
  498. package/dist/routing/collision-spaces.d.ts +26 -0
  499. package/dist/routing/collision-spaces.d.ts.map +1 -0
  500. package/dist/routing/convention-lint.d.ts +55 -0
  501. package/dist/routing/convention-lint.d.ts.map +1 -0
  502. package/dist/routing/export-detect.d.ts +72 -0
  503. package/dist/routing/export-detect.d.ts.map +1 -0
  504. package/dist/routing/file-cache.d.ts +8 -0
  505. package/dist/routing/file-cache.d.ts.map +1 -0
  506. package/dist/routing/index.d.ts +13 -7
  507. package/dist/routing/index.d.ts.map +1 -1
  508. package/dist/routing/index.js +5 -2
  509. package/dist/routing/interception-overlap.d.ts +35 -0
  510. package/dist/routing/interception-overlap.d.ts.map +1 -0
  511. package/dist/routing/interception.d.ts +234 -10
  512. package/dist/routing/interception.d.ts.map +1 -1
  513. package/dist/routing/link-codegen.d.ts +105 -0
  514. package/dist/routing/link-codegen.d.ts.map +1 -0
  515. package/dist/routing/manifest-codegen.d.ts +26 -0
  516. package/dist/routing/manifest-codegen.d.ts.map +1 -0
  517. package/dist/routing/scanner.d.ts +14 -10
  518. package/dist/routing/scanner.d.ts.map +1 -1
  519. package/dist/routing/schema-validation.d.ts +35 -0
  520. package/dist/routing/schema-validation.d.ts.map +1 -0
  521. package/dist/routing/segment-classify.d.ts +114 -0
  522. package/dist/routing/segment-classify.d.ts.map +1 -0
  523. package/dist/routing/segment-codegen.d.ts +38 -0
  524. package/dist/routing/segment-codegen.d.ts.map +1 -0
  525. package/dist/routing/segment-keys.d.ts +118 -0
  526. package/dist/routing/segment-keys.d.ts.map +1 -0
  527. package/dist/routing/slot-placement.d.ts +48 -0
  528. package/dist/routing/slot-placement.d.ts.map +1 -0
  529. package/dist/routing/types.d.ts +74 -26
  530. package/dist/routing/types.d.ts.map +1 -1
  531. package/dist/routing/walkers.d.ts +57 -0
  532. package/dist/routing/walkers.d.ts.map +1 -0
  533. package/dist/rsc-runtime/rsc.d.ts +1 -1
  534. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  535. package/dist/rsc-runtime/ssr.d.ts +14 -0
  536. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  537. package/dist/rsc-runtime/transforms.d.ts +13 -0
  538. package/dist/rsc-runtime/transforms.d.ts.map +1 -0
  539. package/dist/schema-bridge.d.ts +145 -0
  540. package/dist/schema-bridge.d.ts.map +1 -0
  541. package/dist/search-params/define.d.ts +262 -0
  542. package/dist/search-params/define.d.ts.map +1 -0
  543. package/dist/search-params/index.d.ts +3 -7
  544. package/dist/search-params/index.d.ts.map +1 -1
  545. package/dist/search-params/index.js +179 -360
  546. package/dist/search-params/index.js.map +1 -1
  547. package/dist/search-params/parse-total.d.ts +81 -0
  548. package/dist/search-params/parse-total.d.ts.map +1 -0
  549. package/dist/search-params/serialize-equal.d.ts +9 -0
  550. package/dist/search-params/serialize-equal.d.ts.map +1 -0
  551. package/dist/search-params/wrappers.d.ts +76 -0
  552. package/dist/search-params/wrappers.d.ts.map +1 -0
  553. package/dist/server/access-gate.d.ts +98 -10
  554. package/dist/server/access-gate.d.ts.map +1 -1
  555. package/dist/server/action-client.d.ts +42 -7
  556. package/dist/server/action-client.d.ts.map +1 -1
  557. package/dist/server/action-encryption.d.ts +76 -0
  558. package/dist/server/action-encryption.d.ts.map +1 -0
  559. package/dist/server/action-handler.d.ts +39 -5
  560. package/dist/server/action-handler.d.ts.map +1 -1
  561. package/dist/server/actions.d.ts +29 -35
  562. package/dist/server/actions.d.ts.map +1 -1
  563. package/dist/server/als-registry.d.ts +117 -13
  564. package/dist/server/als-registry.d.ts.map +1 -1
  565. package/dist/server/asset-headers.d.ts +8 -18
  566. package/dist/server/asset-headers.d.ts.map +1 -1
  567. package/dist/server/body-limits.d.ts.map +1 -1
  568. package/dist/server/build-manifest.d.ts +25 -30
  569. package/dist/server/build-manifest.d.ts.map +1 -1
  570. package/dist/server/canonicalize.d.ts +10 -0
  571. package/dist/server/canonicalize.d.ts.map +1 -1
  572. package/dist/server/chain-url-parts.d.ts +82 -0
  573. package/dist/server/chain-url-parts.d.ts.map +1 -0
  574. package/dist/server/children-interception.d.ts +49 -0
  575. package/dist/server/children-interception.d.ts.map +1 -0
  576. package/dist/server/coalesce-tick.d.ts +40 -0
  577. package/dist/server/coalesce-tick.d.ts.map +1 -0
  578. package/dist/server/compress.d.ts.map +1 -1
  579. package/dist/server/cookie-context.d.ts +170 -0
  580. package/dist/server/cookie-context.d.ts.map +1 -0
  581. package/dist/server/cookie-parsing.d.ts +65 -0
  582. package/dist/server/cookie-parsing.d.ts.map +1 -0
  583. package/dist/server/csp-nonce.d.ts +45 -0
  584. package/dist/server/csp-nonce.d.ts.map +1 -0
  585. package/dist/server/csrf.d.ts +3 -2
  586. package/dist/server/csrf.d.ts.map +1 -1
  587. package/dist/server/debug.d.ts +82 -0
  588. package/dist/server/debug.d.ts.map +1 -0
  589. package/dist/server/default-logger.d.ts +22 -0
  590. package/dist/server/default-logger.d.ts.map +1 -0
  591. package/dist/server/default-status-page.d.ts +45 -0
  592. package/dist/server/default-status-page.d.ts.map +1 -0
  593. package/dist/server/deny-boundary.d.ts +253 -0
  594. package/dist/server/deny-boundary.d.ts.map +1 -0
  595. package/dist/server/deny-renderer.d.ts +20 -9
  596. package/dist/server/deny-renderer.d.ts.map +1 -1
  597. package/dist/server/dev-source-map.d.ts +22 -0
  598. package/dist/server/dev-source-map.d.ts.map +1 -0
  599. package/dist/server/early-hints-sender.d.ts.map +1 -1
  600. package/dist/server/early-hints.d.ts +14 -12
  601. package/dist/server/early-hints.d.ts.map +1 -1
  602. package/dist/server/error-boundary-wrapper.d.ts +101 -10
  603. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  604. package/dist/server/error-response-headers.d.ts +3 -0
  605. package/dist/server/error-response-headers.d.ts.map +1 -0
  606. package/dist/server/fallback-error.d.ts +12 -7
  607. package/dist/server/fallback-error.d.ts.map +1 -1
  608. package/dist/server/flight-injection-state.d.ts +66 -0
  609. package/dist/server/flight-injection-state.d.ts.map +1 -0
  610. package/dist/server/flight-scripts.d.ts +45 -0
  611. package/dist/server/flight-scripts.d.ts.map +1 -0
  612. package/dist/server/form-data.d.ts +41 -0
  613. package/dist/server/form-data.d.ts.map +1 -1
  614. package/dist/server/form-flash.d.ts +1 -1
  615. package/dist/server/head-response.d.ts +35 -0
  616. package/dist/server/head-response.d.ts.map +1 -0
  617. package/dist/server/html-injector-core.d.ts +257 -0
  618. package/dist/server/html-injector-core.d.ts.map +1 -0
  619. package/dist/server/html-injectors.d.ts +84 -42
  620. package/dist/server/html-injectors.d.ts.map +1 -1
  621. package/dist/server/index.d.ts +18 -54
  622. package/dist/server/index.d.ts.map +1 -1
  623. package/dist/server/index.js +212 -2930
  624. package/dist/server/index.js.map +1 -1
  625. package/dist/server/instrumentation.d.ts +1 -1
  626. package/dist/server/internal.d.ts +50 -0
  627. package/dist/server/internal.d.ts.map +1 -0
  628. package/dist/server/internal.js +4034 -0
  629. package/dist/server/internal.js.map +1 -0
  630. package/dist/server/logger.d.ts +39 -7
  631. package/dist/server/logger.d.ts.map +1 -1
  632. package/dist/server/metadata-collector.d.ts +71 -0
  633. package/dist/server/metadata-collector.d.ts.map +1 -0
  634. package/dist/server/metadata-platform.d.ts +2 -2
  635. package/dist/server/metadata-render.d.ts +2 -2
  636. package/dist/server/metadata-render.d.ts.map +1 -1
  637. package/dist/server/metadata-routes.d.ts +60 -11
  638. package/dist/server/metadata-routes.d.ts.map +1 -1
  639. package/dist/server/metadata-social.d.ts +2 -2
  640. package/dist/server/metadata.d.ts +10 -2
  641. package/dist/server/metadata.d.ts.map +1 -1
  642. package/dist/server/middleware-runner.d.ts +20 -5
  643. package/dist/server/middleware-runner.d.ts.map +1 -1
  644. package/dist/server/node-stream-transforms.d.ts +105 -0
  645. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  646. package/dist/server/nuqs-ssr-provider.d.ts +7 -3
  647. package/dist/server/nuqs-ssr-provider.d.ts.map +1 -1
  648. package/dist/server/param-coercion.d.ts +78 -0
  649. package/dist/server/param-coercion.d.ts.map +1 -0
  650. package/dist/server/pipeline-helpers.d.ts +77 -0
  651. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  652. package/dist/server/pipeline-interception.d.ts +59 -9
  653. package/dist/server/pipeline-interception.d.ts.map +1 -1
  654. package/dist/server/pipeline-metadata.d.ts +7 -1
  655. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  656. package/dist/server/pipeline-outcome.d.ts +49 -0
  657. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  658. package/dist/server/pipeline-phases.d.ts +70 -0
  659. package/dist/server/pipeline-phases.d.ts.map +1 -0
  660. package/dist/server/pipeline.d.ts +160 -24
  661. package/dist/server/pipeline.d.ts.map +1 -1
  662. package/dist/server/port-resolution.d.ts +31 -0
  663. package/dist/server/port-resolution.d.ts.map +1 -0
  664. package/dist/server/prebuilt/cache-key.d.ts +63 -0
  665. package/dist/server/prebuilt/cache-key.d.ts.map +1 -0
  666. package/dist/server/prebuilt/capture-state.d.ts +57 -0
  667. package/dist/server/prebuilt/capture-state.d.ts.map +1 -0
  668. package/dist/server/prebuilt/key-discipline.d.ts +52 -0
  669. package/dist/server/prebuilt/key-discipline.d.ts.map +1 -0
  670. package/dist/server/prebuilt/manifest-tag-index.d.ts +27 -0
  671. package/dist/server/prebuilt/manifest-tag-index.d.ts.map +1 -0
  672. package/dist/server/prebuilt/overlay.d.ts +100 -0
  673. package/dist/server/prebuilt/overlay.d.ts.map +1 -0
  674. package/dist/server/prebuilt/payload-source.d.ts +79 -0
  675. package/dist/server/prebuilt/payload-source.d.ts.map +1 -0
  676. package/dist/server/prebuilt/slots.d.ts +99 -0
  677. package/dist/server/prebuilt/slots.d.ts.map +1 -0
  678. package/dist/server/prebuilt/synthetic-store.d.ts +67 -0
  679. package/dist/server/prebuilt/synthetic-store.d.ts.map +1 -0
  680. package/dist/server/prebuilt-builder.d.ts +121 -0
  681. package/dist/server/prebuilt-builder.d.ts.map +1 -0
  682. package/dist/server/prebuilt-runtime.d.ts +111 -0
  683. package/dist/server/prebuilt-runtime.d.ts.map +1 -0
  684. package/dist/server/primitives.d.ts +129 -45
  685. package/dist/server/primitives.d.ts.map +1 -1
  686. package/dist/server/publish-params.d.ts +33 -0
  687. package/dist/server/publish-params.d.ts.map +1 -0
  688. package/dist/server/render-timeout.d.ts +51 -0
  689. package/dist/server/render-timeout.d.ts.map +1 -0
  690. package/dist/server/render-utils.d.ts +26 -0
  691. package/dist/server/render-utils.d.ts.map +1 -0
  692. package/dist/server/request-context.d.ts +111 -107
  693. package/dist/server/request-context.d.ts.map +1 -1
  694. package/dist/server/request-dep.d.ts +15 -0
  695. package/dist/server/request-dep.d.ts.map +1 -0
  696. package/dist/server/response-cache-policy.d.ts +3 -0
  697. package/dist/server/response-cache-policy.d.ts.map +1 -0
  698. package/dist/server/route-element-builder.d.ts +57 -30
  699. package/dist/server/route-element-builder.d.ts.map +1 -1
  700. package/dist/server/route-element-helpers.d.ts +12 -0
  701. package/dist/server/route-element-helpers.d.ts.map +1 -0
  702. package/dist/server/route-handler.d.ts +1 -1
  703. package/dist/server/route-handler.d.ts.map +1 -1
  704. package/dist/server/route-matcher.d.ts +40 -38
  705. package/dist/server/route-matcher.d.ts.map +1 -1
  706. package/dist/server/route-module-loader.d.ts +37 -0
  707. package/dist/server/route-module-loader.d.ts.map +1 -0
  708. package/dist/server/rsc-cache-key-guard.d.ts +78 -0
  709. package/dist/server/rsc-cache-key-guard.d.ts.map +1 -0
  710. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  711. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  712. package/dist/server/rsc-entry/api-handler.d.ts +12 -3
  713. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  714. package/dist/server/rsc-entry/deny-fallback.d.ts +29 -0
  715. package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -0
  716. package/dist/server/rsc-entry/error-renderer.d.ts +38 -13
  717. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  718. package/dist/server/rsc-entry/helpers.d.ts +59 -42
  719. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  720. package/dist/server/rsc-entry/index.d.ts +40 -6
  721. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  722. package/dist/server/rsc-entry/render-route.d.ts +51 -0
  723. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  724. package/dist/server/rsc-entry/revalidate-renderer.d.ts +108 -0
  725. package/dist/server/rsc-entry/revalidate-renderer.d.ts.map +1 -0
  726. package/dist/server/rsc-entry/rsc-payload.d.ts +26 -6
  727. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  728. package/dist/server/rsc-entry/rsc-stream.d.ts +39 -3
  729. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  730. package/dist/server/rsc-entry/ssr-bridge.d.ts +5 -1
  731. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  732. package/dist/server/rsc-entry/ssr-renderer.d.ts +37 -5
  733. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  734. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +89 -0
  735. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  736. package/dist/server/rsc-error-envelope.d.ts +11 -0
  737. package/dist/server/rsc-error-envelope.d.ts.map +1 -0
  738. package/dist/server/rsc-prop-warnings.d.ts.map +1 -1
  739. package/dist/server/safe-load.d.ts +46 -0
  740. package/dist/server/safe-load.d.ts.map +1 -0
  741. package/dist/server/sensitive-fields.d.ts +74 -0
  742. package/dist/server/sensitive-fields.d.ts.map +1 -0
  743. package/dist/server/sitemap-generator.d.ts +130 -0
  744. package/dist/server/sitemap-generator.d.ts.map +1 -0
  745. package/dist/server/sitemap-handler.d.ts +22 -0
  746. package/dist/server/sitemap-handler.d.ts.map +1 -0
  747. package/dist/server/skippable-prefix.d.ts +29 -0
  748. package/dist/server/skippable-prefix.d.ts.map +1 -0
  749. package/dist/server/slot-interception.d.ts +80 -0
  750. package/dist/server/slot-interception.d.ts.map +1 -0
  751. package/dist/server/slot-resolver.d.ts +137 -7
  752. package/dist/server/slot-resolver.d.ts.map +1 -1
  753. package/dist/server/slot-subtree-contain.d.ts +54 -0
  754. package/dist/server/slot-subtree-contain.d.ts.map +1 -0
  755. package/dist/server/ssr-bridge-types.d.ts +160 -0
  756. package/dist/server/ssr-bridge-types.d.ts.map +1 -0
  757. package/dist/server/ssr-entry.d.ts +1 -43
  758. package/dist/server/ssr-entry.d.ts.map +1 -1
  759. package/dist/server/ssr-render.d.ts +69 -22
  760. package/dist/server/ssr-render.d.ts.map +1 -1
  761. package/dist/server/ssr-wrappers.d.ts +93 -0
  762. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  763. package/dist/server/state-tree-diff.d.ts +44 -9
  764. package/dist/server/state-tree-diff.d.ts.map +1 -1
  765. package/dist/server/static-generator.d.ts +112 -0
  766. package/dist/server/static-generator.d.ts.map +1 -0
  767. package/dist/server/static-not-found.d.ts +52 -0
  768. package/dist/server/static-not-found.d.ts.map +1 -0
  769. package/dist/server/status-code-resolver.d.ts +26 -15
  770. package/dist/server/status-code-resolver.d.ts.map +1 -1
  771. package/dist/server/stream-utils.d.ts +47 -0
  772. package/dist/server/stream-utils.d.ts.map +1 -0
  773. package/dist/server/tracing.d.ts +56 -11
  774. package/dist/server/tracing.d.ts.map +1 -1
  775. package/dist/server/tree-match.d.ts +49 -0
  776. package/dist/server/tree-match.d.ts.map +1 -0
  777. package/dist/server/types.d.ts +88 -7
  778. package/dist/server/types.d.ts.map +1 -1
  779. package/dist/server/utils/element-type.d.ts +50 -0
  780. package/dist/server/utils/element-type.d.ts.map +1 -0
  781. package/dist/server/utils/escape-html.d.ts +14 -0
  782. package/dist/server/utils/escape-html.d.ts.map +1 -0
  783. package/dist/server/utils/mdx-file.d.ts +17 -0
  784. package/dist/server/utils/mdx-file.d.ts.map +1 -0
  785. package/dist/server/version-skew.d.ts +61 -0
  786. package/dist/server/version-skew.d.ts.map +1 -0
  787. package/dist/server/waituntil-bridge.d.ts.map +1 -1
  788. package/dist/server/workers-cache-bridge.d.ts +26 -0
  789. package/dist/server/workers-cache-bridge.d.ts.map +1 -0
  790. package/dist/shared/als-slots.d.ts +42 -0
  791. package/dist/shared/als-slots.d.ts.map +1 -0
  792. package/dist/shared/base-path.d.ts +56 -0
  793. package/dist/shared/base-path.d.ts.map +1 -0
  794. package/dist/shared/href-validation.d.ts +49 -0
  795. package/dist/shared/href-validation.d.ts.map +1 -0
  796. package/dist/shared/merge-search-params.d.ts +22 -0
  797. package/dist/shared/merge-search-params.d.ts.map +1 -0
  798. package/dist/shared/param-value.d.ts +104 -0
  799. package/dist/shared/param-value.d.ts.map +1 -0
  800. package/dist/shared/payload-root.d.ts +109 -0
  801. package/dist/shared/payload-root.d.ts.map +1 -0
  802. package/dist/shared/redirect-type.d.ts +17 -0
  803. package/dist/shared/redirect-type.d.ts.map +1 -0
  804. package/dist/shared/rsc-cache-key.d.ts +163 -0
  805. package/dist/shared/rsc-cache-key.d.ts.map +1 -0
  806. package/dist/shared/rsc-error-envelope.d.ts +16 -0
  807. package/dist/shared/rsc-error-envelope.d.ts.map +1 -0
  808. package/dist/shared/rsc-manifest.d.ts +28 -0
  809. package/dist/shared/rsc-manifest.d.ts.map +1 -0
  810. package/dist/shared/rsc-media-type.d.ts +52 -0
  811. package/dist/shared/rsc-media-type.d.ts.map +1 -0
  812. package/dist/shared/rsc-payload-path.d.ts +42 -0
  813. package/dist/shared/rsc-payload-path.d.ts.map +1 -0
  814. package/dist/shared/segment-info.d.ts +66 -0
  815. package/dist/shared/segment-info.d.ts.map +1 -0
  816. package/dist/shared/slot-params.d.ts +52 -0
  817. package/dist/shared/slot-params.d.ts.map +1 -0
  818. package/dist/shared/static-platform-files.d.ts +71 -0
  819. package/dist/shared/static-platform-files.d.ts.map +1 -0
  820. package/dist/shared/status-reason-phrase.d.ts +26 -0
  821. package/dist/shared/status-reason-phrase.d.ts.map +1 -0
  822. package/dist/shims/font-google.d.ts +1 -1
  823. package/dist/shims/font-google.d.ts.map +1 -1
  824. package/dist/shims/font-google.js +42 -0
  825. package/dist/shims/font-google.js.map +1 -0
  826. package/dist/shims/font-local.d.ts +26 -0
  827. package/dist/shims/font-local.d.ts.map +1 -0
  828. package/dist/shims/font-local.js +20 -0
  829. package/dist/shims/font-local.js.map +1 -0
  830. package/dist/shims/headers.d.ts +53 -1
  831. package/dist/shims/headers.d.ts.map +1 -1
  832. package/dist/shims/image.d.ts +120 -120
  833. package/dist/shims/image.d.ts.map +1 -1
  834. package/dist/shims/navigation-client.d.ts +25 -12
  835. package/dist/shims/navigation-client.d.ts.map +1 -1
  836. package/dist/shims/navigation-rsc.d.ts +21 -0
  837. package/dist/shims/navigation-rsc.d.ts.map +1 -0
  838. package/dist/shims/navigation.d.ts +10 -5
  839. package/dist/shims/navigation.d.ts.map +1 -1
  840. package/dist/utils/state-machine.d.ts +80 -0
  841. package/dist/utils/state-machine.d.ts.map +1 -0
  842. package/docs/api/30-api-server.mdx +236 -0
  843. package/docs/api/31-api-client.mdx +167 -0
  844. package/docs/api/32-api-cache.mdx +311 -0
  845. package/docs/api/33-api-search-params.mdx +176 -0
  846. package/docs/api/34-api-config.mdx +329 -0
  847. package/docs/api/35-api-typescript.mdx +91 -0
  848. package/docs/api/36-cli.mdx +192 -0
  849. package/docs/learn/00-introduction.mdx +109 -0
  850. package/docs/learn/01-quick-start.mdx +94 -0
  851. package/docs/learn/02-pages-and-layouts.mdx +147 -0
  852. package/docs/learn/03-fetching-data.mdx +211 -0
  853. package/docs/learn/04-access-control.mdx +115 -0
  854. package/docs/learn/05-the-flush-point.mdx +175 -0
  855. package/docs/learn/06-typed-params.mdx +275 -0
  856. package/docs/learn/07-typed-routes.mdx +108 -0
  857. package/docs/learn/08-forms-and-actions.mdx +146 -0
  858. package/docs/learn/09-streaming.mdx +140 -0
  859. package/docs/learn/10-caching.mdx +252 -0
  860. package/docs/learn/11-middleware.mdx +158 -0
  861. package/docs/learn/12-error-handling.mdx +188 -0
  862. package/docs/learn/13-deploying.mdx +287 -0
  863. package/llms.txt +55 -0
  864. package/package.json +117 -29
  865. package/src/adapters/build-output-helper.ts +351 -0
  866. package/src/adapters/cloudflare-dev.ts +183 -0
  867. package/src/adapters/cloudflare-kv-cache.ts +207 -0
  868. package/src/adapters/cloudflare.ts +747 -130
  869. package/src/adapters/compress-module.ts +101 -88
  870. package/src/adapters/fs-identity.ts +156 -0
  871. package/src/adapters/nitro-presets.ts +139 -0
  872. package/src/adapters/nitro-preview.ts +340 -0
  873. package/src/adapters/nitro.ts +279 -418
  874. package/src/adapters/raw-imports.d.ts +5 -0
  875. package/src/adapters/shared.ts +274 -0
  876. package/src/adapters/types.ts +28 -7
  877. package/src/adapters/wrangler.d.ts +7 -0
  878. package/src/analyze/chains.ts +411 -0
  879. package/src/analyze/classify.ts +258 -0
  880. package/src/analyze/crawl-entry.ts +68 -0
  881. package/src/analyze/crawl.ts +500 -0
  882. package/src/analyze/graph-cache.ts +332 -0
  883. package/src/analyze/graph-command.ts +762 -0
  884. package/src/analyze/live-graph.ts +232 -0
  885. package/src/analyze/poison-rules.ts +165 -0
  886. package/src/analyze/poison-scan.ts +162 -0
  887. package/src/analyze/scan.ts +149 -0
  888. package/src/cache/cache-api.ts +107 -0
  889. package/src/cache/fast-hash.ts +39 -0
  890. package/src/cache/handler-store.ts +76 -0
  891. package/src/cache/index.ts +115 -22
  892. package/src/cache/invalidation-epoch.ts +93 -0
  893. package/src/cache/json-lossy-check.ts +75 -0
  894. package/src/cache/redis-handler.ts +198 -20
  895. package/src/cache/singleflight.ts +69 -6
  896. package/src/cache/sizeof.ts +33 -0
  897. package/src/cache/stable-stringify.ts +65 -2
  898. package/src/cache/store.ts +71 -0
  899. package/src/cache/stores/cloudflare-kv.ts +52 -0
  900. package/src/cache/stores/memory.ts +125 -0
  901. package/src/cache/stores/redis.ts +97 -0
  902. package/src/cache/stores/vercel.ts +59 -0
  903. package/src/cache/tag-aware-handler.ts +237 -0
  904. package/src/cache/timber-cache.ts +180 -48
  905. package/src/cdn/cloudflare-purge.ts +50 -0
  906. package/src/cdn/fastly-purge.ts +63 -0
  907. package/src/cdn/headers.ts +153 -0
  908. package/src/cdn/index.ts +23 -0
  909. package/src/cdn/purge-store.ts +34 -0
  910. package/src/cdn/workers-cache-purge.ts +34 -0
  911. package/src/cli-check.ts +507 -0
  912. package/src/cli-schema-sync.ts +401 -0
  913. package/src/cli.ts +262 -55
  914. package/src/client/browser-dev.ts +157 -2
  915. package/src/client/browser-entry/action-dispatch.ts +197 -0
  916. package/src/client/browser-entry/action-queue.ts +90 -0
  917. package/src/client/browser-entry/hmr.ts +70 -0
  918. package/src/client/browser-entry/hydrate.ts +148 -0
  919. package/src/client/browser-entry/index.ts +131 -0
  920. package/src/client/browser-entry/post-hydration.ts +123 -0
  921. package/src/client/browser-entry/router-init.ts +418 -0
  922. package/src/client/browser-entry/rsc-stream.ts +166 -0
  923. package/src/client/browser-entry/scroll.ts +50 -0
  924. package/src/client/deny-last-resort.tsx +54 -0
  925. package/src/client/error-boundary.tsx +316 -40
  926. package/src/client/error-reconstituter.tsx +79 -0
  927. package/src/client/form.tsx +36 -32
  928. package/src/client/global-context.ts +31 -0
  929. package/src/client/history.ts +81 -10
  930. package/src/client/index.ts +89 -53
  931. package/src/client/internal.ts +59 -0
  932. package/src/client/link.tsx +452 -159
  933. package/src/client/location-search.ts +15 -0
  934. package/src/client/navigation-api.ts +347 -0
  935. package/src/client/navigation-commit.ts +295 -0
  936. package/src/client/navigation-context.ts +67 -98
  937. package/src/client/navigation-root.tsx +224 -0
  938. package/src/client/navigation-transition.ts +327 -0
  939. package/src/client/nuqs-adapter.tsx +21 -9
  940. package/src/client/params-context.ts +187 -0
  941. package/src/client/react-root.ts +72 -0
  942. package/src/client/router-effects.ts +228 -0
  943. package/src/client/router-lifecycle.ts +354 -0
  944. package/src/client/router-pipeline.ts +490 -0
  945. package/src/client/router-ref.ts +3 -3
  946. package/src/client/router-skew.ts +30 -0
  947. package/src/client/router-types.ts +294 -0
  948. package/src/client/router.ts +436 -424
  949. package/src/client/rsc-fetch.ts +512 -73
  950. package/src/client/segment-cache.ts +327 -40
  951. package/src/client/segment-context.ts +13 -5
  952. package/src/client/segment-outlet.tsx +96 -0
  953. package/src/client/segment-update-context.ts +23 -0
  954. package/src/client/shallow-url.ts +22 -0
  955. package/src/client/slot-content-cache-context.ts +43 -0
  956. package/src/client/slot-context.ts +50 -0
  957. package/src/client/slot-outlet.tsx +22 -0
  958. package/src/client/slot-provider.tsx +32 -0
  959. package/src/client/ssr-data.ts +30 -9
  960. package/src/client/stale-client.ts +191 -0
  961. package/src/client/state.ts +29 -15
  962. package/src/client/status-page-marker.tsx +32 -0
  963. package/src/client/top-loader.tsx +36 -29
  964. package/src/client/unload-guard.ts +35 -3
  965. package/src/client/use-cookie.ts +70 -18
  966. package/src/client/use-link-status.ts +7 -7
  967. package/src/client/use-pathname.ts +22 -31
  968. package/src/client/use-pending-navigation.ts +40 -0
  969. package/src/client/use-query-states.ts +206 -36
  970. package/src/client/use-router.ts +6 -3
  971. package/src/client/use-search-params.ts +38 -49
  972. package/src/client/use-segment-params.ts +69 -0
  973. package/src/client/use-selected-layout-segment.ts +2 -2
  974. package/src/codec.ts +149 -0
  975. package/src/config-types.ts +322 -0
  976. package/src/config-validation.ts +347 -0
  977. package/src/cookies/define-cookie.ts +222 -53
  978. package/src/cookies/index.ts +13 -2
  979. package/src/cookies/json-cookie.ts +105 -0
  980. package/src/cookies/validation.ts +192 -0
  981. package/src/dev-tools/404-page.ts +286 -0
  982. package/src/dev-tools/browser-logs.ts +55 -0
  983. package/src/dev-tools/dev-page-shell.ts +260 -0
  984. package/src/dev-tools/error-page.ts +331 -0
  985. package/src/dev-tools/holding-server.ts +185 -0
  986. package/src/dev-tools/hydration-overlay.ts +158 -0
  987. package/src/dev-tools/index.ts +83 -0
  988. package/src/dev-tools/instrumentation.ts +213 -0
  989. package/src/{server/dev-logger.ts → dev-tools/logger.ts} +33 -51
  990. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +122 -26
  991. package/src/dev-tools/overlay.ts +469 -0
  992. package/src/dev-tools/stack-classifier.ts +75 -0
  993. package/src/dev-tools/terminal.ts +182 -0
  994. package/src/fonts/ast-walk.ts +235 -0
  995. package/src/fonts/ast.ts +479 -128
  996. package/src/fonts/bundle.ts +138 -0
  997. package/src/fonts/css.ts +3 -2
  998. package/src/fonts/dev-middleware.ts +85 -0
  999. package/src/fonts/fallbacks.ts +0 -23
  1000. package/src/fonts/google.ts +101 -19
  1001. package/src/fonts/local.ts +13 -8
  1002. package/src/fonts/paths.ts +58 -0
  1003. package/src/fonts/pipeline.ts +348 -0
  1004. package/src/fonts/transform.ts +311 -0
  1005. package/src/fonts/types.ts +52 -1
  1006. package/src/fonts/virtual-modules.ts +179 -0
  1007. package/src/index.ts +486 -344
  1008. package/src/params/codec-registry.ts +34 -0
  1009. package/src/params/define-schema.ts +115 -0
  1010. package/src/params/index.ts +17 -0
  1011. package/src/params/resolve-schema.ts +84 -0
  1012. package/src/plugin-context.ts +503 -0
  1013. package/src/plugins/adapter-build.ts +229 -7
  1014. package/src/plugins/build-manifest.ts +201 -26
  1015. package/src/plugins/build-report.ts +275 -43
  1016. package/src/plugins/cache.ts +243 -0
  1017. package/src/plugins/callsite-ast.ts +472 -0
  1018. package/src/plugins/callsite-jsx.ts +243 -0
  1019. package/src/plugins/chunks.ts +74 -5
  1020. package/src/plugins/client-chunks.ts +185 -0
  1021. package/src/plugins/cloudflare-wasm.ts +141 -0
  1022. package/src/plugins/content.ts +5 -1
  1023. package/src/plugins/dev-discovery.ts +218 -0
  1024. package/src/plugins/dev-server.ts +369 -96
  1025. package/src/plugins/entries.ts +148 -18
  1026. package/src/plugins/fonts.ts +251 -524
  1027. package/src/plugins/graph-endpoint.ts +532 -0
  1028. package/src/plugins/mdx.ts +116 -40
  1029. package/src/plugins/prebuilt-capture.ts +217 -0
  1030. package/src/plugins/prebuilt-options-analysis.ts +175 -0
  1031. package/src/plugins/prebuilt.ts +655 -0
  1032. package/src/plugins/prerender-sugar.ts +320 -0
  1033. package/src/plugins/request-dep/analysis.ts +447 -0
  1034. package/src/plugins/request-dep/index.ts +376 -0
  1035. package/src/plugins/request-dep/origin.ts +310 -0
  1036. package/src/plugins/routing.ts +273 -277
  1037. package/src/plugins/server-bundle.ts +103 -14
  1038. package/src/plugins/shims.ts +259 -97
  1039. package/src/plugins/static-build.ts +708 -66
  1040. package/src/react-canary.d.ts +2 -0
  1041. package/src/routing/codegen-shared.ts +39 -0
  1042. package/src/routing/codegen-types.ts +62 -0
  1043. package/src/routing/codegen-write.ts +141 -0
  1044. package/src/routing/codegen.ts +349 -232
  1045. package/src/routing/collision-probe.ts +438 -0
  1046. package/src/routing/collision-spaces.ts +281 -0
  1047. package/src/routing/convention-lint.ts +623 -0
  1048. package/src/routing/export-detect.ts +448 -0
  1049. package/src/routing/file-cache.ts +23 -0
  1050. package/src/routing/index.ts +16 -7
  1051. package/src/routing/interception-overlap.ts +141 -0
  1052. package/src/routing/interception.ts +1044 -67
  1053. package/src/routing/link-codegen.ts +280 -0
  1054. package/src/routing/manifest-codegen.ts +226 -0
  1055. package/src/routing/scanner.ts +393 -219
  1056. package/src/routing/schema-validation.ts +155 -0
  1057. package/src/routing/segment-classify.ts +280 -0
  1058. package/src/routing/segment-codegen.ts +98 -0
  1059. package/src/routing/segment-keys.ts +186 -0
  1060. package/src/routing/slot-placement.ts +97 -0
  1061. package/src/routing/types.ts +75 -26
  1062. package/src/routing/walkers.ts +98 -0
  1063. package/src/rsc-runtime/rsc.ts +9 -0
  1064. package/src/rsc-runtime/ssr.ts +51 -0
  1065. package/src/rsc-runtime/transforms.ts +13 -0
  1066. package/src/rsc-runtime/vendor-types.d.ts +19 -0
  1067. package/src/schema-bridge.ts +380 -0
  1068. package/src/search-params/define.ts +677 -0
  1069. package/src/search-params/index.ts +14 -20
  1070. package/src/search-params/parse-total.ts +91 -0
  1071. package/src/search-params/serialize-equal.ts +14 -0
  1072. package/src/search-params/wrappers.ts +150 -0
  1073. package/src/server/access-gate.tsx +196 -57
  1074. package/src/server/action-client.ts +136 -35
  1075. package/src/server/action-encryption.ts +144 -0
  1076. package/src/server/action-handler.ts +256 -56
  1077. package/src/server/actions.ts +112 -68
  1078. package/src/server/als-registry.ts +160 -21
  1079. package/src/server/asset-headers.ts +15 -37
  1080. package/src/server/body-limits.ts +10 -2
  1081. package/src/server/build-manifest.ts +33 -57
  1082. package/src/server/canonicalize.ts +6 -3
  1083. package/src/server/chain-url-parts.ts +163 -0
  1084. package/src/server/children-interception.ts +115 -0
  1085. package/src/server/coalesce-tick.ts +75 -0
  1086. package/src/server/compress.ts +43 -8
  1087. package/src/server/cookie-context.ts +484 -0
  1088. package/src/server/cookie-parsing.ts +163 -0
  1089. package/src/server/csp-nonce.ts +70 -0
  1090. package/src/server/csrf.ts +39 -6
  1091. package/src/server/debug.ts +137 -0
  1092. package/src/server/default-logger.ts +99 -0
  1093. package/src/server/default-status-page.ts +88 -0
  1094. package/src/server/deny-boundary.ts +533 -0
  1095. package/src/server/deny-renderer.ts +214 -112
  1096. package/src/server/dev-source-map.ts +31 -0
  1097. package/src/server/early-hints-sender.ts +4 -3
  1098. package/src/server/early-hints.ts +39 -29
  1099. package/src/server/error-boundary-wrapper.ts +181 -44
  1100. package/src/server/error-response-headers.ts +18 -0
  1101. package/src/server/fallback-error.ts +79 -102
  1102. package/src/server/flight-injection-state.ts +113 -0
  1103. package/src/server/flight-scripts.ts +67 -0
  1104. package/src/server/form-data.ts +124 -12
  1105. package/src/server/form-flash.ts +2 -2
  1106. package/src/server/head-response.ts +54 -0
  1107. package/src/server/html-injector-core.ts +512 -0
  1108. package/src/server/html-injectors.ts +272 -235
  1109. package/src/server/index.ts +40 -192
  1110. package/src/server/instrumentation.ts +1 -1
  1111. package/src/server/internal.ts +173 -0
  1112. package/src/server/logger.ts +73 -36
  1113. package/src/server/metadata-collector.ts +174 -0
  1114. package/src/server/metadata-platform.ts +2 -2
  1115. package/src/server/metadata-render.ts +30 -8
  1116. package/src/server/metadata-routes.ts +205 -24
  1117. package/src/server/metadata-social.ts +2 -2
  1118. package/src/server/metadata.ts +23 -2
  1119. package/src/server/middleware-runner.ts +32 -5
  1120. package/src/server/node-stream-transforms.ts +323 -0
  1121. package/src/server/nuqs-ssr-provider.tsx +8 -7
  1122. package/src/server/param-coercion.ts +198 -0
  1123. package/src/server/pipeline-helpers.ts +159 -0
  1124. package/src/server/pipeline-interception.ts +109 -33
  1125. package/src/server/pipeline-metadata.ts +15 -1
  1126. package/src/server/pipeline-outcome.ts +218 -0
  1127. package/src/server/pipeline-phases.ts +606 -0
  1128. package/src/server/pipeline.ts +343 -389
  1129. package/src/server/port-resolution.ts +53 -0
  1130. package/src/server/prebuilt/cache-key.ts +299 -0
  1131. package/src/server/prebuilt/capture-state.ts +89 -0
  1132. package/src/server/prebuilt/key-discipline.ts +122 -0
  1133. package/src/server/prebuilt/manifest-tag-index.ts +46 -0
  1134. package/src/server/prebuilt/overlay.ts +256 -0
  1135. package/src/server/prebuilt/payload-source.ts +202 -0
  1136. package/src/server/prebuilt/slots.ts +190 -0
  1137. package/src/server/prebuilt/synthetic-store.ts +122 -0
  1138. package/src/server/prebuilt-builder.ts +804 -0
  1139. package/src/server/prebuilt-runtime.ts +817 -0
  1140. package/src/server/primitives.ts +246 -97
  1141. package/src/server/publish-params.ts +42 -0
  1142. package/src/server/render-timeout.ts +108 -0
  1143. package/src/server/render-utils.ts +35 -0
  1144. package/src/server/request-context.ts +244 -333
  1145. package/src/server/request-dep.ts +37 -0
  1146. package/src/server/response-cache-policy.ts +45 -0
  1147. package/src/server/route-element-builder.ts +508 -360
  1148. package/src/server/route-element-helpers.ts +37 -0
  1149. package/src/server/route-handler.ts +40 -13
  1150. package/src/server/route-matcher.ts +165 -272
  1151. package/src/server/route-module-loader.ts +161 -0
  1152. package/src/server/rsc-cache-key-guard.ts +122 -0
  1153. package/src/server/rsc-entry/action-middleware-runner.ts +174 -0
  1154. package/src/server/rsc-entry/api-handler.ts +78 -34
  1155. package/src/server/rsc-entry/deny-fallback.ts +93 -0
  1156. package/src/server/rsc-entry/error-renderer.ts +373 -95
  1157. package/src/server/rsc-entry/helpers.ts +226 -95
  1158. package/src/server/rsc-entry/index.ts +405 -323
  1159. package/src/server/rsc-entry/render-route.ts +304 -0
  1160. package/src/server/rsc-entry/revalidate-renderer.ts +350 -0
  1161. package/src/server/rsc-entry/rsc-payload.ts +239 -50
  1162. package/src/server/rsc-entry/rsc-stream.ts +160 -30
  1163. package/src/server/rsc-entry/ssr-bridge.ts +18 -5
  1164. package/src/server/rsc-entry/ssr-renderer.ts +315 -57
  1165. package/src/server/rsc-entry/wrap-action-dispatch.ts +186 -0
  1166. package/src/server/rsc-error-envelope.ts +18 -0
  1167. package/src/server/rsc-prop-warnings.ts +3 -1
  1168. package/src/server/safe-load.ts +60 -0
  1169. package/src/server/sensitive-fields.ts +230 -0
  1170. package/src/server/server-only-guard-noop.js +3 -0
  1171. package/src/server/server-timing.ts +1 -1
  1172. package/src/server/sitemap-generator.ts +337 -0
  1173. package/src/server/sitemap-handler.ts +157 -0
  1174. package/src/server/skippable-prefix.ts +172 -0
  1175. package/src/server/slot-interception.ts +168 -0
  1176. package/src/server/slot-resolver.ts +707 -300
  1177. package/src/server/slot-subtree-contain.ts +255 -0
  1178. package/src/server/ssr-bridge-types.ts +165 -0
  1179. package/src/server/ssr-entry.ts +230 -85
  1180. package/src/server/ssr-render.ts +357 -85
  1181. package/src/server/ssr-wrappers.tsx +162 -0
  1182. package/src/server/state-tree-diff.ts +85 -30
  1183. package/src/server/static-generator.ts +715 -0
  1184. package/src/server/static-not-found.ts +134 -0
  1185. package/src/server/status-code-resolver.ts +107 -148
  1186. package/src/server/stream-utils.ts +292 -0
  1187. package/src/server/tracing.ts +151 -16
  1188. package/src/server/tree-match.ts +262 -0
  1189. package/src/server/types.ts +95 -10
  1190. package/src/server/utils/element-type.ts +88 -0
  1191. package/src/server/utils/escape-html.ts +20 -0
  1192. package/src/server/utils/mdx-file.ts +22 -0
  1193. package/src/server/version-skew.ts +104 -0
  1194. package/src/server/waituntil-bridge.ts +5 -2
  1195. package/src/server/workers-cache-bridge.ts +33 -0
  1196. package/src/shared/als-slots.ts +74 -0
  1197. package/src/shared/base-path.ts +80 -0
  1198. package/src/shared/href-validation.ts +159 -0
  1199. package/src/shared/merge-search-params.ts +55 -0
  1200. package/src/shared/param-value.ts +281 -0
  1201. package/src/shared/payload-root.ts +152 -0
  1202. package/src/shared/redirect-type.ts +17 -0
  1203. package/src/shared/rsc-cache-key.ts +269 -0
  1204. package/src/shared/rsc-error-envelope.ts +16 -0
  1205. package/src/shared/rsc-manifest.ts +29 -0
  1206. package/src/shared/rsc-media-type.ts +59 -0
  1207. package/src/shared/rsc-payload-path.ts +45 -0
  1208. package/src/shared/segment-info.ts +67 -0
  1209. package/src/shared/slot-params.ts +109 -0
  1210. package/src/shared/static-platform-files.ts +75 -0
  1211. package/src/shared/status-reason-phrase.ts +61 -0
  1212. package/src/shims/font-google.ts +1 -1
  1213. package/src/shims/font-local.ts +34 -0
  1214. package/src/shims/headers.ts +122 -1
  1215. package/src/shims/navigation-client.ts +36 -32
  1216. package/src/shims/navigation-rsc.ts +47 -0
  1217. package/src/shims/navigation.ts +10 -7
  1218. package/src/utils/state-machine.ts +111 -0
  1219. package/dist/_chunks/als-registry-k-AtAQ9R.js +0 -41
  1220. package/dist/_chunks/als-registry-k-AtAQ9R.js.map +0 -1
  1221. package/dist/_chunks/format-DNt20Kt8.js +0 -163
  1222. package/dist/_chunks/format-DNt20Kt8.js.map +0 -1
  1223. package/dist/_chunks/interception-DGDIjDbR.js +0 -676
  1224. package/dist/_chunks/interception-DGDIjDbR.js.map +0 -1
  1225. package/dist/_chunks/metadata-routes-CQCnF4VK.js +0 -153
  1226. package/dist/_chunks/metadata-routes-CQCnF4VK.js.map +0 -1
  1227. package/dist/_chunks/request-context-CRj2Zh1E.js +0 -329
  1228. package/dist/_chunks/request-context-CRj2Zh1E.js.map +0 -1
  1229. package/dist/_chunks/ssr-data-DLnbYpj1.js.map +0 -1
  1230. package/dist/_chunks/tracing-DF0G3FB7.js +0 -173
  1231. package/dist/_chunks/tracing-DF0G3FB7.js.map +0 -1
  1232. package/dist/_chunks/use-cookie-dDbpCTx-.js +0 -91
  1233. package/dist/_chunks/use-cookie-dDbpCTx-.js.map +0 -1
  1234. package/dist/_chunks/use-query-states-DAhgj8Gx.js +0 -109
  1235. package/dist/_chunks/use-query-states-DAhgj8Gx.js.map +0 -1
  1236. package/dist/adapters/cloudflare.js.map +0 -1
  1237. package/dist/cache/index.js.map +0 -1
  1238. package/dist/cache/register-cached-function.d.ts +0 -17
  1239. package/dist/cache/register-cached-function.d.ts.map +0 -1
  1240. package/dist/client/browser-entry.d.ts +0 -21
  1241. package/dist/client/browser-entry.d.ts.map +0 -1
  1242. package/dist/client/error-boundary.js.map +0 -1
  1243. package/dist/client/head.d.ts +0 -16
  1244. package/dist/client/head.d.ts.map +0 -1
  1245. package/dist/client/link-status-provider.d.ts +0 -11
  1246. package/dist/client/link-status-provider.d.ts.map +0 -1
  1247. package/dist/client/segment-merger.d.ts +0 -119
  1248. package/dist/client/segment-merger.d.ts.map +0 -1
  1249. package/dist/client/stale-reload.d.ts +0 -44
  1250. package/dist/client/stale-reload.d.ts.map +0 -1
  1251. package/dist/client/transition-root.d.ts +0 -74
  1252. package/dist/client/transition-root.d.ts.map +0 -1
  1253. package/dist/client/use-navigation-pending.d.ts +0 -26
  1254. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  1255. package/dist/client/use-params.d.ts +0 -92
  1256. package/dist/client/use-params.d.ts.map +0 -1
  1257. package/dist/content/index.d.ts +0 -11
  1258. package/dist/content/index.d.ts.map +0 -1
  1259. package/dist/content/index.js +0 -2
  1260. package/dist/plugins/cache-transform.d.ts +0 -36
  1261. package/dist/plugins/cache-transform.d.ts.map +0 -1
  1262. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  1263. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  1264. package/dist/plugins/dev-logs.d.ts.map +0 -1
  1265. package/dist/plugins/dynamic-transform.d.ts +0 -72
  1266. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  1267. package/dist/plugins/server-action-exports.d.ts +0 -26
  1268. package/dist/plugins/server-action-exports.d.ts.map +0 -1
  1269. package/dist/routing/status-file-lint.d.ts +0 -33
  1270. package/dist/routing/status-file-lint.d.ts.map +0 -1
  1271. package/dist/search-params/analyze.d.ts +0 -54
  1272. package/dist/search-params/analyze.d.ts.map +0 -1
  1273. package/dist/search-params/builtin-codecs.d.ts +0 -105
  1274. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  1275. package/dist/search-params/codecs.d.ts +0 -53
  1276. package/dist/search-params/codecs.d.ts.map +0 -1
  1277. package/dist/search-params/create.d.ts +0 -106
  1278. package/dist/search-params/create.d.ts.map +0 -1
  1279. package/dist/search-params/registry.d.ts +0 -20
  1280. package/dist/search-params/registry.d.ts.map +0 -1
  1281. package/dist/server/client-module-map.d.ts +0 -47
  1282. package/dist/server/client-module-map.d.ts.map +0 -1
  1283. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  1284. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  1285. package/dist/server/dev-logger.d.ts.map +0 -1
  1286. package/dist/server/dev-span-processor.d.ts +0 -29
  1287. package/dist/server/dev-span-processor.d.ts.map +0 -1
  1288. package/dist/server/dev-warnings.d.ts +0 -129
  1289. package/dist/server/dev-warnings.d.ts.map +0 -1
  1290. package/dist/server/flush.d.ts +0 -74
  1291. package/dist/server/flush.d.ts.map +0 -1
  1292. package/dist/server/manifest-status-resolver.d.ts +0 -58
  1293. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  1294. package/dist/server/prerender.d.ts +0 -77
  1295. package/dist/server/prerender.d.ts.map +0 -1
  1296. package/dist/server/tree-builder.d.ts +0 -126
  1297. package/dist/server/tree-builder.d.ts.map +0 -1
  1298. package/dist/utils/directive-parser.d.ts +0 -70
  1299. package/dist/utils/directive-parser.d.ts.map +0 -1
  1300. package/src/cache/register-cached-function.ts +0 -99
  1301. package/src/client/browser-entry.ts +0 -674
  1302. package/src/client/head.ts +0 -61
  1303. package/src/client/link-status-provider.tsx +0 -30
  1304. package/src/client/segment-merger.ts +0 -345
  1305. package/src/client/stale-reload.ts +0 -89
  1306. package/src/client/transition-root.tsx +0 -160
  1307. package/src/client/use-navigation-pending.ts +0 -38
  1308. package/src/client/use-params.ts +0 -141
  1309. package/src/content/index.ts +0 -13
  1310. package/src/plugins/cache-transform.ts +0 -199
  1311. package/src/plugins/dev-error-overlay.ts +0 -230
  1312. package/src/plugins/dynamic-transform.ts +0 -161
  1313. package/src/plugins/server-action-exports.ts +0 -220
  1314. package/src/routing/status-file-lint.ts +0 -112
  1315. package/src/search-params/analyze.ts +0 -192
  1316. package/src/search-params/builtin-codecs.ts +0 -228
  1317. package/src/search-params/codecs.ts +0 -153
  1318. package/src/search-params/create.ts +0 -321
  1319. package/src/search-params/registry.ts +0 -31
  1320. package/src/server/client-module-map.ts +0 -58
  1321. package/src/server/dev-fetch-instrumentation.ts +0 -96
  1322. package/src/server/dev-span-processor.ts +0 -78
  1323. package/src/server/dev-warnings.ts +0 -282
  1324. package/src/server/flush.ts +0 -182
  1325. package/src/server/manifest-status-resolver.ts +0 -215
  1326. package/src/server/prerender.ts +0 -139
  1327. package/src/server/tree-builder.ts +0 -382
  1328. package/src/shims/server-only-noop.js +0 -6
  1329. package/src/utils/directive-parser.ts +0 -529
@@ -0,0 +1,1050 @@
1
+ import { n as isRscContentType, t as RSC_CONTENT_TYPE } from "./rsc-media-type-DDc7duTD.js";
2
+ import { a as randomRscCacheKey, n as RSC_KEY_PARAM, o as recordLookup, s as rscCacheKey } from "./rsc-cache-key-ClUiXQnK.js";
3
+ import { i as withBasePath, r as stripBasePath } from "./base-path-DaQrzbez.js";
4
+ import { t as rscPayloadPath } from "./rsc-payload-path-B_LBodc2.js";
5
+ import { t as StatusPageMarker } from "./status-page-marker-DwQBrLBz.js";
6
+ import { m as unloading, o as _setUnloading } from "./state-FippDgxN.js";
7
+ import { i as getRouterOrNull, t as setHardNavigating } from "./navigation-root-mHSK9psY.js";
8
+ import { n as getSsrData } from "./ssr-data-D6T6Y3ef.js";
9
+ import { Component, createContext, createElement } from "react";
10
+ //#region src/shared/payload-root.ts
11
+ /**
12
+ * What a reader gets when the value it was handed is not a payload root.
13
+ *
14
+ * In the browser this is unreachable for a real response: all four producers
15
+ * of a route payload go through `withPublishedParams`, and a client talking to
16
+ * a different build is answered with 204 at Stage 1c
17
+ * (`server/pipeline-phases.ts`) before any payload exists. It is reachable in
18
+ * the router's test/fallback path, where `decodeRsc` is absent and the
19
+ * "payload" is the raw response text.
20
+ */
21
+ var NO_PUBLISHED_PARAMS = {
22
+ params: {},
23
+ slotParams: null
24
+ };
25
+ /** True when `value` carries published params — a root, or a read of one. */
26
+ function hasPublishedParams(value) {
27
+ return typeof value === "object" && value !== null && "params" in value && typeof value.params === "object" && value.params !== null;
28
+ }
29
+ /**
30
+ * Read the params published beside a tree.
31
+ *
32
+ * Accepts a payload root *or* a `PublishedParams` already split off one, so
33
+ * the client can pre-resolve on the navigation path and still hand the same
34
+ * value to the same provider. Never throws.
35
+ */
36
+ function readPublishedParams(source) {
37
+ if (!hasPublishedParams(source)) return NO_PUBLISHED_PARAMS;
38
+ return {
39
+ params: source.params,
40
+ slotParams: source.slotParams ?? null
41
+ };
42
+ }
43
+ /**
44
+ * Read the renderable tree out of a payload root.
45
+ *
46
+ * Returns the value unchanged when it is not a root — the router's fallback
47
+ * path stores raw response text under the same name, and a test asserting on
48
+ * that text should see the text.
49
+ */
50
+ function readPayloadTree(root) {
51
+ if (typeof root === "object" && root !== null && "tree" in root && hasPublishedParams(root)) return root.tree;
52
+ return root;
53
+ }
54
+ /**
55
+ * Split a decoded payload root into its tree and its params.
56
+ *
57
+ * Accepts a settled root or a thenable of one, and preserves which it was: a
58
+ * settled root splits synchronously, so no code path gains a suspend point it
59
+ * did not already have.
60
+ */
61
+ function splitPayloadRoot(root) {
62
+ if (typeof root !== "object" || root === null || typeof root.then !== "function") return {
63
+ tree: readPayloadTree(root),
64
+ params: readPublishedParams(root)
65
+ };
66
+ const settled = root;
67
+ const tree = Promise.resolve(settled).then(readPayloadTree);
68
+ tree.catch(() => {});
69
+ return {
70
+ tree,
71
+ params: Promise.resolve(settled).then(readPublishedParams, () => NO_PUBLISHED_PARAMS)
72
+ };
73
+ }
74
+ //#endregion
75
+ //#region src/client/rsc-fetch.ts
76
+ /**
77
+ * RSC Fetch — handles fetching and parsing RSC Flight payloads.
78
+ *
79
+ * Extracted from router.ts to keep both files under the 500-line limit.
80
+ * This module handles:
81
+ * - Cache-busting URL generation for RSC requests
82
+ * - Building RSC request headers (Accept, X-Timber-State-Tree)
83
+ * - Extracting metadata from RSC response headers
84
+ * - Fetching and decoding RSC payloads
85
+ *
86
+ * See design/19-client-navigation.md §"RSC Payload Handling"
87
+ */
88
+ /**
89
+ * Append a `_rsc=<key>` query parameter to the URL (TIM-1268).
90
+ *
91
+ * The key is a deterministic hash of the RSC request headers, so identical
92
+ * requests share a URL and the payload becomes cacheable. It also keeps the
93
+ * document and the payload on different URLs, so a shared cache cannot
94
+ * return HTML for an RSC request (or vice versa) even where `Vary` is
95
+ * opt-in configuration rather than default behaviour — Cloudflare and
96
+ * CloudFront both. See GHSA-wfc6-r584-vfw7, design/13-security.md.
97
+ *
98
+ * The origin recomputes this key from the received headers and refuses to
99
+ * let a mismatched response be shared-cached, so a caller cannot claim
100
+ * another client's key while sending its own headers.
101
+ *
102
+ * Falls back to a random value when no key can be derived — `crypto.subtle`
103
+ * is absent in non-secure browsing contexts (plain `http://` on a LAN
104
+ * address). Dropping the parameter instead would put the payload back on
105
+ * the document URL, where a query-keyed cache that ignores `Vary` could
106
+ * store a Flight response under `/about` and serve it to an HTML
107
+ * navigation. The random parameter this feature replaced did separate those
108
+ * representations, and the fallback must not be worse than what it
109
+ * replaced. The origin cannot verify a random key, so it refuses to
110
+ * share-cache the response — which is exactly the old behaviour, where a
111
+ * unique URL was never a cache hit anyway.
112
+ *
113
+ * Strips any #fragment before appending — fragments are client-only and
114
+ * fetch() discards them, so _rsc would land inside the hash and be lost.
115
+ */
116
+ async function appendRscParam(url, headers) {
117
+ const hashIndex = url.indexOf("#");
118
+ const urlWithoutHash = hashIndex === -1 ? url : url.slice(0, hashIndex);
119
+ const key = await rscCacheKey(recordLookup(headers)) ?? randomRscCacheKey();
120
+ return `${urlWithoutHash}${urlWithoutHash.includes("?") ? "&" : "?"}${RSC_KEY_PARAM}=${key}`;
121
+ }
122
+ /**
123
+ * The client's deployment ID, set at bootstrap from the runtime config.
124
+ * Sent with every RSC/action request for version skew detection.
125
+ * Null in dev mode. See TIM-446.
126
+ */
127
+ var clientDeploymentId = null;
128
+ /**
129
+ * The deployment base path (Vite's resolved `base`), normalized.
130
+ * Set at bootstrap from `virtual:timber-config`; `'/'` unless the app is
131
+ * deployed under a sub-path. See design/11-platform.md, TIM-1261.
132
+ *
133
+ * **The base is applied in exactly one place: at fetch time**
134
+ * (`toStaticRscUrl`). The static build writes the RSC manifest with
135
+ * root-relative keys *and* root-relative URLs, so the generated site stays
136
+ * relocatable and there is no second copy of the base to drift from this one.
137
+ */
138
+ var basePath = "/";
139
+ /**
140
+ * When true, RSC fetches use _rsc/*.rsc file URLs instead of
141
+ * the route URL with Accept headers. Static hosts ignore Accept
142
+ * headers, so the client must fetch the pre-generated .rsc files
143
+ * directly. Set at bootstrap from virtual:timber-config output mode.
144
+ */
145
+ var staticMode = false;
146
+ /**
147
+ * RSC manifest mapping unhashed → content-hashed `.rsc` URLs. Populated from
148
+ * `window.__TIMBER_RSC_MANIFEST__` (injected into HTML during static
149
+ * generation). Shape shared with the static build that writes it — see
150
+ * `shared/rsc-manifest.ts`. See TIM-1254.
151
+ */
152
+ var rscManifest = null;
153
+ function getRscManifest() {
154
+ if (rscManifest) return rscManifest;
155
+ if (typeof window !== "undefined" && window.__TIMBER_RSC_MANIFEST__) rscManifest = window.__TIMBER_RSC_MANIFEST__;
156
+ return rscManifest;
157
+ }
158
+ /**
159
+ * Resolve a route URL to the `_rsc/*.rsc` file to fetch. The naming rule is
160
+ * `shared/rsc-payload-path.ts`, shared with the build that writes the files.
161
+ *
162
+ * When an RSC manifest is available (hashed filenames from TIM-1254),
163
+ * the manifest is consulted to resolve to the hashed path.
164
+ *
165
+ * / → /_rsc/index.rsc (or /_rsc/index-B7YxEKdN.rsc with manifest)
166
+ * /about → /_rsc/about/index.rsc (or /_rsc/about/index-C8ZzFLfO.rsc)
167
+ * /blog/hello → /_rsc/blog/hello/index.rsc
168
+ *
169
+ * The manifest is written and read in route space (no base prefix), so the
170
+ * base is applied here — once, on the way out. See client/base-path.ts.
171
+ */
172
+ function toStaticRscUrl(url) {
173
+ const unhashed = toUnhashedRscUrl(url);
174
+ const hashedUrl = manifestLookup(unhashed);
175
+ return {
176
+ url: withBasePath(basePath, hashedUrl ?? unhashed),
177
+ hashed: hashedUrl !== null
178
+ };
179
+ }
180
+ /**
181
+ * Compute the unhashed `_rsc/*.rsc` path for a route URL.
182
+ *
183
+ * Returns a **route-space** path: the deployment base is stripped from the
184
+ * incoming URL and is NOT re-applied, because this value doubles as the RSC
185
+ * manifest key, and the manifest is base-less. `toStaticRscUrl` applies the
186
+ * base to whatever is actually fetched.
187
+ *
188
+ * @internal Exported for testing.
189
+ */
190
+ function toUnhashedRscUrl(url) {
191
+ const hashIndex = url.indexOf("#");
192
+ const queryIndex = url.indexOf("?");
193
+ const hashEnd = hashIndex === -1 ? url.length : hashIndex;
194
+ const queryEnd = queryIndex === -1 ? url.length : queryIndex;
195
+ const end = Math.min(hashEnd, queryEnd);
196
+ let pathname = stripBasePath(basePath, url.slice(0, end));
197
+ if (pathname.length > 1 && pathname.endsWith("/")) pathname = pathname.slice(0, -1);
198
+ return rscPayloadPath(pathname);
199
+ }
200
+ /**
201
+ * Look up a key in the RSC manifest, falling back to percent-decoded
202
+ * lookup for encoded browser URLs. Returns the entry or null.
203
+ */
204
+ function manifestEntry(key) {
205
+ const manifest = getRscManifest();
206
+ if (!manifest) return null;
207
+ if (manifest[key]) return manifest[key];
208
+ try {
209
+ const decoded = decodeURIComponent(key);
210
+ if (decoded !== key && manifest[decoded]) return manifest[decoded];
211
+ } catch {}
212
+ return null;
213
+ }
214
+ /**
215
+ * Look up the hashed URL for an unhashed RSC path.
216
+ */
217
+ function manifestLookup(key) {
218
+ return manifestEntry(key)?.url ?? null;
219
+ }
220
+ /** Header name used by the server to signal a version skew reload. */
221
+ var RELOAD_HEADER = "X-Timber-Reload";
222
+ /** Header name for the client's deployment ID. */
223
+ var DEPLOYMENT_ID_HEADER = "X-Timber-Deployment-Id";
224
+ /**
225
+ * Check if a response signals a version skew reload.
226
+ * Triggers a full page reload if the server indicates the client is stale.
227
+ */
228
+ function checkReloadSignal(response) {
229
+ return response.headers.get(RELOAD_HEADER) === "1";
230
+ }
231
+ /**
232
+ * Build the headers for an RSC payload request.
233
+ *
234
+ * **Every header added here is hashed into the payload URL** as the `_rsc`
235
+ * cache key (see `rscCacheKey`), and URLs are logged by proxies, CDNs, and
236
+ * origin access logs. So: no credentials, no session identifiers, no
237
+ * user-supplied content. `fnv1aHash` is a cache-key hash, not a KDF — a
238
+ * low-entropy secret would be recoverable from the URL by brute force.
239
+ * Authentication already travels on cookies, which are not part of this
240
+ * object and never enter the key.
241
+ */
242
+ function buildRscHeaders(stateTree, currentUrl) {
243
+ const headers = { Accept: RSC_CONTENT_TYPE };
244
+ if (stateTree) headers["X-Timber-State-Tree"] = JSON.stringify(stateTree);
245
+ if (currentUrl) headers["X-Timber-URL"] = currentUrl;
246
+ if (clientDeploymentId) headers[DEPLOYMENT_ID_HEADER] = clientDeploymentId;
247
+ return headers;
248
+ }
249
+ /** Dev-only warning for malformed framework headers. Tree-shaken in production. */
250
+ function warnMalformedHeader(headerName, raw) {
251
+ if (process.env.NODE_ENV !== "production") {
252
+ const preview = raw.length > 200 ? raw.slice(0, 200) + "…" : raw;
253
+ console.warn(`[timber] Malformed ${headerName} header \u2014 JSON.parse failed. This indicates a framework bug or header corruption. Raw (first 200 chars): ${preview}`);
254
+ }
255
+ }
256
+ /**
257
+ * Extract segment metadata from the X-Timber-Segments response header.
258
+ * Returns null if the header is missing or malformed.
259
+ *
260
+ * Format: JSON array of {path, isRequestDependent} objects describing the rendered
261
+ * segment chain from root to leaf. Used to populate the client-side
262
+ * segment cache for state tree diffing on subsequent navigations.
263
+ */
264
+ function extractSegmentInfo(response) {
265
+ const header = response.headers.get("X-Timber-Segments");
266
+ if (!header) return null;
267
+ try {
268
+ return JSON.parse(header);
269
+ } catch {
270
+ warnMalformedHeader("X-Timber-Segments", header);
271
+ return null;
272
+ }
273
+ }
274
+ /**
275
+ * Extract skipped segment paths from the X-Timber-Skipped-Segments header.
276
+ * Returns null if the header is missing or malformed.
277
+ *
278
+ * When the server skips sync layouts the client already has cached,
279
+ * it sends this header listing the skipped segment paths (outermost first).
280
+ * The client uses this to merge the partial payload with cached segments.
281
+ */
282
+ function extractSkippedSegments(response) {
283
+ const header = response.headers.get("X-Timber-Skipped-Segments");
284
+ if (!header) return null;
285
+ try {
286
+ const parsed = JSON.parse(header);
287
+ return Array.isArray(parsed) ? parsed : null;
288
+ } catch {
289
+ warnMalformedHeader("X-Timber-Skipped-Segments", header);
290
+ return null;
291
+ }
292
+ }
293
+ /**
294
+ * Thrown when an RSC payload response contains X-Timber-Redirect header.
295
+ * Caught in navigate() to trigger a soft router navigation to the redirect target.
296
+ */
297
+ var RedirectError = class extends Error {
298
+ redirectUrl;
299
+ constructor(url) {
300
+ super(`Server redirect to ${url}`);
301
+ this.redirectUrl = url;
302
+ }
303
+ };
304
+ /**
305
+ * Thrown when the server signals a version skew (X-Timber-Reload header).
306
+ * Caught in navigate() to trigger a full page reload.
307
+ * See TIM-446.
308
+ */
309
+ var VersionSkewError = class extends Error {
310
+ constructor() {
311
+ super("Version skew detected — server has been redeployed");
312
+ }
313
+ };
314
+ /**
315
+ * Thrown when the server returns an error for an RSC payload request.
316
+ * The server sends X-Timber-Error header and a JSON body instead of a
317
+ * broken RSC stream for any RenderError (4xx or 5xx). Caught in
318
+ * navigate() to trigger a hard navigation so the server can render
319
+ * the error page as HTML.
320
+ *
321
+ * See design/10-error-handling.md §"Error Page Rendering for Client Navigation"
322
+ */
323
+ var ServerErrorResponse = class extends Error {
324
+ status;
325
+ url;
326
+ constructor(status, url) {
327
+ super(`Server error ${status} during navigation to ${url}`);
328
+ this.status = status;
329
+ this.url = url;
330
+ }
331
+ };
332
+ /**
333
+ * Thrown when the RSC fetch response has a Content-Type that is not
334
+ * text/x-component — e.g., a static asset (image, CSS, JS) served
335
+ * for a same-origin URL that isn't a route. The response body is
336
+ * cancelled immediately (headers-only cost). Caught in navigate()
337
+ * to trigger a hard navigation; caught in prefetch() to store a
338
+ * negative cache entry so click hard-navigates without a second fetch.
339
+ *
340
+ * See TIM-1231.
341
+ */
342
+ var NonRscResponse = class extends Error {
343
+ url;
344
+ constructor(url) {
345
+ super(`Non-RSC response for ${url}`);
346
+ this.url = url;
347
+ }
348
+ };
349
+ /**
350
+ * Wrap a response body stream to track when it's fully consumed.
351
+ * Returns a new body that passes all chunks through unchanged, plus
352
+ * a `done` promise that resolves when the last chunk is read (or
353
+ * rejects if the stream errors).
354
+ *
355
+ * createFromFetch's thenable resolves on shell arrival, but callers need to
356
+ * know when the stream is fully decoded: that is what `navigateTransition`'s
357
+ * returned promise means, and what the router's pending store, the Navigation
358
+ * API deferred and `<Link>`'s `isPending` are all timed against.
359
+ */
360
+ function trackStreamCompletion(body) {
361
+ let resolveDone;
362
+ let rejectDone;
363
+ const done = new Promise((res, rej) => {
364
+ resolveDone = res;
365
+ rejectDone = rej;
366
+ });
367
+ const reader = body.getReader();
368
+ return {
369
+ body: new ReadableStream({
370
+ async pull(controller) {
371
+ try {
372
+ const result = await reader.read();
373
+ if (result.done) {
374
+ controller.close();
375
+ resolveDone();
376
+ } else controller.enqueue(result.value);
377
+ } catch (error) {
378
+ controller.error(error);
379
+ rejectDone(error);
380
+ }
381
+ },
382
+ cancel(reason) {
383
+ reader.cancel(reason);
384
+ resolveDone();
385
+ }
386
+ }),
387
+ done
388
+ };
389
+ }
390
+ /**
391
+ * Fetch an RSC payload from the server. If a decodeRsc function is provided,
392
+ * the response is decoded into a React element tree via createFromFetch.
393
+ * Otherwise, the raw response text is returned (test mode).
394
+ */
395
+ async function fetchRscPayload(url, deps, stateTree, currentUrl, signal) {
396
+ const staticTarget = staticMode ? toStaticRscUrl(url) : null;
397
+ const fetchTarget = staticTarget ? staticTarget.url : url;
398
+ const headers = staticMode ? buildRscHeaders(void 0, void 0) : buildRscHeaders(stateTree, currentUrl);
399
+ const rscUrl = staticTarget?.hashed ? fetchTarget : await appendRscParam(fetchTarget, headers);
400
+ signal?.throwIfAborted();
401
+ if (deps.decodeRsc) {
402
+ const fetchPromise = deps.fetch(rscUrl, {
403
+ headers,
404
+ redirect: "manual",
405
+ signal
406
+ });
407
+ let segmentInfo = null;
408
+ let skippedSegments = null;
409
+ let streamDone = Promise.resolve();
410
+ const wrappedPromise = fetchPromise.then((response) => {
411
+ if (checkReloadSignal(response)) throw new VersionSkewError();
412
+ const redirectLocation = response.headers.get("X-Timber-Redirect") || (response.status >= 300 && response.status < 400 ? response.headers.get("Location") : null);
413
+ if (redirectLocation) throw new RedirectError(redirectLocation);
414
+ if (response.headers.get("X-Timber-Error") === "1") throw new ServerErrorResponse(response.status, url);
415
+ if (staticMode) {
416
+ const contentType = response.headers.get("content-type");
417
+ if (!response.ok || contentType && contentType.split(";")[0].trim().toLowerCase() === "text/html") {
418
+ response.body?.cancel();
419
+ throw new NonRscResponse(url);
420
+ }
421
+ } else if (!isRscContentType(response.headers.get("content-type"))) {
422
+ response.body?.cancel();
423
+ throw new NonRscResponse(url);
424
+ }
425
+ segmentInfo = extractSegmentInfo(response);
426
+ skippedSegments = extractSkippedSegments(response);
427
+ if (response.body) {
428
+ const tracked = trackStreamCompletion(response.body);
429
+ streamDone = tracked.done;
430
+ streamDone.catch(() => {});
431
+ return new Response(tracked.body, {
432
+ headers: response.headers,
433
+ status: response.status
434
+ });
435
+ }
436
+ return response;
437
+ });
438
+ await wrappedPromise;
439
+ const root = deps.decodeRsc(wrappedPromise);
440
+ const { tree: payload, params } = splitPayloadRoot(root);
441
+ const payloadError = new Promise((_, reject) => {
442
+ Promise.resolve(root).then(() => {}, reject);
443
+ });
444
+ payloadError.catch(() => {});
445
+ const decodePromise = Promise.race([streamDone, payloadError]);
446
+ decodePromise.catch(() => {});
447
+ return {
448
+ payload,
449
+ params,
450
+ decodePromise,
451
+ segmentInfo,
452
+ skippedSegments
453
+ };
454
+ }
455
+ const response = await deps.fetch(rscUrl, {
456
+ headers,
457
+ redirect: "manual",
458
+ signal
459
+ });
460
+ if (response.status >= 300 && response.status < 400) {
461
+ const location = response.headers.get("Location");
462
+ if (location) throw new RedirectError(location);
463
+ }
464
+ if (response.headers.get("X-Timber-Error") === "1") throw new ServerErrorResponse(response.status, url);
465
+ if (staticMode) {
466
+ const fallbackContentType = response.headers.get("content-type");
467
+ if (!response.ok || fallbackContentType && fallbackContentType.split(";")[0].trim().toLowerCase() === "text/html") {
468
+ response.body?.cancel();
469
+ throw new NonRscResponse(url);
470
+ }
471
+ } else if (!isRscContentType(response.headers.get("content-type"))) {
472
+ response.body?.cancel();
473
+ throw new NonRscResponse(url);
474
+ }
475
+ return {
476
+ payload: await response.text(),
477
+ params: readPublishedParams(void 0),
478
+ decodePromise: null,
479
+ segmentInfo: extractSegmentInfo(response),
480
+ skippedSegments: extractSkippedSegments(response)
481
+ };
482
+ }
483
+ //#endregion
484
+ //#region src/client/unload-guard.ts
485
+ /**
486
+ * Page unload detection — suppresses spurious errors during page refresh/navigation.
487
+ *
488
+ * When the user refreshes the page or navigates away while React is still
489
+ * streaming Suspense content, the aborted connection causes streaming errors.
490
+ * These are not application errors — they're a side effect of the browser
491
+ * tearing down the connection. This module tracks whether the page is being
492
+ * unloaded so error boundaries and error handlers can suppress abort-related
493
+ * errors during the unload window.
494
+ *
495
+ * This is the single owner of "is this document going away". Anything that
496
+ * needs the answer imports `isPageUnloading()` — an unload flag maintained a
497
+ * second time somewhere else is a flag that will drift out of agreement with
498
+ * this one (TIM-1260).
499
+ *
500
+ * Mutable state is delegated to client/state.ts for singleton guarantees.
501
+ * See design/18-build-system.md §"Singleton State Registry"
502
+ *
503
+ * See design/10-error-handling.md §"Known limitation: deny() inside Suspense and hydration"
504
+ */
505
+ /**
506
+ * Departure is *committed*: `pagehide` has fired, or this document has called
507
+ * reload() on itself. `beforeunload` alone doesn't qualify — it is
508
+ * speculative, and the user can still cancel out of it.
509
+ */
510
+ var committed = false;
511
+ if (typeof window !== "undefined") {
512
+ window.addEventListener("beforeunload", () => {
513
+ _setUnloading(true);
514
+ setTimeout(() => {
515
+ if (!committed) _setUnloading(false);
516
+ }, 0);
517
+ });
518
+ window.addEventListener("pagehide", () => {
519
+ committed = true;
520
+ _setUnloading(true);
521
+ });
522
+ window.addEventListener("pageshow", (event) => {
523
+ if (event.persisted) {
524
+ committed = false;
525
+ _setUnloading(false);
526
+ }
527
+ });
528
+ }
529
+ /**
530
+ * Returns true if the page is currently being unloaded (user refreshed
531
+ * or navigated away). Error boundaries should suppress errors in this state.
532
+ */
533
+ function isPageUnloading() {
534
+ return unloading;
535
+ }
536
+ //#endregion
537
+ //#region src/client/stale-client.ts
538
+ /**
539
+ * Stale Client — knowing when this bundle has been superseded.
540
+ *
541
+ * Layer 1 of version skew handling (see design/33-version-skew.md) is
542
+ * proactive: the server compares `X-Timber-Deployment-Id` against the current
543
+ * build and answers a stale client with `X-Timber-Reload: 1`. That covers
544
+ * every RSC navigation and every server action — as long as there is a server
545
+ * in the request path.
546
+ *
547
+ * This module is the reactive half, plus the state both halves feed. It
548
+ * recognizes the two error shapes a stale client produces on its own:
549
+ *
550
+ * 1. **Stale client references** — React's Flight client throws
551
+ * "Could not find the module …" when an RSC payload names a client module
552
+ * ID that isn't in this bundle's manifest.
553
+ * 2. **Chunk load failures** — a content-hashed chunk that no longer exists on
554
+ * the CDN fails to `import()`. Every engine words this differently.
555
+ *
556
+ * It matters most for `output: 'static'`, where there is no server to send the
557
+ * reload header and this is the *only* skew detection that can run.
558
+ *
559
+ * **Nothing here reloads the page.** A stale client is recorded, not acted on;
560
+ * the router turns the next user-initiated navigation into a full document
561
+ * load. See design/33-version-skew.md §"Recovery on the next navigation" for
562
+ * why — a self-issued `location.reload()` cannot tell a recovery from a bounce
563
+ * between two live deployments, and mid-rollout it produces exactly that loop.
564
+ *
565
+ * See TIM-1260, TIM-1275.
566
+ */
567
+ /**
568
+ * Substrings that identify a failed dynamic import, lowercased for
569
+ * case-insensitive matching. Engines and bundlers each word this
570
+ * differently and none of them expose a stable error code.
571
+ */
572
+ var CHUNK_LOAD_PATTERNS = [
573
+ "failed to fetch dynamically imported module",
574
+ "error loading dynamically imported module",
575
+ "importing a module script failed",
576
+ "unable to preload css for"
577
+ ];
578
+ /** Substring React's Flight client uses when a client module ID is unknown. */
579
+ var STALE_REFERENCE_PATTERN = "could not find the module";
580
+ /**
581
+ * Pull a comparable message out of an unknown thrown value. Rejections cross
582
+ * enough boundaries (event handlers, `unhandledrejection`, Vite's preload
583
+ * event) that the value is not reliably an `Error`.
584
+ */
585
+ function messageOf(error) {
586
+ if (typeof error === "string") return error.toLowerCase();
587
+ if (error instanceof Error) return error.message.toLowerCase();
588
+ if (error && typeof error === "object" && "message" in error) {
589
+ const message = error.message;
590
+ if (typeof message === "string") return message.toLowerCase();
591
+ }
592
+ return "";
593
+ }
594
+ /**
595
+ * True when the error is React's "client reference not in this manifest"
596
+ * failure — the payload was produced by a build this bundle doesn't match.
597
+ */
598
+ function isStaleClientReference(error) {
599
+ return messageOf(error).includes(STALE_REFERENCE_PATTERN);
600
+ }
601
+ /**
602
+ * True when the error is a failed dynamic import or CSS preload — the
603
+ * content-hashed chunk this bundle asks for is gone from the CDN.
604
+ */
605
+ function isChunkLoadError(error) {
606
+ if (error instanceof Error && error.name === "ChunkLoadError") return true;
607
+ const message = messageOf(error);
608
+ return CHUNK_LOAD_PATTERNS.some((pattern) => message.includes(pattern));
609
+ }
610
+ /**
611
+ * True once this client is known to be running against a superseded
612
+ * deployment. One-way: a document that has gone stale cannot come back, since
613
+ * the only way to get fresh code is to load a new document.
614
+ *
615
+ * In-memory on purpose. Persisting it would be wrong — the next document gets
616
+ * whatever build the server hands it, and if that one is stale too it will
617
+ * find out the same way.
618
+ */
619
+ var stale = false;
620
+ /**
621
+ * True once {@link initStaleClient} has seen a deployment ID — i.e. this is a
622
+ * production build. False in dev, where nothing is ever stale: HMR owns code
623
+ * updates, and a failed dynamic import is a real error the developer needs to
624
+ * see rather than something a page load fixes.
625
+ */
626
+ var deployed = false;
627
+ /** Whether this client has been superseded by a newer deployment. */
628
+ function isClientStale() {
629
+ return stale;
630
+ }
631
+ /**
632
+ * Record that the origin has told us this client is stale — the `X-Timber-Reload`
633
+ * header on an RSC or action response. Authoritative, so it is not gated on
634
+ * anything: a dev server never sends the header in the first place.
635
+ */
636
+ function markClientStale() {
637
+ stale = true;
638
+ }
639
+ /**
640
+ * Record staleness if `error` is one of the shapes a superseded bundle
641
+ * produces. Returns whether it did, so a caller mid-navigation can decide to
642
+ * hard-navigate instead of surfacing the error.
643
+ *
644
+ * Inference, unlike {@link markClientStale}, so it is gated on being a
645
+ * production build. This is the single place that gate lives — call sites
646
+ * cannot see each other, and "remember to gate the next one too" is not a
647
+ * guarantee.
648
+ */
649
+ function markStaleFromError(error) {
650
+ if (!deployed) return false;
651
+ if (isPageUnloading()) return false;
652
+ if (!isStaleClientReference(error) && !isChunkLoadError(error)) return false;
653
+ stale = true;
654
+ return true;
655
+ }
656
+ //#endregion
657
+ //#region src/client/router-skew.ts
658
+ /**
659
+ * Router Skew Recording — turning a rejection into "this bundle is superseded".
660
+ *
661
+ * Detection lives in `stale-client.ts`; this is the one place the router (and
662
+ * anything else holding an RSC rejection) turns an error into that verdict.
663
+ * Recovery is not here: every path that gives up on client-side navigation —
664
+ * skew or not — leaves through `createSpaExits()` in `router-effects.ts`.
665
+ *
666
+ * See design/33-version-skew.md §"Recovery on the next navigation"
667
+ */
668
+ /**
669
+ * Record a version skew if `error` is one, and report whether it was.
670
+ *
671
+ * `VersionSkewError` is the origin saying so outright; the reactive shapes are
672
+ * inferred from the error text and are a no-op in dev.
673
+ *
674
+ * Closes over nothing — anywhere an RSC payload can fail needs it, including
675
+ * places that have no router instance to hand.
676
+ */
677
+ function recordSkew(error) {
678
+ if (error instanceof VersionSkewError) {
679
+ markClientStale();
680
+ return true;
681
+ }
682
+ return markStaleFromError(error);
683
+ }
684
+ //#endregion
685
+ //#region src/client/router-effects.ts
686
+ /**
687
+ * Router Effects — full-page navigation and post-paint scroll.
688
+ *
689
+ * The two things the router does *to the document* rather than to its own
690
+ * state: leaving the SPA entirely, and moving the scroll position once React
691
+ * has committed. Extracted from `router.ts` to keep that file focused on
692
+ * navigation state (see design/18-build-system.md §"No file >500 lines").
693
+ *
694
+ * See design/19-client-navigation.md §"Scroll Restoration"
695
+ */
696
+ function createScrollEffects(deps) {
697
+ /** Run a callback after the next paint (after React commit). */
698
+ function afterPaint(callback) {
699
+ if (deps.afterPaint) deps.afterPaint(callback);
700
+ else callback();
701
+ }
702
+ function restoreScrollAfterPaint(scrollY) {
703
+ afterPaint(() => {
704
+ deps.scrollTo(0, scrollY);
705
+ window.dispatchEvent(new Event("timber:scroll-restored"));
706
+ });
707
+ }
708
+ function scrollToHashAfterPaint(hash) {
709
+ afterPaint(() => {
710
+ if (deps.scrollToHash?.(hash) !== true) deps.scrollTo(0, 0);
711
+ window.dispatchEvent(new Event("timber:scroll-restored"));
712
+ });
713
+ }
714
+ return {
715
+ restoreScrollAfterPaint,
716
+ scrollToHashAfterPaint
717
+ };
718
+ }
719
+ /**
720
+ * Leave the SPA and never come back.
721
+ *
722
+ * Every router path that gives up on client-side navigation does the same
723
+ * three things: flag the hard navigation so the Navigation API and React stop
724
+ * acting on a dying document, perform the document load, then block forever so
725
+ * the caller cannot carry on rendering into it. The returned promise is
726
+ * deliberately unresolvable — `location` assignment does not stop this turn of
727
+ * the event loop.
728
+ *
729
+ * Callers: server error, non-RSC response, and every version skew path
730
+ * ([33-version-skew.md](../../../../design/33-version-skew.md)).
731
+ */
732
+ function leaveSpa(url, fromUrl) {
733
+ setHardNavigating(true);
734
+ hardNavigate(url, fromUrl);
735
+ return new Promise(() => {});
736
+ }
737
+ /**
738
+ * The two ownership-aware ways out of the SPA.
739
+ *
740
+ * Both wrap {@link leaveSpa} with the question "is this navigation still the
741
+ * one the user is waiting for?" — asked before leaving on a failure, answered
742
+ * by force on a path that decided before any navigation began. They live
743
+ * together because every caller of `leaveSpa()` needs one or the other, and
744
+ * an unguarded call is the bug (TIM-1275, TIM-1276).
745
+ */
746
+ function createSpaExits({ currentOwner, supersede }) {
747
+ async function leaveSpaIfOwned(owner, url, fromUrl) {
748
+ if (currentOwner() !== owner) return;
749
+ await leaveSpa(url, fromUrl);
750
+ }
751
+ function leaveSpaSuperseding(url, fromUrl) {
752
+ supersede();
753
+ return leaveSpa(url, fromUrl);
754
+ }
755
+ return {
756
+ leaveSpaIfOwned,
757
+ leaveSpaSuperseding
758
+ };
759
+ }
760
+ /**
761
+ * Answer the failures an RSC fetch can end on, or report that this one is not
762
+ * ours to answer.
763
+ *
764
+ * Returns `true` when the error was handled; the caller rethrows on `false`.
765
+ * Handling a failure by leaving the SPA never resolves at all — the document
766
+ * is going away and the caller must not carry on rendering into it.
767
+ *
768
+ * There is exactly one family of these and one response to it, so it lives in
769
+ * one function rather than once per fetch path. `navigate()`, `refresh()` and
770
+ * an uncached traversal all reach it: the latter two used to rethrow instead,
771
+ * and since nobody awaits a traversal that meant pressing Back on a 500 left
772
+ * the user on the old document with an unhandled rejection (TIM-1277).
773
+ *
774
+ * Order matters in exactly one way: `recordSkew()` ends in error-*text*
775
+ * matching, so it goes last and can never pre-empt a framework control-flow
776
+ * signal whose message happens to read like a stale bundle. The class checks
777
+ * above it are mutually exclusive, so their order is free.
778
+ *
779
+ * Must be called from inside the `runNavigation()` callback — see
780
+ * {@link SpaExits.leaveSpaIfOwned}.
781
+ */
782
+ function createNavigationRecovery({ currentOwner, leaveSpaIfOwned, navigate }) {
783
+ return async function recoverFromNavigationError(error, owner, url, fromUrl) {
784
+ if (error instanceof RedirectError) {
785
+ if (currentOwner() !== owner) return true;
786
+ await navigate(error.redirectUrl);
787
+ return true;
788
+ }
789
+ if (error instanceof ServerErrorResponse || error instanceof NonRscResponse || recordSkew(error)) {
790
+ await leaveSpaIfOwned(owner, url, fromUrl);
791
+ return true;
792
+ }
793
+ return false;
794
+ };
795
+ }
796
+ /**
797
+ * Perform the full document load.
798
+ *
799
+ * `fromUrl` is the URL the navigation departed from, passed explicitly
800
+ * because the address bar may have already been updated.
801
+ *
802
+ * When the target differs from the departure point only by #fragment,
803
+ * assigning `href` is a hash change, not a load — so assign first (to update
804
+ * the address bar) and then reload (TIM-1235).
805
+ */
806
+ function hardNavigate(url, fromUrl) {
807
+ const current = new URL(fromUrl, window.location.origin);
808
+ const target = new URL(url, window.location.origin);
809
+ if (target.pathname === current.pathname && target.search === current.search) {
810
+ window.location.href = url;
811
+ window.location.reload();
812
+ } else window.location.href = url;
813
+ }
814
+ //#endregion
815
+ //#region src/client/error-boundary.tsx
816
+ /**
817
+ * Framework-injected React error boundary.
818
+ *
819
+ * Catches errors thrown by children and renders a fallback component
820
+ * with the appropriate props based on error type:
821
+ * - DenySignal (4xx) → { status, dangerouslyPassData }
822
+ * - RenderError (5xx) → { error, digest, reset }
823
+ * - Unhandled error → { error, digest: null, reset }
824
+ *
825
+ * The `status` prop controls which errors this boundary catches:
826
+ * - Specific code (e.g. 403) → only that status
827
+ * - Category (400) → any 4xx
828
+ * - Category (500) → any 5xx
829
+ * - Omitted → catches everything (error.tsx behavior)
830
+ *
831
+ * See design/10-error-handling.md §"Status-Code Files"
832
+ */
833
+ /**
834
+ * Tracks the chain of segment keys from root to the current boundary.
835
+ * Each keyed `TimberErrorBoundary` appends its `segmentKey`; unkeyed
836
+ * slot boundaries pass the parent value through. The claim rule uses
837
+ * this to find the first *reachable* owner from the `owners` list,
838
+ * eliminating the owner-below-throw-site escape. See TIM-1450.
839
+ */
840
+ var DenyAncestryContext = createContext([]);
841
+ var _handledRedirects = /* @__PURE__ */ new WeakSet();
842
+ var _handledExits = /* @__PURE__ */ new WeakSet();
843
+ var _pendingRedirectLocation = null;
844
+ var TimberErrorBoundary = class extends Component {
845
+ constructor(props) {
846
+ super(props);
847
+ this.state = {
848
+ hasError: false,
849
+ error: null
850
+ };
851
+ }
852
+ static getDerivedStateFromError(error) {
853
+ if (isPageUnloading()) return {
854
+ hasError: false,
855
+ error: null
856
+ };
857
+ return {
858
+ hasError: true,
859
+ error
860
+ };
861
+ }
862
+ componentDidCatch(error) {
863
+ markStaleFromError(error);
864
+ }
865
+ componentDidUpdate(prevProps) {
866
+ if (this.state.hasError && prevProps.children !== this.props.children) this.setState({
867
+ hasError: false,
868
+ error: null
869
+ });
870
+ }
871
+ /** Reset the error state so children re-render. */
872
+ reset = () => {
873
+ this.setState({
874
+ hasError: false,
875
+ error: null
876
+ });
877
+ };
878
+ static contextType = DenyAncestryContext;
879
+ get childAncestry() {
880
+ const parent = this.context ?? [];
881
+ const key = this.props.segmentKey;
882
+ return key && !parent.includes(key) ? [...parent, key] : parent;
883
+ }
884
+ render() {
885
+ if (!this.state.hasError || !this.state.error) return createElement(DenyAncestryContext.Provider, { value: this.childAncestry }, this.props.children);
886
+ const error = this.state.error;
887
+ const parsed = parseDigest(error);
888
+ if (parsed?.type === "redirect") {
889
+ if (typeof window === "undefined") throw error;
890
+ if (!(_handledRedirects.has(error) || _pendingRedirectLocation === parsed.location)) {
891
+ _handledRedirects.add(error);
892
+ const router = getRouterOrNull();
893
+ if (router) {
894
+ _pendingRedirectLocation = parsed.location;
895
+ queueMicrotask(() => {
896
+ router.navigate(parsed.location, { replace: true }).catch(() => {
897
+ window.location.href = parsed.location;
898
+ }).finally(() => {
899
+ _pendingRedirectLocation = null;
900
+ });
901
+ });
902
+ } else window.location.href = parsed.location;
903
+ }
904
+ return this.markStatusPage(null);
905
+ }
906
+ if (parsed?.type === "deny" && Array.isArray(parsed.owners) && parsed.owners.length > 0) {
907
+ if (!this.props.lastResort && !this.props.isSlotBoundary) {
908
+ const reachable = parsed.owners.find((k) => this.childAncestry.includes(k));
909
+ if (!this.props.segmentKey || reachable !== this.props.segmentKey) throw error;
910
+ }
911
+ }
912
+ if (this.props.denyOnly && !this.props.lastResort && parsed?.type !== "deny") throw error;
913
+ if (this.props.lastResort && parsed?.type !== "deny") {
914
+ if (typeof window === "undefined") throw error;
915
+ if (!_handledExits.has(error)) {
916
+ _handledExits.add(error);
917
+ const router = getRouterOrNull();
918
+ const current = window.location.pathname + window.location.search;
919
+ const target = router?.getPendingUrl() ?? current;
920
+ queueMicrotask(() => {
921
+ leaveSpa(target, current);
922
+ });
923
+ }
924
+ return null;
925
+ }
926
+ if (this.props.status != null) {
927
+ const errorStatus = getErrorStatus(parsed, error);
928
+ if (errorStatus == null || !statusMatches(this.props.status, errorStatus)) throw error;
929
+ }
930
+ if (parsed?.type === "deny") {
931
+ if (this.props.fallbackElement == null || this.props.isSlotBoundary) {
932
+ const ssrData = getSsrData();
933
+ if (ssrData?._navContext) {
934
+ ssrData._navContext._denyHandledByBoundary = true;
935
+ if (!this.props.isSlotBoundary) ssrData._navContext.statusCode = parsed.status;
936
+ }
937
+ }
938
+ }
939
+ return this.markStatusPage(this.renderFallback(parsed, error));
940
+ }
941
+ /**
942
+ * The status page this boundary shows for a row it claimed. Its shape is
943
+ * the file's documented contract: TSX status files get `{ status,
944
+ * dangerouslyPassData }`, `error.tsx` gets `{ error, digest, reset }` (plus
945
+ * the deny extras for dual-shape implementations — without the error prop,
946
+ * an error.tsx reading error.message crashes on deny fall-through, TIM-1081),
947
+ * and an MDX status file is the element pre-rendered for it at tree-build
948
+ * time, since a server component cannot cross the RSC→client boundary as a
949
+ * function prop.
950
+ */
951
+ renderFallback(parsed, error) {
952
+ if (this.props.fallbackElement != null) return this.props.fallbackElement;
953
+ if (parsed?.type === "deny") {
954
+ if (this.props.status != null) return createElement(this.props.fallbackComponent, {
955
+ status: parsed.status,
956
+ dangerouslyPassData: parsed.data
957
+ });
958
+ return createElement(this.props.fallbackComponent, {
959
+ error: denyError(parsed.status, error),
960
+ digest: null,
961
+ reset: this.reset,
962
+ status: parsed.status,
963
+ dangerouslyPassData: parsed.data
964
+ });
965
+ }
966
+ const digest = parsed?.type === "render-error" ? {
967
+ code: parsed.code,
968
+ data: parsed.data
969
+ } : null;
970
+ return createElement(this.props.fallbackComponent, {
971
+ error,
972
+ digest,
973
+ reset: this.reset
974
+ });
975
+ }
976
+ /**
977
+ * A status page (or, for a redirect row, nothing at all) replaced part of
978
+ * the main route, and the segment cache must not learn a chain that never
979
+ * mounted; the marker tells the navigation that commits this tree. A boundary that declined in `render()` re-threw
980
+ * before getting here, so only the boundary that put a page on screen
981
+ * speaks. A slot degrading leaves the page and its chain intact, so slot
982
+ * boundaries stay silent. See `status-page-marker.tsx` (TIM-1495).
983
+ */
984
+ markStatusPage(page) {
985
+ if (this.props.isSlotBoundary) return page;
986
+ return createElement(StatusPageMarker, null, page);
987
+ }
988
+ };
989
+ /**
990
+ * Parse the structured digest from the error.
991
+ * React sets `error.digest` from the string returned by RSC's onError.
992
+ */
993
+ function parseDigest(error) {
994
+ const raw = error.digest;
995
+ if (typeof raw !== "string") return null;
996
+ try {
997
+ const parsed = JSON.parse(raw);
998
+ if (parsed && typeof parsed === "object" && typeof parsed.type === "string") return parsed;
999
+ } catch (e) {
1000
+ console.debug("[timber] error digest is not valid JSON:", e instanceof Error ? e.message : e);
1001
+ }
1002
+ return null;
1003
+ }
1004
+ /**
1005
+ * The Error an `error.tsx` serving a deny should receive.
1006
+ *
1007
+ * The error that actually arrives here is React's, not the framework's: a
1008
+ * server-thrown error crossing Flight has its message and name replaced with
1009
+ * a generic redacted string in production, by design. An `error.tsx` written
1010
+ * per the docs branches on `error.message` — so handing it the redacted error
1011
+ * gives it nothing to branch on, while the in-tree path hands the same file a
1012
+ * `DenySignal` named error reading `Access denied with status <N>` (see
1013
+ * `renderDenyEntry`). This reconstructs that shape from the digest, which is
1014
+ * where the status already is.
1015
+ *
1016
+ * Derived from the status alone — no stack, no server data — so it is safe on
1017
+ * the client for the same reason the digest is. See design/13-security.md
1018
+ * §"Errors don't leak", TIM-1081.
1019
+ */
1020
+ function denyError(status, original) {
1021
+ if (original.name === "DenySignal") return original;
1022
+ const error = /* @__PURE__ */ new Error(`Access denied with status ${status}`);
1023
+ error.name = "DenySignal";
1024
+ return error;
1025
+ }
1026
+ /**
1027
+ * Extract the HTTP status code from a parsed digest or error message.
1028
+ * Falls back to message pattern matching for errors without a digest.
1029
+ */
1030
+ function getErrorStatus(parsed, error) {
1031
+ if (parsed?.type === "deny") return parsed.status;
1032
+ if (parsed?.type === "render-error") return parsed.status;
1033
+ if (parsed?.type === "redirect") return parsed.status;
1034
+ const match = error.message.match(/^Access denied with status (\d+)$/);
1035
+ if (match) return parseInt(match[1], 10);
1036
+ return 500;
1037
+ }
1038
+ /**
1039
+ * Check whether an error's status matches the boundary's status filter.
1040
+ * Category markers (400, 500) match any status in that range.
1041
+ */
1042
+ function statusMatches(boundaryStatus, errorStatus) {
1043
+ if (boundaryStatus === 400) return errorStatus >= 400 && errorStatus <= 499;
1044
+ if (boundaryStatus === 500) return errorStatus >= 500 && errorStatus <= 599;
1045
+ return boundaryStatus === errorStatus;
1046
+ }
1047
+ //#endregion
1048
+ export { createSpaExits as a, NonRscResponse as c, readPublishedParams as d, createScrollEffects as i, fetchRscPayload as l, TimberErrorBoundary as n, recordSkew as o, createNavigationRecovery as r, isClientStale as s, DenyAncestryContext as t, readPayloadTree as u };
1049
+
1050
+ //# sourceMappingURL=error-boundary-BfPHZjm0.js.map