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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1324) hide show
  1. package/LICENSE +8 -0
  2. package/agent-skill.md +346 -0
  3. package/dist/_chunks/actions-d1hCqnU3.js +345 -0
  4. package/dist/_chunks/actions-d1hCqnU3.js.map +1 -0
  5. package/dist/_chunks/als-registry-C6kcfprT.js +41 -0
  6. package/dist/_chunks/als-registry-C6kcfprT.js.map +1 -0
  7. package/dist/_chunks/als-slots-BEEIPKYm.js +26 -0
  8. package/dist/_chunks/als-slots-BEEIPKYm.js.map +1 -0
  9. package/dist/_chunks/base-path-DaQrzbez.js +80 -0
  10. package/dist/_chunks/base-path-DaQrzbez.js.map +1 -0
  11. package/dist/_chunks/build-manifest-DTmSGLRz.js +135 -0
  12. package/dist/_chunks/build-manifest-DTmSGLRz.js.map +1 -0
  13. package/dist/_chunks/build-output-helper-9dqCv1pZ.js +370 -0
  14. package/dist/_chunks/build-output-helper-9dqCv1pZ.js.map +1 -0
  15. package/dist/_chunks/cache-api-ByagcC-J.js +1149 -0
  16. package/dist/_chunks/cache-api-ByagcC-J.js.map +1 -0
  17. package/dist/_chunks/canonicalize-CgHoscYO.js +66 -0
  18. package/dist/_chunks/canonicalize-CgHoscYO.js.map +1 -0
  19. package/dist/_chunks/chains-Bpb0W4ax.js +412 -0
  20. package/dist/_chunks/chains-Bpb0W4ax.js.map +1 -0
  21. package/dist/_chunks/cli-check-D6VolrDV.js +293 -0
  22. package/dist/_chunks/cli-check-D6VolrDV.js.map +1 -0
  23. package/dist/_chunks/cli-schema-sync-D6rO-VcS.js +299 -0
  24. package/dist/_chunks/cli-schema-sync-D6rO-VcS.js.map +1 -0
  25. package/dist/_chunks/cloudflare-BFb__LYG.js +1290 -0
  26. package/dist/_chunks/cloudflare-BFb__LYG.js.map +1 -0
  27. package/dist/_chunks/codec-registry-oOUxugz3.js +21 -0
  28. package/dist/_chunks/codec-registry-oOUxugz3.js.map +1 -0
  29. package/dist/_chunks/convention-lint-fRkwVwEH.js +893 -0
  30. package/dist/_chunks/convention-lint-fRkwVwEH.js.map +1 -0
  31. package/dist/_chunks/dist-DtrJyBbw.js +386 -0
  32. package/dist/_chunks/dist-DtrJyBbw.js.map +1 -0
  33. package/dist/_chunks/error-boundary-BfPHZjm0.js +1050 -0
  34. package/dist/_chunks/error-boundary-BfPHZjm0.js.map +1 -0
  35. package/dist/_chunks/fast-hash-C-tVYrLb.js +41 -0
  36. package/dist/_chunks/fast-hash-C-tVYrLb.js.map +1 -0
  37. package/dist/_chunks/file-cache-Dw6BJPG7.js +458 -0
  38. package/dist/_chunks/file-cache-Dw6BJPG7.js.map +1 -0
  39. package/dist/_chunks/format-BKclgVbk.js +14 -0
  40. package/dist/_chunks/format-BKclgVbk.js.map +1 -0
  41. package/dist/_chunks/fs-identity-D7vb6GdI.js +208 -0
  42. package/dist/_chunks/fs-identity-D7vb6GdI.js.map +1 -0
  43. package/dist/_chunks/graph-cache-CP4GEmf9.js +304 -0
  44. package/dist/_chunks/graph-cache-CP4GEmf9.js.map +1 -0
  45. package/dist/_chunks/href-validation-BIrxavIy.js +213 -0
  46. package/dist/_chunks/href-validation-BIrxavIy.js.map +1 -0
  47. package/dist/_chunks/json-lossy-check-ClNvBM_3.js +63 -0
  48. package/dist/_chunks/json-lossy-check-ClNvBM_3.js.map +1 -0
  49. package/dist/_chunks/live-graph-D_2D32Ad.js +150 -0
  50. package/dist/_chunks/live-graph-D_2D32Ad.js.map +1 -0
  51. package/dist/_chunks/logger-uLBuGKDI.js +1484 -0
  52. package/dist/_chunks/logger-uLBuGKDI.js.map +1 -0
  53. package/dist/_chunks/navigation-context-D0TU0Jog.js +135 -0
  54. package/dist/_chunks/navigation-context-D0TU0Jog.js.map +1 -0
  55. package/dist/_chunks/navigation-root-mHSK9psY.js +126 -0
  56. package/dist/_chunks/navigation-root-mHSK9psY.js.map +1 -0
  57. package/dist/_chunks/param-value-C8TNYchQ.js +66 -0
  58. package/dist/_chunks/param-value-C8TNYchQ.js.map +1 -0
  59. package/dist/_chunks/plugin-context-8idfR3UZ.js +321 -0
  60. package/dist/_chunks/plugin-context-8idfR3UZ.js.map +1 -0
  61. package/dist/_chunks/poison-rules-DoEhbqaY.js +110 -0
  62. package/dist/_chunks/poison-rules-DoEhbqaY.js.map +1 -0
  63. package/dist/_chunks/poison-scan-Bm9Yyqk9.js +101 -0
  64. package/dist/_chunks/poison-scan-Bm9Yyqk9.js.map +1 -0
  65. package/dist/_chunks/purge-store-Byr8XOjU.js +14 -0
  66. package/dist/_chunks/purge-store-Byr8XOjU.js.map +1 -0
  67. package/dist/_chunks/resolve-schema-CBR6Lm4i.js +50 -0
  68. package/dist/_chunks/resolve-schema-CBR6Lm4i.js.map +1 -0
  69. package/dist/_chunks/rolldown-runtime-D7D4PA-g.js +13 -0
  70. package/dist/_chunks/rsc-cache-key-ClUiXQnK.js +243 -0
  71. package/dist/_chunks/rsc-cache-key-ClUiXQnK.js.map +1 -0
  72. package/dist/_chunks/rsc-media-type-DDc7duTD.js +61 -0
  73. package/dist/_chunks/rsc-media-type-DDc7duTD.js.map +1 -0
  74. package/dist/_chunks/rsc-payload-path-B_LBodc2.js +48 -0
  75. package/dist/_chunks/rsc-payload-path-B_LBodc2.js.map +1 -0
  76. package/dist/_chunks/scan-BoP17W3w.js +140 -0
  77. package/dist/_chunks/scan-BoP17W3w.js.map +1 -0
  78. package/dist/_chunks/scanner-AiazgH_f.js +1771 -0
  79. package/dist/_chunks/scanner-AiazgH_f.js.map +1 -0
  80. package/dist/_chunks/schema-bridge-C83xa9lT.js +199 -0
  81. package/dist/_chunks/schema-bridge-C83xa9lT.js.map +1 -0
  82. package/dist/_chunks/segment-classify-C539Pa2O.js +197 -0
  83. package/dist/_chunks/segment-classify-C539Pa2O.js.map +1 -0
  84. package/dist/_chunks/segment-context-D9_89u34.js +34 -0
  85. package/dist/_chunks/segment-context-D9_89u34.js.map +1 -0
  86. package/dist/_chunks/segment-keys-lqtdookO.js +256 -0
  87. package/dist/_chunks/segment-keys-lqtdookO.js.map +1 -0
  88. package/dist/_chunks/singleflight-2lUWfcAk.js +54 -0
  89. package/dist/_chunks/singleflight-2lUWfcAk.js.map +1 -0
  90. package/dist/_chunks/sizeof-lXffQ1Vr.js +35 -0
  91. package/dist/_chunks/sizeof-lXffQ1Vr.js.map +1 -0
  92. package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-D6T6Y3ef.js} +3 -31
  93. package/dist/_chunks/ssr-data-D6T6Y3ef.js.map +1 -0
  94. package/dist/_chunks/state-FippDgxN.js +52 -0
  95. package/dist/_chunks/state-FippDgxN.js.map +1 -0
  96. package/dist/_chunks/status-page-marker-DwQBrLBz.js +496 -0
  97. package/dist/_chunks/status-page-marker-DwQBrLBz.js.map +1 -0
  98. package/dist/_chunks/use-query-states-I3JMng6J.js +226 -0
  99. package/dist/_chunks/use-query-states-I3JMng6J.js.map +1 -0
  100. package/dist/_chunks/walkers-B6XUtmqK.js +144 -0
  101. package/dist/_chunks/walkers-B6XUtmqK.js.map +1 -0
  102. package/dist/adapters/build-output-helper.d.ts +72 -0
  103. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  104. package/dist/adapters/cloudflare-dev.d.ts +109 -0
  105. package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
  106. package/dist/adapters/cloudflare-dev.js +74 -0
  107. package/dist/adapters/cloudflare-dev.js.map +1 -0
  108. package/dist/adapters/cloudflare-kv-cache.d.ts +65 -0
  109. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
  110. package/dist/adapters/cloudflare-kv-cache.js +123 -0
  111. package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
  112. package/dist/adapters/cloudflare.d.ts +200 -22
  113. package/dist/adapters/cloudflare.d.ts.map +1 -1
  114. package/dist/adapters/cloudflare.js +2 -188
  115. package/dist/adapters/compress-module.d.ts +17 -4
  116. package/dist/adapters/compress-module.d.ts.map +1 -1
  117. package/dist/adapters/fs-identity.d.ts +64 -0
  118. package/dist/adapters/fs-identity.d.ts.map +1 -0
  119. package/dist/adapters/nitro-presets.d.ts +37 -0
  120. package/dist/adapters/nitro-presets.d.ts.map +1 -0
  121. package/dist/adapters/nitro-preview.d.ts +32 -0
  122. package/dist/adapters/nitro-preview.d.ts.map +1 -0
  123. package/dist/adapters/nitro.d.ts +66 -37
  124. package/dist/adapters/nitro.d.ts.map +1 -1
  125. package/dist/adapters/nitro.js +457 -300
  126. package/dist/adapters/nitro.js.map +1 -1
  127. package/dist/adapters/shared.d.ts +62 -0
  128. package/dist/adapters/shared.d.ts.map +1 -0
  129. package/dist/adapters/types.d.ts +28 -6
  130. package/dist/adapters/types.d.ts.map +1 -1
  131. package/dist/analyze/chains.d.ts +124 -0
  132. package/dist/analyze/chains.d.ts.map +1 -0
  133. package/dist/analyze/classify.d.ts +150 -0
  134. package/dist/analyze/classify.d.ts.map +1 -0
  135. package/dist/analyze/crawl-entry.d.ts +17 -0
  136. package/dist/analyze/crawl-entry.d.ts.map +1 -0
  137. package/dist/analyze/crawl-entry.js +313 -0
  138. package/dist/analyze/crawl-entry.js.map +1 -0
  139. package/dist/analyze/crawl.d.ts +134 -0
  140. package/dist/analyze/crawl.d.ts.map +1 -0
  141. package/dist/analyze/graph-cache.d.ts +104 -0
  142. package/dist/analyze/graph-cache.d.ts.map +1 -0
  143. package/dist/analyze/graph-command.d.ts +43 -0
  144. package/dist/analyze/graph-command.d.ts.map +1 -0
  145. package/dist/analyze/graph-command.js +472 -0
  146. package/dist/analyze/graph-command.js.map +1 -0
  147. package/dist/analyze/live-graph.d.ts +81 -0
  148. package/dist/analyze/live-graph.d.ts.map +1 -0
  149. package/dist/analyze/poison-rules.d.ts +72 -0
  150. package/dist/analyze/poison-rules.d.ts.map +1 -0
  151. package/dist/analyze/poison-scan.d.ts +48 -0
  152. package/dist/analyze/poison-scan.d.ts.map +1 -0
  153. package/dist/analyze/scan.d.ts +73 -0
  154. package/dist/analyze/scan.d.ts.map +1 -0
  155. package/dist/cache/cache-api.d.ts +48 -0
  156. package/dist/cache/cache-api.d.ts.map +1 -0
  157. package/dist/cache/fast-hash.d.ts +5 -0
  158. package/dist/cache/fast-hash.d.ts.map +1 -1
  159. package/dist/cache/handler-store.d.ts +33 -0
  160. package/dist/cache/handler-store.d.ts.map +1 -0
  161. package/dist/cache/index.d.ts +32 -9
  162. package/dist/cache/index.d.ts.map +1 -1
  163. package/dist/cache/index.js +3 -326
  164. package/dist/cache/invalidation-epoch.d.ts +43 -0
  165. package/dist/cache/invalidation-epoch.d.ts.map +1 -0
  166. package/dist/cache/json-lossy-check.d.ts +11 -0
  167. package/dist/cache/json-lossy-check.d.ts.map +1 -0
  168. package/dist/cache/redis-handler.d.ts +141 -9
  169. package/dist/cache/redis-handler.d.ts.map +1 -1
  170. package/dist/cache/singleflight.d.ts +21 -2
  171. package/dist/cache/singleflight.d.ts.map +1 -1
  172. package/dist/cache/sizeof.d.ts +22 -0
  173. package/dist/cache/sizeof.d.ts.map +1 -0
  174. package/dist/cache/stable-stringify.d.ts +9 -0
  175. package/dist/cache/stable-stringify.d.ts.map +1 -1
  176. package/dist/cache/store.d.ts +53 -0
  177. package/dist/cache/store.d.ts.map +1 -0
  178. package/dist/cache/stores/cloudflare-kv.d.ts +38 -0
  179. package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -0
  180. package/dist/cache/stores/cloudflare-kv.js +29 -0
  181. package/dist/cache/stores/cloudflare-kv.js.map +1 -0
  182. package/dist/cache/stores/memory.d.ts +42 -0
  183. package/dist/cache/stores/memory.d.ts.map +1 -0
  184. package/dist/cache/stores/memory.js +90 -0
  185. package/dist/cache/stores/memory.js.map +1 -0
  186. package/dist/cache/stores/redis.d.ts +69 -0
  187. package/dist/cache/stores/redis.d.ts.map +1 -0
  188. package/dist/cache/stores/redis.js +35 -0
  189. package/dist/cache/stores/redis.js.map +1 -0
  190. package/dist/cache/stores/vercel.d.ts +36 -0
  191. package/dist/cache/stores/vercel.d.ts.map +1 -0
  192. package/dist/cache/stores/vercel.js +33 -0
  193. package/dist/cache/stores/vercel.js.map +1 -0
  194. package/dist/cache/tag-aware-handler.d.ts +52 -0
  195. package/dist/cache/tag-aware-handler.d.ts.map +1 -0
  196. package/dist/cache/timber-cache.d.ts +21 -11
  197. package/dist/cache/timber-cache.d.ts.map +1 -1
  198. package/dist/cdn/cloudflare-purge.d.ts +23 -0
  199. package/dist/cdn/cloudflare-purge.d.ts.map +1 -0
  200. package/dist/cdn/cloudflare-purge.js +30 -0
  201. package/dist/cdn/cloudflare-purge.js.map +1 -0
  202. package/dist/cdn/fastly-purge.d.ts +25 -0
  203. package/dist/cdn/fastly-purge.d.ts.map +1 -0
  204. package/dist/cdn/fastly-purge.js +33 -0
  205. package/dist/cdn/fastly-purge.js.map +1 -0
  206. package/dist/cdn/headers.d.ts +97 -0
  207. package/dist/cdn/headers.d.ts.map +1 -0
  208. package/dist/cdn/index.d.ts +5 -0
  209. package/dist/cdn/index.d.ts.map +1 -0
  210. package/dist/cdn/index.js +94 -0
  211. package/dist/cdn/index.js.map +1 -0
  212. package/dist/cdn/purge-store.d.ts +23 -0
  213. package/dist/cdn/purge-store.d.ts.map +1 -0
  214. package/dist/cdn/workers-cache-purge.d.ts +20 -0
  215. package/dist/cdn/workers-cache-purge.d.ts.map +1 -0
  216. package/dist/cdn/workers-cache-purge.js +35 -0
  217. package/dist/cdn/workers-cache-purge.js.map +1 -0
  218. package/dist/cli-check.d.ts +163 -0
  219. package/dist/cli-check.d.ts.map +1 -0
  220. package/dist/cli-schema-sync.d.ts +59 -0
  221. package/dist/cli-schema-sync.d.ts.map +1 -0
  222. package/dist/cli.d.ts +75 -8
  223. package/dist/cli.d.ts.map +1 -1
  224. package/dist/cli.js +175 -47
  225. package/dist/cli.js.map +1 -1
  226. package/dist/client/browser-dev.d.ts +37 -1
  227. package/dist/client/browser-dev.d.ts.map +1 -1
  228. package/dist/client/browser-entry/action-dispatch.d.ts +19 -0
  229. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  230. package/dist/client/browser-entry/action-queue.d.ts +44 -0
  231. package/dist/client/browser-entry/action-queue.d.ts.map +1 -0
  232. package/dist/client/browser-entry/hmr.d.ts +21 -0
  233. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  234. package/dist/client/browser-entry/hydrate.d.ts +63 -0
  235. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  236. package/dist/client/browser-entry/index.d.ts +30 -0
  237. package/dist/client/browser-entry/index.d.ts.map +1 -0
  238. package/dist/client/browser-entry/post-hydration.d.ts +29 -0
  239. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  240. package/dist/client/browser-entry/router-init.d.ts +46 -0
  241. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  242. package/dist/client/browser-entry/rsc-stream.d.ts +32 -0
  243. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  244. package/dist/client/browser-entry/scroll.d.ts +28 -0
  245. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  246. package/dist/client/deny-last-resort.d.ts +29 -0
  247. package/dist/client/deny-last-resort.d.ts.map +1 -0
  248. package/dist/client/error-boundary.d.ts +66 -6
  249. package/dist/client/error-boundary.d.ts.map +1 -1
  250. package/dist/client/error-boundary.js +2 -126
  251. package/dist/client/error-reconstituter.d.ts +61 -0
  252. package/dist/client/error-reconstituter.d.ts.map +1 -0
  253. package/dist/client/form.d.ts +16 -27
  254. package/dist/client/form.d.ts.map +1 -1
  255. package/dist/client/global-context.d.ts +15 -0
  256. package/dist/client/global-context.d.ts.map +1 -0
  257. package/dist/client/history.d.ts +50 -9
  258. package/dist/client/history.d.ts.map +1 -1
  259. package/dist/client/index.d.ts +20 -33
  260. package/dist/client/index.d.ts.map +1 -1
  261. package/dist/client/index.js +323 -1148
  262. package/dist/client/index.js.map +1 -1
  263. package/dist/client/internal.d.ts +20 -0
  264. package/dist/client/internal.d.ts.map +1 -0
  265. package/dist/client/internal.js +818 -0
  266. package/dist/client/internal.js.map +1 -0
  267. package/dist/client/link.d.ts +63 -60
  268. package/dist/client/link.d.ts.map +1 -1
  269. package/dist/client/location-search.d.ts +12 -0
  270. package/dist/client/location-search.d.ts.map +1 -0
  271. package/dist/client/navigation-api.d.ts +121 -0
  272. package/dist/client/navigation-api.d.ts.map +1 -0
  273. package/dist/client/navigation-commit.d.ts +98 -0
  274. package/dist/client/navigation-commit.d.ts.map +1 -0
  275. package/dist/client/navigation-context.d.ts +51 -31
  276. package/dist/client/navigation-context.d.ts.map +1 -1
  277. package/dist/client/navigation-root.d.ts +98 -0
  278. package/dist/client/navigation-root.d.ts.map +1 -0
  279. package/dist/client/navigation-transition.d.ts +187 -0
  280. package/dist/client/navigation-transition.d.ts.map +1 -0
  281. package/dist/client/nuqs-adapter.d.ts +1 -1
  282. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  283. package/dist/client/params-context.d.ts +81 -0
  284. package/dist/client/params-context.d.ts.map +1 -0
  285. package/dist/client/react-root.d.ts +44 -0
  286. package/dist/client/react-root.d.ts.map +1 -0
  287. package/dist/client/router-effects.d.ts +130 -0
  288. package/dist/client/router-effects.d.ts.map +1 -0
  289. package/dist/client/router-lifecycle.d.ts +98 -0
  290. package/dist/client/router-lifecycle.d.ts.map +1 -0
  291. package/dist/client/router-pipeline.d.ts +87 -0
  292. package/dist/client/router-pipeline.d.ts.map +1 -0
  293. package/dist/client/router-ref.d.ts +2 -2
  294. package/dist/client/router-ref.d.ts.map +1 -1
  295. package/dist/client/router-skew.d.ts +21 -0
  296. package/dist/client/router-skew.d.ts.map +1 -0
  297. package/dist/client/router-types.d.ts +272 -0
  298. package/dist/client/router-types.d.ts.map +1 -0
  299. package/dist/client/router.d.ts +1 -97
  300. package/dist/client/router.d.ts.map +1 -1
  301. package/dist/client/rsc-fetch.d.ts +104 -26
  302. package/dist/client/rsc-fetch.d.ts.map +1 -1
  303. package/dist/client/segment-cache.d.ts +161 -25
  304. package/dist/client/segment-cache.d.ts.map +1 -1
  305. package/dist/client/segment-context.d.ts.map +1 -1
  306. package/dist/client/segment-outlet.d.ts +68 -0
  307. package/dist/client/segment-outlet.d.ts.map +1 -0
  308. package/dist/client/segment-update-context.d.ts +15 -0
  309. package/dist/client/segment-update-context.d.ts.map +1 -0
  310. package/dist/client/shallow-url.d.ts +10 -0
  311. package/dist/client/shallow-url.d.ts.map +1 -0
  312. package/dist/client/slot-content-cache-context.d.ts +35 -0
  313. package/dist/client/slot-content-cache-context.d.ts.map +1 -0
  314. package/dist/client/slot-context.d.ts +31 -0
  315. package/dist/client/slot-context.d.ts.map +1 -0
  316. package/dist/client/slot-outlet.d.ts +16 -0
  317. package/dist/client/slot-outlet.d.ts.map +1 -0
  318. package/dist/client/slot-provider.d.ts +25 -0
  319. package/dist/client/slot-provider.d.ts.map +1 -0
  320. package/dist/client/ssr-data.d.ts +29 -7
  321. package/dist/client/ssr-data.d.ts.map +1 -1
  322. package/dist/client/stale-client.d.ts +69 -0
  323. package/dist/client/stale-client.d.ts.map +1 -0
  324. package/dist/client/state.d.ts +19 -8
  325. package/dist/client/state.d.ts.map +1 -1
  326. package/dist/client/status-page-marker.d.ts +25 -0
  327. package/dist/client/status-page-marker.d.ts.map +1 -0
  328. package/dist/client/top-loader.d.ts +7 -6
  329. package/dist/client/top-loader.d.ts.map +1 -1
  330. package/dist/client/unload-guard.d.ts +5 -0
  331. package/dist/client/unload-guard.d.ts.map +1 -1
  332. package/dist/client/use-cookie.d.ts +12 -0
  333. package/dist/client/use-cookie.d.ts.map +1 -1
  334. package/dist/client/use-link-status.d.ts +5 -5
  335. package/dist/client/use-link-status.d.ts.map +1 -1
  336. package/dist/client/use-pathname.d.ts +13 -11
  337. package/dist/client/use-pathname.d.ts.map +1 -1
  338. package/dist/client/use-pending-navigation.d.ts +23 -0
  339. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  340. package/dist/client/use-query-states.d.ts +10 -4
  341. package/dist/client/use-query-states.d.ts.map +1 -1
  342. package/dist/client/use-router.d.ts +2 -2
  343. package/dist/client/use-router.d.ts.map +1 -1
  344. package/dist/client/use-search-params.d.ts +15 -8
  345. package/dist/client/use-search-params.d.ts.map +1 -1
  346. package/dist/client/use-segment-params.d.ts +55 -0
  347. package/dist/client/use-segment-params.d.ts.map +1 -0
  348. package/dist/codec.d.ts +69 -0
  349. package/dist/codec.d.ts.map +1 -0
  350. package/dist/codec.js +76 -0
  351. package/dist/codec.js.map +1 -0
  352. package/dist/config-types.d.ts +322 -0
  353. package/dist/config-types.d.ts.map +1 -0
  354. package/dist/config-validation.d.ts +51 -0
  355. package/dist/config-validation.d.ts.map +1 -0
  356. package/dist/cookies/define-cookie.d.ts +58 -25
  357. package/dist/cookies/define-cookie.d.ts.map +1 -1
  358. package/dist/cookies/index.d.ts +3 -2
  359. package/dist/cookies/index.d.ts.map +1 -1
  360. package/dist/cookies/index.js +256 -36
  361. package/dist/cookies/index.js.map +1 -1
  362. package/dist/cookies/json-cookie.d.ts +64 -0
  363. package/dist/cookies/json-cookie.d.ts.map +1 -0
  364. package/dist/cookies/validation.d.ts +34 -0
  365. package/dist/cookies/validation.d.ts.map +1 -0
  366. package/dist/dev-tools/404-page.d.ts +50 -0
  367. package/dist/dev-tools/404-page.d.ts.map +1 -0
  368. package/dist/dev-tools/browser-logs.d.ts +40 -0
  369. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  370. package/dist/dev-tools/dev-page-shell.d.ts +78 -0
  371. package/dist/dev-tools/dev-page-shell.d.ts.map +1 -0
  372. package/dist/dev-tools/error-page.d.ts +32 -0
  373. package/dist/dev-tools/error-page.d.ts.map +1 -0
  374. package/dist/dev-tools/holding-server.d.ts +46 -0
  375. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  376. package/dist/dev-tools/hydration-overlay.d.ts +11 -0
  377. package/dist/dev-tools/hydration-overlay.d.ts.map +1 -0
  378. package/dist/dev-tools/index.d.ts +31 -0
  379. package/dist/dev-tools/index.d.ts.map +1 -0
  380. package/dist/dev-tools/instrumentation.d.ts +59 -0
  381. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  382. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  383. package/dist/dev-tools/logger.d.ts.map +1 -0
  384. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +17 -3
  385. package/dist/dev-tools/logs.d.ts.map +1 -0
  386. package/dist/dev-tools/overlay.d.ts +91 -0
  387. package/dist/dev-tools/overlay.d.ts.map +1 -0
  388. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  389. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  390. package/dist/dev-tools/terminal.d.ts +28 -0
  391. package/dist/dev-tools/terminal.d.ts.map +1 -0
  392. package/dist/fonts/ast-walk.d.ts +68 -0
  393. package/dist/fonts/ast-walk.d.ts.map +1 -0
  394. package/dist/fonts/ast.d.ts +112 -8
  395. package/dist/fonts/ast.d.ts.map +1 -1
  396. package/dist/fonts/bundle.d.ts +50 -0
  397. package/dist/fonts/bundle.d.ts.map +1 -0
  398. package/dist/fonts/css.d.ts +1 -1
  399. package/dist/fonts/dev-middleware.d.ts +22 -0
  400. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  401. package/dist/fonts/fallbacks.d.ts +0 -7
  402. package/dist/fonts/fallbacks.d.ts.map +1 -1
  403. package/dist/fonts/google.d.ts +5 -3
  404. package/dist/fonts/google.d.ts.map +1 -1
  405. package/dist/fonts/local.d.ts +5 -5
  406. package/dist/fonts/local.d.ts.map +1 -1
  407. package/dist/fonts/paths.d.ts +43 -0
  408. package/dist/fonts/paths.d.ts.map +1 -0
  409. package/dist/fonts/pipeline.d.ts +177 -0
  410. package/dist/fonts/pipeline.d.ts.map +1 -0
  411. package/dist/fonts/transform.d.ts +82 -0
  412. package/dist/fonts/transform.d.ts.map +1 -0
  413. package/dist/fonts/types.d.ts +47 -1
  414. package/dist/fonts/types.d.ts.map +1 -1
  415. package/dist/fonts/virtual-modules.d.ts +77 -0
  416. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  417. package/dist/index.d.ts +35 -181
  418. package/dist/index.d.ts.map +1 -1
  419. package/dist/index.js +10461 -14176
  420. package/dist/index.js.map +1 -1
  421. package/dist/params/codec-registry.d.ts +26 -0
  422. package/dist/params/codec-registry.d.ts.map +1 -0
  423. package/dist/params/define-schema.d.ts +81 -0
  424. package/dist/params/define-schema.d.ts.map +1 -0
  425. package/dist/params/index.d.ts +5 -0
  426. package/dist/params/index.d.ts.map +1 -0
  427. package/dist/params/index.js +34 -0
  428. package/dist/params/index.js.map +1 -0
  429. package/dist/params/resolve-schema.d.ts +34 -0
  430. package/dist/params/resolve-schema.d.ts.map +1 -0
  431. package/dist/plugin-context.d.ts +276 -0
  432. package/dist/plugin-context.d.ts.map +1 -0
  433. package/dist/plugins/adapter-build.d.ts +21 -1
  434. package/dist/plugins/adapter-build.d.ts.map +1 -1
  435. package/dist/plugins/build-manifest.d.ts +7 -3
  436. package/dist/plugins/build-manifest.d.ts.map +1 -1
  437. package/dist/plugins/build-report.d.ts +47 -10
  438. package/dist/plugins/build-report.d.ts.map +1 -1
  439. package/dist/plugins/cache.d.ts +64 -0
  440. package/dist/plugins/cache.d.ts.map +1 -0
  441. package/dist/plugins/callsite-ast.d.ts +117 -0
  442. package/dist/plugins/callsite-ast.d.ts.map +1 -0
  443. package/dist/plugins/callsite-jsx.d.ts +35 -0
  444. package/dist/plugins/callsite-jsx.d.ts.map +1 -0
  445. package/dist/plugins/chunks.d.ts +11 -4
  446. package/dist/plugins/chunks.d.ts.map +1 -1
  447. package/dist/plugins/client-chunks.d.ts +40 -0
  448. package/dist/plugins/client-chunks.d.ts.map +1 -0
  449. package/dist/plugins/cloudflare-wasm.d.ts +21 -0
  450. package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
  451. package/dist/plugins/content.d.ts +1 -1
  452. package/dist/plugins/content.d.ts.map +1 -1
  453. package/dist/plugins/dev-discovery.d.ts +123 -0
  454. package/dist/plugins/dev-discovery.d.ts.map +1 -0
  455. package/dist/plugins/dev-server.d.ts +17 -1
  456. package/dist/plugins/dev-server.d.ts.map +1 -1
  457. package/dist/plugins/entries.d.ts +28 -4
  458. package/dist/plugins/entries.d.ts.map +1 -1
  459. package/dist/plugins/fonts.d.ts +16 -73
  460. package/dist/plugins/fonts.d.ts.map +1 -1
  461. package/dist/plugins/graph-endpoint.d.ts +112 -0
  462. package/dist/plugins/graph-endpoint.d.ts.map +1 -0
  463. package/dist/plugins/mdx.d.ts +18 -5
  464. package/dist/plugins/mdx.d.ts.map +1 -1
  465. package/dist/plugins/prebuilt-capture.d.ts +60 -0
  466. package/dist/plugins/prebuilt-capture.d.ts.map +1 -0
  467. package/dist/plugins/prebuilt-options-analysis.d.ts +40 -0
  468. package/dist/plugins/prebuilt-options-analysis.d.ts.map +1 -0
  469. package/dist/plugins/prebuilt.d.ts +82 -0
  470. package/dist/plugins/prebuilt.d.ts.map +1 -0
  471. package/dist/plugins/prerender-sugar.d.ts +39 -0
  472. package/dist/plugins/prerender-sugar.d.ts.map +1 -0
  473. package/dist/plugins/request-dep/analysis.d.ts +106 -0
  474. package/dist/plugins/request-dep/analysis.d.ts.map +1 -0
  475. package/dist/plugins/request-dep/index.d.ts +75 -0
  476. package/dist/plugins/request-dep/index.d.ts.map +1 -0
  477. package/dist/plugins/request-dep/origin.d.ts +61 -0
  478. package/dist/plugins/request-dep/origin.d.ts.map +1 -0
  479. package/dist/plugins/routing.d.ts +1 -1
  480. package/dist/plugins/routing.d.ts.map +1 -1
  481. package/dist/plugins/server-bundle.d.ts.map +1 -1
  482. package/dist/plugins/shims.d.ts +29 -5
  483. package/dist/plugins/shims.d.ts.map +1 -1
  484. package/dist/plugins/static-build.d.ts +218 -21
  485. package/dist/plugins/static-build.d.ts.map +1 -1
  486. package/dist/routing/codegen-shared.d.ts +26 -0
  487. package/dist/routing/codegen-shared.d.ts.map +1 -0
  488. package/dist/routing/codegen-types.d.ts +61 -0
  489. package/dist/routing/codegen-types.d.ts.map +1 -0
  490. package/dist/routing/codegen-write.d.ts +51 -0
  491. package/dist/routing/codegen-write.d.ts.map +1 -0
  492. package/dist/routing/codegen.d.ts +8 -3
  493. package/dist/routing/codegen.d.ts.map +1 -1
  494. package/dist/routing/collision-probe.d.ts +104 -0
  495. package/dist/routing/collision-probe.d.ts.map +1 -0
  496. package/dist/routing/collision-spaces.d.ts +26 -0
  497. package/dist/routing/collision-spaces.d.ts.map +1 -0
  498. package/dist/routing/convention-lint.d.ts +55 -0
  499. package/dist/routing/convention-lint.d.ts.map +1 -0
  500. package/dist/routing/export-detect.d.ts +72 -0
  501. package/dist/routing/export-detect.d.ts.map +1 -0
  502. package/dist/routing/file-cache.d.ts +8 -0
  503. package/dist/routing/file-cache.d.ts.map +1 -0
  504. package/dist/routing/index.d.ts +13 -7
  505. package/dist/routing/index.d.ts.map +1 -1
  506. package/dist/routing/index.js +5 -2
  507. package/dist/routing/interception-overlap.d.ts +35 -0
  508. package/dist/routing/interception-overlap.d.ts.map +1 -0
  509. package/dist/routing/interception.d.ts +234 -10
  510. package/dist/routing/interception.d.ts.map +1 -1
  511. package/dist/routing/link-codegen.d.ts +105 -0
  512. package/dist/routing/link-codegen.d.ts.map +1 -0
  513. package/dist/routing/manifest-codegen.d.ts +26 -0
  514. package/dist/routing/manifest-codegen.d.ts.map +1 -0
  515. package/dist/routing/scanner.d.ts +14 -10
  516. package/dist/routing/scanner.d.ts.map +1 -1
  517. package/dist/routing/schema-validation.d.ts +35 -0
  518. package/dist/routing/schema-validation.d.ts.map +1 -0
  519. package/dist/routing/segment-classify.d.ts +114 -0
  520. package/dist/routing/segment-classify.d.ts.map +1 -0
  521. package/dist/routing/segment-codegen.d.ts +38 -0
  522. package/dist/routing/segment-codegen.d.ts.map +1 -0
  523. package/dist/routing/segment-keys.d.ts +118 -0
  524. package/dist/routing/segment-keys.d.ts.map +1 -0
  525. package/dist/routing/slot-placement.d.ts +48 -0
  526. package/dist/routing/slot-placement.d.ts.map +1 -0
  527. package/dist/routing/types.d.ts +74 -26
  528. package/dist/routing/types.d.ts.map +1 -1
  529. package/dist/routing/walkers.d.ts +57 -0
  530. package/dist/routing/walkers.d.ts.map +1 -0
  531. package/dist/rsc-runtime/rsc.d.ts +1 -1
  532. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  533. package/dist/rsc-runtime/ssr.d.ts +14 -0
  534. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  535. package/dist/rsc-runtime/transforms.d.ts +13 -0
  536. package/dist/rsc-runtime/transforms.d.ts.map +1 -0
  537. package/dist/schema-bridge.d.ts +145 -0
  538. package/dist/schema-bridge.d.ts.map +1 -0
  539. package/dist/search-params/define.d.ts +262 -0
  540. package/dist/search-params/define.d.ts.map +1 -0
  541. package/dist/search-params/index.d.ts +3 -7
  542. package/dist/search-params/index.d.ts.map +1 -1
  543. package/dist/search-params/index.js +179 -360
  544. package/dist/search-params/index.js.map +1 -1
  545. package/dist/search-params/parse-total.d.ts +81 -0
  546. package/dist/search-params/parse-total.d.ts.map +1 -0
  547. package/dist/search-params/serialize-equal.d.ts +9 -0
  548. package/dist/search-params/serialize-equal.d.ts.map +1 -0
  549. package/dist/search-params/wrappers.d.ts +76 -0
  550. package/dist/search-params/wrappers.d.ts.map +1 -0
  551. package/dist/server/access-gate.d.ts +98 -10
  552. package/dist/server/access-gate.d.ts.map +1 -1
  553. package/dist/server/action-client.d.ts +42 -7
  554. package/dist/server/action-client.d.ts.map +1 -1
  555. package/dist/server/action-encryption.d.ts +76 -0
  556. package/dist/server/action-encryption.d.ts.map +1 -0
  557. package/dist/server/action-handler.d.ts +39 -5
  558. package/dist/server/action-handler.d.ts.map +1 -1
  559. package/dist/server/actions.d.ts +29 -35
  560. package/dist/server/actions.d.ts.map +1 -1
  561. package/dist/server/als-registry.d.ts +117 -13
  562. package/dist/server/als-registry.d.ts.map +1 -1
  563. package/dist/server/asset-headers.d.ts +8 -18
  564. package/dist/server/asset-headers.d.ts.map +1 -1
  565. package/dist/server/body-limits.d.ts.map +1 -1
  566. package/dist/server/build-manifest.d.ts +25 -30
  567. package/dist/server/build-manifest.d.ts.map +1 -1
  568. package/dist/server/canonicalize.d.ts +10 -0
  569. package/dist/server/canonicalize.d.ts.map +1 -1
  570. package/dist/server/chain-url-parts.d.ts +82 -0
  571. package/dist/server/chain-url-parts.d.ts.map +1 -0
  572. package/dist/server/children-interception.d.ts +49 -0
  573. package/dist/server/children-interception.d.ts.map +1 -0
  574. package/dist/server/coalesce-tick.d.ts +40 -0
  575. package/dist/server/coalesce-tick.d.ts.map +1 -0
  576. package/dist/server/compress.d.ts.map +1 -1
  577. package/dist/server/cookie-context.d.ts +170 -0
  578. package/dist/server/cookie-context.d.ts.map +1 -0
  579. package/dist/server/cookie-parsing.d.ts +65 -0
  580. package/dist/server/cookie-parsing.d.ts.map +1 -0
  581. package/dist/server/csp-nonce.d.ts +45 -0
  582. package/dist/server/csp-nonce.d.ts.map +1 -0
  583. package/dist/server/csrf.d.ts +3 -2
  584. package/dist/server/csrf.d.ts.map +1 -1
  585. package/dist/server/default-logger.d.ts +22 -0
  586. package/dist/server/default-logger.d.ts.map +1 -0
  587. package/dist/server/default-status-page.d.ts +45 -0
  588. package/dist/server/default-status-page.d.ts.map +1 -0
  589. package/dist/server/deny-boundary.d.ts +253 -0
  590. package/dist/server/deny-boundary.d.ts.map +1 -0
  591. package/dist/server/deny-renderer.d.ts +20 -9
  592. package/dist/server/deny-renderer.d.ts.map +1 -1
  593. package/dist/server/dev-source-map.d.ts +22 -0
  594. package/dist/server/dev-source-map.d.ts.map +1 -0
  595. package/dist/server/early-hints-sender.d.ts.map +1 -1
  596. package/dist/server/early-hints.d.ts +14 -12
  597. package/dist/server/early-hints.d.ts.map +1 -1
  598. package/dist/server/error-boundary-wrapper.d.ts +101 -10
  599. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  600. package/dist/server/error-response-headers.d.ts +3 -0
  601. package/dist/server/error-response-headers.d.ts.map +1 -0
  602. package/dist/server/fallback-error.d.ts +12 -7
  603. package/dist/server/fallback-error.d.ts.map +1 -1
  604. package/dist/server/flight-injection-state.d.ts +66 -0
  605. package/dist/server/flight-injection-state.d.ts.map +1 -0
  606. package/dist/server/flight-scripts.d.ts +45 -0
  607. package/dist/server/flight-scripts.d.ts.map +1 -0
  608. package/dist/server/form-data.d.ts +41 -0
  609. package/dist/server/form-data.d.ts.map +1 -1
  610. package/dist/server/form-flash.d.ts +1 -1
  611. package/dist/server/head-response.d.ts +35 -0
  612. package/dist/server/head-response.d.ts.map +1 -0
  613. package/dist/server/html-injector-core.d.ts +257 -0
  614. package/dist/server/html-injector-core.d.ts.map +1 -0
  615. package/dist/server/html-injectors.d.ts +84 -42
  616. package/dist/server/html-injectors.d.ts.map +1 -1
  617. package/dist/server/index.d.ts +18 -54
  618. package/dist/server/index.d.ts.map +1 -1
  619. package/dist/server/index.js +195 -2922
  620. package/dist/server/index.js.map +1 -1
  621. package/dist/server/instrumentation.d.ts +1 -1
  622. package/dist/server/internal.d.ts +50 -0
  623. package/dist/server/internal.d.ts.map +1 -0
  624. package/dist/server/internal.js +4034 -0
  625. package/dist/server/internal.js.map +1 -0
  626. package/dist/server/logger.d.ts +39 -7
  627. package/dist/server/logger.d.ts.map +1 -1
  628. package/dist/server/metadata-collector.d.ts +71 -0
  629. package/dist/server/metadata-collector.d.ts.map +1 -0
  630. package/dist/server/metadata-platform.d.ts +2 -2
  631. package/dist/server/metadata-render.d.ts +2 -2
  632. package/dist/server/metadata-render.d.ts.map +1 -1
  633. package/dist/server/metadata-routes.d.ts +60 -11
  634. package/dist/server/metadata-routes.d.ts.map +1 -1
  635. package/dist/server/metadata-social.d.ts +2 -2
  636. package/dist/server/metadata.d.ts +10 -2
  637. package/dist/server/metadata.d.ts.map +1 -1
  638. package/dist/server/middleware-runner.d.ts +20 -5
  639. package/dist/server/middleware-runner.d.ts.map +1 -1
  640. package/dist/server/node-stream-transforms.d.ts +105 -0
  641. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  642. package/dist/server/nuqs-ssr-provider.d.ts +7 -3
  643. package/dist/server/nuqs-ssr-provider.d.ts.map +1 -1
  644. package/dist/server/param-coercion.d.ts +78 -0
  645. package/dist/server/param-coercion.d.ts.map +1 -0
  646. package/dist/server/pipeline-helpers.d.ts +77 -0
  647. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  648. package/dist/server/pipeline-interception.d.ts +59 -9
  649. package/dist/server/pipeline-interception.d.ts.map +1 -1
  650. package/dist/server/pipeline-metadata.d.ts +7 -1
  651. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  652. package/dist/server/pipeline-outcome.d.ts +49 -0
  653. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  654. package/dist/server/pipeline-phases.d.ts +70 -0
  655. package/dist/server/pipeline-phases.d.ts.map +1 -0
  656. package/dist/server/pipeline.d.ts +153 -20
  657. package/dist/server/pipeline.d.ts.map +1 -1
  658. package/dist/server/port-resolution.d.ts +31 -0
  659. package/dist/server/port-resolution.d.ts.map +1 -0
  660. package/dist/server/prebuilt/cache-key.d.ts +63 -0
  661. package/dist/server/prebuilt/cache-key.d.ts.map +1 -0
  662. package/dist/server/prebuilt/capture-state.d.ts +57 -0
  663. package/dist/server/prebuilt/capture-state.d.ts.map +1 -0
  664. package/dist/server/prebuilt/key-discipline.d.ts +52 -0
  665. package/dist/server/prebuilt/key-discipline.d.ts.map +1 -0
  666. package/dist/server/prebuilt/manifest-tag-index.d.ts +27 -0
  667. package/dist/server/prebuilt/manifest-tag-index.d.ts.map +1 -0
  668. package/dist/server/prebuilt/overlay.d.ts +100 -0
  669. package/dist/server/prebuilt/overlay.d.ts.map +1 -0
  670. package/dist/server/prebuilt/payload-source.d.ts +79 -0
  671. package/dist/server/prebuilt/payload-source.d.ts.map +1 -0
  672. package/dist/server/prebuilt/slots.d.ts +99 -0
  673. package/dist/server/prebuilt/slots.d.ts.map +1 -0
  674. package/dist/server/prebuilt/synthetic-store.d.ts +67 -0
  675. package/dist/server/prebuilt/synthetic-store.d.ts.map +1 -0
  676. package/dist/server/prebuilt-builder.d.ts +121 -0
  677. package/dist/server/prebuilt-builder.d.ts.map +1 -0
  678. package/dist/server/prebuilt-runtime.d.ts +111 -0
  679. package/dist/server/prebuilt-runtime.d.ts.map +1 -0
  680. package/dist/server/primitives.d.ts +129 -45
  681. package/dist/server/primitives.d.ts.map +1 -1
  682. package/dist/server/publish-params.d.ts +33 -0
  683. package/dist/server/publish-params.d.ts.map +1 -0
  684. package/dist/server/render-timeout.d.ts +51 -0
  685. package/dist/server/render-timeout.d.ts.map +1 -0
  686. package/dist/server/render-utils.d.ts +26 -0
  687. package/dist/server/render-utils.d.ts.map +1 -0
  688. package/dist/server/request-context.d.ts +111 -107
  689. package/dist/server/request-context.d.ts.map +1 -1
  690. package/dist/server/request-dep.d.ts +15 -0
  691. package/dist/server/request-dep.d.ts.map +1 -0
  692. package/dist/server/response-cache-policy.d.ts +3 -0
  693. package/dist/server/response-cache-policy.d.ts.map +1 -0
  694. package/dist/server/route-element-builder.d.ts +57 -30
  695. package/dist/server/route-element-builder.d.ts.map +1 -1
  696. package/dist/server/route-element-helpers.d.ts +12 -0
  697. package/dist/server/route-element-helpers.d.ts.map +1 -0
  698. package/dist/server/route-handler.d.ts +1 -1
  699. package/dist/server/route-handler.d.ts.map +1 -1
  700. package/dist/server/route-matcher.d.ts +40 -38
  701. package/dist/server/route-matcher.d.ts.map +1 -1
  702. package/dist/server/route-module-loader.d.ts +37 -0
  703. package/dist/server/route-module-loader.d.ts.map +1 -0
  704. package/dist/server/rsc-cache-key-guard.d.ts +78 -0
  705. package/dist/server/rsc-cache-key-guard.d.ts.map +1 -0
  706. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  707. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  708. package/dist/server/rsc-entry/api-handler.d.ts +12 -3
  709. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  710. package/dist/server/rsc-entry/deny-fallback.d.ts +29 -0
  711. package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -0
  712. package/dist/server/rsc-entry/error-renderer.d.ts +38 -13
  713. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  714. package/dist/server/rsc-entry/helpers.d.ts +59 -42
  715. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  716. package/dist/server/rsc-entry/index.d.ts +40 -6
  717. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  718. package/dist/server/rsc-entry/render-route.d.ts +51 -0
  719. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  720. package/dist/server/rsc-entry/revalidate-renderer.d.ts +108 -0
  721. package/dist/server/rsc-entry/revalidate-renderer.d.ts.map +1 -0
  722. package/dist/server/rsc-entry/rsc-payload.d.ts +26 -6
  723. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  724. package/dist/server/rsc-entry/rsc-stream.d.ts +33 -3
  725. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  726. package/dist/server/rsc-entry/ssr-bridge.d.ts +5 -1
  727. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  728. package/dist/server/rsc-entry/ssr-renderer.d.ts +37 -5
  729. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  730. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +89 -0
  731. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  732. package/dist/server/rsc-error-envelope.d.ts +11 -0
  733. package/dist/server/rsc-error-envelope.d.ts.map +1 -0
  734. package/dist/server/safe-load.d.ts +46 -0
  735. package/dist/server/safe-load.d.ts.map +1 -0
  736. package/dist/server/sensitive-fields.d.ts +74 -0
  737. package/dist/server/sensitive-fields.d.ts.map +1 -0
  738. package/dist/server/sitemap-generator.d.ts +130 -0
  739. package/dist/server/sitemap-generator.d.ts.map +1 -0
  740. package/dist/server/sitemap-handler.d.ts +22 -0
  741. package/dist/server/sitemap-handler.d.ts.map +1 -0
  742. package/dist/server/skippable-prefix.d.ts +29 -0
  743. package/dist/server/skippable-prefix.d.ts.map +1 -0
  744. package/dist/server/slot-interception.d.ts +80 -0
  745. package/dist/server/slot-interception.d.ts.map +1 -0
  746. package/dist/server/slot-resolver.d.ts +137 -7
  747. package/dist/server/slot-resolver.d.ts.map +1 -1
  748. package/dist/server/slot-subtree-contain.d.ts +54 -0
  749. package/dist/server/slot-subtree-contain.d.ts.map +1 -0
  750. package/dist/server/ssr-bridge-types.d.ts +160 -0
  751. package/dist/server/ssr-bridge-types.d.ts.map +1 -0
  752. package/dist/server/ssr-entry.d.ts +1 -43
  753. package/dist/server/ssr-entry.d.ts.map +1 -1
  754. package/dist/server/ssr-render.d.ts +69 -22
  755. package/dist/server/ssr-render.d.ts.map +1 -1
  756. package/dist/server/ssr-wrappers.d.ts +93 -0
  757. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  758. package/dist/server/state-tree-diff.d.ts +44 -9
  759. package/dist/server/state-tree-diff.d.ts.map +1 -1
  760. package/dist/server/static-generator.d.ts +112 -0
  761. package/dist/server/static-generator.d.ts.map +1 -0
  762. package/dist/server/static-not-found.d.ts +52 -0
  763. package/dist/server/static-not-found.d.ts.map +1 -0
  764. package/dist/server/status-code-resolver.d.ts +26 -15
  765. package/dist/server/status-code-resolver.d.ts.map +1 -1
  766. package/dist/server/stream-utils.d.ts +47 -0
  767. package/dist/server/stream-utils.d.ts.map +1 -0
  768. package/dist/server/tracing.d.ts +46 -11
  769. package/dist/server/tracing.d.ts.map +1 -1
  770. package/dist/server/tree-match.d.ts +49 -0
  771. package/dist/server/tree-match.d.ts.map +1 -0
  772. package/dist/server/types.d.ts +88 -7
  773. package/dist/server/types.d.ts.map +1 -1
  774. package/dist/server/utils/element-type.d.ts +50 -0
  775. package/dist/server/utils/element-type.d.ts.map +1 -0
  776. package/dist/server/utils/escape-html.d.ts +14 -0
  777. package/dist/server/utils/escape-html.d.ts.map +1 -0
  778. package/dist/server/utils/mdx-file.d.ts +17 -0
  779. package/dist/server/utils/mdx-file.d.ts.map +1 -0
  780. package/dist/server/version-skew.d.ts +61 -0
  781. package/dist/server/version-skew.d.ts.map +1 -0
  782. package/dist/server/workers-cache-bridge.d.ts +26 -0
  783. package/dist/server/workers-cache-bridge.d.ts.map +1 -0
  784. package/dist/shared/als-slots.d.ts +42 -0
  785. package/dist/shared/als-slots.d.ts.map +1 -0
  786. package/dist/shared/base-path.d.ts +56 -0
  787. package/dist/shared/base-path.d.ts.map +1 -0
  788. package/dist/shared/href-validation.d.ts +49 -0
  789. package/dist/shared/href-validation.d.ts.map +1 -0
  790. package/dist/shared/merge-search-params.d.ts +22 -0
  791. package/dist/shared/merge-search-params.d.ts.map +1 -0
  792. package/dist/shared/param-value.d.ts +104 -0
  793. package/dist/shared/param-value.d.ts.map +1 -0
  794. package/dist/shared/payload-root.d.ts +109 -0
  795. package/dist/shared/payload-root.d.ts.map +1 -0
  796. package/dist/shared/redirect-type.d.ts +17 -0
  797. package/dist/shared/redirect-type.d.ts.map +1 -0
  798. package/dist/shared/rsc-cache-key.d.ts +163 -0
  799. package/dist/shared/rsc-cache-key.d.ts.map +1 -0
  800. package/dist/shared/rsc-error-envelope.d.ts +16 -0
  801. package/dist/shared/rsc-error-envelope.d.ts.map +1 -0
  802. package/dist/shared/rsc-manifest.d.ts +28 -0
  803. package/dist/shared/rsc-manifest.d.ts.map +1 -0
  804. package/dist/shared/rsc-media-type.d.ts +52 -0
  805. package/dist/shared/rsc-media-type.d.ts.map +1 -0
  806. package/dist/shared/rsc-payload-path.d.ts +42 -0
  807. package/dist/shared/rsc-payload-path.d.ts.map +1 -0
  808. package/dist/shared/segment-info.d.ts +66 -0
  809. package/dist/shared/segment-info.d.ts.map +1 -0
  810. package/dist/shared/slot-params.d.ts +52 -0
  811. package/dist/shared/slot-params.d.ts.map +1 -0
  812. package/dist/shared/static-platform-files.d.ts +71 -0
  813. package/dist/shared/static-platform-files.d.ts.map +1 -0
  814. package/dist/shared/status-reason-phrase.d.ts +26 -0
  815. package/dist/shared/status-reason-phrase.d.ts.map +1 -0
  816. package/dist/shims/font-google.d.ts +1 -1
  817. package/dist/shims/font-google.d.ts.map +1 -1
  818. package/dist/shims/font-google.js +42 -0
  819. package/dist/shims/font-google.js.map +1 -0
  820. package/dist/shims/font-local.d.ts +26 -0
  821. package/dist/shims/font-local.d.ts.map +1 -0
  822. package/dist/shims/font-local.js +20 -0
  823. package/dist/shims/font-local.js.map +1 -0
  824. package/dist/shims/headers.d.ts +53 -1
  825. package/dist/shims/headers.d.ts.map +1 -1
  826. package/dist/shims/image.d.ts +120 -120
  827. package/dist/shims/image.d.ts.map +1 -1
  828. package/dist/shims/navigation-client.d.ts +25 -12
  829. package/dist/shims/navigation-client.d.ts.map +1 -1
  830. package/dist/shims/navigation-rsc.d.ts +21 -0
  831. package/dist/shims/navigation-rsc.d.ts.map +1 -0
  832. package/dist/shims/navigation.d.ts +10 -5
  833. package/dist/shims/navigation.d.ts.map +1 -1
  834. package/dist/utils/state-machine.d.ts +80 -0
  835. package/dist/utils/state-machine.d.ts.map +1 -0
  836. package/docs/api/30-api-server.mdx +236 -0
  837. package/docs/api/31-api-client.mdx +167 -0
  838. package/docs/api/32-api-cache.mdx +311 -0
  839. package/docs/api/33-api-search-params.mdx +176 -0
  840. package/docs/api/34-api-config.mdx +329 -0
  841. package/docs/api/35-api-typescript.mdx +91 -0
  842. package/docs/api/36-cli.mdx +192 -0
  843. package/docs/learn/00-introduction.mdx +109 -0
  844. package/docs/learn/01-quick-start.mdx +94 -0
  845. package/docs/learn/02-pages-and-layouts.mdx +147 -0
  846. package/docs/learn/03-fetching-data.mdx +211 -0
  847. package/docs/learn/04-access-control.mdx +115 -0
  848. package/docs/learn/05-the-flush-point.mdx +175 -0
  849. package/docs/learn/06-typed-params.mdx +275 -0
  850. package/docs/learn/07-typed-routes.mdx +108 -0
  851. package/docs/learn/08-forms-and-actions.mdx +146 -0
  852. package/docs/learn/09-streaming.mdx +140 -0
  853. package/docs/learn/10-caching.mdx +252 -0
  854. package/docs/learn/11-middleware.mdx +158 -0
  855. package/docs/learn/12-error-handling.mdx +188 -0
  856. package/docs/learn/13-deploying.mdx +287 -0
  857. package/llms.txt +55 -0
  858. package/package.json +117 -30
  859. package/src/adapters/build-output-helper.ts +351 -0
  860. package/src/adapters/cloudflare-dev.ts +183 -0
  861. package/src/adapters/cloudflare-kv-cache.ts +207 -0
  862. package/src/adapters/cloudflare.ts +747 -130
  863. package/src/adapters/compress-module.ts +101 -88
  864. package/src/adapters/fs-identity.ts +156 -0
  865. package/src/adapters/nitro-presets.ts +139 -0
  866. package/src/adapters/nitro-preview.ts +340 -0
  867. package/src/adapters/nitro.ts +249 -426
  868. package/src/adapters/raw-imports.d.ts +5 -0
  869. package/src/adapters/shared.ts +274 -0
  870. package/src/adapters/types.ts +28 -7
  871. package/src/adapters/wrangler.d.ts +7 -0
  872. package/src/analyze/chains.ts +411 -0
  873. package/src/analyze/classify.ts +258 -0
  874. package/src/analyze/crawl-entry.ts +68 -0
  875. package/src/analyze/crawl.ts +500 -0
  876. package/src/analyze/graph-cache.ts +332 -0
  877. package/src/analyze/graph-command.ts +762 -0
  878. package/src/analyze/live-graph.ts +232 -0
  879. package/src/analyze/poison-rules.ts +165 -0
  880. package/src/analyze/poison-scan.ts +162 -0
  881. package/src/analyze/scan.ts +149 -0
  882. package/src/cache/cache-api.ts +107 -0
  883. package/src/cache/fast-hash.ts +5 -0
  884. package/src/cache/handler-store.ts +76 -0
  885. package/src/cache/index.ts +115 -22
  886. package/src/cache/invalidation-epoch.ts +93 -0
  887. package/src/cache/json-lossy-check.ts +75 -0
  888. package/src/cache/redis-handler.ts +198 -20
  889. package/src/cache/singleflight.ts +69 -6
  890. package/src/cache/sizeof.ts +33 -0
  891. package/src/cache/stable-stringify.ts +65 -2
  892. package/src/cache/store.ts +71 -0
  893. package/src/cache/stores/cloudflare-kv.ts +52 -0
  894. package/src/cache/stores/memory.ts +125 -0
  895. package/src/cache/stores/redis.ts +97 -0
  896. package/src/cache/stores/vercel.ts +59 -0
  897. package/src/cache/tag-aware-handler.ts +237 -0
  898. package/src/cache/timber-cache.ts +165 -40
  899. package/src/cdn/cloudflare-purge.ts +50 -0
  900. package/src/cdn/fastly-purge.ts +63 -0
  901. package/src/cdn/headers.ts +153 -0
  902. package/src/cdn/index.ts +23 -0
  903. package/src/cdn/purge-store.ts +34 -0
  904. package/src/cdn/workers-cache-purge.ts +34 -0
  905. package/src/cli-check.ts +507 -0
  906. package/src/cli-schema-sync.ts +401 -0
  907. package/src/cli.ts +262 -55
  908. package/src/client/browser-dev.ts +157 -2
  909. package/src/client/browser-entry/action-dispatch.ts +197 -0
  910. package/src/client/browser-entry/action-queue.ts +90 -0
  911. package/src/client/browser-entry/hmr.ts +70 -0
  912. package/src/client/browser-entry/hydrate.ts +148 -0
  913. package/src/client/browser-entry/index.ts +131 -0
  914. package/src/client/browser-entry/post-hydration.ts +123 -0
  915. package/src/client/browser-entry/router-init.ts +418 -0
  916. package/src/client/browser-entry/rsc-stream.ts +166 -0
  917. package/src/client/browser-entry/scroll.ts +50 -0
  918. package/src/client/deny-last-resort.tsx +54 -0
  919. package/src/client/error-boundary.tsx +316 -40
  920. package/src/client/error-reconstituter.tsx +79 -0
  921. package/src/client/form.tsx +36 -32
  922. package/src/client/global-context.ts +31 -0
  923. package/src/client/history.ts +81 -10
  924. package/src/client/index.ts +89 -53
  925. package/src/client/internal.ts +59 -0
  926. package/src/client/link.tsx +439 -151
  927. package/src/client/location-search.ts +15 -0
  928. package/src/client/navigation-api.ts +347 -0
  929. package/src/client/navigation-commit.ts +295 -0
  930. package/src/client/navigation-context.ts +67 -98
  931. package/src/client/navigation-root.tsx +224 -0
  932. package/src/client/navigation-transition.ts +327 -0
  933. package/src/client/nuqs-adapter.tsx +21 -9
  934. package/src/client/params-context.ts +187 -0
  935. package/src/client/react-root.ts +72 -0
  936. package/src/client/router-effects.ts +228 -0
  937. package/src/client/router-lifecycle.ts +354 -0
  938. package/src/client/router-pipeline.ts +490 -0
  939. package/src/client/router-ref.ts +3 -3
  940. package/src/client/router-skew.ts +30 -0
  941. package/src/client/router-types.ts +294 -0
  942. package/src/client/router.ts +435 -421
  943. package/src/client/rsc-fetch.ts +512 -73
  944. package/src/client/segment-cache.ts +327 -40
  945. package/src/client/segment-context.ts +7 -4
  946. package/src/client/segment-outlet.tsx +96 -0
  947. package/src/client/segment-update-context.ts +23 -0
  948. package/src/client/shallow-url.ts +22 -0
  949. package/src/client/slot-content-cache-context.ts +43 -0
  950. package/src/client/slot-context.ts +50 -0
  951. package/src/client/slot-outlet.tsx +22 -0
  952. package/src/client/slot-provider.tsx +32 -0
  953. package/src/client/ssr-data.ts +30 -9
  954. package/src/client/stale-client.ts +191 -0
  955. package/src/client/state.ts +29 -15
  956. package/src/client/status-page-marker.tsx +32 -0
  957. package/src/client/top-loader.tsx +13 -10
  958. package/src/client/unload-guard.ts +35 -3
  959. package/src/client/use-cookie.ts +70 -18
  960. package/src/client/use-link-status.ts +7 -7
  961. package/src/client/use-pathname.ts +22 -31
  962. package/src/client/use-pending-navigation.ts +40 -0
  963. package/src/client/use-query-states.ts +206 -36
  964. package/src/client/use-router.ts +6 -3
  965. package/src/client/use-search-params.ts +38 -49
  966. package/src/client/use-segment-params.ts +69 -0
  967. package/src/client/use-selected-layout-segment.ts +2 -2
  968. package/src/codec.ts +149 -0
  969. package/src/config-types.ts +322 -0
  970. package/src/config-validation.ts +347 -0
  971. package/src/cookies/define-cookie.ts +222 -53
  972. package/src/cookies/index.ts +13 -2
  973. package/src/cookies/json-cookie.ts +105 -0
  974. package/src/cookies/validation.ts +192 -0
  975. package/src/dev-tools/404-page.ts +286 -0
  976. package/src/dev-tools/browser-logs.ts +55 -0
  977. package/src/dev-tools/dev-page-shell.ts +260 -0
  978. package/src/dev-tools/error-page.ts +331 -0
  979. package/src/dev-tools/holding-server.ts +185 -0
  980. package/src/dev-tools/hydration-overlay.ts +158 -0
  981. package/src/dev-tools/index.ts +83 -0
  982. package/src/dev-tools/instrumentation.ts +213 -0
  983. package/src/{server/dev-logger.ts → dev-tools/logger.ts} +33 -51
  984. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +122 -26
  985. package/src/dev-tools/overlay.ts +469 -0
  986. package/src/dev-tools/stack-classifier.ts +75 -0
  987. package/src/dev-tools/terminal.ts +182 -0
  988. package/src/fonts/ast-walk.ts +235 -0
  989. package/src/fonts/ast.ts +479 -128
  990. package/src/fonts/bundle.ts +138 -0
  991. package/src/fonts/css.ts +1 -1
  992. package/src/fonts/dev-middleware.ts +85 -0
  993. package/src/fonts/fallbacks.ts +0 -23
  994. package/src/fonts/google.ts +101 -19
  995. package/src/fonts/local.ts +12 -11
  996. package/src/fonts/paths.ts +58 -0
  997. package/src/fonts/pipeline.ts +348 -0
  998. package/src/fonts/transform.ts +311 -0
  999. package/src/fonts/types.ts +52 -1
  1000. package/src/fonts/virtual-modules.ts +179 -0
  1001. package/src/index.ts +486 -377
  1002. package/src/params/codec-registry.ts +34 -0
  1003. package/src/params/define-schema.ts +115 -0
  1004. package/src/params/index.ts +17 -0
  1005. package/src/params/resolve-schema.ts +84 -0
  1006. package/src/plugin-context.ts +503 -0
  1007. package/src/plugins/adapter-build.ts +229 -7
  1008. package/src/plugins/build-manifest.ts +201 -26
  1009. package/src/plugins/build-report.ts +259 -47
  1010. package/src/plugins/cache.ts +243 -0
  1011. package/src/plugins/callsite-ast.ts +472 -0
  1012. package/src/plugins/callsite-jsx.ts +243 -0
  1013. package/src/plugins/chunks.ts +74 -5
  1014. package/src/plugins/client-chunks.ts +185 -0
  1015. package/src/plugins/cloudflare-wasm.ts +141 -0
  1016. package/src/plugins/content.ts +5 -1
  1017. package/src/plugins/dev-discovery.ts +218 -0
  1018. package/src/plugins/dev-server.ts +369 -96
  1019. package/src/plugins/entries.ts +141 -16
  1020. package/src/plugins/fonts.ts +234 -659
  1021. package/src/plugins/graph-endpoint.ts +532 -0
  1022. package/src/plugins/mdx.ts +107 -35
  1023. package/src/plugins/prebuilt-capture.ts +217 -0
  1024. package/src/plugins/prebuilt-options-analysis.ts +175 -0
  1025. package/src/plugins/prebuilt.ts +655 -0
  1026. package/src/plugins/prerender-sugar.ts +320 -0
  1027. package/src/plugins/request-dep/analysis.ts +447 -0
  1028. package/src/plugins/request-dep/index.ts +376 -0
  1029. package/src/plugins/request-dep/origin.ts +310 -0
  1030. package/src/plugins/routing.ts +273 -277
  1031. package/src/plugins/server-bundle.ts +99 -14
  1032. package/src/plugins/shims.ts +259 -97
  1033. package/src/plugins/static-build.ts +708 -66
  1034. package/src/react-canary.d.ts +2 -0
  1035. package/src/routing/codegen-shared.ts +39 -0
  1036. package/src/routing/codegen-types.ts +62 -0
  1037. package/src/routing/codegen-write.ts +141 -0
  1038. package/src/routing/codegen.ts +349 -232
  1039. package/src/routing/collision-probe.ts +438 -0
  1040. package/src/routing/collision-spaces.ts +281 -0
  1041. package/src/routing/convention-lint.ts +623 -0
  1042. package/src/routing/export-detect.ts +448 -0
  1043. package/src/routing/file-cache.ts +23 -0
  1044. package/src/routing/index.ts +16 -7
  1045. package/src/routing/interception-overlap.ts +141 -0
  1046. package/src/routing/interception.ts +1044 -67
  1047. package/src/routing/link-codegen.ts +280 -0
  1048. package/src/routing/manifest-codegen.ts +226 -0
  1049. package/src/routing/scanner.ts +393 -219
  1050. package/src/routing/schema-validation.ts +155 -0
  1051. package/src/routing/segment-classify.ts +280 -0
  1052. package/src/routing/segment-codegen.ts +98 -0
  1053. package/src/routing/segment-keys.ts +186 -0
  1054. package/src/routing/slot-placement.ts +97 -0
  1055. package/src/routing/types.ts +75 -26
  1056. package/src/routing/walkers.ts +98 -0
  1057. package/src/rsc-runtime/rsc.ts +9 -0
  1058. package/src/rsc-runtime/ssr.ts +51 -0
  1059. package/src/rsc-runtime/transforms.ts +13 -0
  1060. package/src/rsc-runtime/vendor-types.d.ts +19 -0
  1061. package/src/schema-bridge.ts +380 -0
  1062. package/src/search-params/define.ts +677 -0
  1063. package/src/search-params/index.ts +14 -20
  1064. package/src/search-params/parse-total.ts +91 -0
  1065. package/src/search-params/serialize-equal.ts +14 -0
  1066. package/src/search-params/wrappers.ts +150 -0
  1067. package/src/server/access-gate.tsx +194 -56
  1068. package/src/server/action-client.ts +122 -31
  1069. package/src/server/action-encryption.ts +144 -0
  1070. package/src/server/action-handler.ts +256 -56
  1071. package/src/server/actions.ts +112 -68
  1072. package/src/server/als-registry.ts +160 -21
  1073. package/src/server/asset-headers.ts +15 -37
  1074. package/src/server/body-limits.ts +10 -2
  1075. package/src/server/build-manifest.ts +33 -57
  1076. package/src/server/canonicalize.ts +6 -3
  1077. package/src/server/chain-url-parts.ts +163 -0
  1078. package/src/server/children-interception.ts +115 -0
  1079. package/src/server/coalesce-tick.ts +75 -0
  1080. package/src/server/compress.ts +43 -8
  1081. package/src/server/cookie-context.ts +484 -0
  1082. package/src/server/cookie-parsing.ts +163 -0
  1083. package/src/server/csp-nonce.ts +70 -0
  1084. package/src/server/csrf.ts +39 -6
  1085. package/src/server/default-logger.ts +99 -0
  1086. package/src/server/default-status-page.ts +88 -0
  1087. package/src/server/deny-boundary.ts +533 -0
  1088. package/src/server/deny-renderer.ts +213 -112
  1089. package/src/server/dev-source-map.ts +31 -0
  1090. package/src/server/early-hints-sender.ts +4 -3
  1091. package/src/server/early-hints.ts +39 -29
  1092. package/src/server/error-boundary-wrapper.ts +181 -44
  1093. package/src/server/error-response-headers.ts +18 -0
  1094. package/src/server/fallback-error.ts +79 -102
  1095. package/src/server/flight-injection-state.ts +113 -0
  1096. package/src/server/flight-scripts.ts +67 -0
  1097. package/src/server/form-data.ts +124 -12
  1098. package/src/server/form-flash.ts +2 -2
  1099. package/src/server/head-response.ts +54 -0
  1100. package/src/server/html-injector-core.ts +512 -0
  1101. package/src/server/html-injectors.ts +272 -255
  1102. package/src/server/index.ts +40 -192
  1103. package/src/server/instrumentation.ts +1 -1
  1104. package/src/server/internal.ts +173 -0
  1105. package/src/server/logger.ts +73 -37
  1106. package/src/server/metadata-collector.ts +174 -0
  1107. package/src/server/metadata-platform.ts +2 -2
  1108. package/src/server/metadata-render.ts +30 -8
  1109. package/src/server/metadata-routes.ts +205 -24
  1110. package/src/server/metadata-social.ts +2 -2
  1111. package/src/server/metadata.ts +23 -2
  1112. package/src/server/middleware-runner.ts +32 -5
  1113. package/src/server/node-stream-transforms.ts +323 -0
  1114. package/src/server/nuqs-ssr-provider.tsx +8 -7
  1115. package/src/server/param-coercion.ts +198 -0
  1116. package/src/server/pipeline-helpers.ts +159 -0
  1117. package/src/server/pipeline-interception.ts +109 -33
  1118. package/src/server/pipeline-metadata.ts +15 -1
  1119. package/src/server/pipeline-outcome.ts +218 -0
  1120. package/src/server/pipeline-phases.ts +606 -0
  1121. package/src/server/pipeline.ts +324 -384
  1122. package/src/server/port-resolution.ts +53 -0
  1123. package/src/server/prebuilt/cache-key.ts +299 -0
  1124. package/src/server/prebuilt/capture-state.ts +89 -0
  1125. package/src/server/prebuilt/key-discipline.ts +122 -0
  1126. package/src/server/prebuilt/manifest-tag-index.ts +46 -0
  1127. package/src/server/prebuilt/overlay.ts +256 -0
  1128. package/src/server/prebuilt/payload-source.ts +202 -0
  1129. package/src/server/prebuilt/slots.ts +190 -0
  1130. package/src/server/prebuilt/synthetic-store.ts +122 -0
  1131. package/src/server/prebuilt-builder.ts +804 -0
  1132. package/src/server/prebuilt-runtime.ts +817 -0
  1133. package/src/server/primitives.ts +245 -97
  1134. package/src/server/publish-params.ts +42 -0
  1135. package/src/server/render-timeout.ts +108 -0
  1136. package/src/server/render-utils.ts +35 -0
  1137. package/src/server/request-context.ts +244 -334
  1138. package/src/server/request-dep.ts +37 -0
  1139. package/src/server/response-cache-policy.ts +45 -0
  1140. package/src/server/route-element-builder.ts +508 -355
  1141. package/src/server/route-element-helpers.ts +37 -0
  1142. package/src/server/route-handler.ts +40 -13
  1143. package/src/server/route-matcher.ts +165 -272
  1144. package/src/server/route-module-loader.ts +161 -0
  1145. package/src/server/rsc-cache-key-guard.ts +122 -0
  1146. package/src/server/rsc-entry/action-middleware-runner.ts +174 -0
  1147. package/src/server/rsc-entry/api-handler.ts +78 -34
  1148. package/src/server/rsc-entry/deny-fallback.ts +93 -0
  1149. package/src/server/rsc-entry/error-renderer.ts +373 -95
  1150. package/src/server/rsc-entry/helpers.ts +226 -95
  1151. package/src/server/rsc-entry/index.ts +370 -331
  1152. package/src/server/rsc-entry/render-route.ts +304 -0
  1153. package/src/server/rsc-entry/revalidate-renderer.ts +350 -0
  1154. package/src/server/rsc-entry/rsc-payload.ts +209 -55
  1155. package/src/server/rsc-entry/rsc-stream.ts +151 -26
  1156. package/src/server/rsc-entry/ssr-bridge.ts +18 -5
  1157. package/src/server/rsc-entry/ssr-renderer.ts +311 -60
  1158. package/src/server/rsc-entry/wrap-action-dispatch.ts +186 -0
  1159. package/src/server/rsc-error-envelope.ts +18 -0
  1160. package/src/server/rsc-prop-warnings.ts +1 -1
  1161. package/src/server/safe-load.ts +60 -0
  1162. package/src/server/sensitive-fields.ts +230 -0
  1163. package/src/server/server-only-guard-noop.js +3 -0
  1164. package/src/server/server-timing.ts +1 -1
  1165. package/src/server/sitemap-generator.ts +337 -0
  1166. package/src/server/sitemap-handler.ts +157 -0
  1167. package/src/server/skippable-prefix.ts +172 -0
  1168. package/src/server/slot-interception.ts +168 -0
  1169. package/src/server/slot-resolver.ts +707 -300
  1170. package/src/server/slot-subtree-contain.ts +255 -0
  1171. package/src/server/ssr-bridge-types.ts +165 -0
  1172. package/src/server/ssr-entry.ts +230 -85
  1173. package/src/server/ssr-render.ts +357 -85
  1174. package/src/server/ssr-wrappers.tsx +162 -0
  1175. package/src/server/state-tree-diff.ts +85 -30
  1176. package/src/server/static-generator.ts +715 -0
  1177. package/src/server/static-not-found.ts +134 -0
  1178. package/src/server/status-code-resolver.ts +107 -148
  1179. package/src/server/stream-utils.ts +292 -0
  1180. package/src/server/tracing.ts +128 -16
  1181. package/src/server/tree-match.ts +262 -0
  1182. package/src/server/types.ts +95 -10
  1183. package/src/server/utils/element-type.ts +88 -0
  1184. package/src/server/utils/escape-html.ts +20 -0
  1185. package/src/server/utils/mdx-file.ts +22 -0
  1186. package/src/server/version-skew.ts +104 -0
  1187. package/src/server/waituntil-bridge.ts +1 -1
  1188. package/src/server/workers-cache-bridge.ts +33 -0
  1189. package/src/shared/als-slots.ts +74 -0
  1190. package/src/shared/base-path.ts +80 -0
  1191. package/src/shared/href-validation.ts +159 -0
  1192. package/src/shared/merge-search-params.ts +55 -0
  1193. package/src/shared/param-value.ts +281 -0
  1194. package/src/shared/payload-root.ts +152 -0
  1195. package/src/shared/redirect-type.ts +17 -0
  1196. package/src/shared/rsc-cache-key.ts +269 -0
  1197. package/src/shared/rsc-error-envelope.ts +16 -0
  1198. package/src/shared/rsc-manifest.ts +29 -0
  1199. package/src/shared/rsc-media-type.ts +59 -0
  1200. package/src/shared/rsc-payload-path.ts +45 -0
  1201. package/src/shared/segment-info.ts +67 -0
  1202. package/src/shared/slot-params.ts +109 -0
  1203. package/src/shared/static-platform-files.ts +75 -0
  1204. package/src/shared/status-reason-phrase.ts +61 -0
  1205. package/src/shims/font-google.ts +1 -1
  1206. package/src/shims/font-local.ts +34 -0
  1207. package/src/shims/headers.ts +122 -1
  1208. package/src/shims/navigation-client.ts +36 -32
  1209. package/src/shims/navigation-rsc.ts +47 -0
  1210. package/src/shims/navigation.ts +10 -7
  1211. package/src/utils/state-machine.ts +111 -0
  1212. package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
  1213. package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
  1214. package/dist/_chunks/debug-B3Gypr3D.js +0 -108
  1215. package/dist/_chunks/debug-B3Gypr3D.js.map +0 -1
  1216. package/dist/_chunks/format-RyoGQL74.js +0 -164
  1217. package/dist/_chunks/format-RyoGQL74.js.map +0 -1
  1218. package/dist/_chunks/interception-BOoWmLUA.js +0 -676
  1219. package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
  1220. package/dist/_chunks/metadata-routes-Cjmvi3rQ.js +0 -153
  1221. package/dist/_chunks/metadata-routes-Cjmvi3rQ.js.map +0 -1
  1222. package/dist/_chunks/request-context-BQUC8PHn.js +0 -330
  1223. package/dist/_chunks/request-context-BQUC8PHn.js.map +0 -1
  1224. package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
  1225. package/dist/_chunks/tracing-CemImE6h.js +0 -187
  1226. package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
  1227. package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
  1228. package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
  1229. package/dist/_chunks/use-query-states-D5KaffOK.js +0 -109
  1230. package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
  1231. package/dist/adapters/cloudflare.js.map +0 -1
  1232. package/dist/cache/index.js.map +0 -1
  1233. package/dist/cache/register-cached-function.d.ts +0 -17
  1234. package/dist/cache/register-cached-function.d.ts.map +0 -1
  1235. package/dist/client/browser-entry.d.ts +0 -21
  1236. package/dist/client/browser-entry.d.ts.map +0 -1
  1237. package/dist/client/error-boundary.js.map +0 -1
  1238. package/dist/client/head.d.ts +0 -16
  1239. package/dist/client/head.d.ts.map +0 -1
  1240. package/dist/client/link-status-provider.d.ts +0 -11
  1241. package/dist/client/link-status-provider.d.ts.map +0 -1
  1242. package/dist/client/segment-merger.d.ts +0 -119
  1243. package/dist/client/segment-merger.d.ts.map +0 -1
  1244. package/dist/client/stale-reload.d.ts +0 -44
  1245. package/dist/client/stale-reload.d.ts.map +0 -1
  1246. package/dist/client/transition-root.d.ts +0 -74
  1247. package/dist/client/transition-root.d.ts.map +0 -1
  1248. package/dist/client/use-navigation-pending.d.ts +0 -26
  1249. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  1250. package/dist/client/use-params.d.ts +0 -92
  1251. package/dist/client/use-params.d.ts.map +0 -1
  1252. package/dist/content/index.d.ts +0 -11
  1253. package/dist/content/index.d.ts.map +0 -1
  1254. package/dist/content/index.js +0 -2
  1255. package/dist/plugins/cache-transform.d.ts +0 -36
  1256. package/dist/plugins/cache-transform.d.ts.map +0 -1
  1257. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  1258. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  1259. package/dist/plugins/dev-logs.d.ts.map +0 -1
  1260. package/dist/plugins/dynamic-transform.d.ts +0 -72
  1261. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  1262. package/dist/plugins/server-action-exports.d.ts +0 -26
  1263. package/dist/plugins/server-action-exports.d.ts.map +0 -1
  1264. package/dist/routing/status-file-lint.d.ts +0 -33
  1265. package/dist/routing/status-file-lint.d.ts.map +0 -1
  1266. package/dist/search-params/analyze.d.ts +0 -54
  1267. package/dist/search-params/analyze.d.ts.map +0 -1
  1268. package/dist/search-params/builtin-codecs.d.ts +0 -105
  1269. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  1270. package/dist/search-params/codecs.d.ts +0 -53
  1271. package/dist/search-params/codecs.d.ts.map +0 -1
  1272. package/dist/search-params/create.d.ts +0 -106
  1273. package/dist/search-params/create.d.ts.map +0 -1
  1274. package/dist/search-params/registry.d.ts +0 -20
  1275. package/dist/search-params/registry.d.ts.map +0 -1
  1276. package/dist/server/client-module-map.d.ts +0 -47
  1277. package/dist/server/client-module-map.d.ts.map +0 -1
  1278. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  1279. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  1280. package/dist/server/dev-logger.d.ts.map +0 -1
  1281. package/dist/server/dev-span-processor.d.ts +0 -29
  1282. package/dist/server/dev-span-processor.d.ts.map +0 -1
  1283. package/dist/server/dev-warnings.d.ts +0 -129
  1284. package/dist/server/dev-warnings.d.ts.map +0 -1
  1285. package/dist/server/flush.d.ts +0 -74
  1286. package/dist/server/flush.d.ts.map +0 -1
  1287. package/dist/server/manifest-status-resolver.d.ts +0 -58
  1288. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  1289. package/dist/server/prerender.d.ts +0 -77
  1290. package/dist/server/prerender.d.ts.map +0 -1
  1291. package/dist/server/tree-builder.d.ts +0 -126
  1292. package/dist/server/tree-builder.d.ts.map +0 -1
  1293. package/dist/utils/directive-parser.d.ts +0 -70
  1294. package/dist/utils/directive-parser.d.ts.map +0 -1
  1295. package/src/cache/register-cached-function.ts +0 -103
  1296. package/src/client/browser-entry.ts +0 -678
  1297. package/src/client/head.ts +0 -61
  1298. package/src/client/link-status-provider.tsx +0 -30
  1299. package/src/client/segment-merger.ts +0 -339
  1300. package/src/client/stale-reload.ts +0 -87
  1301. package/src/client/transition-root.tsx +0 -166
  1302. package/src/client/use-navigation-pending.ts +0 -38
  1303. package/src/client/use-params.ts +0 -141
  1304. package/src/content/index.ts +0 -13
  1305. package/src/plugins/cache-transform.ts +0 -199
  1306. package/src/plugins/dev-error-overlay.ts +0 -230
  1307. package/src/plugins/dynamic-transform.ts +0 -161
  1308. package/src/plugins/server-action-exports.ts +0 -220
  1309. package/src/routing/status-file-lint.ts +0 -112
  1310. package/src/search-params/analyze.ts +0 -192
  1311. package/src/search-params/builtin-codecs.ts +0 -228
  1312. package/src/search-params/codecs.ts +0 -153
  1313. package/src/search-params/create.ts +0 -321
  1314. package/src/search-params/registry.ts +0 -31
  1315. package/src/server/client-module-map.ts +0 -58
  1316. package/src/server/dev-fetch-instrumentation.ts +0 -96
  1317. package/src/server/dev-span-processor.ts +0 -78
  1318. package/src/server/dev-warnings.ts +0 -283
  1319. package/src/server/flush.ts +0 -182
  1320. package/src/server/manifest-status-resolver.ts +0 -215
  1321. package/src/server/prerender.ts +0 -139
  1322. package/src/server/tree-builder.ts +0 -382
  1323. package/src/shims/server-only-noop.js +0 -6
  1324. package/src/utils/directive-parser.ts +0 -529
