@timber-js/app 0.2.0-alpha.19 → 0.2.0-alpha.190

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 (1192) hide show
  1. package/LICENSE +8 -0
  2. package/agent-skill.md +344 -0
  3. package/dist/_chunks/actions-35jnMdeJ.js +318 -0
  4. package/dist/_chunks/actions-35jnMdeJ.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-DWppEdLB.js +86 -0
  12. package/dist/_chunks/build-manifest-DWppEdLB.js.map +1 -0
  13. package/dist/_chunks/build-output-helper-C3DrfzZR.js +369 -0
  14. package/dist/_chunks/build-output-helper-C3DrfzZR.js.map +1 -0
  15. package/dist/_chunks/cache-api-DjNrIWRR.js +1196 -0
  16. package/dist/_chunks/cache-api-DjNrIWRR.js.map +1 -0
  17. package/dist/_chunks/cli-check-CpmN7Nh-.js +256 -0
  18. package/dist/_chunks/cli-check-CpmN7Nh-.js.map +1 -0
  19. package/dist/_chunks/cli-schema-sync-CGMp_Psg.js +298 -0
  20. package/dist/_chunks/cli-schema-sync-CGMp_Psg.js.map +1 -0
  21. package/dist/_chunks/cloudflare-CGP6BZKO.js +1284 -0
  22. package/dist/_chunks/cloudflare-CGP6BZKO.js.map +1 -0
  23. package/dist/_chunks/codec-registry-oOUxugz3.js +21 -0
  24. package/dist/_chunks/codec-registry-oOUxugz3.js.map +1 -0
  25. package/dist/_chunks/convention-lint-kXsgc_-7.js +784 -0
  26. package/dist/_chunks/convention-lint-kXsgc_-7.js.map +1 -0
  27. package/dist/_chunks/dist-BA3u1z3W.js +423 -0
  28. package/dist/_chunks/dist-BA3u1z3W.js.map +1 -0
  29. package/dist/_chunks/error-boundary-D-ODYX41.js +353 -0
  30. package/dist/_chunks/error-boundary-D-ODYX41.js.map +1 -0
  31. package/dist/_chunks/fast-hash-C-tVYrLb.js +41 -0
  32. package/dist/_chunks/fast-hash-C-tVYrLb.js.map +1 -0
  33. package/dist/_chunks/file-cache-DmX7OqZP.js +454 -0
  34. package/dist/_chunks/file-cache-DmX7OqZP.js.map +1 -0
  35. package/dist/_chunks/format-CfwjgPz9.js +14 -0
  36. package/dist/_chunks/format-CfwjgPz9.js.map +1 -0
  37. package/dist/_chunks/fs-identity-D7vb6GdI.js +208 -0
  38. package/dist/_chunks/fs-identity-D7vb6GdI.js.map +1 -0
  39. package/dist/_chunks/href-validation-CMc5JRls.js +141 -0
  40. package/dist/_chunks/href-validation-CMc5JRls.js.map +1 -0
  41. package/dist/_chunks/json-lossy-check-ClNvBM_3.js +63 -0
  42. package/dist/_chunks/json-lossy-check-ClNvBM_3.js.map +1 -0
  43. package/dist/_chunks/logger-D8xJZXIN.js +1451 -0
  44. package/dist/_chunks/logger-D8xJZXIN.js.map +1 -0
  45. package/dist/_chunks/mdx-file-C005ay-P.js +25 -0
  46. package/dist/_chunks/mdx-file-C005ay-P.js.map +1 -0
  47. package/dist/_chunks/plugin-context-rCinWLiE.js +321 -0
  48. package/dist/_chunks/plugin-context-rCinWLiE.js.map +1 -0
  49. package/dist/_chunks/purge-store-Byr8XOjU.js +14 -0
  50. package/dist/_chunks/purge-store-Byr8XOjU.js.map +1 -0
  51. package/dist/_chunks/resolve-schema-CBR6Lm4i.js +50 -0
  52. package/dist/_chunks/resolve-schema-CBR6Lm4i.js.map +1 -0
  53. package/dist/_chunks/router-ref-DuYuV_0Q.js +28 -0
  54. package/dist/_chunks/router-ref-DuYuV_0Q.js.map +1 -0
  55. package/dist/_chunks/rsc-cache-key-DD0fl_-s.js +243 -0
  56. package/dist/_chunks/rsc-cache-key-DD0fl_-s.js.map +1 -0
  57. package/dist/_chunks/rsc-error-envelope-tT5PJs4q.js +40 -0
  58. package/dist/_chunks/rsc-error-envelope-tT5PJs4q.js.map +1 -0
  59. package/dist/_chunks/rsc-media-type-DRqE_lD_.js +46 -0
  60. package/dist/_chunks/rsc-media-type-DRqE_lD_.js.map +1 -0
  61. package/dist/_chunks/rsc-payload-path-B_LBodc2.js +48 -0
  62. package/dist/_chunks/rsc-payload-path-B_LBodc2.js.map +1 -0
  63. package/dist/_chunks/scanner-C8b0Gcw3.js +1564 -0
  64. package/dist/_chunks/scanner-C8b0Gcw3.js.map +1 -0
  65. package/dist/_chunks/schema-bridge-C83xa9lT.js +199 -0
  66. package/dist/_chunks/schema-bridge-C83xa9lT.js.map +1 -0
  67. package/dist/_chunks/segment-classify-C539Pa2O.js +197 -0
  68. package/dist/_chunks/segment-classify-C539Pa2O.js.map +1 -0
  69. package/dist/_chunks/segment-context-CjOlyB8Y.js +97 -0
  70. package/dist/_chunks/segment-context-CjOlyB8Y.js.map +1 -0
  71. package/dist/_chunks/segment-keys-BawYuNFO.js +307 -0
  72. package/dist/_chunks/segment-keys-BawYuNFO.js.map +1 -0
  73. package/dist/_chunks/sizeof-lXffQ1Vr.js +35 -0
  74. package/dist/_chunks/sizeof-lXffQ1Vr.js.map +1 -0
  75. package/dist/_chunks/slot-params-BCTmZkQB.js +76 -0
  76. package/dist/_chunks/slot-params-BCTmZkQB.js.map +1 -0
  77. package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-14MXm7Pj.js} +17 -2
  78. package/dist/_chunks/ssr-data-14MXm7Pj.js.map +1 -0
  79. package/dist/_chunks/use-query-states-I3JMng6J.js +226 -0
  80. package/dist/_chunks/use-query-states-I3JMng6J.js.map +1 -0
  81. package/dist/_chunks/use-segment-params-C4r4BD9T.js +398 -0
  82. package/dist/_chunks/use-segment-params-C4r4BD9T.js.map +1 -0
  83. package/dist/_chunks/walkers-RzN6AFjr.js +141 -0
  84. package/dist/_chunks/walkers-RzN6AFjr.js.map +1 -0
  85. package/dist/adapters/build-output-helper.d.ts +72 -0
  86. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  87. package/dist/adapters/cloudflare-dev.d.ts +109 -0
  88. package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
  89. package/dist/adapters/cloudflare-dev.js +73 -0
  90. package/dist/adapters/cloudflare-dev.js.map +1 -0
  91. package/dist/adapters/cloudflare-kv-cache.d.ts +65 -0
  92. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
  93. package/dist/adapters/cloudflare-kv-cache.js +124 -0
  94. package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
  95. package/dist/adapters/cloudflare.d.ts +199 -21
  96. package/dist/adapters/cloudflare.d.ts.map +1 -1
  97. package/dist/adapters/cloudflare.js +2 -188
  98. package/dist/adapters/compress-module.d.ts +17 -4
  99. package/dist/adapters/compress-module.d.ts.map +1 -1
  100. package/dist/adapters/fs-identity.d.ts +64 -0
  101. package/dist/adapters/fs-identity.d.ts.map +1 -0
  102. package/dist/adapters/nitro.d.ts +55 -3
  103. package/dist/adapters/nitro.d.ts.map +1 -1
  104. package/dist/adapters/nitro.js +287 -171
  105. package/dist/adapters/nitro.js.map +1 -1
  106. package/dist/adapters/shared.d.ts +62 -0
  107. package/dist/adapters/shared.d.ts.map +1 -0
  108. package/dist/adapters/types.d.ts +28 -6
  109. package/dist/adapters/types.d.ts.map +1 -1
  110. package/dist/cache/cache-api.d.ts +48 -0
  111. package/dist/cache/cache-api.d.ts.map +1 -0
  112. package/dist/cache/fast-hash.d.ts +5 -0
  113. package/dist/cache/fast-hash.d.ts.map +1 -1
  114. package/dist/cache/handler-store.d.ts +33 -0
  115. package/dist/cache/handler-store.d.ts.map +1 -0
  116. package/dist/cache/index.d.ts +31 -8
  117. package/dist/cache/index.d.ts.map +1 -1
  118. package/dist/cache/index.js +3 -326
  119. package/dist/cache/invalidation-epoch.d.ts +43 -0
  120. package/dist/cache/invalidation-epoch.d.ts.map +1 -0
  121. package/dist/cache/json-lossy-check.d.ts +11 -0
  122. package/dist/cache/json-lossy-check.d.ts.map +1 -0
  123. package/dist/cache/redis-handler.d.ts +140 -8
  124. package/dist/cache/redis-handler.d.ts.map +1 -1
  125. package/dist/cache/singleflight.d.ts +19 -2
  126. package/dist/cache/singleflight.d.ts.map +1 -1
  127. package/dist/cache/sizeof.d.ts +22 -0
  128. package/dist/cache/sizeof.d.ts.map +1 -0
  129. package/dist/cache/stable-stringify.d.ts +9 -0
  130. package/dist/cache/stable-stringify.d.ts.map +1 -1
  131. package/dist/cache/store.d.ts +53 -0
  132. package/dist/cache/store.d.ts.map +1 -0
  133. package/dist/cache/stores/cloudflare-kv.d.ts +38 -0
  134. package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -0
  135. package/dist/cache/stores/cloudflare-kv.js +29 -0
  136. package/dist/cache/stores/cloudflare-kv.js.map +1 -0
  137. package/dist/cache/stores/memory.d.ts +42 -0
  138. package/dist/cache/stores/memory.d.ts.map +1 -0
  139. package/dist/cache/stores/memory.js +90 -0
  140. package/dist/cache/stores/memory.js.map +1 -0
  141. package/dist/cache/stores/redis.d.ts +69 -0
  142. package/dist/cache/stores/redis.d.ts.map +1 -0
  143. package/dist/cache/stores/redis.js +35 -0
  144. package/dist/cache/stores/redis.js.map +1 -0
  145. package/dist/cache/stores/vercel.d.ts +36 -0
  146. package/dist/cache/stores/vercel.d.ts.map +1 -0
  147. package/dist/cache/stores/vercel.js +33 -0
  148. package/dist/cache/stores/vercel.js.map +1 -0
  149. package/dist/cache/tag-aware-handler.d.ts +52 -0
  150. package/dist/cache/tag-aware-handler.d.ts.map +1 -0
  151. package/dist/cache/timber-cache.d.ts +20 -10
  152. package/dist/cache/timber-cache.d.ts.map +1 -1
  153. package/dist/cdn/cloudflare-purge.d.ts +23 -0
  154. package/dist/cdn/cloudflare-purge.d.ts.map +1 -0
  155. package/dist/cdn/cloudflare-purge.js +30 -0
  156. package/dist/cdn/cloudflare-purge.js.map +1 -0
  157. package/dist/cdn/fastly-purge.d.ts +25 -0
  158. package/dist/cdn/fastly-purge.d.ts.map +1 -0
  159. package/dist/cdn/fastly-purge.js +33 -0
  160. package/dist/cdn/fastly-purge.js.map +1 -0
  161. package/dist/cdn/headers.d.ts +97 -0
  162. package/dist/cdn/headers.d.ts.map +1 -0
  163. package/dist/cdn/index.d.ts +5 -0
  164. package/dist/cdn/index.d.ts.map +1 -0
  165. package/dist/cdn/index.js +94 -0
  166. package/dist/cdn/index.js.map +1 -0
  167. package/dist/cdn/purge-store.d.ts +23 -0
  168. package/dist/cdn/purge-store.d.ts.map +1 -0
  169. package/dist/cdn/workers-cache-purge.d.ts +16 -0
  170. package/dist/cdn/workers-cache-purge.d.ts.map +1 -0
  171. package/dist/cdn/workers-cache-purge.js +35 -0
  172. package/dist/cdn/workers-cache-purge.js.map +1 -0
  173. package/dist/cli-check.d.ts +153 -0
  174. package/dist/cli-check.d.ts.map +1 -0
  175. package/dist/cli-schema-sync.d.ts +59 -0
  176. package/dist/cli-schema-sync.d.ts.map +1 -0
  177. package/dist/cli.d.ts +66 -7
  178. package/dist/cli.d.ts.map +1 -1
  179. package/dist/cli.js +151 -47
  180. package/dist/cli.js.map +1 -1
  181. package/dist/client/browser-dev.d.ts +37 -1
  182. package/dist/client/browser-dev.d.ts.map +1 -1
  183. package/dist/client/browser-entry/action-dispatch.d.ts +17 -0
  184. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  185. package/dist/client/browser-entry/hmr.d.ts +21 -0
  186. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  187. package/dist/client/browser-entry/hydrate.d.ts +57 -0
  188. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  189. package/dist/client/browser-entry/index.d.ts +29 -0
  190. package/dist/client/browser-entry/index.d.ts.map +1 -0
  191. package/dist/client/browser-entry/post-hydration.d.ts +29 -0
  192. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  193. package/dist/client/browser-entry/router-init.d.ts +30 -0
  194. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  195. package/dist/client/browser-entry/rsc-stream.d.ts +32 -0
  196. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  197. package/dist/client/browser-entry/scroll.d.ts +28 -0
  198. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  199. package/dist/client/error-boundary.d.ts +19 -5
  200. package/dist/client/error-boundary.d.ts.map +1 -1
  201. package/dist/client/error-boundary.js +1 -125
  202. package/dist/client/error-reconstituter.d.ts +61 -0
  203. package/dist/client/error-reconstituter.d.ts.map +1 -0
  204. package/dist/client/form.d.ts +16 -27
  205. package/dist/client/form.d.ts.map +1 -1
  206. package/dist/client/history.d.ts +29 -7
  207. package/dist/client/history.d.ts.map +1 -1
  208. package/dist/client/index.d.ts +11 -24
  209. package/dist/client/index.d.ts.map +1 -1
  210. package/dist/client/index.js +186 -1134
  211. package/dist/client/index.js.map +1 -1
  212. package/dist/client/internal.d.ts +20 -0
  213. package/dist/client/internal.d.ts.map +1 -0
  214. package/dist/client/internal.js +1624 -0
  215. package/dist/client/internal.js.map +1 -0
  216. package/dist/client/link.d.ts +63 -60
  217. package/dist/client/link.d.ts.map +1 -1
  218. package/dist/client/navigation-api.d.ts +121 -0
  219. package/dist/client/navigation-api.d.ts.map +1 -0
  220. package/dist/client/navigation-commit.d.ts +87 -0
  221. package/dist/client/navigation-commit.d.ts.map +1 -0
  222. package/dist/client/navigation-context.d.ts +38 -20
  223. package/dist/client/navigation-context.d.ts.map +1 -1
  224. package/dist/client/navigation-root.d.ts +159 -0
  225. package/dist/client/navigation-root.d.ts.map +1 -0
  226. package/dist/client/nuqs-adapter.d.ts +1 -1
  227. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  228. package/dist/client/params-context.d.ts +81 -0
  229. package/dist/client/params-context.d.ts.map +1 -0
  230. package/dist/client/router-effects.d.ts +129 -0
  231. package/dist/client/router-effects.d.ts.map +1 -0
  232. package/dist/client/router-lifecycle.d.ts +55 -0
  233. package/dist/client/router-lifecycle.d.ts.map +1 -0
  234. package/dist/client/router-pipeline.d.ts +84 -0
  235. package/dist/client/router-pipeline.d.ts.map +1 -0
  236. package/dist/client/router-ref.d.ts +2 -2
  237. package/dist/client/router-ref.d.ts.map +1 -1
  238. package/dist/client/router-skew.d.ts +21 -0
  239. package/dist/client/router-skew.d.ts.map +1 -0
  240. package/dist/client/router-types.d.ts +207 -0
  241. package/dist/client/router-types.d.ts.map +1 -0
  242. package/dist/client/router.d.ts +1 -97
  243. package/dist/client/router.d.ts.map +1 -1
  244. package/dist/client/rsc-fetch.d.ts +113 -26
  245. package/dist/client/rsc-fetch.d.ts.map +1 -1
  246. package/dist/client/segment-cache.d.ts +107 -25
  247. package/dist/client/segment-cache.d.ts.map +1 -1
  248. package/dist/client/segment-outlet.d.ts +57 -0
  249. package/dist/client/segment-outlet.d.ts.map +1 -0
  250. package/dist/client/segment-update-context.d.ts +21 -0
  251. package/dist/client/segment-update-context.d.ts.map +1 -0
  252. package/dist/client/shallow-url.d.ts +10 -0
  253. package/dist/client/shallow-url.d.ts.map +1 -0
  254. package/dist/client/slot-context.d.ts +31 -0
  255. package/dist/client/slot-context.d.ts.map +1 -0
  256. package/dist/client/slot-outlet.d.ts +16 -0
  257. package/dist/client/slot-outlet.d.ts.map +1 -0
  258. package/dist/client/slot-provider.d.ts +25 -0
  259. package/dist/client/slot-provider.d.ts.map +1 -0
  260. package/dist/client/ssr-data.d.ts +19 -4
  261. package/dist/client/ssr-data.d.ts.map +1 -1
  262. package/dist/client/stale-client.d.ts +69 -0
  263. package/dist/client/stale-client.d.ts.map +1 -0
  264. package/dist/client/state.d.ts +11 -2
  265. package/dist/client/state.d.ts.map +1 -1
  266. package/dist/client/top-loader.d.ts +7 -6
  267. package/dist/client/top-loader.d.ts.map +1 -1
  268. package/dist/client/unload-guard.d.ts +5 -0
  269. package/dist/client/unload-guard.d.ts.map +1 -1
  270. package/dist/client/use-cookie.d.ts +12 -0
  271. package/dist/client/use-cookie.d.ts.map +1 -1
  272. package/dist/client/use-link-status.d.ts +5 -5
  273. package/dist/client/use-link-status.d.ts.map +1 -1
  274. package/dist/client/use-pathname.d.ts.map +1 -1
  275. package/dist/client/use-pending-navigation.d.ts +23 -0
  276. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  277. package/dist/client/use-query-states.d.ts +10 -4
  278. package/dist/client/use-query-states.d.ts.map +1 -1
  279. package/dist/client/use-router.d.ts +2 -2
  280. package/dist/client/use-router.d.ts.map +1 -1
  281. package/dist/client/use-search-params.d.ts +12 -5
  282. package/dist/client/use-search-params.d.ts.map +1 -1
  283. package/dist/client/{use-params.d.ts → use-segment-params.d.ts} +26 -14
  284. package/dist/client/use-segment-params.d.ts.map +1 -0
  285. package/dist/codec.d.ts +69 -0
  286. package/dist/codec.d.ts.map +1 -0
  287. package/dist/codec.js +76 -0
  288. package/dist/codec.js.map +1 -0
  289. package/dist/config-types.d.ts +284 -0
  290. package/dist/config-types.d.ts.map +1 -0
  291. package/dist/config-validation.d.ts +51 -0
  292. package/dist/config-validation.d.ts.map +1 -0
  293. package/dist/content/index.d.ts +1 -10
  294. package/dist/content/index.d.ts.map +1 -1
  295. package/dist/content/index.js +0 -2
  296. package/dist/cookies/define-cookie.d.ts +58 -25
  297. package/dist/cookies/define-cookie.d.ts.map +1 -1
  298. package/dist/cookies/index.d.ts +2 -1
  299. package/dist/cookies/index.d.ts.map +1 -1
  300. package/dist/cookies/index.js +257 -36
  301. package/dist/cookies/index.js.map +1 -1
  302. package/dist/cookies/json-cookie.d.ts +64 -0
  303. package/dist/cookies/json-cookie.d.ts.map +1 -0
  304. package/dist/cookies/validation.d.ts +34 -0
  305. package/dist/cookies/validation.d.ts.map +1 -0
  306. package/dist/dev-tools/404-page.d.ts +50 -0
  307. package/dist/dev-tools/404-page.d.ts.map +1 -0
  308. package/dist/dev-tools/browser-logs.d.ts +40 -0
  309. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  310. package/dist/dev-tools/dev-page-shell.d.ts +78 -0
  311. package/dist/dev-tools/dev-page-shell.d.ts.map +1 -0
  312. package/dist/dev-tools/error-page.d.ts +32 -0
  313. package/dist/dev-tools/error-page.d.ts.map +1 -0
  314. package/dist/dev-tools/holding-server.d.ts +54 -0
  315. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  316. package/dist/dev-tools/hydration-overlay.d.ts +11 -0
  317. package/dist/dev-tools/hydration-overlay.d.ts.map +1 -0
  318. package/dist/dev-tools/index.d.ts +31 -0
  319. package/dist/dev-tools/index.d.ts.map +1 -0
  320. package/dist/dev-tools/instrumentation.d.ts +59 -0
  321. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  322. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  323. package/dist/dev-tools/logger.d.ts.map +1 -0
  324. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +17 -3
  325. package/dist/dev-tools/logs.d.ts.map +1 -0
  326. package/dist/dev-tools/overlay.d.ts +91 -0
  327. package/dist/dev-tools/overlay.d.ts.map +1 -0
  328. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  329. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  330. package/dist/dev-tools/terminal.d.ts +28 -0
  331. package/dist/dev-tools/terminal.d.ts.map +1 -0
  332. package/dist/fonts/ast-walk.d.ts +68 -0
  333. package/dist/fonts/ast-walk.d.ts.map +1 -0
  334. package/dist/fonts/ast.d.ts +110 -6
  335. package/dist/fonts/ast.d.ts.map +1 -1
  336. package/dist/fonts/bundle.d.ts +50 -0
  337. package/dist/fonts/bundle.d.ts.map +1 -0
  338. package/dist/fonts/dev-middleware.d.ts +22 -0
  339. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  340. package/dist/fonts/fallbacks.d.ts +0 -7
  341. package/dist/fonts/fallbacks.d.ts.map +1 -1
  342. package/dist/fonts/google.d.ts +4 -2
  343. package/dist/fonts/google.d.ts.map +1 -1
  344. package/dist/fonts/local.d.ts +4 -4
  345. package/dist/fonts/local.d.ts.map +1 -1
  346. package/dist/fonts/paths.d.ts +43 -0
  347. package/dist/fonts/paths.d.ts.map +1 -0
  348. package/dist/fonts/pipeline.d.ts +177 -0
  349. package/dist/fonts/pipeline.d.ts.map +1 -0
  350. package/dist/fonts/transform.d.ts +82 -0
  351. package/dist/fonts/transform.d.ts.map +1 -0
  352. package/dist/fonts/types.d.ts +47 -1
  353. package/dist/fonts/types.d.ts.map +1 -1
  354. package/dist/fonts/virtual-modules.d.ts +77 -0
  355. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  356. package/dist/index.d.ts +50 -181
  357. package/dist/index.d.ts.map +1 -1
  358. package/dist/index.js +9805 -14134
  359. package/dist/index.js.map +1 -1
  360. package/dist/params/codec-registry.d.ts +26 -0
  361. package/dist/params/codec-registry.d.ts.map +1 -0
  362. package/dist/params/define-schema.d.ts +81 -0
  363. package/dist/params/define-schema.d.ts.map +1 -0
  364. package/dist/params/index.d.ts +5 -0
  365. package/dist/params/index.d.ts.map +1 -0
  366. package/dist/params/index.js +34 -0
  367. package/dist/params/index.js.map +1 -0
  368. package/dist/params/resolve-schema.d.ts +34 -0
  369. package/dist/params/resolve-schema.d.ts.map +1 -0
  370. package/dist/plugin-context.d.ts +276 -0
  371. package/dist/plugin-context.d.ts.map +1 -0
  372. package/dist/plugins/adapter-build.d.ts +21 -1
  373. package/dist/plugins/adapter-build.d.ts.map +1 -1
  374. package/dist/plugins/build-manifest.d.ts +7 -3
  375. package/dist/plugins/build-manifest.d.ts.map +1 -1
  376. package/dist/plugins/build-report.d.ts +47 -10
  377. package/dist/plugins/build-report.d.ts.map +1 -1
  378. package/dist/plugins/cache.d.ts +64 -0
  379. package/dist/plugins/cache.d.ts.map +1 -0
  380. package/dist/plugins/callsite-ast.d.ts +117 -0
  381. package/dist/plugins/callsite-ast.d.ts.map +1 -0
  382. package/dist/plugins/callsite-jsx.d.ts +35 -0
  383. package/dist/plugins/callsite-jsx.d.ts.map +1 -0
  384. package/dist/plugins/chunks.d.ts +11 -4
  385. package/dist/plugins/chunks.d.ts.map +1 -1
  386. package/dist/plugins/client-chunks.d.ts +40 -0
  387. package/dist/plugins/client-chunks.d.ts.map +1 -0
  388. package/dist/plugins/cloudflare-wasm.d.ts +21 -0
  389. package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
  390. package/dist/plugins/content.d.ts +1 -1
  391. package/dist/plugins/content.d.ts.map +1 -1
  392. package/dist/plugins/dev-server.d.ts +17 -1
  393. package/dist/plugins/dev-server.d.ts.map +1 -1
  394. package/dist/plugins/entries.d.ts +28 -4
  395. package/dist/plugins/entries.d.ts.map +1 -1
  396. package/dist/plugins/fonts.d.ts +16 -73
  397. package/dist/plugins/fonts.d.ts.map +1 -1
  398. package/dist/plugins/mdx.d.ts +1 -1
  399. package/dist/plugins/mdx.d.ts.map +1 -1
  400. package/dist/plugins/prebuilt-capture.d.ts +60 -0
  401. package/dist/plugins/prebuilt-capture.d.ts.map +1 -0
  402. package/dist/plugins/prebuilt-options-analysis.d.ts +40 -0
  403. package/dist/plugins/prebuilt-options-analysis.d.ts.map +1 -0
  404. package/dist/plugins/prebuilt.d.ts +82 -0
  405. package/dist/plugins/prebuilt.d.ts.map +1 -0
  406. package/dist/plugins/prerender-sugar.d.ts +42 -0
  407. package/dist/plugins/prerender-sugar.d.ts.map +1 -0
  408. package/dist/plugins/request-dep/analysis.d.ts +106 -0
  409. package/dist/plugins/request-dep/analysis.d.ts.map +1 -0
  410. package/dist/plugins/request-dep/index.d.ts +75 -0
  411. package/dist/plugins/request-dep/index.d.ts.map +1 -0
  412. package/dist/plugins/request-dep/origin.d.ts +61 -0
  413. package/dist/plugins/request-dep/origin.d.ts.map +1 -0
  414. package/dist/plugins/routing.d.ts +1 -1
  415. package/dist/plugins/routing.d.ts.map +1 -1
  416. package/dist/plugins/server-bundle.d.ts.map +1 -1
  417. package/dist/plugins/shims.d.ts +29 -5
  418. package/dist/plugins/shims.d.ts.map +1 -1
  419. package/dist/plugins/static-build.d.ts +218 -21
  420. package/dist/plugins/static-build.d.ts.map +1 -1
  421. package/dist/routing/codegen-shared.d.ts +26 -0
  422. package/dist/routing/codegen-shared.d.ts.map +1 -0
  423. package/dist/routing/codegen-types.d.ts +61 -0
  424. package/dist/routing/codegen-types.d.ts.map +1 -0
  425. package/dist/routing/codegen-write.d.ts +51 -0
  426. package/dist/routing/codegen-write.d.ts.map +1 -0
  427. package/dist/routing/codegen.d.ts +7 -2
  428. package/dist/routing/codegen.d.ts.map +1 -1
  429. package/dist/routing/collision-probe.d.ts +104 -0
  430. package/dist/routing/collision-probe.d.ts.map +1 -0
  431. package/dist/routing/collision-spaces.d.ts +26 -0
  432. package/dist/routing/collision-spaces.d.ts.map +1 -0
  433. package/dist/routing/convention-lint.d.ts +55 -0
  434. package/dist/routing/convention-lint.d.ts.map +1 -0
  435. package/dist/routing/export-detect.d.ts +72 -0
  436. package/dist/routing/export-detect.d.ts.map +1 -0
  437. package/dist/routing/file-cache.d.ts +8 -0
  438. package/dist/routing/file-cache.d.ts.map +1 -0
  439. package/dist/routing/index.d.ts +7 -1
  440. package/dist/routing/index.d.ts.map +1 -1
  441. package/dist/routing/index.js +5 -2
  442. package/dist/routing/interception.d.ts +234 -10
  443. package/dist/routing/interception.d.ts.map +1 -1
  444. package/dist/routing/link-codegen.d.ts +105 -0
  445. package/dist/routing/link-codegen.d.ts.map +1 -0
  446. package/dist/routing/manifest-codegen.d.ts +26 -0
  447. package/dist/routing/manifest-codegen.d.ts.map +1 -0
  448. package/dist/routing/scanner.d.ts +1 -10
  449. package/dist/routing/scanner.d.ts.map +1 -1
  450. package/dist/routing/schema-validation.d.ts +35 -0
  451. package/dist/routing/schema-validation.d.ts.map +1 -0
  452. package/dist/routing/segment-classify.d.ts +114 -0
  453. package/dist/routing/segment-classify.d.ts.map +1 -0
  454. package/dist/routing/segment-codegen.d.ts +38 -0
  455. package/dist/routing/segment-codegen.d.ts.map +1 -0
  456. package/dist/routing/segment-keys.d.ts +117 -0
  457. package/dist/routing/segment-keys.d.ts.map +1 -0
  458. package/dist/routing/slot-placement.d.ts +48 -0
  459. package/dist/routing/slot-placement.d.ts.map +1 -0
  460. package/dist/routing/types.d.ts +74 -26
  461. package/dist/routing/types.d.ts.map +1 -1
  462. package/dist/routing/walkers.d.ts +57 -0
  463. package/dist/routing/walkers.d.ts.map +1 -0
  464. package/dist/rsc-runtime/rsc.d.ts +1 -1
  465. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  466. package/dist/rsc-runtime/ssr.d.ts +12 -0
  467. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  468. package/dist/schema-bridge.d.ts +145 -0
  469. package/dist/schema-bridge.d.ts.map +1 -0
  470. package/dist/search-params/define.d.ts +262 -0
  471. package/dist/search-params/define.d.ts.map +1 -0
  472. package/dist/search-params/index.d.ts +3 -7
  473. package/dist/search-params/index.d.ts.map +1 -1
  474. package/dist/search-params/index.js +179 -360
  475. package/dist/search-params/index.js.map +1 -1
  476. package/dist/search-params/parse-total.d.ts +81 -0
  477. package/dist/search-params/parse-total.d.ts.map +1 -0
  478. package/dist/search-params/serialize-equal.d.ts +9 -0
  479. package/dist/search-params/serialize-equal.d.ts.map +1 -0
  480. package/dist/search-params/wrappers.d.ts +76 -0
  481. package/dist/search-params/wrappers.d.ts.map +1 -0
  482. package/dist/server/access-gate.d.ts +26 -10
  483. package/dist/server/access-gate.d.ts.map +1 -1
  484. package/dist/server/action-client.d.ts +42 -7
  485. package/dist/server/action-client.d.ts.map +1 -1
  486. package/dist/server/action-encryption.d.ts +76 -0
  487. package/dist/server/action-encryption.d.ts.map +1 -0
  488. package/dist/server/action-handler.d.ts +35 -1
  489. package/dist/server/action-handler.d.ts.map +1 -1
  490. package/dist/server/actions.d.ts +12 -33
  491. package/dist/server/actions.d.ts.map +1 -1
  492. package/dist/server/als-registry.d.ts +110 -11
  493. package/dist/server/als-registry.d.ts.map +1 -1
  494. package/dist/server/asset-headers.d.ts +8 -18
  495. package/dist/server/asset-headers.d.ts.map +1 -1
  496. package/dist/server/body-limits.d.ts.map +1 -1
  497. package/dist/server/build-manifest.d.ts +25 -30
  498. package/dist/server/build-manifest.d.ts.map +1 -1
  499. package/dist/server/canonicalize.d.ts +10 -0
  500. package/dist/server/canonicalize.d.ts.map +1 -1
  501. package/dist/server/chain-url-parts.d.ts +81 -0
  502. package/dist/server/chain-url-parts.d.ts.map +1 -0
  503. package/dist/server/children-interception.d.ts +49 -0
  504. package/dist/server/children-interception.d.ts.map +1 -0
  505. package/dist/server/coalesce-tick.d.ts +40 -0
  506. package/dist/server/coalesce-tick.d.ts.map +1 -0
  507. package/dist/server/compress.d.ts.map +1 -1
  508. package/dist/server/cookie-context.d.ts +170 -0
  509. package/dist/server/cookie-context.d.ts.map +1 -0
  510. package/dist/server/cookie-parsing.d.ts +65 -0
  511. package/dist/server/cookie-parsing.d.ts.map +1 -0
  512. package/dist/server/csrf.d.ts +3 -2
  513. package/dist/server/csrf.d.ts.map +1 -1
  514. package/dist/server/default-logger.d.ts +22 -0
  515. package/dist/server/default-logger.d.ts.map +1 -0
  516. package/dist/server/default-status-page.d.ts +45 -0
  517. package/dist/server/default-status-page.d.ts.map +1 -0
  518. package/dist/server/deny-boundary.d.ts +247 -0
  519. package/dist/server/deny-boundary.d.ts.map +1 -0
  520. package/dist/server/deny-renderer.d.ts +16 -5
  521. package/dist/server/deny-renderer.d.ts.map +1 -1
  522. package/dist/server/dev-source-map.d.ts +22 -0
  523. package/dist/server/dev-source-map.d.ts.map +1 -0
  524. package/dist/server/early-hints-sender.d.ts.map +1 -1
  525. package/dist/server/early-hints.d.ts +13 -11
  526. package/dist/server/early-hints.d.ts.map +1 -1
  527. package/dist/server/error-boundary-wrapper.d.ts +86 -10
  528. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  529. package/dist/server/fallback-error.d.ts +12 -7
  530. package/dist/server/fallback-error.d.ts.map +1 -1
  531. package/dist/server/flight-injection-state.d.ts +66 -0
  532. package/dist/server/flight-injection-state.d.ts.map +1 -0
  533. package/dist/server/flight-scripts.d.ts +42 -0
  534. package/dist/server/flight-scripts.d.ts.map +1 -0
  535. package/dist/server/form-data.d.ts +41 -0
  536. package/dist/server/form-data.d.ts.map +1 -1
  537. package/dist/server/head-response.d.ts +35 -0
  538. package/dist/server/head-response.d.ts.map +1 -0
  539. package/dist/server/html-injector-core.d.ts +242 -0
  540. package/dist/server/html-injector-core.d.ts.map +1 -0
  541. package/dist/server/html-injectors.d.ts +82 -41
  542. package/dist/server/html-injectors.d.ts.map +1 -1
  543. package/dist/server/index.d.ts +10 -47
  544. package/dist/server/index.d.ts.map +1 -1
  545. package/dist/server/index.js +183 -2906
  546. package/dist/server/index.js.map +1 -1
  547. package/dist/server/internal.d.ts +51 -0
  548. package/dist/server/internal.d.ts.map +1 -0
  549. package/dist/server/internal.js +4154 -0
  550. package/dist/server/internal.js.map +1 -0
  551. package/dist/server/logger.d.ts +39 -7
  552. package/dist/server/logger.d.ts.map +1 -1
  553. package/dist/server/metadata-collector.d.ts +52 -0
  554. package/dist/server/metadata-collector.d.ts.map +1 -0
  555. package/dist/server/metadata-routes.d.ts +60 -11
  556. package/dist/server/metadata-routes.d.ts.map +1 -1
  557. package/dist/server/metadata.d.ts +8 -0
  558. package/dist/server/metadata.d.ts.map +1 -1
  559. package/dist/server/middleware-runner.d.ts +19 -4
  560. package/dist/server/middleware-runner.d.ts.map +1 -1
  561. package/dist/server/node-stream-transforms.d.ts +119 -0
  562. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  563. package/dist/server/param-coercion.d.ts +70 -0
  564. package/dist/server/param-coercion.d.ts.map +1 -0
  565. package/dist/server/pipeline-helpers.d.ts +77 -0
  566. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  567. package/dist/server/pipeline-interception.d.ts +59 -9
  568. package/dist/server/pipeline-interception.d.ts.map +1 -1
  569. package/dist/server/pipeline-metadata.d.ts +6 -0
  570. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  571. package/dist/server/pipeline-outcome.d.ts +49 -0
  572. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  573. package/dist/server/pipeline-phases.d.ts +59 -0
  574. package/dist/server/pipeline-phases.d.ts.map +1 -0
  575. package/dist/server/pipeline.d.ts +151 -19
  576. package/dist/server/pipeline.d.ts.map +1 -1
  577. package/dist/server/port-resolution.d.ts +117 -0
  578. package/dist/server/port-resolution.d.ts.map +1 -0
  579. package/dist/server/prebuilt/cache-key.d.ts +62 -0
  580. package/dist/server/prebuilt/cache-key.d.ts.map +1 -0
  581. package/dist/server/prebuilt/capture-state.d.ts +57 -0
  582. package/dist/server/prebuilt/capture-state.d.ts.map +1 -0
  583. package/dist/server/prebuilt/key-discipline.d.ts +23 -0
  584. package/dist/server/prebuilt/key-discipline.d.ts.map +1 -0
  585. package/dist/server/prebuilt/manifest-tag-index.d.ts +27 -0
  586. package/dist/server/prebuilt/manifest-tag-index.d.ts.map +1 -0
  587. package/dist/server/prebuilt/overlay.d.ts +100 -0
  588. package/dist/server/prebuilt/overlay.d.ts.map +1 -0
  589. package/dist/server/prebuilt/payload-source.d.ts +78 -0
  590. package/dist/server/prebuilt/payload-source.d.ts.map +1 -0
  591. package/dist/server/prebuilt/slots.d.ts +99 -0
  592. package/dist/server/prebuilt/slots.d.ts.map +1 -0
  593. package/dist/server/prebuilt/synthetic-store.d.ts +66 -0
  594. package/dist/server/prebuilt/synthetic-store.d.ts.map +1 -0
  595. package/dist/server/prebuilt-builder.d.ts +120 -0
  596. package/dist/server/prebuilt-builder.d.ts.map +1 -0
  597. package/dist/server/prebuilt-runtime.d.ts +111 -0
  598. package/dist/server/prebuilt-runtime.d.ts.map +1 -0
  599. package/dist/server/primitives.d.ts +100 -44
  600. package/dist/server/primitives.d.ts.map +1 -1
  601. package/dist/server/publish-params.d.ts +33 -0
  602. package/dist/server/publish-params.d.ts.map +1 -0
  603. package/dist/server/render-timeout.d.ts +51 -0
  604. package/dist/server/render-timeout.d.ts.map +1 -0
  605. package/dist/server/render-utils.d.ts +25 -0
  606. package/dist/server/render-utils.d.ts.map +1 -0
  607. package/dist/server/request-context.d.ts +109 -106
  608. package/dist/server/request-context.d.ts.map +1 -1
  609. package/dist/server/request-dep.d.ts +15 -0
  610. package/dist/server/request-dep.d.ts.map +1 -0
  611. package/dist/server/route-element-builder.d.ts +74 -27
  612. package/dist/server/route-element-builder.d.ts.map +1 -1
  613. package/dist/server/route-handler.d.ts.map +1 -1
  614. package/dist/server/route-matcher.d.ts +38 -36
  615. package/dist/server/route-matcher.d.ts.map +1 -1
  616. package/dist/server/rsc-cache-key-guard.d.ts +78 -0
  617. package/dist/server/rsc-cache-key-guard.d.ts.map +1 -0
  618. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  619. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  620. package/dist/server/rsc-entry/api-handler.d.ts +12 -3
  621. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  622. package/dist/server/rsc-entry/deny-fallback.d.ts +29 -0
  623. package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -0
  624. package/dist/server/rsc-entry/error-renderer.d.ts +38 -13
  625. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  626. package/dist/server/rsc-entry/helpers.d.ts +59 -42
  627. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  628. package/dist/server/rsc-entry/index.d.ts +39 -6
  629. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  630. package/dist/server/rsc-entry/render-route.d.ts +51 -0
  631. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  632. package/dist/server/rsc-entry/revalidate-renderer.d.ts +108 -0
  633. package/dist/server/rsc-entry/revalidate-renderer.d.ts.map +1 -0
  634. package/dist/server/rsc-entry/rsc-payload.d.ts +5 -6
  635. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  636. package/dist/server/rsc-entry/rsc-stream.d.ts +40 -3
  637. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  638. package/dist/server/rsc-entry/ssr-bridge.d.ts +5 -1
  639. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  640. package/dist/server/rsc-entry/ssr-renderer.d.ts +36 -4
  641. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  642. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +89 -0
  643. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  644. package/dist/server/safe-load.d.ts +46 -0
  645. package/dist/server/safe-load.d.ts.map +1 -0
  646. package/dist/server/sensitive-fields.d.ts +74 -0
  647. package/dist/server/sensitive-fields.d.ts.map +1 -0
  648. package/dist/server/sitemap-generator.d.ts +129 -0
  649. package/dist/server/sitemap-generator.d.ts.map +1 -0
  650. package/dist/server/sitemap-handler.d.ts +22 -0
  651. package/dist/server/sitemap-handler.d.ts.map +1 -0
  652. package/dist/server/skippable-prefix.d.ts +26 -0
  653. package/dist/server/skippable-prefix.d.ts.map +1 -0
  654. package/dist/server/slot-interception.d.ts +80 -0
  655. package/dist/server/slot-interception.d.ts.map +1 -0
  656. package/dist/server/slot-resolver.d.ts +139 -5
  657. package/dist/server/slot-resolver.d.ts.map +1 -1
  658. package/dist/server/ssr-bridge-types.d.ts +138 -0
  659. package/dist/server/ssr-bridge-types.d.ts.map +1 -0
  660. package/dist/server/ssr-entry.d.ts +1 -43
  661. package/dist/server/ssr-entry.d.ts.map +1 -1
  662. package/dist/server/ssr-render.d.ts +64 -21
  663. package/dist/server/ssr-render.d.ts.map +1 -1
  664. package/dist/server/ssr-wrappers.d.ts +61 -0
  665. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  666. package/dist/server/state-tree-diff.d.ts +44 -9
  667. package/dist/server/state-tree-diff.d.ts.map +1 -1
  668. package/dist/server/static-generator.d.ts +112 -0
  669. package/dist/server/static-generator.d.ts.map +1 -0
  670. package/dist/server/static-not-found.d.ts +52 -0
  671. package/dist/server/static-not-found.d.ts.map +1 -0
  672. package/dist/server/status-code-resolver.d.ts +26 -15
  673. package/dist/server/status-code-resolver.d.ts.map +1 -1
  674. package/dist/server/stream-utils.d.ts +47 -0
  675. package/dist/server/stream-utils.d.ts.map +1 -0
  676. package/dist/server/tracing.d.ts +44 -9
  677. package/dist/server/tracing.d.ts.map +1 -1
  678. package/dist/server/tree-builder.d.ts +66 -42
  679. package/dist/server/tree-builder.d.ts.map +1 -1
  680. package/dist/server/tree-match.d.ts +49 -0
  681. package/dist/server/tree-match.d.ts.map +1 -0
  682. package/dist/server/types.d.ts +76 -6
  683. package/dist/server/types.d.ts.map +1 -1
  684. package/dist/server/utils/element-type.d.ts +40 -0
  685. package/dist/server/utils/element-type.d.ts.map +1 -0
  686. package/dist/server/utils/escape-html.d.ts +14 -0
  687. package/dist/server/utils/escape-html.d.ts.map +1 -0
  688. package/dist/server/utils/mdx-file.d.ts +15 -0
  689. package/dist/server/utils/mdx-file.d.ts.map +1 -0
  690. package/dist/server/version-skew.d.ts +61 -0
  691. package/dist/server/version-skew.d.ts.map +1 -0
  692. package/dist/server/workers-cache-bridge.d.ts +26 -0
  693. package/dist/server/workers-cache-bridge.d.ts.map +1 -0
  694. package/dist/shared/als-slots.d.ts +41 -0
  695. package/dist/shared/als-slots.d.ts.map +1 -0
  696. package/dist/shared/base-path.d.ts +56 -0
  697. package/dist/shared/base-path.d.ts.map +1 -0
  698. package/dist/shared/href-validation.d.ts +49 -0
  699. package/dist/shared/href-validation.d.ts.map +1 -0
  700. package/dist/shared/merge-search-params.d.ts +22 -0
  701. package/dist/shared/merge-search-params.d.ts.map +1 -0
  702. package/dist/shared/param-value.d.ts +80 -0
  703. package/dist/shared/param-value.d.ts.map +1 -0
  704. package/dist/shared/payload-root.d.ts +108 -0
  705. package/dist/shared/payload-root.d.ts.map +1 -0
  706. package/dist/shared/redirect-type.d.ts +17 -0
  707. package/dist/shared/redirect-type.d.ts.map +1 -0
  708. package/dist/shared/rsc-cache-key.d.ts +163 -0
  709. package/dist/shared/rsc-cache-key.d.ts.map +1 -0
  710. package/dist/shared/rsc-error-envelope.d.ts +25 -0
  711. package/dist/shared/rsc-error-envelope.d.ts.map +1 -0
  712. package/dist/shared/rsc-manifest.d.ts +28 -0
  713. package/dist/shared/rsc-manifest.d.ts.map +1 -0
  714. package/dist/shared/rsc-media-type.d.ts +40 -0
  715. package/dist/shared/rsc-media-type.d.ts.map +1 -0
  716. package/dist/shared/rsc-payload-path.d.ts +42 -0
  717. package/dist/shared/rsc-payload-path.d.ts.map +1 -0
  718. package/dist/shared/segment-info.d.ts +66 -0
  719. package/dist/shared/segment-info.d.ts.map +1 -0
  720. package/dist/shared/slot-params.d.ts +51 -0
  721. package/dist/shared/slot-params.d.ts.map +1 -0
  722. package/dist/shared/static-platform-files.d.ts +71 -0
  723. package/dist/shared/static-platform-files.d.ts.map +1 -0
  724. package/dist/shims/font-google.d.ts +1 -1
  725. package/dist/shims/font-google.d.ts.map +1 -1
  726. package/dist/shims/font-google.js +42 -0
  727. package/dist/shims/font-google.js.map +1 -0
  728. package/dist/shims/font-local.d.ts +26 -0
  729. package/dist/shims/font-local.d.ts.map +1 -0
  730. package/dist/shims/font-local.js +20 -0
  731. package/dist/shims/font-local.js.map +1 -0
  732. package/dist/shims/headers.d.ts +53 -1
  733. package/dist/shims/headers.d.ts.map +1 -1
  734. package/dist/shims/image.d.ts +120 -120
  735. package/dist/shims/image.d.ts.map +1 -1
  736. package/dist/shims/navigation-client.d.ts +25 -12
  737. package/dist/shims/navigation-client.d.ts.map +1 -1
  738. package/dist/shims/navigation.d.ts +10 -5
  739. package/dist/shims/navigation.d.ts.map +1 -1
  740. package/dist/utils/state-machine.d.ts +80 -0
  741. package/dist/utils/state-machine.d.ts.map +1 -0
  742. package/docs/api/30-api-server.mdx +233 -0
  743. package/docs/api/31-api-client.mdx +163 -0
  744. package/docs/api/32-api-cache.mdx +311 -0
  745. package/docs/api/33-api-search-params.mdx +176 -0
  746. package/docs/api/34-api-config.mdx +325 -0
  747. package/docs/api/35-api-typescript.mdx +170 -0
  748. package/docs/api/36-cli.mdx +170 -0
  749. package/docs/learn/00-introduction.mdx +109 -0
  750. package/docs/learn/01-quick-start.mdx +94 -0
  751. package/docs/learn/02-pages-and-layouts.mdx +147 -0
  752. package/docs/learn/03-fetching-data.mdx +211 -0
  753. package/docs/learn/03b-access-control.mdx +130 -0
  754. package/docs/learn/04-loading-states.mdx +67 -0
  755. package/docs/learn/04b-the-flush-point.mdx +115 -0
  756. package/docs/learn/05-typed-params.mdx +275 -0
  757. package/docs/learn/06-forms-and-actions.mdx +146 -0
  758. package/docs/learn/07-typed-routes.mdx +132 -0
  759. package/docs/learn/08-streaming.mdx +146 -0
  760. package/docs/learn/09-caching.mdx +252 -0
  761. package/docs/learn/10-middleware.mdx +157 -0
  762. package/docs/learn/11-error-handling.mdx +173 -0
  763. package/docs/learn/12-client-navigation.mdx +176 -0
  764. package/docs/learn/13-configuration.mdx +166 -0
  765. package/docs/learn/14-deploying.mdx +287 -0
  766. package/docs/more/01-advanced-routing.mdx +343 -0
  767. package/docs/more/02-advanced-forms.mdx +137 -0
  768. package/docs/more/03-coming-from-nextjs.mdx +186 -0
  769. package/docs/more/04-metadata-and-fonts.mdx +193 -0
  770. package/docs/more/04b-mdx.mdx +209 -0
  771. package/docs/more/05-content-collections.mdx +90 -0
  772. package/docs/more/06-instrumentation.mdx +214 -0
  773. package/docs/more/07-security.mdx +129 -0
  774. package/docs/more/08-developer-experience.mdx +134 -0
  775. package/docs/more/40-why-timber.mdx +50 -0
  776. package/docs/more/41-timber-vs-nextjs.mdx +81 -0
  777. package/docs/more/42-timber-vs-others.mdx +68 -0
  778. package/docs/more/50-ai-agent-instructions.mdx +171 -0
  779. package/llms.txt +55 -0
  780. package/package.json +108 -26
  781. package/src/adapters/build-output-helper.ts +351 -0
  782. package/src/adapters/cloudflare-dev.ts +177 -0
  783. package/src/adapters/cloudflare-kv-cache.ts +204 -0
  784. package/src/adapters/cloudflare.ts +740 -129
  785. package/src/adapters/compress-module.ts +101 -88
  786. package/src/adapters/fs-identity.ts +156 -0
  787. package/src/adapters/nitro.ts +320 -120
  788. package/src/adapters/raw-imports.d.ts +5 -0
  789. package/src/adapters/shared.ts +274 -0
  790. package/src/adapters/types.ts +28 -7
  791. package/src/adapters/wrangler.d.ts +7 -0
  792. package/src/cache/cache-api.ts +107 -0
  793. package/src/cache/fast-hash.ts +5 -0
  794. package/src/cache/handler-store.ts +76 -0
  795. package/src/cache/index.ts +114 -21
  796. package/src/cache/invalidation-epoch.ts +93 -0
  797. package/src/cache/json-lossy-check.ts +75 -0
  798. package/src/cache/redis-handler.ts +197 -19
  799. package/src/cache/singleflight.ts +64 -6
  800. package/src/cache/sizeof.ts +33 -0
  801. package/src/cache/stable-stringify.ts +65 -2
  802. package/src/cache/store.ts +71 -0
  803. package/src/cache/stores/cloudflare-kv.ts +52 -0
  804. package/src/cache/stores/memory.ts +125 -0
  805. package/src/cache/stores/redis.ts +97 -0
  806. package/src/cache/stores/vercel.ts +59 -0
  807. package/src/cache/tag-aware-handler.ts +237 -0
  808. package/src/cache/timber-cache.ts +161 -36
  809. package/src/cdn/cloudflare-purge.ts +50 -0
  810. package/src/cdn/fastly-purge.ts +63 -0
  811. package/src/cdn/headers.ts +153 -0
  812. package/src/cdn/index.ts +17 -0
  813. package/src/cdn/purge-store.ts +34 -0
  814. package/src/cdn/workers-cache-purge.ts +30 -0
  815. package/src/cli-check.ts +458 -0
  816. package/src/cli-schema-sync.ts +401 -0
  817. package/src/cli.ts +221 -53
  818. package/src/client/browser-dev.ts +156 -1
  819. package/src/client/browser-entry/action-dispatch.ts +130 -0
  820. package/src/client/browser-entry/hmr.ts +70 -0
  821. package/src/client/browser-entry/hydrate.ts +198 -0
  822. package/src/client/browser-entry/index.ts +121 -0
  823. package/src/client/browser-entry/post-hydration.ts +122 -0
  824. package/src/client/browser-entry/router-init.ts +342 -0
  825. package/src/client/browser-entry/rsc-stream.ts +166 -0
  826. package/src/client/browser-entry/scroll.ts +50 -0
  827. package/src/client/error-boundary.tsx +210 -36
  828. package/src/client/error-reconstituter.tsx +79 -0
  829. package/src/client/form.tsx +31 -32
  830. package/src/client/history.ts +29 -7
  831. package/src/client/index.ts +78 -45
  832. package/src/client/internal.ts +59 -0
  833. package/src/client/link.tsx +397 -150
  834. package/src/client/navigation-api.ts +345 -0
  835. package/src/client/navigation-commit.ts +197 -0
  836. package/src/client/navigation-context.ts +43 -62
  837. package/src/client/navigation-root.tsx +580 -0
  838. package/src/client/nuqs-adapter.tsx +16 -3
  839. package/src/client/params-context.ts +192 -0
  840. package/src/client/router-effects.ts +231 -0
  841. package/src/client/router-lifecycle.ts +288 -0
  842. package/src/client/router-pipeline.ts +393 -0
  843. package/src/client/router-ref.ts +2 -2
  844. package/src/client/router-skew.ts +30 -0
  845. package/src/client/router-types.ts +230 -0
  846. package/src/client/router.ts +339 -410
  847. package/src/client/rsc-fetch.ts +530 -73
  848. package/src/client/segment-cache.ts +224 -38
  849. package/src/client/segment-outlet.tsx +141 -0
  850. package/src/client/segment-update-context.ts +42 -0
  851. package/src/client/shallow-url.ts +22 -0
  852. package/src/client/slot-context.ts +50 -0
  853. package/src/client/slot-outlet.tsx +22 -0
  854. package/src/client/slot-provider.tsx +32 -0
  855. package/src/client/ssr-data.ts +19 -5
  856. package/src/client/stale-client.ts +191 -0
  857. package/src/client/state.ts +16 -3
  858. package/src/client/top-loader.tsx +13 -10
  859. package/src/client/unload-guard.ts +34 -2
  860. package/src/client/use-cookie.ts +69 -17
  861. package/src/client/use-link-status.ts +7 -7
  862. package/src/client/use-pathname.ts +1 -0
  863. package/src/client/use-pending-navigation.ts +40 -0
  864. package/src/client/use-query-states.ts +206 -36
  865. package/src/client/use-router.ts +5 -2
  866. package/src/client/use-search-params.ts +31 -44
  867. package/src/client/{use-params.ts → use-segment-params.ts} +49 -23
  868. package/src/codec.ts +149 -0
  869. package/src/config-types.ts +282 -0
  870. package/src/config-validation.ts +330 -0
  871. package/src/content/index.ts +5 -13
  872. package/src/cookies/define-cookie.ts +222 -53
  873. package/src/cookies/index.ts +12 -1
  874. package/src/cookies/json-cookie.ts +105 -0
  875. package/src/cookies/validation.ts +192 -0
  876. package/src/dev-tools/404-page.ts +286 -0
  877. package/src/dev-tools/browser-logs.ts +55 -0
  878. package/src/dev-tools/dev-page-shell.ts +260 -0
  879. package/src/dev-tools/error-page.ts +331 -0
  880. package/src/dev-tools/holding-server.ts +187 -0
  881. package/src/dev-tools/hydration-overlay.ts +158 -0
  882. package/src/dev-tools/index.ts +83 -0
  883. package/src/dev-tools/instrumentation.ts +213 -0
  884. package/src/{server/dev-logger.ts → dev-tools/logger.ts} +33 -51
  885. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +122 -26
  886. package/src/dev-tools/overlay.ts +469 -0
  887. package/src/dev-tools/stack-classifier.ts +75 -0
  888. package/src/dev-tools/terminal.ts +182 -0
  889. package/src/fonts/ast-walk.ts +235 -0
  890. package/src/fonts/ast.ts +477 -126
  891. package/src/fonts/bundle.ts +138 -0
  892. package/src/fonts/dev-middleware.ts +85 -0
  893. package/src/fonts/fallbacks.ts +0 -23
  894. package/src/fonts/google.ts +100 -18
  895. package/src/fonts/local.ts +9 -8
  896. package/src/fonts/paths.ts +58 -0
  897. package/src/fonts/pipeline.ts +348 -0
  898. package/src/fonts/transform.ts +311 -0
  899. package/src/fonts/types.ts +52 -1
  900. package/src/fonts/virtual-modules.ts +179 -0
  901. package/src/index.ts +468 -353
  902. package/src/params/codec-registry.ts +34 -0
  903. package/src/params/define-schema.ts +115 -0
  904. package/src/params/index.ts +17 -0
  905. package/src/params/resolve-schema.ts +84 -0
  906. package/src/plugin-context.ts +503 -0
  907. package/src/plugins/adapter-build.ts +229 -7
  908. package/src/plugins/build-manifest.ts +201 -26
  909. package/src/plugins/build-report.ts +259 -47
  910. package/src/plugins/cache.ts +243 -0
  911. package/src/plugins/callsite-ast.ts +472 -0
  912. package/src/plugins/callsite-jsx.ts +243 -0
  913. package/src/plugins/chunks.ts +74 -5
  914. package/src/plugins/client-chunks.ts +185 -0
  915. package/src/plugins/cloudflare-wasm.ts +141 -0
  916. package/src/plugins/content.ts +1 -1
  917. package/src/plugins/dev-server.ts +284 -94
  918. package/src/plugins/entries.ts +138 -16
  919. package/src/plugins/fonts.ts +228 -660
  920. package/src/plugins/mdx.ts +47 -10
  921. package/src/plugins/prebuilt-capture.ts +217 -0
  922. package/src/plugins/prebuilt-options-analysis.ts +175 -0
  923. package/src/plugins/prebuilt.ts +655 -0
  924. package/src/plugins/prerender-sugar.ts +328 -0
  925. package/src/plugins/request-dep/analysis.ts +447 -0
  926. package/src/plugins/request-dep/index.ts +376 -0
  927. package/src/plugins/request-dep/origin.ts +310 -0
  928. package/src/plugins/routing.ts +268 -277
  929. package/src/plugins/server-bundle.ts +89 -12
  930. package/src/plugins/shims.ts +240 -64
  931. package/src/plugins/static-build.ts +704 -66
  932. package/src/routing/codegen-shared.ts +39 -0
  933. package/src/routing/codegen-types.ts +62 -0
  934. package/src/routing/codegen-write.ts +139 -0
  935. package/src/routing/codegen.ts +339 -231
  936. package/src/routing/collision-probe.ts +438 -0
  937. package/src/routing/collision-spaces.ts +281 -0
  938. package/src/routing/convention-lint.ts +493 -0
  939. package/src/routing/export-detect.ts +448 -0
  940. package/src/routing/file-cache.ts +23 -0
  941. package/src/routing/index.ts +10 -1
  942. package/src/routing/interception.ts +894 -67
  943. package/src/routing/link-codegen.ts +280 -0
  944. package/src/routing/manifest-codegen.ts +226 -0
  945. package/src/routing/scanner.ts +368 -218
  946. package/src/routing/schema-validation.ts +155 -0
  947. package/src/routing/segment-classify.ts +280 -0
  948. package/src/routing/segment-codegen.ts +98 -0
  949. package/src/routing/segment-keys.ts +183 -0
  950. package/src/routing/slot-placement.ts +97 -0
  951. package/src/routing/types.ts +75 -26
  952. package/src/routing/walkers.ts +98 -0
  953. package/src/rsc-runtime/rsc.ts +9 -0
  954. package/src/rsc-runtime/ssr.ts +50 -0
  955. package/src/rsc-runtime/vendor-types.d.ts +7 -0
  956. package/src/schema-bridge.ts +380 -0
  957. package/src/search-params/define.ts +677 -0
  958. package/src/search-params/index.ts +14 -20
  959. package/src/search-params/parse-total.ts +91 -0
  960. package/src/search-params/serialize-equal.ts +14 -0
  961. package/src/search-params/wrappers.ts +150 -0
  962. package/src/server/access-gate.tsx +121 -51
  963. package/src/server/action-client.ts +120 -29
  964. package/src/server/action-encryption.ts +144 -0
  965. package/src/server/action-handler.ts +127 -38
  966. package/src/server/actions.ts +54 -57
  967. package/src/server/als-registry.ts +154 -20
  968. package/src/server/asset-headers.ts +15 -37
  969. package/src/server/body-limits.ts +10 -2
  970. package/src/server/build-manifest.ts +33 -57
  971. package/src/server/canonicalize.ts +6 -3
  972. package/src/server/chain-url-parts.ts +162 -0
  973. package/src/server/children-interception.ts +115 -0
  974. package/src/server/coalesce-tick.ts +75 -0
  975. package/src/server/compress.ts +43 -8
  976. package/src/server/cookie-context.ts +484 -0
  977. package/src/server/cookie-parsing.ts +163 -0
  978. package/src/server/csrf.ts +39 -6
  979. package/src/server/default-logger.ts +99 -0
  980. package/src/server/default-status-page.ts +127 -0
  981. package/src/server/deny-boundary.ts +516 -0
  982. package/src/server/deny-renderer.ts +181 -101
  983. package/src/server/dev-source-map.ts +31 -0
  984. package/src/server/early-hints-sender.ts +3 -2
  985. package/src/server/early-hints.ts +37 -27
  986. package/src/server/error-boundary-wrapper.ts +170 -44
  987. package/src/server/fallback-error.ts +79 -102
  988. package/src/server/flight-injection-state.ts +113 -0
  989. package/src/server/flight-scripts.ts +62 -0
  990. package/src/server/form-data.ts +124 -12
  991. package/src/server/head-response.ts +54 -0
  992. package/src/server/html-injector-core.ts +495 -0
  993. package/src/server/html-injectors.ts +271 -254
  994. package/src/server/index.ts +29 -185
  995. package/src/server/internal.ts +181 -0
  996. package/src/server/logger.ts +72 -36
  997. package/src/server/metadata-collector.ts +115 -0
  998. package/src/server/metadata-routes.ts +205 -24
  999. package/src/server/metadata.ts +21 -0
  1000. package/src/server/middleware-runner.ts +31 -4
  1001. package/src/server/node-stream-transforms.ts +336 -0
  1002. package/src/server/param-coercion.ts +189 -0
  1003. package/src/server/pipeline-helpers.ts +159 -0
  1004. package/src/server/pipeline-interception.ts +109 -33
  1005. package/src/server/pipeline-metadata.ts +14 -0
  1006. package/src/server/pipeline-outcome.ts +196 -0
  1007. package/src/server/pipeline-phases.ts +597 -0
  1008. package/src/server/pipeline.ts +321 -382
  1009. package/src/server/port-resolution.ts +215 -0
  1010. package/src/server/prebuilt/cache-key.ts +298 -0
  1011. package/src/server/prebuilt/capture-state.ts +89 -0
  1012. package/src/server/prebuilt/key-discipline.ts +53 -0
  1013. package/src/server/prebuilt/manifest-tag-index.ts +46 -0
  1014. package/src/server/prebuilt/overlay.ts +256 -0
  1015. package/src/server/prebuilt/payload-source.ts +201 -0
  1016. package/src/server/prebuilt/slots.ts +190 -0
  1017. package/src/server/prebuilt/synthetic-store.ts +121 -0
  1018. package/src/server/prebuilt-builder.ts +803 -0
  1019. package/src/server/prebuilt-runtime.ts +815 -0
  1020. package/src/server/primitives.ts +174 -90
  1021. package/src/server/publish-params.ts +42 -0
  1022. package/src/server/render-timeout.ts +108 -0
  1023. package/src/server/render-utils.ts +31 -0
  1024. package/src/server/request-context.ts +245 -333
  1025. package/src/server/request-dep.ts +37 -0
  1026. package/src/server/route-element-builder.ts +687 -307
  1027. package/src/server/route-handler.ts +39 -12
  1028. package/src/server/route-matcher.ts +162 -269
  1029. package/src/server/rsc-cache-key-guard.ts +164 -0
  1030. package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
  1031. package/src/server/rsc-entry/api-handler.ts +67 -32
  1032. package/src/server/rsc-entry/deny-fallback.ts +93 -0
  1033. package/src/server/rsc-entry/error-renderer.ts +370 -94
  1034. package/src/server/rsc-entry/helpers.ts +226 -95
  1035. package/src/server/rsc-entry/index.ts +357 -330
  1036. package/src/server/rsc-entry/render-route.ts +308 -0
  1037. package/src/server/rsc-entry/revalidate-renderer.ts +350 -0
  1038. package/src/server/rsc-entry/rsc-payload.ts +188 -55
  1039. package/src/server/rsc-entry/rsc-stream.ts +122 -18
  1040. package/src/server/rsc-entry/ssr-bridge.ts +18 -5
  1041. package/src/server/rsc-entry/ssr-renderer.ts +299 -80
  1042. package/src/server/rsc-entry/wrap-action-dispatch.ts +186 -0
  1043. package/src/server/safe-load.ts +60 -0
  1044. package/src/server/sensitive-fields.ts +230 -0
  1045. package/src/server/server-only-guard-noop.js +3 -0
  1046. package/src/server/sitemap-generator.ts +339 -0
  1047. package/src/server/sitemap-handler.ts +157 -0
  1048. package/src/server/skippable-prefix.ts +74 -0
  1049. package/src/server/slot-interception.ts +168 -0
  1050. package/src/server/slot-resolver.ts +677 -294
  1051. package/src/server/ssr-bridge-types.ts +142 -0
  1052. package/src/server/ssr-entry.ts +216 -78
  1053. package/src/server/ssr-render.ts +345 -82
  1054. package/src/server/ssr-wrappers.tsx +142 -0
  1055. package/src/server/state-tree-diff.ts +85 -30
  1056. package/src/server/static-generator.ts +715 -0
  1057. package/src/server/static-not-found.ts +134 -0
  1058. package/src/server/status-code-resolver.ts +107 -148
  1059. package/src/server/stream-utils.ts +288 -0
  1060. package/src/server/tracing.ts +126 -14
  1061. package/src/server/tree-builder.ts +99 -168
  1062. package/src/server/tree-match.ts +262 -0
  1063. package/src/server/types.ts +83 -9
  1064. package/src/server/utils/element-type.ts +72 -0
  1065. package/src/server/utils/escape-html.ts +20 -0
  1066. package/src/server/utils/mdx-file.ts +22 -0
  1067. package/src/server/version-skew.ts +104 -0
  1068. package/src/server/workers-cache-bridge.ts +33 -0
  1069. package/src/shared/als-slots.ts +72 -0
  1070. package/src/shared/base-path.ts +80 -0
  1071. package/src/shared/href-validation.ts +159 -0
  1072. package/src/shared/merge-search-params.ts +55 -0
  1073. package/src/shared/param-value.ts +244 -0
  1074. package/src/shared/payload-root.ts +151 -0
  1075. package/src/shared/redirect-type.ts +17 -0
  1076. package/src/shared/rsc-cache-key.ts +269 -0
  1077. package/src/shared/rsc-error-envelope.ts +31 -0
  1078. package/src/shared/rsc-manifest.ts +29 -0
  1079. package/src/shared/rsc-media-type.ts +43 -0
  1080. package/src/shared/rsc-payload-path.ts +45 -0
  1081. package/src/shared/segment-info.ts +67 -0
  1082. package/src/shared/slot-params.ts +111 -0
  1083. package/src/shared/static-platform-files.ts +75 -0
  1084. package/src/shims/font-google.ts +1 -1
  1085. package/src/shims/font-local.ts +34 -0
  1086. package/src/shims/headers.ts +122 -1
  1087. package/src/shims/navigation-client.ts +36 -32
  1088. package/src/shims/navigation.ts +10 -7
  1089. package/src/utils/state-machine.ts +111 -0
  1090. package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
  1091. package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
  1092. package/dist/_chunks/debug-B3Gypr3D.js +0 -108
  1093. package/dist/_chunks/debug-B3Gypr3D.js.map +0 -1
  1094. package/dist/_chunks/format-RyoGQL74.js +0 -164
  1095. package/dist/_chunks/format-RyoGQL74.js.map +0 -1
  1096. package/dist/_chunks/interception-BOoWmLUA.js +0 -676
  1097. package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
  1098. package/dist/_chunks/metadata-routes-Cjmvi3rQ.js +0 -153
  1099. package/dist/_chunks/metadata-routes-Cjmvi3rQ.js.map +0 -1
  1100. package/dist/_chunks/request-context-BQUC8PHn.js +0 -330
  1101. package/dist/_chunks/request-context-BQUC8PHn.js.map +0 -1
  1102. package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
  1103. package/dist/_chunks/tracing-CemImE6h.js +0 -187
  1104. package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
  1105. package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
  1106. package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
  1107. package/dist/_chunks/use-query-states-D5KaffOK.js +0 -109
  1108. package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
  1109. package/dist/adapters/cloudflare.js.map +0 -1
  1110. package/dist/cache/index.js.map +0 -1
  1111. package/dist/cache/register-cached-function.d.ts +0 -17
  1112. package/dist/cache/register-cached-function.d.ts.map +0 -1
  1113. package/dist/client/browser-entry.d.ts +0 -21
  1114. package/dist/client/browser-entry.d.ts.map +0 -1
  1115. package/dist/client/error-boundary.js.map +0 -1
  1116. package/dist/client/head.d.ts +0 -16
  1117. package/dist/client/head.d.ts.map +0 -1
  1118. package/dist/client/link-status-provider.d.ts +0 -11
  1119. package/dist/client/link-status-provider.d.ts.map +0 -1
  1120. package/dist/client/segment-merger.d.ts +0 -119
  1121. package/dist/client/segment-merger.d.ts.map +0 -1
  1122. package/dist/client/stale-reload.d.ts +0 -44
  1123. package/dist/client/stale-reload.d.ts.map +0 -1
  1124. package/dist/client/transition-root.d.ts +0 -74
  1125. package/dist/client/transition-root.d.ts.map +0 -1
  1126. package/dist/client/use-navigation-pending.d.ts +0 -26
  1127. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  1128. package/dist/client/use-params.d.ts.map +0 -1
  1129. package/dist/plugins/cache-transform.d.ts +0 -36
  1130. package/dist/plugins/cache-transform.d.ts.map +0 -1
  1131. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  1132. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  1133. package/dist/plugins/dev-logs.d.ts.map +0 -1
  1134. package/dist/plugins/dynamic-transform.d.ts +0 -72
  1135. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  1136. package/dist/plugins/server-action-exports.d.ts +0 -26
  1137. package/dist/plugins/server-action-exports.d.ts.map +0 -1
  1138. package/dist/routing/status-file-lint.d.ts +0 -33
  1139. package/dist/routing/status-file-lint.d.ts.map +0 -1
  1140. package/dist/search-params/analyze.d.ts +0 -54
  1141. package/dist/search-params/analyze.d.ts.map +0 -1
  1142. package/dist/search-params/builtin-codecs.d.ts +0 -105
  1143. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  1144. package/dist/search-params/codecs.d.ts +0 -53
  1145. package/dist/search-params/codecs.d.ts.map +0 -1
  1146. package/dist/search-params/create.d.ts +0 -106
  1147. package/dist/search-params/create.d.ts.map +0 -1
  1148. package/dist/search-params/registry.d.ts +0 -20
  1149. package/dist/search-params/registry.d.ts.map +0 -1
  1150. package/dist/server/client-module-map.d.ts +0 -47
  1151. package/dist/server/client-module-map.d.ts.map +0 -1
  1152. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  1153. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  1154. package/dist/server/dev-logger.d.ts.map +0 -1
  1155. package/dist/server/dev-span-processor.d.ts +0 -29
  1156. package/dist/server/dev-span-processor.d.ts.map +0 -1
  1157. package/dist/server/dev-warnings.d.ts +0 -129
  1158. package/dist/server/dev-warnings.d.ts.map +0 -1
  1159. package/dist/server/flush.d.ts +0 -74
  1160. package/dist/server/flush.d.ts.map +0 -1
  1161. package/dist/server/manifest-status-resolver.d.ts +0 -58
  1162. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  1163. package/dist/server/prerender.d.ts +0 -77
  1164. package/dist/server/prerender.d.ts.map +0 -1
  1165. package/dist/utils/directive-parser.d.ts +0 -70
  1166. package/dist/utils/directive-parser.d.ts.map +0 -1
  1167. package/src/cache/register-cached-function.ts +0 -103
  1168. package/src/client/browser-entry.ts +0 -678
  1169. package/src/client/head.ts +0 -61
  1170. package/src/client/link-status-provider.tsx +0 -30
  1171. package/src/client/segment-merger.ts +0 -339
  1172. package/src/client/stale-reload.ts +0 -87
  1173. package/src/client/transition-root.tsx +0 -166
  1174. package/src/client/use-navigation-pending.ts +0 -38
  1175. package/src/plugins/cache-transform.ts +0 -199
  1176. package/src/plugins/dev-error-overlay.ts +0 -230
  1177. package/src/plugins/dynamic-transform.ts +0 -161
  1178. package/src/plugins/server-action-exports.ts +0 -220
  1179. package/src/routing/status-file-lint.ts +0 -112
  1180. package/src/search-params/analyze.ts +0 -192
  1181. package/src/search-params/builtin-codecs.ts +0 -228
  1182. package/src/search-params/codecs.ts +0 -153
  1183. package/src/search-params/create.ts +0 -321
  1184. package/src/search-params/registry.ts +0 -31
  1185. package/src/server/client-module-map.ts +0 -58
  1186. package/src/server/dev-fetch-instrumentation.ts +0 -96
  1187. package/src/server/dev-span-processor.ts +0 -78
  1188. package/src/server/dev-warnings.ts +0 -283
  1189. package/src/server/flush.ts +0 -182
  1190. package/src/server/manifest-status-resolver.ts +0 -215
  1191. package/src/server/prerender.ts +0 -139
  1192. package/src/utils/directive-parser.ts +0 -529
