@timber-js/app 0.2.0-alpha.21 → 0.2.0-alpha.211

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