@@ -5,141 +5,38 @@
5
5
  // compression, graceful shutdown, static file serving, and platform quirks.
6
6
  // See design/11-platform.md and design/25-production-deployments.md.
7
7
 
8
- import { writeFile, readFile, mkdir, cp } from 'node:fs/promises';
9
- import { execFile } from 'node:child_process';
10
- import { join, relative } from 'node:path';
11
- import type { TimberPlatformAdapter, TimberConfig } from './types';
12
- import { generateCompressModule } from './compress-module.js';
13
- // Inlined from server/asset-headers.ts — adapters are loaded by Node at
14
- // Vite startup time, before Vite's module resolver is available, so cross-
15
- // directory .ts imports don't resolve.
16
- const IMMUTABLE_CACHE = 'public, max-age=31536000, immutable';
17
- const STATIC_CACHE = 'public, max-age=3600, must-revalidate';
18
-
19
- function generateHeadersFile(): string {
20
- return `# Auto-generated by @timber-js/app — static asset cache headers.
21
- # See design/25-production-deployments.md §"CDN / Edge Cache"
22
-
23
- /assets/*
24
- Cache-Control: ${IMMUTABLE_CACHE}
25
-
26
- /*
27
- Cache-Control: ${STATIC_CACHE}
28
- `;
29
- }
8
+ import { cp, glob, readFile, writeFile } from 'node:fs/promises';
9
+ import { basename, dirname, join } from 'node:path';
10
+ import {
11
+ buildStaticDirectoryOutput,
12
+ findUnhashedStaticFiles,
13
+ runSharedBuildSteps,
14
+ writeHeadersFile,
15
+ } from './build-output-helper.ts';
16
+ import { generateCompressModule } from './compress-module.ts';
17
+ import { LOCALLY_PREVIEWABLE, PRESET_CONFIGS, type NitroPreset } from './nitro-presets.ts';
18
+ import {
19
+ generatePreviewScript,
20
+ generateSendResponseModule,
21
+ spawnNitroPreview,
22
+ } from './nitro-preview.ts';
23
+ import { IMMUTABLE_CACHE } from './shared.ts';
24
+ import type { TimberConfig, TimberPlatformAdapter } from './types.ts';
25
+
26
+ // NitroPreset is part of the public adapter API (NitroAdapterOptions.preset),
27
+ // so it stays importable from this module.
28
+ export type { NitroPreset } from './nitro-presets.ts';
30
29
 