@@ -0,0 +1,815 @@
1
+ /**
2
+ * Prebuilt component runtime — registration target for the timber-prebuilt
3
+ * transform (plugins/prebuilt.ts) and the request-time half of
4
+ * cache.component (TIM-1140).
5
+ *
6
+ * `cache.component(fn, opts)` call sites are rewritten at build time to
7
+ * `__prebuilt(stableId, fn, opts)` (production) or `__prebuiltDev(name, fn)`
8
+ * (dev). Both are exported via #server-internal — they are framework
9
+ * plumbing, never called by user code directly.
10
+ *
11
+ * Cache hits are served by FLIGHT REVIVAL: the cached `.flight` payload is
12
+ * decoded back into React elements inside the RSC environment with
13
+ * `createFromReadableStream` (the flight client running in the flight
14
+ * server — plugin-rsc wires the server-decode manifest so client
15
+ * references revive as re-serializable reference proxies). The revived
16
+ * element is returned from the wrapper and the outer render re-serializes
17
+ * it like any other subtree. This is the same mechanism as Next.js
18
+ * `"use cache"` (next/src/server/use-cache/use-cache-wrapper.ts).
19
+ *
20
+ * What a hit skips: all user work — data fetching, MDX compilation, the
21
+ * component function itself never runs. What it re-pays: React
22
+ * re-serializes the already-resolved tree (cost proportional to payload
23
+ * size, not to data latency). The alternative — splicing raw payload bytes
24
+ * into the outer stream — avoids re-serialization but requires byte-level
25
+ * coupling to the flight wire format (row framing, ID rebasing, marker
26
+ * detection); it was implemented and reviewed on PR #835 and deliberately
27
+ * replaced by revival. See design/44-render-at-build-time.md
28
+ * §Request-Time Injection.
29
+ *
30
+ * Misses render the original component live via the wrapper's own closure,
31
+ * inside the React pass — segment params from ALS, deny()/redirect()
32
+ * signals, Suspense, and error boundaries behave exactly as an unwrapped
33
+ * component. `fallbackOnMissingSegmentParams: false` throws instead.
34
+ */
35
+
36
+ import { createElement } from 'react';
37
+
38
+ import { requestContextAls, type RequestContextStore } from './als-registry.js';
39
+ import { computeComponentCacheKey, splitSlotProps, tryCanonicalize } from './prebuilt/cache-key.js';
40
+ import {
41
+ isChildrenSlotOutletElement,
42
+ resolveSlotNames,
43
+ prepareSlotRender,
44
+ wrapInSlotsProvider,
45
+ } from './prebuilt/slots.js';
46
+ import {
47
+ createKeyDisciplineProxy,
48
+ emitKeyDisciplineWarning,
49
+ keyDisciplineWarned,
50
+ } from './prebuilt/key-discipline.js';
51
+ import {
52
+ isCaptureActive,
53
+ noteWrapperRender,
54
+ beginCapture,
55
+ endCapture,
56
+ } from './prebuilt/capture-state.js';
57
+ import {
58
+ hasPrebuiltPayloadSource,
59
+ lookupPrebuiltPayload,
60
+ getManifestEntry,
61
+ isParamIndependent,
62
+ } from './prebuilt/payload-source.js';
63
+ import { lookupOverlay, storeOverlayEntry, overlayKey } from './prebuilt/overlay.js';
64
+ import { getWaitUntil } from './waituntil-bridge.js';
65
+ import { createSingleflight } from '../cache/singleflight.js';
66
+ import {
67
+ currentInvalidationEpoch,
68
+ wasInvalidatedSince,
69
+ lastInvalidationEpochFor,
70
+ } from '../cache/invalidation-epoch.js';
71
+
72
+ /** Default timeout for component re-renders (overridden by renderTimeoutMs). */
73
+ const DEFAULT_COMPONENT_TIMEOUT_MS = 30_000;
74
+
75
+ /** Singleflight for component re-renders (inline and background). */
76
+ let componentSingleflight = createSingleflight({ timeoutMs: DEFAULT_COMPONENT_TIMEOUT_MS });
77
+ let componentTimeoutMs = DEFAULT_COMPONENT_TIMEOUT_MS;
78
+
79
+ /**
80
+ * Set the timeout for component re-render captures. Called at boot from
81
+ * the RSC entry with renderTimeoutMs from timber.config.ts.
82
+ */
83
+ export function setComponentRefreshTimeout(timeoutMs: number): void {
84
+ componentTimeoutMs = timeoutMs;
85
+ componentSingleflight = createSingleflight({ timeoutMs });
86
+ }
87
+
88
+ let warnedNoWaitUntil = false;
89
+
90
+ /**
91
+ * Options captured from the `cache.component(fn, opts)` call site.
92
+ *
93
+ * `prerender`/`ttl`/`tags` (design/45) are carried through untouched — the
94
+ * build phase (TIM-1119) and runtime overlay (design/45 phase 3) consume
95
+ * them.
96
+ */
97
+ export interface PrebuiltComponentOptions {
98
+ /** Populate the cache at build time via generateStaticSegmentParams. */
99
+ prerender?: boolean;
100
+ /** Runtime freshness window, seconds (design/45 runtime tier). */
101
+ ttl?: number;
102
+ /** Runtime invalidation tags (design/45 runtime tier). */
103
+ tags?: string[] | ((props: Record<string, unknown>) => string[]);
104
+ /** Serve stale while a background re-render refreshes (design/45 §SWR). */
105
+ staleWhileRevalidate?: boolean;
106
+ /**
107
+ * Slot props (TIM-1173): prop names whose values are live React
108
+ * elements composed into the cached shell at request time instead of
109
+ * participating in the cache. Each declared slot renders as a stable
110
+ * SlotOutlet client reference at capture time; the live value flows in
111
+ * through SlotContext per instance. Slot props are excluded from the
112
+ * cache key — only the remaining data props (+ segment params) hash.
113
+ * Runtime tier only: `prerender` is ignored (with a warning) because
114
+ * the build cannot enumerate children variants.
115
+ */
116
+ slots?: string[];
117
+ /**
118
+ * On a cache miss, render the component live (default: true). When false,
119
+ * a miss throws instead — for sites that must never render unknown params
120
+ * dynamically. See design/44 §fallbackOnMissingSegmentParams.
121
+ */
122
+ fallbackOnMissingSegmentParams?: boolean;
123
+ }
124
+
125
+ /** An async server component: props in, renderable out. */
126
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
127
+ type ServerComponent = (props: any) => unknown;
128
+
129
+ /**
130
+ * View of a ServerComponent that satisfies createElement's overloads.
131
+ * Server components legitimately return `unknown` from the framework's
132
+ * perspective (promises, elements, strings, …) — React renders whatever
133
+ * comes back; the narrowing exists only to cross createElement's
134
+ * ReactNode-typed signature.
135
+ */
136
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
+ type RenderableComponent = (props: any) => React.ReactNode;
138
+
139
+ export interface PrebuiltRegistration {
140
+ id: string;
141
+ component: ServerComponent;
142
+ options: PrebuiltComponentOptions;
143
+ }
144
+
145
+ /**
146
+ * Server-side component registry, keyed by stable component ID. Populated at
147
+ * module load time by `__prebuilt` calls; consumed by the post-build capture
148
+ * pass (TIM-1119). Never serialized — component functions are not
149
+ * Flight-serializable.
150
+ */
151
+ const registry = new Map<string, PrebuiltRegistration>();
152
+
153
+ /**
154
+ * Resolve the params the cache key may faithfully hash, or null if this
155
+ * render is unkeyable.
156
+ *
157
+ * A wrapper rendered inside a parallel slot reads params merged with that
158
+ * slot's overrides (`getSegmentParams`: `{...segmentParams, ...slotParams}`)
159
+ * — but the cache key hashes only the route-level params, and the wrapper
160
+ * cannot know which slot it renders under. The route params are usable
161
+ * only when every slot's merged view canonicalizes identically to them;
162
+ * otherwise two renders with the same key could see different effective
163
+ * inputs and a hit could serve the WRONG cached subtree — so the render
164
+ * goes live: slower, never wrong. (Build-time capture doesn't model slot
165
+ * params either, so a divergent request could never have a faithful
166
+ * entry. Codex review on PR #835; revisit with segment-path-scoped keys
167
+ * if slot-scoped prebuilt is ever needed.)
168
+ *
169
+ * Comparison happens through `tryCanonicalize` — the same single
170
+ * definition of value equality the cache key uses — so anything it
171
+ * cannot represent faithfully (bigint-coerced codec params, accessors,
172
+ * aliases, …) is unkeyable here too, and this guard can never throw.
173
+ */
174
+ function resolveKeyParams(store: {
175
+ segmentParams?: Record<string, string | string[]>;
176
+ slotParams?: Record<string, Record<string, string | string[]>>;
177
+ }): Record<string, string | string[]> | null {
178
+ const main = store.segmentParams ?? {};
179
+ const slots = store.slotParams;
180
+ if (!slots || Object.keys(slots).length === 0) return main;
181
+ // Spread before canonicalizing: param records are framework-produced
182
+ // Object.create(null) objects (prototype-pollution defense) — normalize
183
+ // the records themselves, let nested values face the full allowlist.
184
+ const mainCanonical = tryCanonicalize({ ...main });
185
+ if (mainCanonical === null) return null;
186
+ for (const slotParams of Object.values(slots)) {
187
+ const merged = tryCanonicalize({ ...main, ...slotParams });
188
+ if (merged === null || merged !== mainCanonical) return null;
189
+ }
190
+ return main;
191
+ }
192
+
193
+ /**
194
+ * Mirror the production cache-key decision for a slot render, with no
195
+ * cache IO — used by the dev wrapper so slot substitution happens in dev
196
+ * exactly when production would serve the cache path rather than the
197
+ * live fallback (dev/prod parity, codex P2 on PR #890): requires an ALS
198
+ * store, keyable params (slot-param divergence unkeys), and keyable data
199
+ * props (after the children slot outlet strip).
200
+ */
201
+ function isSlotRenderKeyable(dataProps: Record<string, unknown>): boolean {
202
+ const store = requestContextAls.getStore();
203
+ if (!store) return false;
204
+ const keyParams = resolveKeyParams(store);
205
+ if (keyParams === null) return false;
206
+ let keyProps = dataProps;
207
+ if (isChildrenSlotOutletElement(keyProps.children)) {
208
+ const { children: _children, ...rest } = keyProps;
209
+ keyProps = rest;
210
+ }
211
+ return computeComponentCacheKey(keyProps, keyParams) !== null;
212
+ }
213
+
214
+ /** Wrap payload bytes as a single-chunk ReadableStream for the decoder. */
215
+ function bytesToStream(bytes: Uint8Array): ReadableStream<Uint8Array> {
216
+ return new ReadableStream<Uint8Array>({
217
+ start(controller) {
218
+ controller.enqueue(bytes);
219
+ controller.close();
220
+ },
221
+ });
222
+ }
223
+
224
+ /** Whether the component has a runtime lifetime (ttl or tags). */
225
+ function hasRuntimeLifetime(options: PrebuiltComponentOptions): boolean {
226
+ return options.ttl !== undefined || (options.tags !== undefined && options.tags !== null);
227
+ }
228
+
229
+ /**
230
+ * Resolve tags from options (may be static array or function of props).
231
+ * Function-form tags receive DATA props only — slot props are excluded so
232
+ * the tags fn never sees SlotOutlet placeholders (capture paths pass
233
+ * placeholder-substituted props) and tags stay deterministic per key.
234
+ */
235
+ function resolveTags(options: PrebuiltComponentOptions, props: Record<string, unknown>): string[] {
236
+ if (!options.tags) return [];
237
+ if (Array.isArray(options.tags)) return options.tags;
238
+ const slots = options.slots;
239
+ // The split cannot fail here — capture paths pass framework-built shell
240
+ // props — but stay total: fall back to the props as given.
241
+ const fnProps =
242
+ slots && slots.length > 0 ? (splitSlotProps(props, slots)?.dataProps ?? props) : props;
243
+ return options.tags(fnProps);
244
+ }
245
+
246
+ // ─── Slot components (TIM-1173) ──────────────────────────────────────────
247
+
248
+ /**
249
+ * Serve a slot component from the cache: split live slot values out of the
250
+ * props, look up / capture the shell (data props + a deterministic
251
+ * SlotOutlet placeholder per slot), and wrap the revived shell in a
252
+ * per-instance SlotsProvider that feeds the live values to the outlets.
253
+ *
254
+ * Null on any miss — the caller renders live with the original props.
255
+ */
256
+ async function tryReviveSlotShell(
257
+ id: string,
258
+ options: PrebuiltComponentOptions,
259
+ slots: readonly string[],
260
+ props: Record<string, unknown>
261
+ ): Promise<{ element: unknown } | null> {
262
+ const render = prepareSlotRender(props, slots);
263
+ if (render === null) return null; // top-level props unkeyable → live render
264
+ const { shellProps, dataProps, slotValues } = render;
265
+ const revived = await tryRevivePayload(id, options, shellProps, dataProps);
266
+ if (revived === null) return null;
267
+ return { element: wrapInSlotsProvider(revived.element, slotValues) };
268
+ }
269
+
270
+ // ─── RSC function injection ─────────────────────────────────────────────
271
+ // The flight client/server is only resolvable in the RSC environment
272
+ // (react-server condition). The RSC entry wires these at boot via
273
+ // setRscFunctions(); tests inject mocks directly. Same pattern as
274
+ // setCacheHandler / setPrebuiltPayloadSource.
275
+
276
+ interface RscFunctions {
277
+ createFromReadableStream: (stream: ReadableStream<Uint8Array>) => Promise<unknown>;
278
+ renderToReadableStream: (
279
+ element: unknown,
280
+ options?: { onError?: (error: unknown) => string }
281
+ ) => ReadableStream<Uint8Array>;
282
+ }
283
+
284
+ let rscFns: RscFunctions | null = null;
285
+
286
+ /**
287
+ * Wire the RSC flight client/server functions. Called once at server
288
+ * startup from the RSC entry module.
289
+ */
290
+ export function setRscFunctions(fns: RscFunctions): void {
291
+ rscFns = fns;
292
+ }
293
+
294
+ function requireRscFunctions(): RscFunctions {
295
+ if (!rscFns) {
296
+ throw new Error('[timber] RSC functions not wired — setRscFunctions() must be called at boot');
297
+ }
298
+ return rscFns;
299
+ }
300
+
301
+ /**
302
+ * Revive flight payload bytes into a React element.
303
+ * Returns null on any failure (corrupt payload, missing decoder).
304
+ */
305
+ async function revivePayload(
306
+ id: string,
307
+ payload: Uint8Array,
308
+ outcome: string
309
+ ): Promise<{ element: unknown } | null> {
310
+ try {
311
+ const { createFromReadableStream } = requireRscFunctions();
312
+ const element: unknown = await createFromReadableStream(bytesToStream(payload));
313
+ return { element };
314
+ } catch (error) {
315
+ console.error(`[timber] failed to revive prebuilt payload for "${id}" — ${outcome}:`, error);
316
+ return null;
317
+ }
318
+ }
319
+
320
+ /** Ceiling on component re-render capture (design/13 A2). Uses configured renderTimeoutMs. */
321
+ function getCaptureTimeoutMs(): number {
322
+ return componentTimeoutMs;
323
+ }
324
+
325
+ /**
326
+ * Render a component in isolation and capture its flight payload bytes.
327
+ * Used for inline re-renders (tombstone/miss) and SWR background re-renders.
328
+ *
329
+ * The stream read is timeout-guarded and the reader is cancelled on
330
+ * expiry (design/13 A2, A3).
331
+ */
332
+ async function captureComponentPayload(
333
+ id: string,
334
+ component: ServerComponent,
335
+ props: Record<string, unknown>
336
+ ): Promise<Uint8Array> {
337
+ const { renderToReadableStream } = requireRscFunctions();
338
+ const element = createElement(component as RenderableComponent, props);
339
+ // Activate capture state so nested cache.component wrappers render live
340
+ // (bake flat into this entry) per design/45 §Nesting Semantics.
341
+ // beginCapture/endCapture MUST be in the same try/finally to prevent
342
+ // leaked capture state on early throws.
343
+ let renderErrored = false;
344
+
345
+ // Key-discipline diagnostic (design/45 §Enforcement): proxy the ALS
346
+ // store to detect request-context reads during the capture render.
347
+ // The proxy is transparent — it never blocks or throws; it only observes.
348
+ const store = requestContextAls.getStore();
349
+ const discipline = store && !keyDisciplineWarned.has(id) ? createKeyDisciplineProxy(store) : null;
350
+
351
+ const doCapture = async (): Promise<Uint8Array> => {
352
+ beginCapture(id);
353
+ try {
354
+ const stream: ReadableStream<Uint8Array> = renderToReadableStream(element, {
355
+ onError() {
356
+ renderErrored = true;
357
+ return '';
358
+ },
359
+ });
360
+ const reader = stream.getReader();
361
+ const chunks: Uint8Array[] = [];
362
+ let totalLength = 0;
363
+ const deadline = Date.now() + getCaptureTimeoutMs();
364
+ try {
365
+ for (;;) {
366
+ const remaining = deadline - Date.now();
367
+ if (remaining <= 0) {
368
+ throw new Error(
369
+ `[timber] component re-render capture exceeded ${getCaptureTimeoutMs()}ms`
370
+ );
371
+ }
372
+ let timer: ReturnType<typeof setTimeout> | undefined;
373
+ const { done, value } = await Promise.race([
374
+ reader.read(),
375
+ new Promise<never>((_, reject) => {
376
+ timer = setTimeout(
377
+ () => reject(new Error(`[timber] component re-render stream read timed out`)),
378
+ remaining
379
+ );
380
+ }),
381
+ ]);
382
+ clearTimeout(timer);
383
+ if (done) break;
384
+ chunks.push(value);
385
+ totalLength += value.byteLength;
386
+ }
387
+ } finally {
388
+ reader.cancel().catch(() => {});
389
+ }
390
+ if (renderErrored) {
391
+ throw new Error('[timber] component re-render produced error rows — not caching');
392
+ }
393
+ const result = new Uint8Array(totalLength);
394
+ let offset = 0;
395
+ for (const chunk of chunks) {
396
+ result.set(chunk, offset);
397
+ offset += chunk.byteLength;
398
+ }
399
+ return result;
400
+ } finally {
401
+ endCapture();
402
+ }
403
+ };
404
+
405
+ const bytes = discipline
406
+ ? await requestContextAls.run(discipline.proxy, doCapture)
407
+ : await doCapture();
408
+
409
+ if (discipline && discipline.accessedApis.size > 0) {
410
+ emitKeyDisciplineWarning(id, discipline.accessedApis);
411
+ }
412
+
413
+ return bytes;
414
+ }
415
+
416
+ /**
417
+ * Inline re-render: capture flight bytes, store in overlay, revive for
418
+ * the current request. Singleflight-coalesced by overlay key.
419
+ */
420
+ async function inlineRerender(
421
+ id: string,
422
+ component: ServerComponent,
423
+ props: Record<string, unknown>,
424
+ cacheKey: string,
425
+ options: PrebuiltComponentOptions,
426
+ hasSeed: boolean,
427
+ outcome: string
428
+ ): Promise<{ element: unknown } | null> {
429
+ const tags = resolveTags(options, props);
430
+ const oKey = overlayKey(id, cacheKey);
431
+ const sfKey = `prebuilt:${id}:${cacheKey}\0${lastInvalidationEpochFor(oKey, tags)}`;
432
+
433
+ try {
434
+ const payload = await componentSingleflight.do(sfKey, async (signal) => {
435
+ const startEpoch = currentInvalidationEpoch();
436
+ const bytes = await captureComponentPayload(id, component, props);
437
+ // Skip the store if aborted (singleflight timeout) or if the
438
+ // key/tags were invalidated while rendering (TIM-1028 guard).
439
+ if (
440
+ !signal.aborted &&
441
+ hasRuntimeLifetime(options) &&
442
+ !wasInvalidatedSince(startEpoch, oKey, tags)
443
+ ) {
444
+ await storeOverlayEntry(id, cacheKey, bytes, {
445
+ ttl: options.ttl,
446
+ tags,
447
+ hasSeed,
448
+ });
449
+ }
450
+ return bytes;
451
+ });
452
+ return await revivePayload(id, payload, outcome);
453
+ } catch (error) {
454
+ console.error(`[timber] cache.component re-render failed for "${id}" — ${outcome}:`, error);
455
+ return null;
456
+ }
457
+ }
458
+
459
+ /**
460
+ * Snapshot the request context values needed for a background re-render.
461
+ * Creates a FRESH store with copied values — the original ALS store is
462
+ * not referenced after capture.
463
+ */
464
+ function snapshotRequestContext(store: RequestContextStore): RequestContextStore {
465
+ return {
466
+ headers: new Headers(store.headers),
467
+ originalHeaders: new Headers(store.originalHeaders),
468
+ cookieHeader: store.cookieHeader,
469
+ parsedCookies: store.parsedCookies ? new Map(store.parsedCookies) : undefined,
470
+ searchParams: new URLSearchParams(store.searchParams),
471
+ searchString: store.searchString,
472
+ segmentParams: store.segmentParams ? { ...store.segmentParams } : undefined,
473
+ cookieJar: new Map(),
474
+ flushed: false,
475
+ mutableContext: false,
476
+ };
477
+ }
478
+
479
+ /**
480
+ * Kick off a background re-render via waitUntil. The re-render runs inside
481
+ * a fresh ALS scope with snapshotted request context.
482
+ */
483
+ function backgroundRerender(
484
+ id: string,
485
+ component: ServerComponent,
486
+ props: Record<string, unknown>,
487
+ cacheKey: string,
488
+ options: PrebuiltComponentOptions,
489
+ hasSeed: boolean,
490
+ snapshot: RequestContextStore
491
+ ): void {
492
+ const waitUntil = getWaitUntil();
493
+ const tags = resolveTags(options, props);
494
+ const oKey = overlayKey(id, cacheKey);
495
+ const startEpoch = currentInvalidationEpoch();
496
+ const sfKey = `prebuilt-bg:${id}:${cacheKey}\0${lastInvalidationEpochFor(oKey, tags)}`;
497
+
498
+ const work = requestContextAls.run(snapshot, () =>
499
+ componentSingleflight
500
+ .do(sfKey, async (signal) => {
501
+ const bytes = await captureComponentPayload(id, component, props);
502
+ if (!signal.aborted && !wasInvalidatedSince(startEpoch, oKey, tags)) {
503
+ await storeOverlayEntry(id, cacheKey, bytes, {
504
+ ttl: options.ttl,
505
+ tags,
506
+ hasSeed,
507
+ });
508
+ }
509
+ })
510
+ .catch((error) => {
511
+ console.error(`[timber] cache.component background re-render failed for "${id}":`, error);
512
+ })
513
+ );
514
+
515
+ if (waitUntil) {
516
+ waitUntil(work);
517
+ } else if (!warnedNoWaitUntil) {
518
+ warnedNoWaitUntil = true;
519
+ console.warn(
520
+ '[timber] cache.component SWR background re-render has no waitUntil — ' +
521
+ 'the re-render may be killed when the handler returns on serverless platforms. ' +
522
+ 'Ensure the adapter wires runWithWaitUntil().'
523
+ );
524
+ }
525
+ }
526
+
527
+ /**
528
+ * Try to serve this render from the prebuilt cache: overlay → artifact →
529
+ * live render. Handles ISR (SWR, tombstones, re-renders) per design/45.
530
+ *
531
+ * Null on any miss — the caller renders live.
532
+ */
533
+ async function tryRevivePayload(
534
+ id: string,
535
+ options: PrebuiltComponentOptions,
536
+ props: Record<string, unknown>,
537
+ keyPropsOverride?: Record<string, unknown>
538
+ ): Promise<{ element: unknown } | null> {
539
+ const hasSource = hasPrebuiltPayloadSource();
540
+ const hasRuntime = hasRuntimeLifetime(options);
541
+ if (!hasSource && !hasRuntime) return null;
542
+
543
+ const store = requestContextAls.getStore();
544
+ if (!store) return null;
545
+ const paramIndep = options.prerender ? await isParamIndependent(id) : false;
546
+ const keyParams = paramIndep ? {} : resolveKeyParams(store);
547
+ if (keyParams === null) return null;
548
+
549
+ // Strip `children` from the cache key ONLY when it is the framework-
550
+ // injected children slot outlet (<SlotOutlet slot="children" />).
551
+ // Layout components receive this as children — a deterministic client
552
+ // reference that is the same on every request, so it should not vary
553
+ // the key. User-provided React element children are NOT stripped —
554
+ // they remain unkeyable so the component renders live, which is
555
+ // correct: the cache cannot distinguish <A> from <B>.
556
+ // See design/45-cache-lifetimes.md §Layout Propagation, TIM-1181.
557
+ // keyPropsOverride = slot component (TIM-1173): the wrapper already
558
+ // split out slot props; only data props participate in the key. The
559
+ // children outlet strip applies to EITHER source — a cached layout
560
+ // declaring only named slots (slots: ['modal']) still receives the
561
+ // framework-injected children outlet in its data props, and it must not
562
+ // unkey the render there any more than on the non-slot path (codex P2
563
+ // on PR #890).
564
+ const allProps = (props ?? {}) as Record<string, unknown>;
565
+ let keyProps = keyPropsOverride ?? allProps;
566
+ if (isChildrenSlotOutletElement(keyProps.children)) {
567
+ const { children: _children, ...rest } = keyProps;
568
+ keyProps = rest;
569
+ }
570
+ const cacheKey = computeComponentCacheKey(keyProps, keyParams);
571
+ if (cacheKey === null) return null;
572
+
573
+ const outcome =
574
+ options.fallbackOnMissingSegmentParams === false
575
+ ? 'failing the render (fallbackOnMissingSegmentParams: false)'
576
+ : 'rendering dynamically';
577
+
578
+ const registration = registry.get(id);
579
+ const component = registration?.component;
580
+
581
+ // ─── Step 1: Check overlay (CacheHandler) ─────────────────────────
582
+ if (hasRuntime) {
583
+ const overlayResult = await lookupOverlay(id, cacheKey);
584
+ if (overlayResult) {
585
+ const overlayHasSeed = overlayResult.record?.s ?? false;
586
+ if (overlayResult.kind === 'tombstone') {
587
+ if (component) {
588
+ return await inlineRerender(id, component, props, cacheKey, options, true, outcome);
589
+ }
590
+ return null;
591
+ }
592
+ if (overlayResult.kind === 'fresh' && overlayResult.payload) {
593
+ return await revivePayload(id, overlayResult.payload, outcome);
594
+ }
595
+ if (overlayResult.kind === 'stale' && overlayResult.payload) {
596
+ if (options.staleWhileRevalidate && component) {
597
+ backgroundRerender(
598
+ id,
599
+ component,
600
+ props,
601
+ cacheKey,
602
+ options,
603
+ overlayHasSeed,
604
+ snapshotRequestContext(store)
605
+ );
606
+ return await revivePayload(id, overlayResult.payload, outcome);
607
+ }
608
+ if (component) {
609
+ return await inlineRerender(
610
+ id,
611
+ component,
612
+ props,
613
+ cacheKey,
614
+ options,
615
+ overlayHasSeed,
616
+ outcome
617
+ );
618
+ }
619
+ return null;
620
+ }
621
+ }
622
+ }
623
+
624
+ // ─── Step 2: Check build artifact ─────────────────────────────────
625
+ if (hasSource) {
626
+ const artifactPayload = await lookupPrebuiltPayload(id, cacheKey);
627
+ if (artifactPayload !== null) {
628
+ // Check seed freshness when the component has a TTL.
629
+ if (options.ttl !== undefined) {
630
+ const entry = await getManifestEntry(id, cacheKey);
631
+ const buildTs = entry?.buildTimestamp ?? 0;
632
+ const seedAge = (Date.now() - buildTs) / 1000;
633
+ if (seedAge > options.ttl) {
634
+ // Stale seed
635
+ if (options.staleWhileRevalidate && component) {
636
+ backgroundRerender(
637
+ id,
638
+ component,
639
+ props,
640
+ cacheKey,
641
+ options,
642
+ true,
643
+ snapshotRequestContext(store)
644
+ );
645
+ return await revivePayload(id, artifactPayload, outcome);
646
+ }
647
+ if (component) {
648
+ return await inlineRerender(id, component, props, cacheKey, options, true, outcome);
649
+ }
650
+ // No component in registry — can't re-render; fall through to
651
+ // live render via the wrapper (design/45 step 3).
652
+ return null;
653
+ }
654
+ }
655
+ // Fresh seed (or no TTL — immutable until redeploy)
656
+ return await revivePayload(id, artifactPayload, outcome);
657
+ }
658
+
659
+ // Manifest miss
660
+ if (options.prerender) {
661
+ console.warn(
662
+ `[timber] cache.component cache miss: "${id}" with params ${JSON.stringify(
663
+ store.segmentParams ?? {}
664
+ )} — ${outcome}`
665
+ );
666
+ }
667
+ }
668
+
669
+ // ─── Step 3: Full miss with runtime lifetime — inline re-render ───
670
+ // Skip when fallbackOnMissingSegmentParams is false — that option means
671
+ // "only prebuilt content", so an unenumerated miss must throw (the
672
+ // wrapper handles the throw after we return null).
673
+ if (hasRuntime && component && options.fallbackOnMissingSegmentParams !== false) {
674
+ return await inlineRerender(id, component, props, cacheKey, options, false, outcome);
675
+ }
676
+
677
+ return null;
678
+ }
679
+
680
+ /**
681
+ * Production wrapper injected by the timber-prebuilt transform. Registers
682
+ * the component under its stable ID and returns a wrapper component that
683
+ * either revives the cached payload (hit) or renders the original
684
+ * component live (miss).
685
+ */
686
+ export function __prebuilt<C extends ServerComponent>(
687
+ id: string,
688
+ component: C,
689
+ options: PrebuiltComponentOptions = {}
690
+ ): C {
691
+ // Slot resolution first, then option normalization in its terms
692
+ // (TIM-1173). ACTIVE slots are runtime-tier only — the build cannot
693
+ // enumerate slot content — so `prerender` is stripped (loudly); the
694
+ // capture pass reads the registry's normalized options, so stripping
695
+ // here also keeps the build from capturing slot components. DISABLED
696
+ // declarations (malformed shape, missing lifetime — warned inside
697
+ // resolveSlotNames) fall back wholesale to non-slot semantics: `slots`
698
+ // is stripped so no downstream consumer (resolveTags' slot filtering,
699
+ // the registry, the capture pass) ever sees the raw value, and every
700
+ // other option — including `prerender` — keeps its normal meaning
701
+ // (codex P2s on PR #890).
702
+ const resolution = resolveSlotNames(id, options);
703
+ const slots = resolution.kind === 'active' ? resolution.slots : null;
704
+ if (resolution.kind === 'active' && options.prerender) {
705
+ console.warn(
706
+ `[timber] cache.component "${id}": slots are runtime-tier only — ` +
707
+ `prerender is ignored (the build cannot enumerate slot content). ` +
708
+ `Use ttl/tags for the cache lifetime.`
709
+ );
710
+ options = { ...options, prerender: undefined };
711
+ }
712
+ if (resolution.kind === 'disabled') {
713
+ options = { ...options, slots: undefined };
714
+ }
715
+ registry.set(id, { id, component, options });
716
+
717
+ const wrapper = async (props: Parameters<C>[0]) => {
718
+ // Build-time only: report this render to the active capture pass —
719
+ // cycle detection (throws) and nesting-clamp warnings (design/45
720
+ // §Nesting Semantics). A single null-check at request time.
721
+ noteWrapperRender(id, options);
722
+ if (isCaptureActive()) {
723
+ // Nested wrapper inside a build-time capture: render live so the
724
+ // subtree bakes flat into the enclosing entry (design/45 §Nesting).
725
+ // This deliberately bypasses fallbackOnMissingSegmentParams: false —
726
+ // that option means "never serve non-prebuilt content", and a
727
+ // build-time render IS prebuilt content; throwing here would
728
+ // spuriously fail the outer entry (codex P2 on PR #836).
729
+ return createElement(component as RenderableComponent, props as Record<string, unknown>);
730
+ }
731
+
732
+ const revived = slots
733
+ ? await tryReviveSlotShell(id, options, slots, props as Record<string, unknown>)
734
+ : await tryRevivePayload(id, options, props as Record<string, unknown>);
735
+ if (revived !== null) {
736
+ return revived.element;
737
+ }
738
+ if (options.fallbackOnMissingSegmentParams === false) {
739
+ throw new Error(
740
+ `[timber] cache.component "${id}": no prebuilt payload for the current params and fallbackOnMissingSegmentParams is false`
741
+ );
742
+ }
743
+ // Return an ELEMENT — React invokes the component itself, with its
744
+ // render dispatcher active. Calling component(props) here would run
745
+ // it after this wrapper's await, outside a dispatcher frame, breaking
746
+ // sync server components that call use() (codex review on PR #835).
747
+ return createElement(component as RenderableComponent, props as Record<string, unknown>);
748
+ };
749
+ Object.defineProperty(wrapper, 'name', { value: `Prebuilt(${id})` });
750
+ // Double cast, deliberately: C's return type may be narrower than the
751
+ // wrapper's (a sync component wrapped by an async function, or a revived
752
+ // subtree in place of C's exact JSX type). Callers only ever *render*
753
+ // the result — React treats any component returning ReactNode-compatible
754
+ // values identically — so widening through `unknown` is safe here and a
755
+ // direct cast would be rejected by the compiler for exactly the
756
+ // difference we intend.
757
+ return wrapper as unknown as C;
758
+ }
759
+
760
+ /** Look up a registration by stable component ID. */
761
+ export function getPrebuiltRegistration(id: string): PrebuiltRegistration | undefined {
762
+ return registry.get(id);
763
+ }
764
+
765
+ /** All registrations, for the post-build capture pass (TIM-1119). */
766
+ export function getPrebuiltRegistry(): ReadonlyMap<string, PrebuiltRegistration> {
767
+ return registry;
768
+ }
769
+
770
+ /**
771
+ * Dev-mode wrapper injected by the timber-prebuilt transform: a no-op that
772
+ * renders the component dynamically on every request, logging once per
773
+ * component on first render so the production behavior difference is visible.
774
+ * See design/44 §Dev Mode.
775
+ */
776
+ export function __prebuiltDev<C extends ServerComponent>(
777
+ name: string,
778
+ component: C,
779
+ options: PrebuiltComponentOptions = {}
780
+ ): C {
781
+ // Dev/prod parity for slot components: in production a slot component
782
+ // ALWAYS receives a SlotOutlet element for each declared slot (never the
783
+ // live children), so a component that introspects a slot prop would
784
+ // behave differently between dev and prod if dev passed children
785
+ // through. Dev renders the same tree shape — outlets in the props,
786
+ // live values via SlotsProvider — just without any caching. The same
787
+ // validation applies (including the lifetime requirement): slots are
788
+ // active in dev exactly when they would be active in production.
789
+ const resolution = resolveSlotNames(name, options);
790
+ const slots = resolution.kind === 'active' ? resolution.slots : null;
791
+ let logged = false;
792
+ const wrapper = (props: Parameters<C>[0]) => {
793
+ if (!logged) {
794
+ logged = true;
795
+ console.log(`[timber] cache.component: "${name}" — rendering dynamically (dev mode)`);
796
+ }
797
+ if (slots) {
798
+ const render = prepareSlotRender(props as Record<string, unknown>, slots);
799
+ // Substitute outlets only when PRODUCTION would: top-level props
800
+ // splittable AND the data props keyable. Unkeyable inputs render
801
+ // live with the original props there, so dev must too (parity —
802
+ // codex P2 on PR #890).
803
+ if (render !== null && isSlotRenderKeyable(render.dataProps)) {
804
+ return wrapInSlotsProvider(
805
+ createElement(component as RenderableComponent, render.shellProps),
806
+ render.slotValues
807
+ );
808
+ }
809
+ }
810
+ // Element, not a direct call — same dispatcher reasoning as the
811
+ // production wrapper's live fallback.
812
+ return createElement(component as RenderableComponent, props as Record<string, unknown>);
813
+ };
814
+ return wrapper as C;
815
+ }