31
- // ─── Presets ─────────────────────────────────────────────────────────────────
30
+ // ─── Options ─────────────────────────────────────────────────────────────────
32
31
 
33
32
  /**
34
- * Supported Nitro deployment presets.
33
+ * Static deploy target for `output: 'static'` mode.
35
34
  *
36
- * Each preset maps to a Nitro deployment target. The adapter generates
37
- * the appropriate configuration and entry point for the selected platform.
35
+ * Controls platform-specific files written alongside the static output:
36
+ * - `'github-pages'` — writes `.nojekyll` to skip Jekyll processing
37
+ * - `'generic'` — no extra files (default)
38
38
  */
39
- export type NitroPreset =
40
- | 'vercel'
41
- | 'vercel-edge'
42
- | 'netlify'
43
- | 'netlify-edge'
44
- | 'aws-lambda'
45
- | 'deno-deploy'
46
- | 'azure-functions'
47
- | 'node-server'
48
- | 'bun';
49
-
50
- /** Preset-specific Nitro configuration. */
51
- interface PresetConfig {
52
- /** Nitro preset name passed to the Nitro build. */
53
- nitroPreset: string;
54
- /** Output directory name within the build dir. */
55
- outputDir: string;
56
- /** Whether the runtime supports waitUntil. */
57
- supportsWaitUntil: boolean;
58
- /** Whether the runtime supports application-level 103 Early Hints. */
59
- supportsEarlyHints: boolean;
60
- /** Value for TIMBER_RUNTIME env var. See design/25-production-deployments.md. */
61
- runtimeName: string;
62
- /** Additional nitro.config fields for this preset. */
63
- extraConfig?: Record<string, unknown>;
64
- }
65
-
66
- const PRESET_CONFIGS: Record<NitroPreset, PresetConfig> = {
67
- 'vercel': {
68
- nitroPreset: 'vercel',
69
- outputDir: '.vercel/output',
70
- supportsWaitUntil: true,
71
- supportsEarlyHints: false,
72
- runtimeName: 'vercel',
73
- extraConfig: { vercel: { functions: { maxDuration: 30 } } },
74
- },
75
- 'vercel-edge': {
76
- nitroPreset: 'vercel-edge',
77
- outputDir: '.vercel/output',
78
- supportsWaitUntil: true,
79
- supportsEarlyHints: false,
80
- runtimeName: 'vercel-edge',
81
- },
82
- 'netlify': {
83
- nitroPreset: 'netlify',
84
- outputDir: '.netlify/functions-internal',
85
- supportsWaitUntil: false,
86
- supportsEarlyHints: false,
87
- runtimeName: 'netlify',
88
- },
89
- 'netlify-edge': {
90
- nitroPreset: 'netlify-edge',
91
- outputDir: '.netlify/edge-functions',
92
- supportsWaitUntil: true,
93
- supportsEarlyHints: false,
94
- runtimeName: 'netlify-edge',
95
- },
96
- 'aws-lambda': {
97
- nitroPreset: 'aws-lambda',
98
- outputDir: '.output',
99
- supportsWaitUntil: false,
100
- supportsEarlyHints: false,
101
- runtimeName: 'aws-lambda',
102
- },
103
- 'deno-deploy': {
104
- nitroPreset: 'deno-deploy',
105
- outputDir: '.output',
106
- supportsWaitUntil: true,
107
- supportsEarlyHints: false,
108
- runtimeName: 'deno-deploy',
109
- },
110
- 'azure-functions': {
111
- nitroPreset: 'azure-functions',
112
- outputDir: '.output',
113
- supportsWaitUntil: false,
114
- supportsEarlyHints: false,
115
- runtimeName: 'azure-functions',
116
- },
117
- 'node-server': {
118
- nitroPreset: 'node-server',
119
- outputDir: '.output',
120
- supportsWaitUntil: true,
121
- // Disabled by default: most node-server deployments sit behind a
122
- // reverse proxy (nginx, caddy, traefik) that doesn't support 103
123
- // Early Hints over HTTP/1.1. Sending 103 causes nginx to intermittently
124
- // treat the response as an error and retry after proxy_connect_timeout
125
- // (~5s stalls on ~23% of requests). Link headers on the 200 response
126
- // are the safe fallback — Cloudflare and other CDNs convert them to
127
- // 103 automatically at the edge (over HTTP/2+ to the browser).
128
- supportsEarlyHints: false,
129
- runtimeName: 'node-server',
130
- },
131
- 'bun': {
132
- nitroPreset: 'bun',
133
- outputDir: '.output',
134
- supportsWaitUntil: true,
135
- // Disabled for same reason as node-server — reverse proxies choke on 103.
136
- // Link headers on the 200 response are converted to 103 by CDNs.
137
- supportsEarlyHints: false,
138
- runtimeName: 'bun',
139
- },
140
- };
141
-
142
- // ─── Options ─────────────────────────────────────────────────────────────────
39
+ export type StaticTarget = 'github-pages' | 'generic';
143
40
 
144
41
  /** Options for the Nitro adapter. */
145
42
  export interface NitroAdapterOptions {
@@ -166,6 +63,13 @@ export interface NitroAdapterOptions {
166
63
  */
167
64
  compress?: boolean;
168
65
 
66
+ /**
67
+ * Static deploy target for `output: 'static'` mode. Controls
68
+ * platform-specific files (e.g. `.nojekyll` for GitHub Pages).
69
+ * @default 'generic'
70
+ */
71
+ staticTarget?: StaticTarget;
72
+
169
73
  /**
170
74
  * Additional Nitro configuration to merge into the generated config.
171
75
  * Overrides default values for the selected preset.
@@ -194,47 +98,63 @@ export interface NitroAdapterOptions {
194
98
  export function nitro(options: NitroAdapterOptions = {}): TimberPlatformAdapter {
195
99
  const preset = options.preset ?? 'node-server';
196
100
  const compress = options.compress ?? true;
197
- const presetConfig = PRESET_CONFIGS[preset];
198
- const pendingPromises: Promise<unknown>[] = [];
199
-
200
101
  return {
201
102
  name: `nitro-${preset}`,
202
103
 
203
104
  async buildOutput(config: TimberConfig, buildDir: string) {
204
105
  const outDir = join(buildDir, 'nitro');
205
- await mkdir(outDir, { recursive: true });
206
-
207
- // Copy client assets to public directory.
208
- // When client JavaScript is disabled, skip .js files — only CSS,
209
- // fonts, images, and other static assets are needed.
210
- const clientDir = join(buildDir, 'client');
211
- const publicDir = join(outDir, 'public');
212
- await mkdir(publicDir, { recursive: true });
213
- await cp(clientDir, publicDir, {
214
- recursive: true,
215
- filter: config.clientJavascriptDisabled ? (src: string) => !src.endsWith('.js') : undefined,
216
- }).catch(() => {
217
- // Client dir may not exist when client JavaScript is disabled
218
- });
219
106
 
220
- // Write _headers file for platforms that support it (Netlify, etc.).
221
- // See design/25-production-deployments.md §"CDN / Edge Cache"
222
- await writeFile(join(publicDir, '_headers'), generateHeadersFile());
107
+ // ── Static mode: plain directory output ────────────────────────
108
+ // No Nitro server — just pre-rendered HTML + client assets.
109
+ if (config.output === 'static' && config.staticPagesDir) {
110
+ await buildStaticDirectoryOutput(config, buildDir, outDir, 'public');
111
+ const publicDir = join(outDir, 'public');
112
+
113
+ // Write _headers for cache control + extensionless Content-Type.
114
+ // Netlify supports the _headers convention just like Cloudflare.
115
+ await writeHeadersFile(publicDir, config, await findUnhashedStaticFiles(publicDir));
116
+
117
+ // Platform-specific files for static deploy targets.
118
+ const target = options.staticTarget ?? 'generic';
119
+ if (target === 'github-pages') {
120
+ // Deploy-from-a-branch runs Jekyll, which drops `_`-prefixed paths —
121
+ // every `_rsc/` payload. Written unconditionally: GitHub reads only
122
+ // that the file exists, never its contents.
123
+ await writeFile(join(publicDir, '.nojekyll'), '');
124
+ // GitHub Pages doesn't support _redirects files. Warn if any
125
+ // redirects were generated — those routes will 404 on GH Pages.
126
+ try {
127
+ const redirects = await readFile(join(publicDir, '_redirects'), 'utf-8');
128
+ if (redirects.trim().length > 0) {
129
+ console.warn(
130
+ `[timber] Warning: GitHub Pages does not support _redirects files. ` +
131
+ `Redirect rules from middleware/proxy will not work on this platform.`
132
+ );
133
+ }
134
+ } catch {
135
+ // No _redirects file — nothing to warn about
136
+ }
137
+ }
223
138
 
224
- // Write the build manifest init module (if manifest data was produced).
225
- if (config.manifestInit) {
226
- await writeFile(join(outDir, '_timber-manifest-init.js'), config.manifestInit);
139
+ return;
227
140
  }
228
141
 
229
- // Write the compression helper module for runtime use.
142
+ // Steps 1–5: shared across all adapters (mkdir, copy client/rsc/ssr,
143
+ // write _headers, write manifest-init).
144
+ await runSharedBuildSteps({
145
+ config,
146
+ buildDir,
147
+ outDir,
148
+ publicDirName: 'public',
149
+ });
150
+
151
+ // Write runtime helper modules used by the preview server.
230
152
  // See design/25-production-deployments.md — self-hosted deployments
231
153
  // need application-level compression (Cloudflare handles it at the edge).
232
- await writeFile(join(outDir, '_compress.mjs'), generateCompressModule());
154
+ await writeFile(join(outDir, '_compress.mjs'), await generateCompressModule());
233
155
 
234
- // Copy rsc/ssr build output into the nitro dir so imports stay local
235
- // during the Nitro bundling step (avoids broken relative paths in output).
236
- await cp(join(buildDir, 'rsc'), join(outDir, 'rsc'), { recursive: true });
237
- await cp(join(buildDir, 'ssr'), join(outDir, 'ssr'), { recursive: true }).catch(() => {});
156
+ // Web→Node response bridge with backpressure. See TIM-1154.
157
+ await writeFile(join(outDir, '_send-response.mjs'), generateSendResponseModule());
238
158
 
239
159
  // Prepend the manifest assignment directly into the RSC entry so
240
160
  // globalThis.__TIMBER_BUILD_MANIFEST__ is set before any module reads it.
@@ -253,7 +173,29 @@ export function nitro(options: NitroAdapterOptions = {}): TimberPlatformAdapter
253
173
  // Run the Nitro build to produce a production-ready server bundle.
254
174
  // The output goes to dist/nitro/.output/server/index.mjs (for node-server preset).
255
175
  // Config is passed programmatically — no nitro.config.ts file needed.
256
- await runNitroBuild(outDir, preset, options.nitroConfig);
176
+ const { serverDir } = await runNitroBuild(outDir, preset, options.nitroConfig);
177
+
178
+ // Copy prebuilt flight payloads from the canonical build source
179
+ // (buildDir/prebuilt, cleaned by the prebuilt plugin each build) into
180
+ // the Nitro output. The RSC entry resolves `../prebuilt/` relative to
181
+ // its bundled chunk (<serverDir>/_chunks/), so prebuilt/ must live at
182
+ // <serverDir>/prebuilt/. serverDir is the resolved path from Nitro
183
+ // (honors user overrides via nitroConfig.output.serverDir).
184
+ const prebuiltSrc = join(buildDir, 'prebuilt');
185
+ await cp(prebuiltSrc, join(serverDir, 'prebuilt'), {
186
+ recursive: true,
187
+ }).catch((e: NodeJS.ErrnoException) => {
188
+ if (e.code !== 'ENOENT') throw e;
189
+ });
190
+
191
+ // Vercel with functionRules clones __server.func to per-route .func
192
+ // directories during the Nitro build. Copy prebuilt into those clones
193
+ // so requests routed to them also resolve ../prebuilt correctly.
194
+ if (preset === 'vercel' || preset === 'vercel-edge') {
195
+ const functionsDir = dirname(serverDir);
196
+ const baseFuncName = basename(serverDir);
197
+ await copyPrebuiltToVercelFuncClones(functionsDir, prebuiltSrc, baseFuncName);
198
+ }
257
199
  },
258
200
 
259
201
  // Only presets that produce a locally-runnable server get preview().
@@ -272,15 +214,6 @@ export function nitro(options: NitroAdapterOptions = {}): TimberPlatformAdapter
272
214
  await spawnNitroPreview(command, [scriptPath], join(buildDir, 'nitro'));
273
215
  }
274
216
  : undefined,
275
-
276
- waitUntil: presetConfig.supportsWaitUntil
277
- ? (promise: Promise<unknown>) => {
278
- const tracked = promise.catch((err) => {
279
- console.error('[timber] waitUntil promise rejected:', err);
280
- });
281
- pendingPromises.push(tracked);
282
- }
283
- : undefined,
284
217
  };
285
218
  }
286
219
 
@@ -291,8 +224,7 @@ export function generateNitroEntry(
291
224
  buildDir: string,
292
225
  outDir: string,
293
226
  preset: NitroPreset,
294
- compress = true,
295
- hasManifestInit = false
227
+ compress = true
296
228
  ): string {
297
229
  // The RSC entry is the main request handler — it exports the fetch handler as default.
298
230
  // rsc/ is copied into the nitro dir so the import is local.
@@ -349,11 +281,6 @@ export function generateNitroEntry(
349
281
  handlerCall = ` const webResponse = await handler(webRequest)`;
350
282
  }
351
283
 
352
- // Build manifest init must be imported before the handler so that
353
- // globalThis.__TIMBER_BUILD_MANIFEST__ is set when the virtual module evaluates.
354
- // ESM guarantees imports are evaluated in order.
355
- const manifestImport = hasManifestInit ? "import './_timber-manifest-init.js'\n" : '';
356
-
357
284
  // Import runWithWaitUntil only when the preset supports it.
358
285
  const waitUntilImport = supportsWaitUntil ? ', runWithWaitUntil' : '';
359
286
 
@@ -363,15 +290,7 @@ export function generateNitroEntry(
363
290
  return `// Generated by @timber-js/app/adapters/nitro
364
291
  // Do not edit — this file is regenerated on each build.
365
292
 
366
- // Patch global Web Streams with fast-webstreams (backed by Node.js native streams).
367
- // Must run before ANY code creates ReadableStream/WritableStream/TransformStream.
368
- // React's RSC Flight streams, SSR output, .tee(), and all pipeThrough transforms
369
- // benefit: 3.8x faster reads, 11x faster transforms, 13x faster sequential tee.
370
- // See: https://github.com/vercel-labs/fast-webstreams
371
- import { patchGlobalWebStreams } from 'experimental-fast-webstreams'
372
- patchGlobalWebStreams()
373
-
374
- ${manifestImport}import handler, { runWithEarlyHintsSender${waitUntilImport} } from '${serverEntryRelative}'
293
+ import handler, { runWithEarlyHintsSender${waitUntilImport} } from '${serverEntryRelative}'
375
294
  ${compressImport}
376
295
  // Set TIMBER_RUNTIME for instrumentation.ts conditional SDK initialization.
377
296
  // See design/25-production-deployments.md §"TIMBER_RUNTIME".
@@ -391,245 +310,88 @@ ${handlerCall}
391
310
  `;
392
311
  }
393
312
 
394
- /** @internal Exported for testing. */
395
- export function generateNitroConfig(
396
- preset: NitroPreset,
397
- userConfig?: Record<string, unknown>
398
- ): string {
399
- const presetConfig = PRESET_CONFIGS[preset];
400
-
401
- const config: Record<string, unknown> = {
402
- preset: presetConfig.nitroPreset,
403
- entry: './entry.ts',
404
- output: { dir: presetConfig.outputDir },
405
- // Static asset cache headers — hashed assets are immutable, others get 1h.
406
- // See design/25-production-deployments.md §"CDN / Edge Cache"
407
- routeRules: {
408
- '/assets/**': { headers: { 'Cache-Control': IMMUTABLE_CACHE } },
409
- },
410
- ...presetConfig.extraConfig,
411
- ...userConfig,
412
- };
313
+ // ─── Build Hint Filtering ────────────────────────────────────────────────────
413
314
 
414
- const configJson = JSON.stringify(config, null, 2);
415
-
416
- return `// Generated by @timber-js/app/adapters/nitro
417
- // Do not edit — this file is regenerated on each build.
418
-
419
- import { defineNitroConfig } from 'nitro/config'
315
+ /**
316
+ * Prefixes of nitro build-output lines that give wrong advice for timber
317
+ * builds. Every nitro bundler path emits these hints via `logger.success` —
318
+ * the rollup path hardcodes `npx nitro preview`; rolldown and vite default
319
+ * to it. That command resolves `.output/nitro.json` relative to cwd, but
320
+ * timber's nitro build lives at `.timber/dist/nitro/.output`, so the
321
+ * suggested command can never work from the project root.
322
+ * Prefix matching degrades gracefully: if upstream rewords the line
323
+ * entirely, it passes through rather than being silently eaten.
324
+ */
325
+ const NITRO_PREVIEW_HINT_PREFIX = 'You can preview this build using';
326
+ const NITRO_DEPLOY_HINT_PREFIX = 'You can deploy this build using';
327
+ const SUPPRESSED_NITRO_HINT_PREFIXES = [NITRO_PREVIEW_HINT_PREFIX, NITRO_DEPLOY_HINT_PREFIX];
420
328
 
421
- export default defineNitroConfig(${configJson})
422
- `;
329
+ /** @internal Exported for testing. */
330
+ export function isSuppressedNitroHint(
331
+ message: unknown,
332
+ prefixes: readonly string[] = SUPPRESSED_NITRO_HINT_PREFIXES
333
+ ): boolean {
334
+ return typeof message === 'string' && prefixes.some((prefix) => message.startsWith(prefix));
423
335
  }
424
336
 
425
- // ─── Preview ─────────────────────────────────────────────────────────────────
426
-
427
- /** Presets that produce a locally-runnable server entry. */
428
- const LOCALLY_PREVIEWABLE = new Set<NitroPreset>(['node-server', 'bun']);
429
-
430
337
  /**
431
- * Generate a standalone preview server script that uses Node's built-in
432
- * HTTP server. This bypasses Nitro entirely — the Nitro entry.ts imports
433
- * h3 which isn't available outside a Nitro build. For local preview we
434
- * just need to serve static files and route requests to the RSC handler.
338
+ * Nitro's rolldown and vite builders render `framework.previewCommand` /
339
+ * `framework.deployCommand` into these hints. A user who explicitly set one
340
+ * via `nitroConfig` has provided valid guidance — only suppress the hints
341
+ * whose command is still nitro's broken default.
435
342
  *
436
343
  * @internal Exported for testing.
437
344
  */
438
- export function generatePreviewScript(buildDir: string, preset: NitroPreset): string {
439
- const rscEntryRelative = relative(join(buildDir, 'nitro'), join(buildDir, 'rsc', 'index.js'));
440
- const rscEntry = rscEntryRelative.startsWith('.') ? rscEntryRelative : './' + rscEntryRelative;
441
- const publicDir = './public';
442
- const manifestInitPath = './_timber-manifest-init.js';
443
- const runtimeName = PRESET_CONFIGS[preset].runtimeName;
444
-
445
- return `// Generated by @timber-js/app — standalone preview server.
446
- // Uses Node's built-in HTTP server to serve static assets and route
447
- // dynamic requests through the RSC handler. No Nitro/h3 dependency.
448
-
449
- // Patch global Web Streams with fast-webstreams before any imports.
450
- import { patchGlobalWebStreams } from 'experimental-fast-webstreams';
451
- patchGlobalWebStreams();
452
-
453
- import { createServer } from 'node:http';
454
- import { readFile, stat } from 'node:fs/promises';
455
- import { join, extname } from 'node:path';
456
- import { fileURLToPath } from 'node:url';
457
- import { existsSync } from 'node:fs';
458
-
459
- // Set runtime before importing the handler.
460
- process.env.TIMBER_RUNTIME = '${runtimeName}';
461
-
462
- // Load the build manifest if it exists.
463
- const __dirname = fileURLToPath(new URL('.', import.meta.url));
464
- const manifestPath = join(__dirname, '${manifestInitPath}');
465
- if (existsSync(manifestPath)) {
466
- await import('${manifestInitPath}');
345
+ export function selectSuppressedHintPrefixes(framework?: {
346
+ previewCommand?: string;
347
+ deployCommand?: string;
348
+ }): string[] {
349
+ return [
350
+ ...(framework?.previewCommand ? [] : [NITRO_PREVIEW_HINT_PREFIX]),
351
+ ...(framework?.deployCommand ? [] : [NITRO_DEPLOY_HINT_PREFIX]),
352
+ ];
467
353
  }
468
354
 
469
- // Import the RSC handler (default export is the fetch-like handler).
470
- const { default: handler, runWithEarlyHintsSender } = await import('${rscEntry}');
471
-
472
- // Import compression helper for self-hosted response compression.
473
- const { compressResponse } = await import('./_compress.mjs');
474
-
475
- const MIME_TYPES = {
476
- '.html': 'text/html',
477
- '.js': 'application/javascript',
478
- '.mjs': 'application/javascript',
479
- '.css': 'text/css',
480
- '.json': 'application/json',
481
- '.png': 'image/png',
482
- '.jpg': 'image/jpeg',
483
- '.jpeg': 'image/jpeg',
484
- '.gif': 'image/gif',
485
- '.svg': 'image/svg+xml',
486
- '.ico': 'image/x-icon',
487
- '.woff': 'font/woff',
488
- '.woff2': 'font/woff2',
489
- '.ttf': 'font/ttf',
490
- '.otf': 'font/otf',
491
- '.webp': 'image/webp',
492
- '.avif': 'image/avif',
493
- '.webm': 'video/webm',
494
- '.mp4': 'video/mp4',
495
- '.txt': 'text/plain',
496
- '.xml': 'application/xml',
497
- '.wasm': 'application/wasm',
498
- };
499
-
500
- const publicDir = join(__dirname, '${publicDir}');
501
- const port = parseInt(process.env.PORT || '3000', 10);
502
- const host = process.env.HOST || process.env.HOSTNAME || 'localhost';
503
-
504
- const server = createServer(async (req, res) => {
505
- const url = new URL(req.url || '/', \`http://\${host}:\${port}\`);
506
-
507
- // Try serving static files from the public directory first.
508
- const filePath = join(publicDir, url.pathname);
509
- // Prevent path traversal.
510
- if (filePath.startsWith(publicDir)) {
511
- try {
512
- const fileStat = await stat(filePath);
513
- if (fileStat.isFile()) {
514
- const ext = extname(filePath);
515
- const contentType = MIME_TYPES[ext] || 'application/octet-stream';
516
- const body = await readFile(filePath);
517
- // Hashed assets get immutable cache, others get short cache.
518
- const cacheControl = url.pathname.startsWith('/assets/')
519
- ? 'public, max-age=31536000, immutable'
520
- : 'public, max-age=3600, must-revalidate';
521
- res.writeHead(200, {
522
- 'Content-Type': contentType,
523
- 'Content-Length': body.length,
524
- 'Cache-Control': cacheControl,
525
- });
526
- res.end(body);
527
- return;
528
- }
529
- } catch {
530
- // File not found — fall through to the RSC handler.
531
- }
532
- }
533
-
534
- // Convert Node request to Web Request.
535
- const headers = new Headers();
536
- for (const [key, value] of Object.entries(req.headers)) {
537
- if (value) {
538
- if (Array.isArray(value)) {
539
- for (const v of value) headers.append(key, v);
540
- } else {
541
- headers.set(key, value);
542
- }
543
- }
544
- }
545
-
546
- let body = undefined;
547
- if (req.method !== 'GET' && req.method !== 'HEAD') {
548
- body = await new Promise((resolve) => {
549
- const chunks = [];
550
- req.on('data', (chunk) => chunks.push(chunk));
551
- req.on('end', () => resolve(Buffer.concat(chunks)));
552
- });
553
- }
554
-
555
- const webRequest = new Request(url.href, {
556
- method: req.method,
557
- headers,
558
- body,
559
- duplex: body ? 'half' : undefined,
560
- });
561
-
562
- try {
563
- // Support 103 Early Hints when available.
564
- const earlyHintsSender = (typeof res.writeEarlyHints === 'function')
565
- ? (links) => { try { res.writeEarlyHints({ link: links }); } catch {} }
566
- : undefined;
567
-
568
- const rawResponse = earlyHintsSender && runWithEarlyHintsSender
569
- ? await runWithEarlyHintsSender(earlyHintsSender, () => handler(webRequest))
570
- : await handler(webRequest);
571
-
572
- // Compress the response for self-hosted deployments.
573
- const webResponse = compressResponse(webRequest, rawResponse);
574
-
575
- // Write the response back to the Node response.
576
- res.writeHead(webResponse.status, Object.fromEntries(webResponse.headers.entries()));
577
-
578
- if (webResponse.body) {
579
- const reader = webResponse.body.getReader();
580
- const pump = async () => {
581
- while (true) {
582
- const { done, value } = await reader.read();
583
- if (done) { res.end(); return; }
584
- res.write(value);
585
- }
586
- };
587
- await pump();
588
- } else {
589
- res.end();
590
- }
591
- } catch (err) {
592
- console.error('[timber preview] Request error:', err);
593
- if (!res.headersSent) {
594
- res.writeHead(500, { 'Content-Type': 'text/plain' });
595
- }
596
- res.end('Internal Server Error');
597
- }
598
- });
599
-
600
- server.listen(port, host, () => {
601
- console.log();
602
- console.log(' ⚡ timber preview server running at:');
603
- console.log();
604
- console.log(\` ➜ http://\${host}:\${port}\`);
605
- console.log();
606
- });
607
- `;
355
+ /** Minimal structural view of the nitro (consola) logger the wrap needs. */
356
+ interface NitroBuildLogger {
357
+ success: (message: unknown, ...args: unknown[]) => void;
608
358
  }
609
359
 
610
- /** Command descriptor for Nitro preview — testable without spawning. */
611
- export interface NitroPreviewCommand {
612
- command: string;
613
- args: string[];
614
- cwd: string;
360
+ /**
361
+ * Wrap a nitro logger's `success` so hardcoded preview/deploy hints are
362
+ * dropped for this programmatic build only. Returns the original
363
+ * (unfiltered) success fn so timber can print its own hint — which shares
364
+ * the suppressed prefix on purpose, replacing nitro's wording.
365
+ *
366
+ * @internal Exported for testing.
367
+ */
368
+ export function wrapNitroLoggerForBuild(
369
+ logger: NitroBuildLogger,
370
+ prefixes: readonly string[] = SUPPRESSED_NITRO_HINT_PREFIXES
371
+ ): NitroBuildLogger['success'] {
372
+ const originalSuccess = logger.success.bind(logger);
373
+ const wrapped = (message: unknown, ...args: unknown[]) => {
374
+ if (isSuppressedNitroHint(message, prefixes)) return;
375
+ originalSuccess(message, ...args);
376
+ };
377
+ // Preserve consola LogFn properties (e.g. `.raw`) on the replacement.
378
+ logger.success = Object.assign(wrapped, logger.success);
379
+ return originalSuccess;
615
380
  }
616
381
 
617
- /** @internal Exported for testing. */
618
- export function generateNitroPreviewCommand(
619
- buildDir: string,
620
- preset: NitroPreset
621
- ): NitroPreviewCommand | null {
622
- if (!LOCALLY_PREVIEWABLE.has(preset)) return null;
623
-
624
- const nitroDir = join(buildDir, 'nitro');
625
- const entryPath = join(nitroDir, 'entry.ts');
626
-
627
- const command = preset === 'bun' ? 'bun' : 'node';
628
- return {
629
- command,
630
- args: [entryPath],
631
- cwd: nitroDir,
632
- };
382
+ /**
383
+ * Timber's own post-build hint. Locally-runnable presets are previewed via
384
+ * `timber preview`, which invokes this adapter's `preview()` to run the
385
+ * generated `_preview-server.mjs`. Serverless presets get no hint — their
386
+ * output lives under `.timber/dist/nitro/`, so any cwd-relative deploy
387
+ * command would be as wrong as the nitro hint this replaces.
388
+ *
389
+ * @internal Exported for testing.
390
+ */
391
+ export function getPostBuildHint(preset: NitroPreset): string | null {
392
+ return LOCALLY_PREVIEWABLE.has(preset)
393
+ ? 'You can preview this build using `timber preview`'
394
+ : null;
633
395
  }
634
396
 
635
397
  /**
@@ -638,11 +400,16 @@ export function generateNitroPreviewCommand(
638
400
  * Externalizes the timber RSC/SSR output — those files are pre-built
639
401
  * by timber and have internal references that nitro's bundler can't follow.
640
402
  */
403
+ interface NitroBuildResult {
404
+ /** Resolved output.serverDir — where the server bundle + _chunks/ live. */
405
+ serverDir: string;
406
+ }
407
+
641
408
  async function runNitroBuild(
642
409
  nitroDir: string,
643
410
  preset: NitroPreset,
644
411
  userConfig?: Record<string, unknown>
645
- ): Promise<void> {
412
+ ): Promise<NitroBuildResult> {
646
413
  const presetConfig = PRESET_CONFIGS[preset];
647
414
  const {
648
415
  createNitro,
@@ -661,6 +428,7 @@ async function runNitroBuild(
661
428
  output: { dir: join(nitroDir, presetConfig.outputDir) },
662
429
  routeRules: {
663
430
  '/assets/**': { headers: { 'Cache-Control': IMMUTABLE_CACHE } },
431
+ '/_timber/fonts/**': { headers: { 'Cache-Control': IMMUTABLE_CACHE } },
664
432
  },
665
433
  // Don't bundle the timber RSC/SSR build output — it has its own
666
434
  // internal file references that nitro's bundler can't follow.
@@ -672,30 +440,85 @@ async function runNitroBuild(
672
440
  ...userConfig,
673
441
  });
674
442
 
443
+ // Drop nitro's `npx nitro preview` / `npx nitro deploy` hints —
444
+ // they can never work from the project root (see TIM-1375). Hints whose
445
+ // command the user explicitly configured via framework.previewCommand /
446
+ // deployCommand pass through untouched — except on the rollup builder,
447
+ // which ignores framework commands and unconditionally prints the broken
448
+ // defaults (nitro/dist/_build/rollup.mjs), so user commands are treated
449
+ // as absent there: defaults stay suppressed, timber's hint still prints.
450
+ // logSuccess is the unfiltered fn used below to print timber's hint.
451
+ const framework = nitro.options.builder === 'rollup' ? undefined : nitro.options.framework;
452
+ const logSuccess = wrapNitroLoggerForBuild(nitro.logger, selectSuppressedHintPrefixes(framework));
453
+
454
+ // Read the resolved serverDir AFTER config merging — userConfig may
455
+ // override output.dir or output.serverDir. Nitro appends a trailing
456
+ // slash during resolution; strip it for join() compatibility.
457
+ const raw = nitro.options.output.serverDir;
458
+ const serverDir = raw.endsWith('/') ? raw.slice(0, -1) : raw;
459
+
675
460
  await prepare(nitro);
676
461
  await copyPublicAssets(nitro);
677
462
  await nitroBuild(nitro);
678
463
  await nitro.close();
679
- }
680
464
 
681
- /** Spawn a Nitro preview process and pipe stdio. */
682
- function spawnNitroPreview(command: string, args: string[], cwd: string): Promise<void> {
683
- return new Promise<void>((resolve, reject) => {
684
- const child = execFile(command, args, { cwd }, (err) => {
685
- if (err) reject(err);
686
- else resolve();
687
- });
688
- child.stdout?.pipe(process.stdout);
689
- child.stderr?.pipe(process.stderr);
690
- });
691
- }
465
+ // A user-configured previewCommand already printed via nitro's own hint —
466
+ // don't print a second, conflicting one.
467
+ const hint = framework?.previewCommand ? null : getPostBuildHint(preset);
468
+ if (hint) logSuccess(hint);
692
469
 
470
+ return { serverDir };
471
+ }
693
472
  // ─── Helpers ─────────────────────────────────────────────────────────────────
694
473
 
695
474
  /**
696
- * Get the preset configuration for a given preset name.
475
+ * Resolve the destination path for prebuilt flight payloads in the Nitro
476
+ * output directory. The RSC entry resolves `../prebuilt/` relative to its
477
+ * bundled chunk location (`<serverBundleDir>/_chunks/`), so prebuilt/ must
478
+ * live at `<serverBundleDir>/prebuilt/`.
479
+ *
480
+ * The serverBundleDir varies by preset — Nitro's Vercel preset uses
481
+ * `functions/__server.func` while most others use `server`.
482
+ *
483
+ * @internal Exported for testing.
484
+ */
485
+ export function resolvePrebuiltOutputPath(outDir: string, preset: NitroPreset): string {
486
+ const presetConfig = PRESET_CONFIGS[preset];
487
+ return join(outDir, presetConfig.outputDir, presetConfig.serverBundleDir, 'prebuilt');
488
+ }
489
+
490
+ /**
491
+ * Copy prebuilt payloads into cloned Vercel function directories.
492
+ *
493
+ * When users configure `vercel.functionRules`, Nitro's compiled hook clones
494
+ * the base __server.func to per-route .func directories. These clones are
495
+ * created during `runNitroBuild()` — before our post-build prebuilt copy.
496
+ * Each clone resolves `../prebuilt` independently, so they each need a copy.
497
+ *
697
498
  * @internal Exported for testing.
698
499
  */
699
- export function getPresetConfig(preset: NitroPreset): PresetConfig {
700
- return PRESET_CONFIGS[preset];
500
+ export async function copyPrebuiltToVercelFuncClones(
501
+ functionsDir: string,
502
+ prebuiltSrc: string,
503
+ baseFuncName: string
504
+ ): Promise<void> {
505
+ const funcDirs: string[] = [];
506
+ try {
507
+ for await (const match of glob('**/*.func', { cwd: functionsDir })) {
508
+ if (!match.endsWith(baseFuncName)) {
509
+ funcDirs.push(join(functionsDir, match));
510
+ }
511
+ }
512
+ } catch {
513
+ return;
514
+ }
515
+ await Promise.all(
516
+ funcDirs.map((dir) =>
517
+ cp(prebuiltSrc, join(dir, 'prebuilt'), { recursive: true }).catch(
518
+ (e: NodeJS.ErrnoException) => {
519
+ if (e.code !== 'ENOENT') throw e;
520
+ }
521
+ )
522
+ )
523
+ );
701
524
  }