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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1329) hide show
  1. package/LICENSE +8 -0
  2. package/agent-skill.md +346 -0
  3. package/dist/_chunks/actions-d1hCqnU3.js +345 -0
  4. package/dist/_chunks/actions-d1hCqnU3.js.map +1 -0
  5. package/dist/_chunks/als-registry-C6kcfprT.js +41 -0
  6. package/dist/_chunks/als-registry-C6kcfprT.js.map +1 -0
  7. package/dist/_chunks/als-slots-BEEIPKYm.js +26 -0
  8. package/dist/_chunks/als-slots-BEEIPKYm.js.map +1 -0
  9. package/dist/_chunks/base-path-DaQrzbez.js +80 -0
  10. package/dist/_chunks/base-path-DaQrzbez.js.map +1 -0
  11. package/dist/_chunks/build-manifest-DTmSGLRz.js +135 -0
  12. package/dist/_chunks/build-manifest-DTmSGLRz.js.map +1 -0
  13. package/dist/_chunks/build-output-helper-9dqCv1pZ.js +370 -0
  14. package/dist/_chunks/build-output-helper-9dqCv1pZ.js.map +1 -0
  15. package/dist/_chunks/cache-api-ByagcC-J.js +1149 -0
  16. package/dist/_chunks/cache-api-ByagcC-J.js.map +1 -0
  17. package/dist/_chunks/canonicalize-CgHoscYO.js +66 -0
  18. package/dist/_chunks/canonicalize-CgHoscYO.js.map +1 -0
  19. package/dist/_chunks/chains-Bpb0W4ax.js +412 -0
  20. package/dist/_chunks/chains-Bpb0W4ax.js.map +1 -0
  21. package/dist/_chunks/cli-check-D6VolrDV.js +293 -0
  22. package/dist/_chunks/cli-check-D6VolrDV.js.map +1 -0
  23. package/dist/_chunks/cli-schema-sync-D6rO-VcS.js +299 -0
  24. package/dist/_chunks/cli-schema-sync-D6rO-VcS.js.map +1 -0
  25. package/dist/_chunks/cloudflare-BFb__LYG.js +1290 -0
  26. package/dist/_chunks/cloudflare-BFb__LYG.js.map +1 -0
  27. package/dist/_chunks/codec-registry-oOUxugz3.js +21 -0
  28. package/dist/_chunks/codec-registry-oOUxugz3.js.map +1 -0
  29. package/dist/_chunks/convention-lint-fRkwVwEH.js +893 -0
  30. package/dist/_chunks/convention-lint-fRkwVwEH.js.map +1 -0
  31. package/dist/_chunks/dist-DtrJyBbw.js +386 -0
  32. package/dist/_chunks/dist-DtrJyBbw.js.map +1 -0
  33. package/dist/_chunks/error-boundary-BfPHZjm0.js +1050 -0
  34. package/dist/_chunks/error-boundary-BfPHZjm0.js.map +1 -0
  35. package/dist/_chunks/fast-hash-C-tVYrLb.js +41 -0
  36. package/dist/_chunks/fast-hash-C-tVYrLb.js.map +1 -0
  37. package/dist/_chunks/file-cache-Dw6BJPG7.js +458 -0
  38. package/dist/_chunks/file-cache-Dw6BJPG7.js.map +1 -0
  39. package/dist/_chunks/format-BKclgVbk.js +14 -0
  40. package/dist/_chunks/format-BKclgVbk.js.map +1 -0
  41. package/dist/_chunks/fs-identity-D7vb6GdI.js +208 -0
  42. package/dist/_chunks/fs-identity-D7vb6GdI.js.map +1 -0
  43. package/dist/_chunks/graph-cache-CP4GEmf9.js +304 -0
  44. package/dist/_chunks/graph-cache-CP4GEmf9.js.map +1 -0
  45. package/dist/_chunks/href-validation-BIrxavIy.js +213 -0
  46. package/dist/_chunks/href-validation-BIrxavIy.js.map +1 -0
  47. package/dist/_chunks/json-lossy-check-ClNvBM_3.js +63 -0
  48. package/dist/_chunks/json-lossy-check-ClNvBM_3.js.map +1 -0
  49. package/dist/_chunks/live-graph-D_2D32Ad.js +150 -0
  50. package/dist/_chunks/live-graph-D_2D32Ad.js.map +1 -0
  51. package/dist/_chunks/logger-uLBuGKDI.js +1484 -0
  52. package/dist/_chunks/logger-uLBuGKDI.js.map +1 -0
  53. package/dist/_chunks/navigation-context-D0TU0Jog.js +135 -0
  54. package/dist/_chunks/navigation-context-D0TU0Jog.js.map +1 -0
  55. package/dist/_chunks/navigation-root-mHSK9psY.js +126 -0
  56. package/dist/_chunks/navigation-root-mHSK9psY.js.map +1 -0
  57. package/dist/_chunks/param-value-C8TNYchQ.js +66 -0
  58. package/dist/_chunks/param-value-C8TNYchQ.js.map +1 -0
  59. package/dist/_chunks/plugin-context-8idfR3UZ.js +321 -0
  60. package/dist/_chunks/plugin-context-8idfR3UZ.js.map +1 -0
  61. package/dist/_chunks/poison-rules-DoEhbqaY.js +110 -0
  62. package/dist/_chunks/poison-rules-DoEhbqaY.js.map +1 -0
  63. package/dist/_chunks/poison-scan-Bm9Yyqk9.js +101 -0
  64. package/dist/_chunks/poison-scan-Bm9Yyqk9.js.map +1 -0
  65. package/dist/_chunks/purge-store-Byr8XOjU.js +14 -0
  66. package/dist/_chunks/purge-store-Byr8XOjU.js.map +1 -0
  67. package/dist/_chunks/resolve-schema-CBR6Lm4i.js +50 -0
  68. package/dist/_chunks/resolve-schema-CBR6Lm4i.js.map +1 -0
  69. package/dist/_chunks/rolldown-runtime-D7D4PA-g.js +13 -0
  70. package/dist/_chunks/rsc-cache-key-ClUiXQnK.js +243 -0
  71. package/dist/_chunks/rsc-cache-key-ClUiXQnK.js.map +1 -0
  72. package/dist/_chunks/rsc-media-type-DDc7duTD.js +61 -0
  73. package/dist/_chunks/rsc-media-type-DDc7duTD.js.map +1 -0
  74. package/dist/_chunks/rsc-payload-path-B_LBodc2.js +48 -0
  75. package/dist/_chunks/rsc-payload-path-B_LBodc2.js.map +1 -0
  76. package/dist/_chunks/scan-BoP17W3w.js +140 -0
  77. package/dist/_chunks/scan-BoP17W3w.js.map +1 -0
  78. package/dist/_chunks/scanner-AiazgH_f.js +1771 -0
  79. package/dist/_chunks/scanner-AiazgH_f.js.map +1 -0
  80. package/dist/_chunks/schema-bridge-C83xa9lT.js +199 -0
  81. package/dist/_chunks/schema-bridge-C83xa9lT.js.map +1 -0
  82. package/dist/_chunks/segment-classify-C539Pa2O.js +197 -0
  83. package/dist/_chunks/segment-classify-C539Pa2O.js.map +1 -0
  84. package/dist/_chunks/segment-context-D9_89u34.js +34 -0
  85. package/dist/_chunks/segment-context-D9_89u34.js.map +1 -0
  86. package/dist/_chunks/segment-keys-lqtdookO.js +256 -0
  87. package/dist/_chunks/segment-keys-lqtdookO.js.map +1 -0
  88. package/dist/_chunks/singleflight-2lUWfcAk.js +54 -0
  89. package/dist/_chunks/singleflight-2lUWfcAk.js.map +1 -0
  90. package/dist/_chunks/sizeof-lXffQ1Vr.js +35 -0
  91. package/dist/_chunks/sizeof-lXffQ1Vr.js.map +1 -0
  92. package/dist/_chunks/{ssr-data-DLnbYpj1.js → ssr-data-D6T6Y3ef.js} +3 -31
  93. package/dist/_chunks/ssr-data-D6T6Y3ef.js.map +1 -0
  94. package/dist/_chunks/state-FippDgxN.js +52 -0
  95. package/dist/_chunks/state-FippDgxN.js.map +1 -0
  96. package/dist/_chunks/status-page-marker-DwQBrLBz.js +496 -0
  97. package/dist/_chunks/status-page-marker-DwQBrLBz.js.map +1 -0
  98. package/dist/_chunks/use-query-states-I3JMng6J.js +226 -0
  99. package/dist/_chunks/use-query-states-I3JMng6J.js.map +1 -0
  100. package/dist/_chunks/walkers-B6XUtmqK.js +144 -0
  101. package/dist/_chunks/walkers-B6XUtmqK.js.map +1 -0
  102. package/dist/adapters/build-output-helper.d.ts +72 -0
  103. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  104. package/dist/adapters/cloudflare-dev.d.ts +109 -0
  105. package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
  106. package/dist/adapters/cloudflare-dev.js +74 -0
  107. package/dist/adapters/cloudflare-dev.js.map +1 -0
  108. package/dist/adapters/cloudflare-kv-cache.d.ts +65 -0
  109. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
  110. package/dist/adapters/cloudflare-kv-cache.js +123 -0
  111. package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
  112. package/dist/adapters/cloudflare.d.ts +200 -22
  113. package/dist/adapters/cloudflare.d.ts.map +1 -1
  114. package/dist/adapters/cloudflare.js +2 -188
  115. package/dist/adapters/compress-module.d.ts +17 -4
  116. package/dist/adapters/compress-module.d.ts.map +1 -1
  117. package/dist/adapters/fs-identity.d.ts +64 -0
  118. package/dist/adapters/fs-identity.d.ts.map +1 -0
  119. package/dist/adapters/nitro-presets.d.ts +37 -0
  120. package/dist/adapters/nitro-presets.d.ts.map +1 -0
  121. package/dist/adapters/nitro-preview.d.ts +32 -0
  122. package/dist/adapters/nitro-preview.d.ts.map +1 -0
  123. package/dist/adapters/nitro.d.ts +82 -37
  124. package/dist/adapters/nitro.d.ts.map +1 -1
  125. package/dist/adapters/nitro.js +457 -288
  126. package/dist/adapters/nitro.js.map +1 -1
  127. package/dist/adapters/shared.d.ts +62 -0
  128. package/dist/adapters/shared.d.ts.map +1 -0
  129. package/dist/adapters/types.d.ts +28 -6
  130. package/dist/adapters/types.d.ts.map +1 -1
  131. package/dist/analyze/chains.d.ts +124 -0
  132. package/dist/analyze/chains.d.ts.map +1 -0
  133. package/dist/analyze/classify.d.ts +150 -0
  134. package/dist/analyze/classify.d.ts.map +1 -0
  135. package/dist/analyze/crawl-entry.d.ts +17 -0
  136. package/dist/analyze/crawl-entry.d.ts.map +1 -0
  137. package/dist/analyze/crawl-entry.js +313 -0
  138. package/dist/analyze/crawl-entry.js.map +1 -0
  139. package/dist/analyze/crawl.d.ts +134 -0
  140. package/dist/analyze/crawl.d.ts.map +1 -0
  141. package/dist/analyze/graph-cache.d.ts +104 -0
  142. package/dist/analyze/graph-cache.d.ts.map +1 -0
  143. package/dist/analyze/graph-command.d.ts +43 -0
  144. package/dist/analyze/graph-command.d.ts.map +1 -0
  145. package/dist/analyze/graph-command.js +472 -0
  146. package/dist/analyze/graph-command.js.map +1 -0
  147. package/dist/analyze/live-graph.d.ts +81 -0
  148. package/dist/analyze/live-graph.d.ts.map +1 -0
  149. package/dist/analyze/poison-rules.d.ts +72 -0
  150. package/dist/analyze/poison-rules.d.ts.map +1 -0
  151. package/dist/analyze/poison-scan.d.ts +48 -0
  152. package/dist/analyze/poison-scan.d.ts.map +1 -0
  153. package/dist/analyze/scan.d.ts +73 -0
  154. package/dist/analyze/scan.d.ts.map +1 -0
  155. package/dist/cache/cache-api.d.ts +48 -0
  156. package/dist/cache/cache-api.d.ts.map +1 -0
  157. package/dist/cache/fast-hash.d.ts +27 -0
  158. package/dist/cache/fast-hash.d.ts.map +1 -0
  159. package/dist/cache/handler-store.d.ts +33 -0
  160. package/dist/cache/handler-store.d.ts.map +1 -0
  161. package/dist/cache/index.d.ts +32 -9
  162. package/dist/cache/index.d.ts.map +1 -1
  163. package/dist/cache/index.js +3 -284
  164. package/dist/cache/invalidation-epoch.d.ts +43 -0
  165. package/dist/cache/invalidation-epoch.d.ts.map +1 -0
  166. package/dist/cache/json-lossy-check.d.ts +11 -0
  167. package/dist/cache/json-lossy-check.d.ts.map +1 -0
  168. package/dist/cache/redis-handler.d.ts +141 -9
  169. package/dist/cache/redis-handler.d.ts.map +1 -1
  170. package/dist/cache/singleflight.d.ts +21 -2
  171. package/dist/cache/singleflight.d.ts.map +1 -1
  172. package/dist/cache/sizeof.d.ts +22 -0
  173. package/dist/cache/sizeof.d.ts.map +1 -0
  174. package/dist/cache/stable-stringify.d.ts +9 -0
  175. package/dist/cache/stable-stringify.d.ts.map +1 -1
  176. package/dist/cache/store.d.ts +53 -0
  177. package/dist/cache/store.d.ts.map +1 -0
  178. package/dist/cache/stores/cloudflare-kv.d.ts +38 -0
  179. package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -0
  180. package/dist/cache/stores/cloudflare-kv.js +29 -0
  181. package/dist/cache/stores/cloudflare-kv.js.map +1 -0
  182. package/dist/cache/stores/memory.d.ts +42 -0
  183. package/dist/cache/stores/memory.d.ts.map +1 -0
  184. package/dist/cache/stores/memory.js +90 -0
  185. package/dist/cache/stores/memory.js.map +1 -0
  186. package/dist/cache/stores/redis.d.ts +69 -0
  187. package/dist/cache/stores/redis.d.ts.map +1 -0
  188. package/dist/cache/stores/redis.js +35 -0
  189. package/dist/cache/stores/redis.js.map +1 -0
  190. package/dist/cache/stores/vercel.d.ts +36 -0
  191. package/dist/cache/stores/vercel.d.ts.map +1 -0
  192. package/dist/cache/stores/vercel.js +33 -0
  193. package/dist/cache/stores/vercel.js.map +1 -0
  194. package/dist/cache/tag-aware-handler.d.ts +52 -0
  195. package/dist/cache/tag-aware-handler.d.ts.map +1 -0
  196. package/dist/cache/timber-cache.d.ts +21 -11
  197. package/dist/cache/timber-cache.d.ts.map +1 -1
  198. package/dist/cdn/cloudflare-purge.d.ts +23 -0
  199. package/dist/cdn/cloudflare-purge.d.ts.map +1 -0
  200. package/dist/cdn/cloudflare-purge.js +30 -0
  201. package/dist/cdn/cloudflare-purge.js.map +1 -0
  202. package/dist/cdn/fastly-purge.d.ts +25 -0
  203. package/dist/cdn/fastly-purge.d.ts.map +1 -0
  204. package/dist/cdn/fastly-purge.js +33 -0
  205. package/dist/cdn/fastly-purge.js.map +1 -0
  206. package/dist/cdn/headers.d.ts +97 -0
  207. package/dist/cdn/headers.d.ts.map +1 -0
  208. package/dist/cdn/index.d.ts +5 -0
  209. package/dist/cdn/index.d.ts.map +1 -0
  210. package/dist/cdn/index.js +94 -0
  211. package/dist/cdn/index.js.map +1 -0
  212. package/dist/cdn/purge-store.d.ts +23 -0
  213. package/dist/cdn/purge-store.d.ts.map +1 -0
  214. package/dist/cdn/workers-cache-purge.d.ts +20 -0
  215. package/dist/cdn/workers-cache-purge.d.ts.map +1 -0
  216. package/dist/cdn/workers-cache-purge.js +35 -0
  217. package/dist/cdn/workers-cache-purge.js.map +1 -0
  218. package/dist/cli-check.d.ts +163 -0
  219. package/dist/cli-check.d.ts.map +1 -0
  220. package/dist/cli-schema-sync.d.ts +59 -0
  221. package/dist/cli-schema-sync.d.ts.map +1 -0
  222. package/dist/cli.d.ts +75 -8
  223. package/dist/cli.d.ts.map +1 -1
  224. package/dist/cli.js +175 -47
  225. package/dist/cli.js.map +1 -1
  226. package/dist/client/browser-dev.d.ts +37 -1
  227. package/dist/client/browser-dev.d.ts.map +1 -1
  228. package/dist/client/browser-entry/action-dispatch.d.ts +19 -0
  229. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  230. package/dist/client/browser-entry/action-queue.d.ts +44 -0
  231. package/dist/client/browser-entry/action-queue.d.ts.map +1 -0
  232. package/dist/client/browser-entry/hmr.d.ts +21 -0
  233. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  234. package/dist/client/browser-entry/hydrate.d.ts +63 -0
  235. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  236. package/dist/client/browser-entry/index.d.ts +30 -0
  237. package/dist/client/browser-entry/index.d.ts.map +1 -0
  238. package/dist/client/browser-entry/post-hydration.d.ts +29 -0
  239. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  240. package/dist/client/browser-entry/router-init.d.ts +46 -0
  241. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  242. package/dist/client/browser-entry/rsc-stream.d.ts +32 -0
  243. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  244. package/dist/client/browser-entry/scroll.d.ts +28 -0
  245. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  246. package/dist/client/deny-last-resort.d.ts +29 -0
  247. package/dist/client/deny-last-resort.d.ts.map +1 -0
  248. package/dist/client/error-boundary.d.ts +66 -6
  249. package/dist/client/error-boundary.d.ts.map +1 -1
  250. package/dist/client/error-boundary.js +2 -126
  251. package/dist/client/error-reconstituter.d.ts +61 -0
  252. package/dist/client/error-reconstituter.d.ts.map +1 -0
  253. package/dist/client/form.d.ts +16 -27
  254. package/dist/client/form.d.ts.map +1 -1
  255. package/dist/client/global-context.d.ts +15 -0
  256. package/dist/client/global-context.d.ts.map +1 -0
  257. package/dist/client/history.d.ts +50 -9
  258. package/dist/client/history.d.ts.map +1 -1
  259. package/dist/client/index.d.ts +20 -33
  260. package/dist/client/index.d.ts.map +1 -1
  261. package/dist/client/index.js +323 -1148
  262. package/dist/client/index.js.map +1 -1
  263. package/dist/client/internal.d.ts +20 -0
  264. package/dist/client/internal.d.ts.map +1 -0
  265. package/dist/client/internal.js +818 -0
  266. package/dist/client/internal.js.map +1 -0
  267. package/dist/client/link.d.ts +63 -60
  268. package/dist/client/link.d.ts.map +1 -1
  269. package/dist/client/location-search.d.ts +12 -0
  270. package/dist/client/location-search.d.ts.map +1 -0
  271. package/dist/client/navigation-api.d.ts +121 -0
  272. package/dist/client/navigation-api.d.ts.map +1 -0
  273. package/dist/client/navigation-commit.d.ts +98 -0
  274. package/dist/client/navigation-commit.d.ts.map +1 -0
  275. package/dist/client/navigation-context.d.ts +51 -31
  276. package/dist/client/navigation-context.d.ts.map +1 -1
  277. package/dist/client/navigation-root.d.ts +98 -0
  278. package/dist/client/navigation-root.d.ts.map +1 -0
  279. package/dist/client/navigation-transition.d.ts +187 -0
  280. package/dist/client/navigation-transition.d.ts.map +1 -0
  281. package/dist/client/nuqs-adapter.d.ts +1 -1
  282. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  283. package/dist/client/params-context.d.ts +81 -0
  284. package/dist/client/params-context.d.ts.map +1 -0
  285. package/dist/client/react-root.d.ts +44 -0
  286. package/dist/client/react-root.d.ts.map +1 -0
  287. package/dist/client/router-effects.d.ts +130 -0
  288. package/dist/client/router-effects.d.ts.map +1 -0
  289. package/dist/client/router-lifecycle.d.ts +98 -0
  290. package/dist/client/router-lifecycle.d.ts.map +1 -0
  291. package/dist/client/router-pipeline.d.ts +87 -0
  292. package/dist/client/router-pipeline.d.ts.map +1 -0
  293. package/dist/client/router-ref.d.ts +2 -2
  294. package/dist/client/router-ref.d.ts.map +1 -1
  295. package/dist/client/router-skew.d.ts +21 -0
  296. package/dist/client/router-skew.d.ts.map +1 -0
  297. package/dist/client/router-types.d.ts +272 -0
  298. package/dist/client/router-types.d.ts.map +1 -0
  299. package/dist/client/router.d.ts +1 -97
  300. package/dist/client/router.d.ts.map +1 -1
  301. package/dist/client/rsc-fetch.d.ts +104 -26
  302. package/dist/client/rsc-fetch.d.ts.map +1 -1
  303. package/dist/client/segment-cache.d.ts +161 -25
  304. package/dist/client/segment-cache.d.ts.map +1 -1
  305. package/dist/client/segment-context.d.ts +1 -1
  306. package/dist/client/segment-context.d.ts.map +1 -1
  307. package/dist/client/segment-outlet.d.ts +68 -0
  308. package/dist/client/segment-outlet.d.ts.map +1 -0
  309. package/dist/client/segment-update-context.d.ts +15 -0
  310. package/dist/client/segment-update-context.d.ts.map +1 -0
  311. package/dist/client/shallow-url.d.ts +10 -0
  312. package/dist/client/shallow-url.d.ts.map +1 -0
  313. package/dist/client/slot-content-cache-context.d.ts +35 -0
  314. package/dist/client/slot-content-cache-context.d.ts.map +1 -0
  315. package/dist/client/slot-context.d.ts +31 -0
  316. package/dist/client/slot-context.d.ts.map +1 -0
  317. package/dist/client/slot-outlet.d.ts +16 -0
  318. package/dist/client/slot-outlet.d.ts.map +1 -0
  319. package/dist/client/slot-provider.d.ts +25 -0
  320. package/dist/client/slot-provider.d.ts.map +1 -0
  321. package/dist/client/ssr-data.d.ts +29 -7
  322. package/dist/client/ssr-data.d.ts.map +1 -1
  323. package/dist/client/stale-client.d.ts +69 -0
  324. package/dist/client/stale-client.d.ts.map +1 -0
  325. package/dist/client/state.d.ts +19 -8
  326. package/dist/client/state.d.ts.map +1 -1
  327. package/dist/client/status-page-marker.d.ts +25 -0
  328. package/dist/client/status-page-marker.d.ts.map +1 -0
  329. package/dist/client/top-loader.d.ts +7 -6
  330. package/dist/client/top-loader.d.ts.map +1 -1
  331. package/dist/client/unload-guard.d.ts +5 -0
  332. package/dist/client/unload-guard.d.ts.map +1 -1
  333. package/dist/client/use-cookie.d.ts +12 -0
  334. package/dist/client/use-cookie.d.ts.map +1 -1
  335. package/dist/client/use-link-status.d.ts +5 -5
  336. package/dist/client/use-link-status.d.ts.map +1 -1
  337. package/dist/client/use-pathname.d.ts +13 -11
  338. package/dist/client/use-pathname.d.ts.map +1 -1
  339. package/dist/client/use-pending-navigation.d.ts +23 -0
  340. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  341. package/dist/client/use-query-states.d.ts +10 -4
  342. package/dist/client/use-query-states.d.ts.map +1 -1
  343. package/dist/client/use-router.d.ts +2 -2
  344. package/dist/client/use-router.d.ts.map +1 -1
  345. package/dist/client/use-search-params.d.ts +15 -8
  346. package/dist/client/use-search-params.d.ts.map +1 -1
  347. package/dist/client/use-segment-params.d.ts +55 -0
  348. package/dist/client/use-segment-params.d.ts.map +1 -0
  349. package/dist/codec.d.ts +69 -0
  350. package/dist/codec.d.ts.map +1 -0
  351. package/dist/codec.js +76 -0
  352. package/dist/codec.js.map +1 -0
  353. package/dist/config-types.d.ts +322 -0
  354. package/dist/config-types.d.ts.map +1 -0
  355. package/dist/config-validation.d.ts +51 -0
  356. package/dist/config-validation.d.ts.map +1 -0
  357. package/dist/cookies/define-cookie.d.ts +58 -25
  358. package/dist/cookies/define-cookie.d.ts.map +1 -1
  359. package/dist/cookies/index.d.ts +3 -2
  360. package/dist/cookies/index.d.ts.map +1 -1
  361. package/dist/cookies/index.js +256 -36
  362. package/dist/cookies/index.js.map +1 -1
  363. package/dist/cookies/json-cookie.d.ts +64 -0
  364. package/dist/cookies/json-cookie.d.ts.map +1 -0
  365. package/dist/cookies/validation.d.ts +34 -0
  366. package/dist/cookies/validation.d.ts.map +1 -0
  367. package/dist/dev-tools/404-page.d.ts +50 -0
  368. package/dist/dev-tools/404-page.d.ts.map +1 -0
  369. package/dist/dev-tools/browser-logs.d.ts +40 -0
  370. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  371. package/dist/dev-tools/dev-page-shell.d.ts +78 -0
  372. package/dist/dev-tools/dev-page-shell.d.ts.map +1 -0
  373. package/dist/dev-tools/error-page.d.ts +32 -0
  374. package/dist/dev-tools/error-page.d.ts.map +1 -0
  375. package/dist/dev-tools/holding-server.d.ts +46 -0
  376. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  377. package/dist/dev-tools/hydration-overlay.d.ts +11 -0
  378. package/dist/dev-tools/hydration-overlay.d.ts.map +1 -0
  379. package/dist/dev-tools/index.d.ts +31 -0
  380. package/dist/dev-tools/index.d.ts.map +1 -0
  381. package/dist/dev-tools/instrumentation.d.ts +59 -0
  382. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  383. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  384. package/dist/dev-tools/logger.d.ts.map +1 -0
  385. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +17 -3
  386. package/dist/dev-tools/logs.d.ts.map +1 -0
  387. package/dist/dev-tools/overlay.d.ts +91 -0
  388. package/dist/dev-tools/overlay.d.ts.map +1 -0
  389. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  390. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  391. package/dist/dev-tools/terminal.d.ts +28 -0
  392. package/dist/dev-tools/terminal.d.ts.map +1 -0
  393. package/dist/fonts/ast-walk.d.ts +68 -0
  394. package/dist/fonts/ast-walk.d.ts.map +1 -0
  395. package/dist/fonts/ast.d.ts +112 -8
  396. package/dist/fonts/ast.d.ts.map +1 -1
  397. package/dist/fonts/bundle.d.ts +50 -0
  398. package/dist/fonts/bundle.d.ts.map +1 -0
  399. package/dist/fonts/css.d.ts +2 -1
  400. package/dist/fonts/css.d.ts.map +1 -1
  401. package/dist/fonts/dev-middleware.d.ts +22 -0
  402. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  403. package/dist/fonts/fallbacks.d.ts +0 -7
  404. package/dist/fonts/fallbacks.d.ts.map +1 -1
  405. package/dist/fonts/google.d.ts +5 -3
  406. package/dist/fonts/google.d.ts.map +1 -1
  407. package/dist/fonts/local.d.ts +6 -4
  408. package/dist/fonts/local.d.ts.map +1 -1
  409. package/dist/fonts/paths.d.ts +43 -0
  410. package/dist/fonts/paths.d.ts.map +1 -0
  411. package/dist/fonts/pipeline.d.ts +177 -0
  412. package/dist/fonts/pipeline.d.ts.map +1 -0
  413. package/dist/fonts/transform.d.ts +82 -0
  414. package/dist/fonts/transform.d.ts.map +1 -0
  415. package/dist/fonts/types.d.ts +47 -1
  416. package/dist/fonts/types.d.ts.map +1 -1
  417. package/dist/fonts/virtual-modules.d.ts +77 -0
  418. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  419. package/dist/index.d.ts +35 -153
  420. package/dist/index.d.ts.map +1 -1
  421. package/dist/index.js +10488 -13975
  422. package/dist/index.js.map +1 -1
  423. package/dist/params/codec-registry.d.ts +26 -0
  424. package/dist/params/codec-registry.d.ts.map +1 -0
  425. package/dist/params/define-schema.d.ts +81 -0
  426. package/dist/params/define-schema.d.ts.map +1 -0
  427. package/dist/params/index.d.ts +5 -0
  428. package/dist/params/index.d.ts.map +1 -0
  429. package/dist/params/index.js +34 -0
  430. package/dist/params/index.js.map +1 -0
  431. package/dist/params/resolve-schema.d.ts +34 -0
  432. package/dist/params/resolve-schema.d.ts.map +1 -0
  433. package/dist/plugin-context.d.ts +276 -0
  434. package/dist/plugin-context.d.ts.map +1 -0
  435. package/dist/plugins/adapter-build.d.ts +21 -1
  436. package/dist/plugins/adapter-build.d.ts.map +1 -1
  437. package/dist/plugins/build-manifest.d.ts +7 -3
  438. package/dist/plugins/build-manifest.d.ts.map +1 -1
  439. package/dist/plugins/build-report.d.ts +54 -7
  440. package/dist/plugins/build-report.d.ts.map +1 -1
  441. package/dist/plugins/cache.d.ts +64 -0
  442. package/dist/plugins/cache.d.ts.map +1 -0
  443. package/dist/plugins/callsite-ast.d.ts +117 -0
  444. package/dist/plugins/callsite-ast.d.ts.map +1 -0
  445. package/dist/plugins/callsite-jsx.d.ts +35 -0
  446. package/dist/plugins/callsite-jsx.d.ts.map +1 -0
  447. package/dist/plugins/chunks.d.ts +11 -4
  448. package/dist/plugins/chunks.d.ts.map +1 -1
  449. package/dist/plugins/client-chunks.d.ts +40 -0
  450. package/dist/plugins/client-chunks.d.ts.map +1 -0
  451. package/dist/plugins/cloudflare-wasm.d.ts +21 -0
  452. package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
  453. package/dist/plugins/content.d.ts +1 -1
  454. package/dist/plugins/content.d.ts.map +1 -1
  455. package/dist/plugins/dev-discovery.d.ts +123 -0
  456. package/dist/plugins/dev-discovery.d.ts.map +1 -0
  457. package/dist/plugins/dev-server.d.ts +17 -1
  458. package/dist/plugins/dev-server.d.ts.map +1 -1
  459. package/dist/plugins/entries.d.ts +32 -1
  460. package/dist/plugins/entries.d.ts.map +1 -1
  461. package/dist/plugins/fonts.d.ts +16 -65
  462. package/dist/plugins/fonts.d.ts.map +1 -1
  463. package/dist/plugins/graph-endpoint.d.ts +112 -0
  464. package/dist/plugins/graph-endpoint.d.ts.map +1 -0
  465. package/dist/plugins/mdx.d.ts +24 -5
  466. package/dist/plugins/mdx.d.ts.map +1 -1
  467. package/dist/plugins/prebuilt-capture.d.ts +60 -0
  468. package/dist/plugins/prebuilt-capture.d.ts.map +1 -0
  469. package/dist/plugins/prebuilt-options-analysis.d.ts +40 -0
  470. package/dist/plugins/prebuilt-options-analysis.d.ts.map +1 -0
  471. package/dist/plugins/prebuilt.d.ts +82 -0
  472. package/dist/plugins/prebuilt.d.ts.map +1 -0
  473. package/dist/plugins/prerender-sugar.d.ts +39 -0
  474. package/dist/plugins/prerender-sugar.d.ts.map +1 -0
  475. package/dist/plugins/request-dep/analysis.d.ts +106 -0
  476. package/dist/plugins/request-dep/analysis.d.ts.map +1 -0
  477. package/dist/plugins/request-dep/index.d.ts +75 -0
  478. package/dist/plugins/request-dep/index.d.ts.map +1 -0
  479. package/dist/plugins/request-dep/origin.d.ts +61 -0
  480. package/dist/plugins/request-dep/origin.d.ts.map +1 -0
  481. package/dist/plugins/routing.d.ts +1 -1
  482. package/dist/plugins/routing.d.ts.map +1 -1
  483. package/dist/plugins/server-bundle.d.ts.map +1 -1
  484. package/dist/plugins/shims.d.ts +29 -5
  485. package/dist/plugins/shims.d.ts.map +1 -1
  486. package/dist/plugins/static-build.d.ts +218 -21
  487. package/dist/plugins/static-build.d.ts.map +1 -1
  488. package/dist/routing/codegen-shared.d.ts +26 -0
  489. package/dist/routing/codegen-shared.d.ts.map +1 -0
  490. package/dist/routing/codegen-types.d.ts +61 -0
  491. package/dist/routing/codegen-types.d.ts.map +1 -0
  492. package/dist/routing/codegen-write.d.ts +51 -0
  493. package/dist/routing/codegen-write.d.ts.map +1 -0
  494. package/dist/routing/codegen.d.ts +8 -3
  495. package/dist/routing/codegen.d.ts.map +1 -1
  496. package/dist/routing/collision-probe.d.ts +104 -0
  497. package/dist/routing/collision-probe.d.ts.map +1 -0
  498. package/dist/routing/collision-spaces.d.ts +26 -0
  499. package/dist/routing/collision-spaces.d.ts.map +1 -0
  500. package/dist/routing/convention-lint.d.ts +55 -0
  501. package/dist/routing/convention-lint.d.ts.map +1 -0
  502. package/dist/routing/export-detect.d.ts +72 -0
  503. package/dist/routing/export-detect.d.ts.map +1 -0
  504. package/dist/routing/file-cache.d.ts +8 -0
  505. package/dist/routing/file-cache.d.ts.map +1 -0
  506. package/dist/routing/index.d.ts +13 -7
  507. package/dist/routing/index.d.ts.map +1 -1
  508. package/dist/routing/index.js +5 -2
  509. package/dist/routing/interception-overlap.d.ts +35 -0
  510. package/dist/routing/interception-overlap.d.ts.map +1 -0
  511. package/dist/routing/interception.d.ts +234 -10
  512. package/dist/routing/interception.d.ts.map +1 -1
  513. package/dist/routing/link-codegen.d.ts +105 -0
  514. package/dist/routing/link-codegen.d.ts.map +1 -0
  515. package/dist/routing/manifest-codegen.d.ts +26 -0
  516. package/dist/routing/manifest-codegen.d.ts.map +1 -0
  517. package/dist/routing/scanner.d.ts +14 -10
  518. package/dist/routing/scanner.d.ts.map +1 -1
  519. package/dist/routing/schema-validation.d.ts +35 -0
  520. package/dist/routing/schema-validation.d.ts.map +1 -0
  521. package/dist/routing/segment-classify.d.ts +114 -0
  522. package/dist/routing/segment-classify.d.ts.map +1 -0
  523. package/dist/routing/segment-codegen.d.ts +38 -0
  524. package/dist/routing/segment-codegen.d.ts.map +1 -0
  525. package/dist/routing/segment-keys.d.ts +118 -0
  526. package/dist/routing/segment-keys.d.ts.map +1 -0
  527. package/dist/routing/slot-placement.d.ts +48 -0
  528. package/dist/routing/slot-placement.d.ts.map +1 -0
  529. package/dist/routing/types.d.ts +74 -26
  530. package/dist/routing/types.d.ts.map +1 -1
  531. package/dist/routing/walkers.d.ts +57 -0
  532. package/dist/routing/walkers.d.ts.map +1 -0
  533. package/dist/rsc-runtime/rsc.d.ts +1 -1
  534. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  535. package/dist/rsc-runtime/ssr.d.ts +14 -0
  536. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  537. package/dist/rsc-runtime/transforms.d.ts +13 -0
  538. package/dist/rsc-runtime/transforms.d.ts.map +1 -0
  539. package/dist/schema-bridge.d.ts +145 -0
  540. package/dist/schema-bridge.d.ts.map +1 -0
  541. package/dist/search-params/define.d.ts +262 -0
  542. package/dist/search-params/define.d.ts.map +1 -0
  543. package/dist/search-params/index.d.ts +3 -7
  544. package/dist/search-params/index.d.ts.map +1 -1
  545. package/dist/search-params/index.js +179 -360
  546. package/dist/search-params/index.js.map +1 -1
  547. package/dist/search-params/parse-total.d.ts +81 -0
  548. package/dist/search-params/parse-total.d.ts.map +1 -0
  549. package/dist/search-params/serialize-equal.d.ts +9 -0
  550. package/dist/search-params/serialize-equal.d.ts.map +1 -0
  551. package/dist/search-params/wrappers.d.ts +76 -0
  552. package/dist/search-params/wrappers.d.ts.map +1 -0
  553. package/dist/server/access-gate.d.ts +98 -10
  554. package/dist/server/access-gate.d.ts.map +1 -1
  555. package/dist/server/action-client.d.ts +42 -7
  556. package/dist/server/action-client.d.ts.map +1 -1
  557. package/dist/server/action-encryption.d.ts +76 -0
  558. package/dist/server/action-encryption.d.ts.map +1 -0
  559. package/dist/server/action-handler.d.ts +39 -5
  560. package/dist/server/action-handler.d.ts.map +1 -1
  561. package/dist/server/actions.d.ts +29 -35
  562. package/dist/server/actions.d.ts.map +1 -1
  563. package/dist/server/als-registry.d.ts +117 -13
  564. package/dist/server/als-registry.d.ts.map +1 -1
  565. package/dist/server/asset-headers.d.ts +8 -18
  566. package/dist/server/asset-headers.d.ts.map +1 -1
  567. package/dist/server/body-limits.d.ts.map +1 -1
  568. package/dist/server/build-manifest.d.ts +25 -30
  569. package/dist/server/build-manifest.d.ts.map +1 -1
  570. package/dist/server/canonicalize.d.ts +10 -0
  571. package/dist/server/canonicalize.d.ts.map +1 -1
  572. package/dist/server/chain-url-parts.d.ts +82 -0
  573. package/dist/server/chain-url-parts.d.ts.map +1 -0
  574. package/dist/server/children-interception.d.ts +49 -0
  575. package/dist/server/children-interception.d.ts.map +1 -0
  576. package/dist/server/coalesce-tick.d.ts +40 -0
  577. package/dist/server/coalesce-tick.d.ts.map +1 -0
  578. package/dist/server/compress.d.ts.map +1 -1
  579. package/dist/server/cookie-context.d.ts +170 -0
  580. package/dist/server/cookie-context.d.ts.map +1 -0
  581. package/dist/server/cookie-parsing.d.ts +65 -0
  582. package/dist/server/cookie-parsing.d.ts.map +1 -0
  583. package/dist/server/csp-nonce.d.ts +45 -0
  584. package/dist/server/csp-nonce.d.ts.map +1 -0
  585. package/dist/server/csrf.d.ts +3 -2
  586. package/dist/server/csrf.d.ts.map +1 -1
  587. package/dist/server/debug.d.ts +82 -0
  588. package/dist/server/debug.d.ts.map +1 -0
  589. package/dist/server/default-logger.d.ts +22 -0
  590. package/dist/server/default-logger.d.ts.map +1 -0
  591. package/dist/server/default-status-page.d.ts +45 -0
  592. package/dist/server/default-status-page.d.ts.map +1 -0
  593. package/dist/server/deny-boundary.d.ts +253 -0
  594. package/dist/server/deny-boundary.d.ts.map +1 -0
  595. package/dist/server/deny-renderer.d.ts +20 -9
  596. package/dist/server/deny-renderer.d.ts.map +1 -1
  597. package/dist/server/dev-source-map.d.ts +22 -0
  598. package/dist/server/dev-source-map.d.ts.map +1 -0
  599. package/dist/server/early-hints-sender.d.ts.map +1 -1
  600. package/dist/server/early-hints.d.ts +14 -12
  601. package/dist/server/early-hints.d.ts.map +1 -1
  602. package/dist/server/error-boundary-wrapper.d.ts +101 -10
  603. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  604. package/dist/server/error-response-headers.d.ts +3 -0
  605. package/dist/server/error-response-headers.d.ts.map +1 -0
  606. package/dist/server/fallback-error.d.ts +12 -7
  607. package/dist/server/fallback-error.d.ts.map +1 -1
  608. package/dist/server/flight-injection-state.d.ts +66 -0
  609. package/dist/server/flight-injection-state.d.ts.map +1 -0
  610. package/dist/server/flight-scripts.d.ts +45 -0
  611. package/dist/server/flight-scripts.d.ts.map +1 -0
  612. package/dist/server/form-data.d.ts +41 -0
  613. package/dist/server/form-data.d.ts.map +1 -1
  614. package/dist/server/form-flash.d.ts +1 -1
  615. package/dist/server/head-response.d.ts +35 -0
  616. package/dist/server/head-response.d.ts.map +1 -0
  617. package/dist/server/html-injector-core.d.ts +257 -0
  618. package/dist/server/html-injector-core.d.ts.map +1 -0
  619. package/dist/server/html-injectors.d.ts +84 -42
  620. package/dist/server/html-injectors.d.ts.map +1 -1
  621. package/dist/server/index.d.ts +18 -54
  622. package/dist/server/index.d.ts.map +1 -1
  623. package/dist/server/index.js +212 -2930
  624. package/dist/server/index.js.map +1 -1
  625. package/dist/server/instrumentation.d.ts +1 -1
  626. package/dist/server/internal.d.ts +50 -0
  627. package/dist/server/internal.d.ts.map +1 -0
  628. package/dist/server/internal.js +4034 -0
  629. package/dist/server/internal.js.map +1 -0
  630. package/dist/server/logger.d.ts +39 -7
  631. package/dist/server/logger.d.ts.map +1 -1
  632. package/dist/server/metadata-collector.d.ts +71 -0
  633. package/dist/server/metadata-collector.d.ts.map +1 -0
  634. package/dist/server/metadata-platform.d.ts +2 -2
  635. package/dist/server/metadata-render.d.ts +2 -2
  636. package/dist/server/metadata-render.d.ts.map +1 -1
  637. package/dist/server/metadata-routes.d.ts +60 -11
  638. package/dist/server/metadata-routes.d.ts.map +1 -1
  639. package/dist/server/metadata-social.d.ts +2 -2
  640. package/dist/server/metadata.d.ts +10 -2
  641. package/dist/server/metadata.d.ts.map +1 -1
  642. package/dist/server/middleware-runner.d.ts +20 -5
  643. package/dist/server/middleware-runner.d.ts.map +1 -1
  644. package/dist/server/node-stream-transforms.d.ts +105 -0
  645. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  646. package/dist/server/nuqs-ssr-provider.d.ts +7 -3
  647. package/dist/server/nuqs-ssr-provider.d.ts.map +1 -1
  648. package/dist/server/param-coercion.d.ts +78 -0
  649. package/dist/server/param-coercion.d.ts.map +1 -0
  650. package/dist/server/pipeline-helpers.d.ts +77 -0
  651. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  652. package/dist/server/pipeline-interception.d.ts +59 -9
  653. package/dist/server/pipeline-interception.d.ts.map +1 -1
  654. package/dist/server/pipeline-metadata.d.ts +7 -1
  655. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  656. package/dist/server/pipeline-outcome.d.ts +49 -0
  657. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  658. package/dist/server/pipeline-phases.d.ts +70 -0
  659. package/dist/server/pipeline-phases.d.ts.map +1 -0
  660. package/dist/server/pipeline.d.ts +160 -24
  661. package/dist/server/pipeline.d.ts.map +1 -1
  662. package/dist/server/port-resolution.d.ts +31 -0
  663. package/dist/server/port-resolution.d.ts.map +1 -0
  664. package/dist/server/prebuilt/cache-key.d.ts +63 -0
  665. package/dist/server/prebuilt/cache-key.d.ts.map +1 -0
  666. package/dist/server/prebuilt/capture-state.d.ts +57 -0
  667. package/dist/server/prebuilt/capture-state.d.ts.map +1 -0
  668. package/dist/server/prebuilt/key-discipline.d.ts +52 -0
  669. package/dist/server/prebuilt/key-discipline.d.ts.map +1 -0
  670. package/dist/server/prebuilt/manifest-tag-index.d.ts +27 -0
  671. package/dist/server/prebuilt/manifest-tag-index.d.ts.map +1 -0
  672. package/dist/server/prebuilt/overlay.d.ts +100 -0
  673. package/dist/server/prebuilt/overlay.d.ts.map +1 -0
  674. package/dist/server/prebuilt/payload-source.d.ts +79 -0
  675. package/dist/server/prebuilt/payload-source.d.ts.map +1 -0
  676. package/dist/server/prebuilt/slots.d.ts +99 -0
  677. package/dist/server/prebuilt/slots.d.ts.map +1 -0
  678. package/dist/server/prebuilt/synthetic-store.d.ts +67 -0
  679. package/dist/server/prebuilt/synthetic-store.d.ts.map +1 -0
  680. package/dist/server/prebuilt-builder.d.ts +121 -0
  681. package/dist/server/prebuilt-builder.d.ts.map +1 -0
  682. package/dist/server/prebuilt-runtime.d.ts +111 -0
  683. package/dist/server/prebuilt-runtime.d.ts.map +1 -0
  684. package/dist/server/primitives.d.ts +129 -45
  685. package/dist/server/primitives.d.ts.map +1 -1
  686. package/dist/server/publish-params.d.ts +33 -0
  687. package/dist/server/publish-params.d.ts.map +1 -0
  688. package/dist/server/render-timeout.d.ts +51 -0
  689. package/dist/server/render-timeout.d.ts.map +1 -0
  690. package/dist/server/render-utils.d.ts +26 -0
  691. package/dist/server/render-utils.d.ts.map +1 -0
  692. package/dist/server/request-context.d.ts +111 -107
  693. package/dist/server/request-context.d.ts.map +1 -1
  694. package/dist/server/request-dep.d.ts +15 -0
  695. package/dist/server/request-dep.d.ts.map +1 -0
  696. package/dist/server/response-cache-policy.d.ts +3 -0
  697. package/dist/server/response-cache-policy.d.ts.map +1 -0
  698. package/dist/server/route-element-builder.d.ts +57 -30
  699. package/dist/server/route-element-builder.d.ts.map +1 -1
  700. package/dist/server/route-element-helpers.d.ts +12 -0
  701. package/dist/server/route-element-helpers.d.ts.map +1 -0
  702. package/dist/server/route-handler.d.ts +1 -1
  703. package/dist/server/route-handler.d.ts.map +1 -1
  704. package/dist/server/route-matcher.d.ts +40 -38
  705. package/dist/server/route-matcher.d.ts.map +1 -1
  706. package/dist/server/route-module-loader.d.ts +37 -0
  707. package/dist/server/route-module-loader.d.ts.map +1 -0
  708. package/dist/server/rsc-cache-key-guard.d.ts +78 -0
  709. package/dist/server/rsc-cache-key-guard.d.ts.map +1 -0
  710. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  711. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  712. package/dist/server/rsc-entry/api-handler.d.ts +12 -3
  713. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  714. package/dist/server/rsc-entry/deny-fallback.d.ts +29 -0
  715. package/dist/server/rsc-entry/deny-fallback.d.ts.map +1 -0
  716. package/dist/server/rsc-entry/error-renderer.d.ts +38 -13
  717. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  718. package/dist/server/rsc-entry/helpers.d.ts +59 -42
  719. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  720. package/dist/server/rsc-entry/index.d.ts +40 -6
  721. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  722. package/dist/server/rsc-entry/render-route.d.ts +51 -0
  723. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  724. package/dist/server/rsc-entry/revalidate-renderer.d.ts +108 -0
  725. package/dist/server/rsc-entry/revalidate-renderer.d.ts.map +1 -0
  726. package/dist/server/rsc-entry/rsc-payload.d.ts +26 -6
  727. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  728. package/dist/server/rsc-entry/rsc-stream.d.ts +39 -3
  729. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  730. package/dist/server/rsc-entry/ssr-bridge.d.ts +5 -1
  731. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  732. package/dist/server/rsc-entry/ssr-renderer.d.ts +37 -5
  733. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  734. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +89 -0
  735. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  736. package/dist/server/rsc-error-envelope.d.ts +11 -0
  737. package/dist/server/rsc-error-envelope.d.ts.map +1 -0
  738. package/dist/server/rsc-prop-warnings.d.ts.map +1 -1
  739. package/dist/server/safe-load.d.ts +46 -0
  740. package/dist/server/safe-load.d.ts.map +1 -0
  741. package/dist/server/sensitive-fields.d.ts +74 -0
  742. package/dist/server/sensitive-fields.d.ts.map +1 -0
  743. package/dist/server/sitemap-generator.d.ts +130 -0
  744. package/dist/server/sitemap-generator.d.ts.map +1 -0
  745. package/dist/server/sitemap-handler.d.ts +22 -0
  746. package/dist/server/sitemap-handler.d.ts.map +1 -0
  747. package/dist/server/skippable-prefix.d.ts +29 -0
  748. package/dist/server/skippable-prefix.d.ts.map +1 -0
  749. package/dist/server/slot-interception.d.ts +80 -0
  750. package/dist/server/slot-interception.d.ts.map +1 -0
  751. package/dist/server/slot-resolver.d.ts +137 -7
  752. package/dist/server/slot-resolver.d.ts.map +1 -1
  753. package/dist/server/slot-subtree-contain.d.ts +54 -0
  754. package/dist/server/slot-subtree-contain.d.ts.map +1 -0
  755. package/dist/server/ssr-bridge-types.d.ts +160 -0
  756. package/dist/server/ssr-bridge-types.d.ts.map +1 -0
  757. package/dist/server/ssr-entry.d.ts +1 -43
  758. package/dist/server/ssr-entry.d.ts.map +1 -1
  759. package/dist/server/ssr-render.d.ts +69 -22
  760. package/dist/server/ssr-render.d.ts.map +1 -1
  761. package/dist/server/ssr-wrappers.d.ts +93 -0
  762. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  763. package/dist/server/state-tree-diff.d.ts +44 -9
  764. package/dist/server/state-tree-diff.d.ts.map +1 -1
  765. package/dist/server/static-generator.d.ts +112 -0
  766. package/dist/server/static-generator.d.ts.map +1 -0
  767. package/dist/server/static-not-found.d.ts +52 -0
  768. package/dist/server/static-not-found.d.ts.map +1 -0
  769. package/dist/server/status-code-resolver.d.ts +26 -15
  770. package/dist/server/status-code-resolver.d.ts.map +1 -1
  771. package/dist/server/stream-utils.d.ts +47 -0
  772. package/dist/server/stream-utils.d.ts.map +1 -0
  773. package/dist/server/tracing.d.ts +56 -11
  774. package/dist/server/tracing.d.ts.map +1 -1
  775. package/dist/server/tree-match.d.ts +49 -0
  776. package/dist/server/tree-match.d.ts.map +1 -0
  777. package/dist/server/types.d.ts +88 -7
  778. package/dist/server/types.d.ts.map +1 -1
  779. package/dist/server/utils/element-type.d.ts +50 -0
  780. package/dist/server/utils/element-type.d.ts.map +1 -0
  781. package/dist/server/utils/escape-html.d.ts +14 -0
  782. package/dist/server/utils/escape-html.d.ts.map +1 -0
  783. package/dist/server/utils/mdx-file.d.ts +17 -0
  784. package/dist/server/utils/mdx-file.d.ts.map +1 -0
  785. package/dist/server/version-skew.d.ts +61 -0
  786. package/dist/server/version-skew.d.ts.map +1 -0
  787. package/dist/server/waituntil-bridge.d.ts.map +1 -1
  788. package/dist/server/workers-cache-bridge.d.ts +26 -0
  789. package/dist/server/workers-cache-bridge.d.ts.map +1 -0
  790. package/dist/shared/als-slots.d.ts +42 -0
  791. package/dist/shared/als-slots.d.ts.map +1 -0
  792. package/dist/shared/base-path.d.ts +56 -0
  793. package/dist/shared/base-path.d.ts.map +1 -0
  794. package/dist/shared/href-validation.d.ts +49 -0
  795. package/dist/shared/href-validation.d.ts.map +1 -0
  796. package/dist/shared/merge-search-params.d.ts +22 -0
  797. package/dist/shared/merge-search-params.d.ts.map +1 -0
  798. package/dist/shared/param-value.d.ts +104 -0
  799. package/dist/shared/param-value.d.ts.map +1 -0
  800. package/dist/shared/payload-root.d.ts +109 -0
  801. package/dist/shared/payload-root.d.ts.map +1 -0
  802. package/dist/shared/redirect-type.d.ts +17 -0
  803. package/dist/shared/redirect-type.d.ts.map +1 -0
  804. package/dist/shared/rsc-cache-key.d.ts +163 -0
  805. package/dist/shared/rsc-cache-key.d.ts.map +1 -0
  806. package/dist/shared/rsc-error-envelope.d.ts +16 -0
  807. package/dist/shared/rsc-error-envelope.d.ts.map +1 -0
  808. package/dist/shared/rsc-manifest.d.ts +28 -0
  809. package/dist/shared/rsc-manifest.d.ts.map +1 -0
  810. package/dist/shared/rsc-media-type.d.ts +52 -0
  811. package/dist/shared/rsc-media-type.d.ts.map +1 -0
  812. package/dist/shared/rsc-payload-path.d.ts +42 -0
  813. package/dist/shared/rsc-payload-path.d.ts.map +1 -0
  814. package/dist/shared/segment-info.d.ts +66 -0
  815. package/dist/shared/segment-info.d.ts.map +1 -0
  816. package/dist/shared/slot-params.d.ts +52 -0
  817. package/dist/shared/slot-params.d.ts.map +1 -0
  818. package/dist/shared/static-platform-files.d.ts +71 -0
  819. package/dist/shared/static-platform-files.d.ts.map +1 -0
  820. package/dist/shared/status-reason-phrase.d.ts +26 -0
  821. package/dist/shared/status-reason-phrase.d.ts.map +1 -0
  822. package/dist/shims/font-google.d.ts +1 -1
  823. package/dist/shims/font-google.d.ts.map +1 -1
  824. package/dist/shims/font-google.js +42 -0
  825. package/dist/shims/font-google.js.map +1 -0
  826. package/dist/shims/font-local.d.ts +26 -0
  827. package/dist/shims/font-local.d.ts.map +1 -0
  828. package/dist/shims/font-local.js +20 -0
  829. package/dist/shims/font-local.js.map +1 -0
  830. package/dist/shims/headers.d.ts +53 -1
  831. package/dist/shims/headers.d.ts.map +1 -1
  832. package/dist/shims/image.d.ts +120 -120
  833. package/dist/shims/image.d.ts.map +1 -1
  834. package/dist/shims/navigation-client.d.ts +25 -12
  835. package/dist/shims/navigation-client.d.ts.map +1 -1
  836. package/dist/shims/navigation-rsc.d.ts +21 -0
  837. package/dist/shims/navigation-rsc.d.ts.map +1 -0
  838. package/dist/shims/navigation.d.ts +10 -5
  839. package/dist/shims/navigation.d.ts.map +1 -1
  840. package/dist/utils/state-machine.d.ts +80 -0
  841. package/dist/utils/state-machine.d.ts.map +1 -0
  842. package/docs/api/30-api-server.mdx +236 -0
  843. package/docs/api/31-api-client.mdx +167 -0
  844. package/docs/api/32-api-cache.mdx +311 -0
  845. package/docs/api/33-api-search-params.mdx +176 -0
  846. package/docs/api/34-api-config.mdx +329 -0
  847. package/docs/api/35-api-typescript.mdx +91 -0
  848. package/docs/api/36-cli.mdx +192 -0
  849. package/docs/learn/00-introduction.mdx +109 -0
  850. package/docs/learn/01-quick-start.mdx +94 -0
  851. package/docs/learn/02-pages-and-layouts.mdx +147 -0
  852. package/docs/learn/03-fetching-data.mdx +211 -0
  853. package/docs/learn/04-access-control.mdx +115 -0
  854. package/docs/learn/05-the-flush-point.mdx +175 -0
  855. package/docs/learn/06-typed-params.mdx +275 -0
  856. package/docs/learn/07-typed-routes.mdx +108 -0
  857. package/docs/learn/08-forms-and-actions.mdx +146 -0
  858. package/docs/learn/09-streaming.mdx +140 -0
  859. package/docs/learn/10-caching.mdx +252 -0
  860. package/docs/learn/11-middleware.mdx +158 -0
  861. package/docs/learn/12-error-handling.mdx +188 -0
  862. package/docs/learn/13-deploying.mdx +287 -0
  863. package/llms.txt +55 -0
  864. package/package.json +117 -29
  865. package/src/adapters/build-output-helper.ts +351 -0
  866. package/src/adapters/cloudflare-dev.ts +183 -0
  867. package/src/adapters/cloudflare-kv-cache.ts +207 -0
  868. package/src/adapters/cloudflare.ts +747 -130
  869. package/src/adapters/compress-module.ts +101 -88
  870. package/src/adapters/fs-identity.ts +156 -0
  871. package/src/adapters/nitro-presets.ts +139 -0
  872. package/src/adapters/nitro-preview.ts +340 -0
  873. package/src/adapters/nitro.ts +279 -418
  874. package/src/adapters/raw-imports.d.ts +5 -0
  875. package/src/adapters/shared.ts +274 -0
  876. package/src/adapters/types.ts +28 -7
  877. package/src/adapters/wrangler.d.ts +7 -0
  878. package/src/analyze/chains.ts +411 -0
  879. package/src/analyze/classify.ts +258 -0
  880. package/src/analyze/crawl-entry.ts +68 -0
  881. package/src/analyze/crawl.ts +500 -0
  882. package/src/analyze/graph-cache.ts +332 -0
  883. package/src/analyze/graph-command.ts +762 -0
  884. package/src/analyze/live-graph.ts +232 -0
  885. package/src/analyze/poison-rules.ts +165 -0
  886. package/src/analyze/poison-scan.ts +162 -0
  887. package/src/analyze/scan.ts +149 -0
  888. package/src/cache/cache-api.ts +107 -0
  889. package/src/cache/fast-hash.ts +39 -0
  890. package/src/cache/handler-store.ts +76 -0
  891. package/src/cache/index.ts +115 -22
  892. package/src/cache/invalidation-epoch.ts +93 -0
  893. package/src/cache/json-lossy-check.ts +75 -0
  894. package/src/cache/redis-handler.ts +198 -20
  895. package/src/cache/singleflight.ts +69 -6
  896. package/src/cache/sizeof.ts +33 -0
  897. package/src/cache/stable-stringify.ts +65 -2
  898. package/src/cache/store.ts +71 -0
  899. package/src/cache/stores/cloudflare-kv.ts +52 -0
  900. package/src/cache/stores/memory.ts +125 -0
  901. package/src/cache/stores/redis.ts +97 -0
  902. package/src/cache/stores/vercel.ts +59 -0
  903. package/src/cache/tag-aware-handler.ts +237 -0
  904. package/src/cache/timber-cache.ts +180 -48
  905. package/src/cdn/cloudflare-purge.ts +50 -0
  906. package/src/cdn/fastly-purge.ts +63 -0
  907. package/src/cdn/headers.ts +153 -0
  908. package/src/cdn/index.ts +23 -0
  909. package/src/cdn/purge-store.ts +34 -0
  910. package/src/cdn/workers-cache-purge.ts +34 -0
  911. package/src/cli-check.ts +507 -0
  912. package/src/cli-schema-sync.ts +401 -0
  913. package/src/cli.ts +262 -55
  914. package/src/client/browser-dev.ts +157 -2
  915. package/src/client/browser-entry/action-dispatch.ts +197 -0
  916. package/src/client/browser-entry/action-queue.ts +90 -0
  917. package/src/client/browser-entry/hmr.ts +70 -0
  918. package/src/client/browser-entry/hydrate.ts +148 -0
  919. package/src/client/browser-entry/index.ts +131 -0
  920. package/src/client/browser-entry/post-hydration.ts +123 -0
  921. package/src/client/browser-entry/router-init.ts +418 -0
  922. package/src/client/browser-entry/rsc-stream.ts +166 -0
  923. package/src/client/browser-entry/scroll.ts +50 -0
  924. package/src/client/deny-last-resort.tsx +54 -0
  925. package/src/client/error-boundary.tsx +316 -40
  926. package/src/client/error-reconstituter.tsx +79 -0
  927. package/src/client/form.tsx +36 -32
  928. package/src/client/global-context.ts +31 -0
  929. package/src/client/history.ts +81 -10
  930. package/src/client/index.ts +89 -53
  931. package/src/client/internal.ts +59 -0
  932. package/src/client/link.tsx +452 -159
  933. package/src/client/location-search.ts +15 -0
  934. package/src/client/navigation-api.ts +347 -0
  935. package/src/client/navigation-commit.ts +295 -0
  936. package/src/client/navigation-context.ts +67 -98
  937. package/src/client/navigation-root.tsx +224 -0
  938. package/src/client/navigation-transition.ts +327 -0
  939. package/src/client/nuqs-adapter.tsx +21 -9
  940. package/src/client/params-context.ts +187 -0
  941. package/src/client/react-root.ts +72 -0
  942. package/src/client/router-effects.ts +228 -0
  943. package/src/client/router-lifecycle.ts +354 -0
  944. package/src/client/router-pipeline.ts +490 -0
  945. package/src/client/router-ref.ts +3 -3
  946. package/src/client/router-skew.ts +30 -0
  947. package/src/client/router-types.ts +294 -0
  948. package/src/client/router.ts +436 -424
  949. package/src/client/rsc-fetch.ts +512 -73
  950. package/src/client/segment-cache.ts +327 -40
  951. package/src/client/segment-context.ts +13 -5
  952. package/src/client/segment-outlet.tsx +96 -0
  953. package/src/client/segment-update-context.ts +23 -0
  954. package/src/client/shallow-url.ts +22 -0
  955. package/src/client/slot-content-cache-context.ts +43 -0
  956. package/src/client/slot-context.ts +50 -0
  957. package/src/client/slot-outlet.tsx +22 -0
  958. package/src/client/slot-provider.tsx +32 -0
  959. package/src/client/ssr-data.ts +30 -9
  960. package/src/client/stale-client.ts +191 -0
  961. package/src/client/state.ts +29 -15
  962. package/src/client/status-page-marker.tsx +32 -0
  963. package/src/client/top-loader.tsx +36 -29
  964. package/src/client/unload-guard.ts +35 -3
  965. package/src/client/use-cookie.ts +70 -18
  966. package/src/client/use-link-status.ts +7 -7
  967. package/src/client/use-pathname.ts +22 -31
  968. package/src/client/use-pending-navigation.ts +40 -0
  969. package/src/client/use-query-states.ts +206 -36
  970. package/src/client/use-router.ts +6 -3
  971. package/src/client/use-search-params.ts +38 -49
  972. package/src/client/use-segment-params.ts +69 -0
  973. package/src/client/use-selected-layout-segment.ts +2 -2
  974. package/src/codec.ts +149 -0
  975. package/src/config-types.ts +322 -0
  976. package/src/config-validation.ts +347 -0
  977. package/src/cookies/define-cookie.ts +222 -53
  978. package/src/cookies/index.ts +13 -2
  979. package/src/cookies/json-cookie.ts +105 -0
  980. package/src/cookies/validation.ts +192 -0
  981. package/src/dev-tools/404-page.ts +286 -0
  982. package/src/dev-tools/browser-logs.ts +55 -0
  983. package/src/dev-tools/dev-page-shell.ts +260 -0
  984. package/src/dev-tools/error-page.ts +331 -0
  985. package/src/dev-tools/holding-server.ts +185 -0
  986. package/src/dev-tools/hydration-overlay.ts +158 -0
  987. package/src/dev-tools/index.ts +83 -0
  988. package/src/dev-tools/instrumentation.ts +213 -0
  989. package/src/{server/dev-logger.ts → dev-tools/logger.ts} +33 -51
  990. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +122 -26
  991. package/src/dev-tools/overlay.ts +469 -0
  992. package/src/dev-tools/stack-classifier.ts +75 -0
  993. package/src/dev-tools/terminal.ts +182 -0
  994. package/src/fonts/ast-walk.ts +235 -0
  995. package/src/fonts/ast.ts +479 -128
  996. package/src/fonts/bundle.ts +138 -0
  997. package/src/fonts/css.ts +3 -2
  998. package/src/fonts/dev-middleware.ts +85 -0
  999. package/src/fonts/fallbacks.ts +0 -23
  1000. package/src/fonts/google.ts +101 -19
  1001. package/src/fonts/local.ts +13 -8
  1002. package/src/fonts/paths.ts +58 -0
  1003. package/src/fonts/pipeline.ts +348 -0
  1004. package/src/fonts/transform.ts +311 -0
  1005. package/src/fonts/types.ts +52 -1
  1006. package/src/fonts/virtual-modules.ts +179 -0
  1007. package/src/index.ts +486 -344
  1008. package/src/params/codec-registry.ts +34 -0
  1009. package/src/params/define-schema.ts +115 -0
  1010. package/src/params/index.ts +17 -0
  1011. package/src/params/resolve-schema.ts +84 -0
  1012. package/src/plugin-context.ts +503 -0
  1013. package/src/plugins/adapter-build.ts +229 -7
  1014. package/src/plugins/build-manifest.ts +201 -26
  1015. package/src/plugins/build-report.ts +275 -43
  1016. package/src/plugins/cache.ts +243 -0
  1017. package/src/plugins/callsite-ast.ts +472 -0
  1018. package/src/plugins/callsite-jsx.ts +243 -0
  1019. package/src/plugins/chunks.ts +74 -5
  1020. package/src/plugins/client-chunks.ts +185 -0
  1021. package/src/plugins/cloudflare-wasm.ts +141 -0
  1022. package/src/plugins/content.ts +5 -1
  1023. package/src/plugins/dev-discovery.ts +218 -0
  1024. package/src/plugins/dev-server.ts +369 -96
  1025. package/src/plugins/entries.ts +148 -18
  1026. package/src/plugins/fonts.ts +251 -524
  1027. package/src/plugins/graph-endpoint.ts +532 -0
  1028. package/src/plugins/mdx.ts +116 -40
  1029. package/src/plugins/prebuilt-capture.ts +217 -0
  1030. package/src/plugins/prebuilt-options-analysis.ts +175 -0
  1031. package/src/plugins/prebuilt.ts +655 -0
  1032. package/src/plugins/prerender-sugar.ts +320 -0
  1033. package/src/plugins/request-dep/analysis.ts +447 -0
  1034. package/src/plugins/request-dep/index.ts +376 -0
  1035. package/src/plugins/request-dep/origin.ts +310 -0
  1036. package/src/plugins/routing.ts +273 -277
  1037. package/src/plugins/server-bundle.ts +103 -14
  1038. package/src/plugins/shims.ts +259 -97
  1039. package/src/plugins/static-build.ts +708 -66
  1040. package/src/react-canary.d.ts +2 -0
  1041. package/src/routing/codegen-shared.ts +39 -0
  1042. package/src/routing/codegen-types.ts +62 -0
  1043. package/src/routing/codegen-write.ts +141 -0
  1044. package/src/routing/codegen.ts +349 -232
  1045. package/src/routing/collision-probe.ts +438 -0
  1046. package/src/routing/collision-spaces.ts +281 -0
  1047. package/src/routing/convention-lint.ts +623 -0
  1048. package/src/routing/export-detect.ts +448 -0
  1049. package/src/routing/file-cache.ts +23 -0
  1050. package/src/routing/index.ts +16 -7
  1051. package/src/routing/interception-overlap.ts +141 -0
  1052. package/src/routing/interception.ts +1044 -67
  1053. package/src/routing/link-codegen.ts +280 -0
  1054. package/src/routing/manifest-codegen.ts +226 -0
  1055. package/src/routing/scanner.ts +393 -219
  1056. package/src/routing/schema-validation.ts +155 -0
  1057. package/src/routing/segment-classify.ts +280 -0
  1058. package/src/routing/segment-codegen.ts +98 -0
  1059. package/src/routing/segment-keys.ts +186 -0
  1060. package/src/routing/slot-placement.ts +97 -0
  1061. package/src/routing/types.ts +75 -26
  1062. package/src/routing/walkers.ts +98 -0
  1063. package/src/rsc-runtime/rsc.ts +9 -0
  1064. package/src/rsc-runtime/ssr.ts +51 -0
  1065. package/src/rsc-runtime/transforms.ts +13 -0
  1066. package/src/rsc-runtime/vendor-types.d.ts +19 -0
  1067. package/src/schema-bridge.ts +380 -0
  1068. package/src/search-params/define.ts +677 -0
  1069. package/src/search-params/index.ts +14 -20
  1070. package/src/search-params/parse-total.ts +91 -0
  1071. package/src/search-params/serialize-equal.ts +14 -0
  1072. package/src/search-params/wrappers.ts +150 -0
  1073. package/src/server/access-gate.tsx +196 -57
  1074. package/src/server/action-client.ts +136 -35
  1075. package/src/server/action-encryption.ts +144 -0
  1076. package/src/server/action-handler.ts +256 -56
  1077. package/src/server/actions.ts +112 -68
  1078. package/src/server/als-registry.ts +160 -21
  1079. package/src/server/asset-headers.ts +15 -37
  1080. package/src/server/body-limits.ts +10 -2
  1081. package/src/server/build-manifest.ts +33 -57
  1082. package/src/server/canonicalize.ts +6 -3
  1083. package/src/server/chain-url-parts.ts +163 -0
  1084. package/src/server/children-interception.ts +115 -0
  1085. package/src/server/coalesce-tick.ts +75 -0
  1086. package/src/server/compress.ts +43 -8
  1087. package/src/server/cookie-context.ts +484 -0
  1088. package/src/server/cookie-parsing.ts +163 -0
  1089. package/src/server/csp-nonce.ts +70 -0
  1090. package/src/server/csrf.ts +39 -6
  1091. package/src/server/debug.ts +137 -0
  1092. package/src/server/default-logger.ts +99 -0
  1093. package/src/server/default-status-page.ts +88 -0
  1094. package/src/server/deny-boundary.ts +533 -0
  1095. package/src/server/deny-renderer.ts +214 -112
  1096. package/src/server/dev-source-map.ts +31 -0
  1097. package/src/server/early-hints-sender.ts +4 -3
  1098. package/src/server/early-hints.ts +39 -29
  1099. package/src/server/error-boundary-wrapper.ts +181 -44
  1100. package/src/server/error-response-headers.ts +18 -0
  1101. package/src/server/fallback-error.ts +79 -102
  1102. package/src/server/flight-injection-state.ts +113 -0
  1103. package/src/server/flight-scripts.ts +67 -0
  1104. package/src/server/form-data.ts +124 -12
  1105. package/src/server/form-flash.ts +2 -2
  1106. package/src/server/head-response.ts +54 -0
  1107. package/src/server/html-injector-core.ts +512 -0
  1108. package/src/server/html-injectors.ts +272 -235
  1109. package/src/server/index.ts +40 -192
  1110. package/src/server/instrumentation.ts +1 -1
  1111. package/src/server/internal.ts +173 -0
  1112. package/src/server/logger.ts +73 -36
  1113. package/src/server/metadata-collector.ts +174 -0
  1114. package/src/server/metadata-platform.ts +2 -2
  1115. package/src/server/metadata-render.ts +30 -8
  1116. package/src/server/metadata-routes.ts +205 -24
  1117. package/src/server/metadata-social.ts +2 -2
  1118. package/src/server/metadata.ts +23 -2
  1119. package/src/server/middleware-runner.ts +32 -5
  1120. package/src/server/node-stream-transforms.ts +323 -0
  1121. package/src/server/nuqs-ssr-provider.tsx +8 -7
  1122. package/src/server/param-coercion.ts +198 -0
  1123. package/src/server/pipeline-helpers.ts +159 -0
  1124. package/src/server/pipeline-interception.ts +109 -33
  1125. package/src/server/pipeline-metadata.ts +15 -1
  1126. package/src/server/pipeline-outcome.ts +218 -0
  1127. package/src/server/pipeline-phases.ts +606 -0
  1128. package/src/server/pipeline.ts +343 -389
  1129. package/src/server/port-resolution.ts +53 -0
  1130. package/src/server/prebuilt/cache-key.ts +299 -0
  1131. package/src/server/prebuilt/capture-state.ts +89 -0
  1132. package/src/server/prebuilt/key-discipline.ts +122 -0
  1133. package/src/server/prebuilt/manifest-tag-index.ts +46 -0
  1134. package/src/server/prebuilt/overlay.ts +256 -0
  1135. package/src/server/prebuilt/payload-source.ts +202 -0
  1136. package/src/server/prebuilt/slots.ts +190 -0
  1137. package/src/server/prebuilt/synthetic-store.ts +122 -0
  1138. package/src/server/prebuilt-builder.ts +804 -0
  1139. package/src/server/prebuilt-runtime.ts +817 -0
  1140. package/src/server/primitives.ts +246 -97
  1141. package/src/server/publish-params.ts +42 -0
  1142. package/src/server/render-timeout.ts +108 -0
  1143. package/src/server/render-utils.ts +35 -0
  1144. package/src/server/request-context.ts +244 -333
  1145. package/src/server/request-dep.ts +37 -0
  1146. package/src/server/response-cache-policy.ts +45 -0
  1147. package/src/server/route-element-builder.ts +508 -360
  1148. package/src/server/route-element-helpers.ts +37 -0
  1149. package/src/server/route-handler.ts +40 -13
  1150. package/src/server/route-matcher.ts +165 -272
  1151. package/src/server/route-module-loader.ts +161 -0
  1152. package/src/server/rsc-cache-key-guard.ts +122 -0
  1153. package/src/server/rsc-entry/action-middleware-runner.ts +174 -0
  1154. package/src/server/rsc-entry/api-handler.ts +78 -34
  1155. package/src/server/rsc-entry/deny-fallback.ts +93 -0
  1156. package/src/server/rsc-entry/error-renderer.ts +373 -95
  1157. package/src/server/rsc-entry/helpers.ts +226 -95
  1158. package/src/server/rsc-entry/index.ts +405 -323
  1159. package/src/server/rsc-entry/render-route.ts +304 -0
  1160. package/src/server/rsc-entry/revalidate-renderer.ts +350 -0
  1161. package/src/server/rsc-entry/rsc-payload.ts +239 -50
  1162. package/src/server/rsc-entry/rsc-stream.ts +160 -30
  1163. package/src/server/rsc-entry/ssr-bridge.ts +18 -5
  1164. package/src/server/rsc-entry/ssr-renderer.ts +315 -57
  1165. package/src/server/rsc-entry/wrap-action-dispatch.ts +186 -0
  1166. package/src/server/rsc-error-envelope.ts +18 -0
  1167. package/src/server/rsc-prop-warnings.ts +3 -1
  1168. package/src/server/safe-load.ts +60 -0
  1169. package/src/server/sensitive-fields.ts +230 -0
  1170. package/src/server/server-only-guard-noop.js +3 -0
  1171. package/src/server/server-timing.ts +1 -1
  1172. package/src/server/sitemap-generator.ts +337 -0
  1173. package/src/server/sitemap-handler.ts +157 -0
  1174. package/src/server/skippable-prefix.ts +172 -0
  1175. package/src/server/slot-interception.ts +168 -0
  1176. package/src/server/slot-resolver.ts +707 -300
  1177. package/src/server/slot-subtree-contain.ts +255 -0
  1178. package/src/server/ssr-bridge-types.ts +165 -0
  1179. package/src/server/ssr-entry.ts +230 -85
  1180. package/src/server/ssr-render.ts +357 -85
  1181. package/src/server/ssr-wrappers.tsx +162 -0
  1182. package/src/server/state-tree-diff.ts +85 -30
  1183. package/src/server/static-generator.ts +715 -0
  1184. package/src/server/static-not-found.ts +134 -0
  1185. package/src/server/status-code-resolver.ts +107 -148
  1186. package/src/server/stream-utils.ts +292 -0
  1187. package/src/server/tracing.ts +151 -16
  1188. package/src/server/tree-match.ts +262 -0
  1189. package/src/server/types.ts +95 -10
  1190. package/src/server/utils/element-type.ts +88 -0
  1191. package/src/server/utils/escape-html.ts +20 -0
  1192. package/src/server/utils/mdx-file.ts +22 -0
  1193. package/src/server/version-skew.ts +104 -0
  1194. package/src/server/waituntil-bridge.ts +5 -2
  1195. package/src/server/workers-cache-bridge.ts +33 -0
  1196. package/src/shared/als-slots.ts +74 -0
  1197. package/src/shared/base-path.ts +80 -0
  1198. package/src/shared/href-validation.ts +159 -0
  1199. package/src/shared/merge-search-params.ts +55 -0
  1200. package/src/shared/param-value.ts +281 -0
  1201. package/src/shared/payload-root.ts +152 -0
  1202. package/src/shared/redirect-type.ts +17 -0
  1203. package/src/shared/rsc-cache-key.ts +269 -0
  1204. package/src/shared/rsc-error-envelope.ts +16 -0
  1205. package/src/shared/rsc-manifest.ts +29 -0
  1206. package/src/shared/rsc-media-type.ts +59 -0
  1207. package/src/shared/rsc-payload-path.ts +45 -0
  1208. package/src/shared/segment-info.ts +67 -0
  1209. package/src/shared/slot-params.ts +109 -0
  1210. package/src/shared/static-platform-files.ts +75 -0
  1211. package/src/shared/status-reason-phrase.ts +61 -0
  1212. package/src/shims/font-google.ts +1 -1
  1213. package/src/shims/font-local.ts +34 -0
  1214. package/src/shims/headers.ts +122 -1
  1215. package/src/shims/navigation-client.ts +36 -32
  1216. package/src/shims/navigation-rsc.ts +47 -0
  1217. package/src/shims/navigation.ts +10 -7
  1218. package/src/utils/state-machine.ts +111 -0
  1219. package/dist/_chunks/als-registry-k-AtAQ9R.js +0 -41
  1220. package/dist/_chunks/als-registry-k-AtAQ9R.js.map +0 -1
  1221. package/dist/_chunks/format-DNt20Kt8.js +0 -163
  1222. package/dist/_chunks/format-DNt20Kt8.js.map +0 -1
  1223. package/dist/_chunks/interception-DGDIjDbR.js +0 -676
  1224. package/dist/_chunks/interception-DGDIjDbR.js.map +0 -1
  1225. package/dist/_chunks/metadata-routes-CQCnF4VK.js +0 -153
  1226. package/dist/_chunks/metadata-routes-CQCnF4VK.js.map +0 -1
  1227. package/dist/_chunks/request-context-CRj2Zh1E.js +0 -329
  1228. package/dist/_chunks/request-context-CRj2Zh1E.js.map +0 -1
  1229. package/dist/_chunks/ssr-data-DLnbYpj1.js.map +0 -1
  1230. package/dist/_chunks/tracing-DF0G3FB7.js +0 -173
  1231. package/dist/_chunks/tracing-DF0G3FB7.js.map +0 -1
  1232. package/dist/_chunks/use-cookie-dDbpCTx-.js +0 -91
  1233. package/dist/_chunks/use-cookie-dDbpCTx-.js.map +0 -1
  1234. package/dist/_chunks/use-query-states-DAhgj8Gx.js +0 -109
  1235. package/dist/_chunks/use-query-states-DAhgj8Gx.js.map +0 -1
  1236. package/dist/adapters/cloudflare.js.map +0 -1
  1237. package/dist/cache/index.js.map +0 -1
  1238. package/dist/cache/register-cached-function.d.ts +0 -17
  1239. package/dist/cache/register-cached-function.d.ts.map +0 -1
  1240. package/dist/client/browser-entry.d.ts +0 -21
  1241. package/dist/client/browser-entry.d.ts.map +0 -1
  1242. package/dist/client/error-boundary.js.map +0 -1
  1243. package/dist/client/head.d.ts +0 -16
  1244. package/dist/client/head.d.ts.map +0 -1
  1245. package/dist/client/link-status-provider.d.ts +0 -11
  1246. package/dist/client/link-status-provider.d.ts.map +0 -1
  1247. package/dist/client/segment-merger.d.ts +0 -119
  1248. package/dist/client/segment-merger.d.ts.map +0 -1
  1249. package/dist/client/stale-reload.d.ts +0 -44
  1250. package/dist/client/stale-reload.d.ts.map +0 -1
  1251. package/dist/client/transition-root.d.ts +0 -74
  1252. package/dist/client/transition-root.d.ts.map +0 -1
  1253. package/dist/client/use-navigation-pending.d.ts +0 -26
  1254. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  1255. package/dist/client/use-params.d.ts +0 -92
  1256. package/dist/client/use-params.d.ts.map +0 -1
  1257. package/dist/content/index.d.ts +0 -11
  1258. package/dist/content/index.d.ts.map +0 -1
  1259. package/dist/content/index.js +0 -2
  1260. package/dist/plugins/cache-transform.d.ts +0 -36
  1261. package/dist/plugins/cache-transform.d.ts.map +0 -1
  1262. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  1263. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  1264. package/dist/plugins/dev-logs.d.ts.map +0 -1
  1265. package/dist/plugins/dynamic-transform.d.ts +0 -72
  1266. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  1267. package/dist/plugins/server-action-exports.d.ts +0 -26
  1268. package/dist/plugins/server-action-exports.d.ts.map +0 -1
  1269. package/dist/routing/status-file-lint.d.ts +0 -33
  1270. package/dist/routing/status-file-lint.d.ts.map +0 -1
  1271. package/dist/search-params/analyze.d.ts +0 -54
  1272. package/dist/search-params/analyze.d.ts.map +0 -1
  1273. package/dist/search-params/builtin-codecs.d.ts +0 -105
  1274. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  1275. package/dist/search-params/codecs.d.ts +0 -53
  1276. package/dist/search-params/codecs.d.ts.map +0 -1
  1277. package/dist/search-params/create.d.ts +0 -106
  1278. package/dist/search-params/create.d.ts.map +0 -1
  1279. package/dist/search-params/registry.d.ts +0 -20
  1280. package/dist/search-params/registry.d.ts.map +0 -1
  1281. package/dist/server/client-module-map.d.ts +0 -47
  1282. package/dist/server/client-module-map.d.ts.map +0 -1
  1283. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  1284. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  1285. package/dist/server/dev-logger.d.ts.map +0 -1
  1286. package/dist/server/dev-span-processor.d.ts +0 -29
  1287. package/dist/server/dev-span-processor.d.ts.map +0 -1
  1288. package/dist/server/dev-warnings.d.ts +0 -129
  1289. package/dist/server/dev-warnings.d.ts.map +0 -1
  1290. package/dist/server/flush.d.ts +0 -74
  1291. package/dist/server/flush.d.ts.map +0 -1
  1292. package/dist/server/manifest-status-resolver.d.ts +0 -58
  1293. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  1294. package/dist/server/prerender.d.ts +0 -77
  1295. package/dist/server/prerender.d.ts.map +0 -1
  1296. package/dist/server/tree-builder.d.ts +0 -126
  1297. package/dist/server/tree-builder.d.ts.map +0 -1
  1298. package/dist/utils/directive-parser.d.ts +0 -70
  1299. package/dist/utils/directive-parser.d.ts.map +0 -1
  1300. package/src/cache/register-cached-function.ts +0 -99
  1301. package/src/client/browser-entry.ts +0 -674
  1302. package/src/client/head.ts +0 -61
  1303. package/src/client/link-status-provider.tsx +0 -30
  1304. package/src/client/segment-merger.ts +0 -345
  1305. package/src/client/stale-reload.ts +0 -89
  1306. package/src/client/transition-root.tsx +0 -160
  1307. package/src/client/use-navigation-pending.ts +0 -38
  1308. package/src/client/use-params.ts +0 -141
  1309. package/src/content/index.ts +0 -13
  1310. package/src/plugins/cache-transform.ts +0 -199
  1311. package/src/plugins/dev-error-overlay.ts +0 -230
  1312. package/src/plugins/dynamic-transform.ts +0 -161
  1313. package/src/plugins/server-action-exports.ts +0 -220
  1314. package/src/routing/status-file-lint.ts +0 -112
  1315. package/src/search-params/analyze.ts +0 -192
  1316. package/src/search-params/builtin-codecs.ts +0 -228
  1317. package/src/search-params/codecs.ts +0 -153
  1318. package/src/search-params/create.ts +0 -321
  1319. package/src/search-params/registry.ts +0 -31
  1320. package/src/server/client-module-map.ts +0 -58
  1321. package/src/server/dev-fetch-instrumentation.ts +0 -96
  1322. package/src/server/dev-span-processor.ts +0 -78
  1323. package/src/server/dev-warnings.ts +0 -282
  1324. package/src/server/flush.ts +0 -182
  1325. package/src/server/manifest-status-resolver.ts +0 -215
  1326. package/src/server/prerender.ts +0 -139
  1327. package/src/server/tree-builder.ts +0 -382
  1328. package/src/shims/server-only-noop.js +0 -6
  1329. package/src/utils/directive-parser.ts +0 -529
@@ -0,0 +1,1149 @@
1
+ import { Z as getWaitUntil, _ as addSpanEventSync, d as logSwrRefetchFailed, h as swallow } from "./logger-uLBuGKDI.js";
2
+ import { t as fnv1aHash } from "./fast-hash-C-tVYrLb.js";
3
+ import { n as createSingleflight } from "./singleflight-2lUWfcAk.js";
4
+ import { t as estimateByteSize } from "./sizeof-lXffQ1Vr.js";
5
+ import { t as warnLossyJsonValue } from "./json-lossy-check-ClNvBM_3.js";
6
+ import { t as getCdnPurgeHandler } from "./purge-store-Byr8XOjU.js";
7
+ //#region src/cache/stable-stringify.ts
8
+ /**
9
+ * Deterministic JSON serialization with sorted object keys.
10
+ * Used for cache key generation — ensures { a: 1, b: 2 } and { b: 2, a: 1 }
11
+ * produce the same string.
12
+ *
13
+ * Matches JSON.stringify semantics for toJSON: Date serializes to its ISO
14
+ * string, URL to its href, and class instances with a custom toJSON use it.
15
+ * Map and Set serialize their entries explicitly (insertion-order
16
+ * independent). Values that would serialize lossily — functions, symbols,
17
+ * and non-plain objects with no enumerable own state (RegExp, class
18
+ * instances holding data behind getters or internal slots) — throw instead:
19
+ * every such value would collapse to the same cache key, silently returning
20
+ * one argument's cached data for another (TIM-1020).
21
+ */
22
+ function stableStringify(value) {
23
+ if (value === null || value === void 0) return String(value);
24
+ const type = typeof value;
25
+ if (type === "function" || type === "symbol") throw new TypeError(`stableStringify: cannot serialize a ${type} into a stable cache key — all such values would collide. Provide an explicit \`key\` option to cache().`);
26
+ if (type !== "object") return JSON.stringify(value);
27
+ if (Array.isArray(value)) return "[" + value.map((item) => stableStringify(item)).join(",") + "]";
28
+ const withToJSON = value;
29
+ if (typeof withToJSON.toJSON === "function") {
30
+ const json = withToJSON.toJSON();
31
+ if (json !== value) return stableStringify(json);
32
+ }
33
+ if (value instanceof Map) return "Map(" + [...value.entries()].map(([k, v]) => stableStringify(k) + "=>" + stableStringify(v)).sort().join(",") + ")";
34
+ if (value instanceof Set) return "Set(" + [...value].map((member) => stableStringify(member)).sort().join(",") + ")";
35
+ const obj = value;
36
+ const keys = Object.keys(obj).sort();
37
+ const pairs = [];
38
+ for (const key of keys) {
39
+ if (obj[key] === void 0) continue;
40
+ if (key === "toJSON" && typeof obj[key] === "function") continue;
41
+ pairs.push(JSON.stringify(key) + ":" + stableStringify(obj[key]));
42
+ }
43
+ if (pairs.length === 0) {
44
+ const proto = Object.getPrototypeOf(value);
45
+ if (proto !== Object.prototype && proto !== null) {
46
+ const name = value.constructor?.name || "Object";
47
+ throw new TypeError(`stableStringify: ${name} instance has no serializable own state — all instances would share one cache key. Provide an explicit \`key\` option to cache(), or add a toJSON() method.`);
48
+ }
49
+ }
50
+ return "{" + pairs.join(",") + "}";
51
+ }
52
+ //#endregion
53
+ //#region src/cache/invalidation-epoch.ts
54
+ /**
55
+ * Per-process invalidation epoch tracking for timber.cache (TIM-1028).
56
+ *
57
+ * handler.set for a cache miss runs after `fn()` resolves. An explicit
58
+ * `cache.invalidate({ tag })` / `revalidateTag` that lands while fn is in
59
+ * flight would otherwise be silently undone — the just-invalidated value
60
+ * re-stored as fresh for the full TTL, resurrecting pre-mutation data.
61
+ *
62
+ * Every invalidation bumps a monotonic epoch and records it against the
63
+ * invalidated key/tag. Before storing a result, the cache wrapper checks
64
+ * whether its key or any of its tags were invalidated after fn started and
65
+ * skips the write if so. Skipping is always safe: the only cost is one
66
+ * extra cache miss on the next call.
67
+ *
68
+ * Scope: per-process, like the singleflight map. An invalidation issued by
69
+ * another instance against a shared handler (Redis/KV) during fn flight is
70
+ * not observable here — closing that window fully would require store-level
71
+ * versioning, which no CacheHandler backend offers.
72
+ */
73
+ var epoch = 0;
74
+ /**
75
+ * Last-invalidated epoch per `key:<k>` / `tag:<t>` entry. Insertion order is
76
+ * epoch order (entries are re-inserted on update), so the oldest entry is
77
+ * always first — pruning evicts lowest epochs.
78
+ */
79
+ var lastInvalidated = /* @__PURE__ */ new Map();
80
+ /**
81
+ * Bound on tracked entries so high-cardinality tag invalidation (e.g.
82
+ * per-user tags) cannot grow this map without limit.
83
+ */
84
+ var MAX_TRACKED_ENTRIES = 1e4;
85
+ /**
86
+ * Highest epoch evicted from the map. Any execution that started at or
87
+ * before this epoch conservatively counts as invalidated — history was
88
+ * truncated, so we can no longer prove it wasn't.
89
+ */
90
+ var evictedEpochFloor = 0;
91
+ /** The current epoch. Capture before running fn(), pass to wasInvalidatedSince. */
92
+ function currentInvalidationEpoch() {
93
+ return epoch;
94
+ }
95
+ /**
96
+ * Record an invalidation. Call BEFORE handler.invalidate() so an execution
97
+ * whose set-check races the invalidation errs toward skipping the write.
98
+ */
99
+ function recordInvalidation(opts) {
100
+ epoch++;
101
+ if (opts.key) track(`key:${opts.key}`);
102
+ if (opts.tag) track(`tag:${opts.tag}`);
103
+ }
104
+ function track(entry) {
105
+ lastInvalidated.delete(entry);
106
+ lastInvalidated.set(entry, epoch);
107
+ while (lastInvalidated.size > MAX_TRACKED_ENTRIES) {
108
+ const oldest = lastInvalidated.entries().next().value;
109
+ if (oldest === void 0) break;
110
+ evictedEpochFloor = Math.max(evictedEpochFloor, oldest[1]);
111
+ lastInvalidated.delete(oldest[0]);
112
+ }
113
+ }
114
+ /**
115
+ * Whether the key or any tag was invalidated after `startEpoch` (the epoch
116
+ * captured when fn started executing).
117
+ */
118
+ function wasInvalidatedSince(startEpoch, key, tags) {
119
+ return lastInvalidationEpochFor(key, tags) > startEpoch;
120
+ }
121
+ /**
122
+ * The highest epoch at which the key or any of the tags was invalidated
123
+ * (0 if never). Used to scope the singleflight key: callers arriving after
124
+ * an invalidation must not coalesce onto a flight that started before it —
125
+ * they would receive the pre-invalidation result the invalidation was
126
+ * issued to discard.
127
+ */
128
+ function lastInvalidationEpochFor(key, tags) {
129
+ let last = evictedEpochFloor;
130
+ const keyEpoch = lastInvalidated.get(`key:${key}`);
131
+ if (keyEpoch !== void 0 && keyEpoch > last) last = keyEpoch;
132
+ for (const tag of tags) {
133
+ const tagEpoch = lastInvalidated.get(`tag:${tag}`);
134
+ if (tagEpoch !== void 0 && tagEpoch > last) last = tagEpoch;
135
+ }
136
+ return last;
137
+ }
138
+ //#endregion
139
+ //#region src/cache/timber-cache.ts
140
+ var defaultSingleflight = createSingleflight();
141
+ /**
142
+ * Per-key monotonic generation counter for CAS writes (TIM-1158).
143
+ *
144
+ * Unbounded, like the singleflight map — the key space is the same set of
145
+ * cache keys the handler already tracks. Pruning was removed because it
146
+ * desyncs from MemoryCacheHandler.generations: a pruned key restarts at 1
147
+ * while the handler still holds the old higher generation, causing fresh
148
+ * writes to be rejected as stale.
149
+ */
150
+ var writeGenerations = /* @__PURE__ */ new Map();
151
+ function nextGeneration(key) {
152
+ const gen = (writeGenerations.get(key) ?? 0) + 1;
153
+ writeGenerations.set(key, gen);
154
+ return gen;
155
+ }
156
+ /**
157
+ * Set the timeout for the module-level default singleflight.
158
+ * Called at framework boot with renderTimeoutMs from timber.config.ts so that
159
+ * cache calls without a per-call timeoutMs still get deadlock protection.
160
+ * See design/06-caching.md §"Singleflight Timeout — Deadlock Risk".
161
+ */
162
+ function setDefaultSingleflightTimeout(timeoutMs) {
163
+ defaultSingleflight = createSingleflight({ timeoutMs });
164
+ }
165
+ /**
166
+ * Generate a cache key from function identity and serialized args.
167
+ *
168
+ * Uses FNV-1a (fast non-crypto hash) instead of SHA-256. Cache keys don't
169
+ * need collision resistance — they need speed. The fnId prefix provides
170
+ * namespace isolation; the hash covers the args.
171
+ *
172
+ * See TIM-370 for perf motivation.
173
+ */
174
+ function defaultKeyGenerator(fnId, args) {
175
+ const raw = fnId + ":" + stableStringify(args);
176
+ return fnId + ":" + fnv1aHash(raw);
177
+ }
178
+ /**
179
+ * Resolve tags from the options — supports static array or function form.
180
+ */
181
+ function resolveTags(opts, args) {
182
+ if (!opts.tags) return [];
183
+ if (Array.isArray(opts.tags)) return opts.tags;
184
+ return opts.tags(...args);
185
+ }
186
+ /** Per-process count of byte-identical fn sources seen by deriveFallbackFnId. */
187
+ var fallbackIdOccurrences = /* @__PURE__ */ new Map();
188
+ var hasWarnedFallbackId = false;
189
+ /**
190
+ * Derive a fallback fnId for callsites the timber-cache-transform Vite plugin
191
+ * could not statically detect (aliased bindings, user re-export wrappers).
192
+ *
193
+ * The base is fnv1a(fn.toString()) — deterministic across instances and cold
194
+ * starts of the same build, so two *different* functions can never swap fnIds
195
+ * by module-evaluation order (the TIM-997 poisoning scenario that the old
196
+ * process-local counter allowed; see TIM-1054). A per-process occurrence
197
+ * suffix disambiguates byte-identical duplicate sources. That residue is the
198
+ * one remaining hazard: closures produced by the same factory share source
199
+ * text but capture different values, and their occurrence order may differ
200
+ * across instances — such callsites need an explicit `key` option.
201
+ */
202
+ function deriveFallbackFnId(fn) {
203
+ const sourceHash = fnv1aHash(fn.toString());
204
+ const occurrence = fallbackIdOccurrences.get(sourceHash) ?? 0;
205
+ fallbackIdOccurrences.set(sourceHash, occurrence + 1);
206
+ if (!hasWarnedFallbackId && typeof process !== "undefined" && process.env.NODE_ENV !== "test") {
207
+ hasWarnedFallbackId = true;
208
+ console.warn("[timber] cache() callsite has no build-time stable ID and no explicit `key` option — the call is not statically visible to the timber Vite plugin (e.g. an aliased binding like `const c = cache` or a re-export wrapper module). Falling back to a function-source hash for the cache key. With a shared CacheHandler (Redis/KV) this is safe for distinct functions, but byte-identical closures from a factory can swap cache entries across instances. Provide an explicit `key` option to make the cache key contract stable and auditable.");
209
+ }
210
+ return `timber-cache:fn:${sourceHash}:${occurrence}`;
211
+ }
212
+ /**
213
+ * Creates a cached wrapper around an async function.
214
+ *
215
+ * - FNV-1a default keys with normalized JSON args
216
+ * - Singleflight: concurrent misses → single execution AND single
217
+ * handler.set — the write happens inside the coalesced callback (TIM-1028)
218
+ * - Writes are skipped when the key/tags were invalidated while fn was in
219
+ * flight, so explicit invalidation is never silently undone (TIM-1028)
220
+ * - SWR: serve stale immediately, background refetch
221
+ * - Tags as string[] or function of args
222
+ * - The handler is resolved per invocation via `getHandler`, never captured
223
+ * at wrapper-creation time — module-scope cache() wrappers created before
224
+ * the framework's boot wiring calls setCacheHandler() still use the
225
+ * configured handler once it arrives (TIM-1029)
226
+ * - No ALS dependency for correctness — cache() works outside a request
227
+ * context. The waitUntil ALS bridge is read optionally so the SWR
228
+ * background refetch survives handler return on Workers/Lambda.
229
+ *
230
+ * Cache hits/misses are recorded as OTEL span events on the enclosing
231
+ * span (not child spans). The DevSpanProcessor reads these for dev log output.
232
+ */
233
+ function createCache(fn, opts, getHandler, stableId) {
234
+ const fnId = stableId ?? (opts.key ? void 0 : deriveFallbackFnId(fn));
235
+ const perCallSf = opts.timeoutMs !== void 0 ? createSingleflight({ timeoutMs: opts.timeoutMs }) : void 0;
236
+ return (async (...args) => {
237
+ const sf = perCallSf ?? defaultSingleflight;
238
+ const key = opts.key ? opts.key(...args) : defaultKeyGenerator(fnId, args);
239
+ const cacheStart = performance.now();
240
+ const cached = await getHandler().get(key);
241
+ if (cached && !cached.stale) {
242
+ addSpanEventSync("timber.cache.hit", {
243
+ key,
244
+ duration_ms: Math.round(performance.now() - cacheStart)
245
+ });
246
+ return cached.value;
247
+ }
248
+ const tags = resolveTags(opts, args);
249
+ const flightKey = `${key}\u0000${lastInvalidationEpochFor(key, tags)}`;
250
+ /**
251
+ * Run fn and store the result — exactly once per coalesced execution,
252
+ * inside the singleflight callback. The write is skipped when:
253
+ * - the key/tags were invalidated after fn started (TIM-1028), or
254
+ * - the singleflight timed out (signal aborted) — the timed-out
255
+ * flight's write could overwrite a newer value from a subsequent
256
+ * flight (TIM-1092), or
257
+ * - the handler rejects the write because a newer generation has
258
+ * already been stored (TIM-1158 CAS guard).
259
+ */
260
+ const executeAndStore = async (signal) => {
261
+ const startEpoch = currentInvalidationEpoch();
262
+ const generation = nextGeneration(key);
263
+ const result = await fn(...args);
264
+ if (!signal.aborted && !wasInvalidatedSince(startEpoch, key, tags)) try {
265
+ await getHandler().set(key, result, {
266
+ ttl: opts.ttl,
267
+ tags,
268
+ generation
269
+ });
270
+ } catch (err) {
271
+ swallow(err, `cache set failed for key "${key}"`);
272
+ }
273
+ return result;
274
+ };
275
+ if (cached && cached.stale && opts.staleWhileRevalidate) {
276
+ addSpanEventSync("timber.cache.hit", {
277
+ key,
278
+ duration_ms: Math.round(performance.now() - cacheStart),
279
+ stale: true
280
+ });
281
+ const refetch = sf.do(`swr:${flightKey}`, async (signal) => {
282
+ try {
283
+ await executeAndStore(signal);
284
+ } catch (err) {
285
+ logSwrRefetchFailed({
286
+ cacheKey: key,
287
+ error: err
288
+ });
289
+ }
290
+ }).catch(() => {});
291
+ getWaitUntil()?.(refetch);
292
+ return cached.value;
293
+ }
294
+ const result = await sf.do(flightKey, executeAndStore);
295
+ addSpanEventSync("timber.cache.miss", {
296
+ key,
297
+ duration_ms: Math.round(performance.now() - cacheStart)
298
+ });
299
+ return result;
300
+ });
301
+ }
302
+ //#endregion
303
+ //#region src/cache/handler-store.ts
304
+ var handler = null;
305
+ var explicitlyConfigured = false;
306
+ /** Replace the active cache handler. Called by the framework at boot. */
307
+ function setCacheHandler(h) {
308
+ handler = h;
309
+ explicitlyConfigured = true;
310
+ }
311
+ /** Whether the handler was explicitly configured (vs the default in-memory fallback). */
312
+ function isCacheHandlerConfigured() {
313
+ return explicitlyConfigured;
314
+ }
315
+ /**
316
+ * Get the active cache handler. Creates a default MemoryCacheHandler on
317
+ * first access if none has been set via setCacheHandler().
318
+ */
319
+ function getCacheHandler() {
320
+ if (!handler) handler = createDefaultHandler();
321
+ return handler;
322
+ }
323
+ function createDefaultHandler() {
324
+ const store = /* @__PURE__ */ new Map();
325
+ const maxEntries = 1e3;
326
+ return {
327
+ async get(key) {
328
+ const entry = store.get(key);
329
+ if (!entry) return null;
330
+ store.delete(key);
331
+ store.set(key, entry);
332
+ const stale = Date.now() > entry.expiresAt;
333
+ return {
334
+ value: entry.value,
335
+ stale
336
+ };
337
+ },
338
+ async set(key, value, opts) {
339
+ if (store.has(key)) store.delete(key);
340
+ while (store.size >= maxEntries) {
341
+ const oldest = store.keys().next().value;
342
+ if (oldest !== void 0) store.delete(oldest);
343
+ else break;
344
+ }
345
+ store.set(key, {
346
+ value,
347
+ expiresAt: Date.now() + opts.ttl * 1e3,
348
+ tags: opts.tags
349
+ });
350
+ },
351
+ async invalidate(opts) {
352
+ if (opts.key) store.delete(opts.key);
353
+ if (opts.tag) {
354
+ for (const [key, entry] of store) if (entry.tags.includes(opts.tag)) store.delete(key);
355
+ }
356
+ }
357
+ };
358
+ }
359
+ //#endregion
360
+ //#region src/cache/redis-handler.ts
361
+ var KEY_PREFIX = "timber:cache:";
362
+ var TAG_PREFIX = "timber:tag:";
363
+ /**
364
+ * Redis-backed CacheHandler for distributed caching.
365
+ *
366
+ * All instances sharing the same Redis see each other's cache entries and
367
+ * invalidations. Tag-based invalidation uses Redis Sets to track which keys
368
+ * belong to which tags.
369
+ *
370
+ * Bring your own Redis client wrapped to the {@link RedisClient} contract —
371
+ * see the adapter examples on the interface for ioredis, node-redis v4, and
372
+ * @upstash/redis.
373
+ */
374
+ var RedisCacheHandler = class {
375
+ client;
376
+ prefix;
377
+ constructor(client, opts) {
378
+ this.client = client;
379
+ this.prefix = opts?.prefix ?? "";
380
+ }
381
+ cacheKey(key) {
382
+ return `${this.prefix}${KEY_PREFIX}${key}`;
383
+ }
384
+ tagKey(tag) {
385
+ return `${this.prefix}${TAG_PREFIX}${tag}`;
386
+ }
387
+ async get(key) {
388
+ const raw = await this.client.get(this.cacheKey(key));
389
+ if (raw === null) return null;
390
+ const entry = JSON.parse(raw);
391
+ const stale = Date.now() > entry.expiresAt;
392
+ return {
393
+ value: entry.value,
394
+ stale
395
+ };
396
+ }
397
+ async set(key, value, opts) {
398
+ warnLossyJsonValue(value, key);
399
+ const ck = this.cacheKey(key);
400
+ const expiresAt = Date.now() + opts.ttl * 1e3;
401
+ const payload = JSON.stringify({
402
+ value,
403
+ expiresAt,
404
+ tags: opts.tags
405
+ });
406
+ const redisTtlSeconds = Math.max(opts.ttl * 2 + 60, 120);
407
+ const writeOps = [];
408
+ for (const tag of opts.tags) {
409
+ writeOps.push({
410
+ op: "sadd",
411
+ key: this.tagKey(tag),
412
+ members: [key]
413
+ });
414
+ writeOps.push({
415
+ op: "expireNX",
416
+ key: this.tagKey(tag),
417
+ seconds: redisTtlSeconds
418
+ });
419
+ writeOps.push({
420
+ op: "expireGT",
421
+ key: this.tagKey(tag),
422
+ seconds: redisTtlSeconds
423
+ });
424
+ }
425
+ writeOps.push({
426
+ op: "set",
427
+ key: ck,
428
+ value: payload,
429
+ ttlSeconds: redisTtlSeconds
430
+ });
431
+ if (this.client.execMulti) await this.client.execMulti(writeOps);
432
+ else for (const op of writeOps) await this.execOp(op);
433
+ }
434
+ async execOp(op) {
435
+ switch (op.op) {
436
+ case "set":
437
+ await this.client.set(op.key, op.value, op.ttlSeconds);
438
+ break;
439
+ case "sadd":
440
+ await this.client.sadd(op.key, ...op.members);
441
+ break;
442
+ case "expireNX":
443
+ await this.client.expireNX(op.key, op.seconds);
444
+ break;
445
+ case "expireGT":
446
+ await this.client.expireGT(op.key, op.seconds);
447
+ break;
448
+ case "del": await this.client.del(op.key);
449
+ }
450
+ }
451
+ async invalidate(opts) {
452
+ if (opts.key) {
453
+ const raw = await this.client.get(this.cacheKey(opts.key));
454
+ if (raw !== null) {
455
+ const entry = JSON.parse(raw);
456
+ if (entry.tags) await Promise.all(entry.tags.map((tag) => this.client.srem(this.tagKey(tag), opts.key)));
457
+ }
458
+ await this.client.del(this.cacheKey(opts.key));
459
+ }
460
+ if (opts.tag) {
461
+ const tk = this.tagKey(opts.tag);
462
+ const keys = await this.client.smembers(tk);
463
+ await Promise.all(keys.map(async (k) => {
464
+ const raw = await this.client.get(this.cacheKey(k));
465
+ if (raw === null) {
466
+ await this.client.srem(tk, k);
467
+ return;
468
+ }
469
+ if (JSON.parse(raw).tags?.includes(opts.tag)) await this.client.del(this.cacheKey(k));
470
+ await this.client.srem(tk, k);
471
+ }));
472
+ if ((await this.client.smembers(tk)).length === 0) await this.client.del(tk);
473
+ }
474
+ }
475
+ };
476
+ //#endregion
477
+ //#region src/cache/tag-aware-handler.ts
478
+ var DATA_PREFIX = "d:";
479
+ var TAG_SET_PREFIX = "ts:";
480
+ var TAG_VERSION_PREFIX = "tv:";
481
+ function detectStrategy(store) {
482
+ if (store.setWithTags && store.invalidateTag) return "native";
483
+ if (store.sadd && store.smembers && store.srem && store.sdel) return "eager";
484
+ return "lazy";
485
+ }
486
+ var TagAwareCacheHandler = class {
487
+ store;
488
+ prefix;
489
+ strategy;
490
+ constructor(store, opts) {
491
+ this.store = store;
492
+ this.prefix = opts?.prefix ?? "timber:";
493
+ this.strategy = detectStrategy(store);
494
+ }
495
+ get consistency() {
496
+ return this.store.consistency;
497
+ }
498
+ dataKey(key) {
499
+ return `${this.prefix}${DATA_PREFIX}${key}`;
500
+ }
501
+ /** Namespace tags for native stores so prefix isolates shared stores. */
502
+ prefixTags(tags) {
503
+ return tags.map((t) => `${this.prefix}${t}`);
504
+ }
505
+ tagSetKey(tag) {
506
+ return `${this.prefix}${TAG_SET_PREFIX}${tag}`;
507
+ }
508
+ tagVersionKey(tag) {
509
+ return `${this.prefix}${TAG_VERSION_PREFIX}${tag}`;
510
+ }
511
+ async get(key) {
512
+ const raw = await this.store.get(this.dataKey(key));
513
+ if (raw === null) return null;
514
+ if (this.strategy === "native" || this.strategy === "eager") {
515
+ const entry = JSON.parse(raw);
516
+ const stale = Date.now() > entry.expiresAt;
517
+ return {
518
+ value: entry.value,
519
+ stale
520
+ };
521
+ }
522
+ const entry = JSON.parse(raw);
523
+ if (entry.tags.length > 0) {
524
+ const currentVersions = await this.getTagVersions(entry.tags);
525
+ for (const tag of entry.tags) {
526
+ const stored = entry.tagVersions[tag] ?? 0;
527
+ if ((currentVersions[tag] ?? 0) > stored) return null;
528
+ }
529
+ }
530
+ const stale = Date.now() > entry.expiresAt;
531
+ return {
532
+ value: entry.value,
533
+ stale
534
+ };
535
+ }
536
+ async set(key, value, opts) {
537
+ const physicalTtl = Math.max(opts.ttl * 2 + 60, 120);
538
+ if (this.strategy === "native") {
539
+ const entry = {
540
+ value,
541
+ expiresAt: Date.now() + opts.ttl * 1e3,
542
+ tags: opts.tags
543
+ };
544
+ const payload = JSON.stringify(entry);
545
+ if (opts.tags.length > 0) await this.store.setWithTags(this.dataKey(key), payload, physicalTtl, this.prefixTags(opts.tags));
546
+ else await this.store.set(this.dataKey(key), payload, physicalTtl);
547
+ return;
548
+ }
549
+ if (this.strategy === "eager") {
550
+ const entry = {
551
+ value,
552
+ expiresAt: Date.now() + opts.ttl * 1e3,
553
+ tags: opts.tags
554
+ };
555
+ await this.store.set(this.dataKey(key), JSON.stringify(entry), physicalTtl);
556
+ if (opts.tags.length > 0) await Promise.all(opts.tags.map((tag) => this.store.sadd(this.tagSetKey(tag), [key], physicalTtl)));
557
+ return;
558
+ }
559
+ const tagVersions = opts.tags.length > 0 ? await this.getTagVersions(opts.tags) : {};
560
+ const entry = {
561
+ value,
562
+ expiresAt: Date.now() + opts.ttl * 1e3,
563
+ tags: opts.tags,
564
+ tagVersions
565
+ };
566
+ await this.store.set(this.dataKey(key), JSON.stringify(entry), physicalTtl);
567
+ }
568
+ async invalidate(opts) {
569
+ if (opts.key) {
570
+ if (this.strategy === "eager") {
571
+ const raw = await this.store.get(this.dataKey(opts.key));
572
+ if (raw !== null) {
573
+ const entry = JSON.parse(raw);
574
+ if (entry.tags.length > 0) await Promise.all(entry.tags.map((tag) => this.store.srem(this.tagSetKey(tag), [opts.key])));
575
+ }
576
+ }
577
+ await this.store.del(this.dataKey(opts.key));
578
+ }
579
+ if (opts.tag) {
580
+ const tag = opts.tag;
581
+ if (this.strategy === "native") await this.store.invalidateTag(`${this.prefix}${tag}`);
582
+ else if (this.strategy === "eager") {
583
+ const members = await this.store.smembers(this.tagSetKey(tag));
584
+ await Promise.all(members.map(async (k) => {
585
+ const raw = await this.store.get(this.dataKey(k));
586
+ if (raw === null) {
587
+ await this.store.srem(this.tagSetKey(tag), [k]);
588
+ return;
589
+ }
590
+ if (JSON.parse(raw).tags.includes(tag)) {
591
+ await this.store.del(this.dataKey(k));
592
+ await this.store.srem(this.tagSetKey(tag), [k]);
593
+ } else await this.store.srem(this.tagSetKey(tag), [k]);
594
+ }));
595
+ } else await this.bumpTagVersion(opts.tag);
596
+ }
597
+ }
598
+ async getTagVersions(tags) {
599
+ const versions = {};
600
+ await Promise.all(tags.map(async (tag) => {
601
+ const raw = await this.store.get(this.tagVersionKey(tag));
602
+ versions[tag] = raw !== null ? parseInt(raw, 10) : 0;
603
+ }));
604
+ return versions;
605
+ }
606
+ async bumpTagVersion(tag) {
607
+ const key = this.tagVersionKey(tag);
608
+ const raw = await this.store.get(key);
609
+ const version = Math.max(raw !== null ? parseInt(raw, 10) : 0, Date.now()) + 1;
610
+ await this.store.set(key, String(version), 31536e3);
611
+ }
612
+ };
613
+ //#endregion
614
+ //#region src/cache/index.ts
615
+ var MemoryCacheHandler = class {
616
+ store = /* @__PURE__ */ new Map();
617
+ generations = /* @__PURE__ */ new Map();
618
+ maxEntries;
619
+ maxBytes;
620
+ maxEntryBytes;
621
+ currentBytes = 0;
622
+ _trackBytes;
623
+ constructor(opts) {
624
+ this.maxEntries = opts?.maxEntries ?? opts?.maxSize ?? 1e3;
625
+ this.maxBytes = opts?.maxBytes;
626
+ this.maxEntryBytes = opts?.maxEntryBytes;
627
+ this._trackBytes = this.maxBytes !== void 0 || this.maxEntryBytes !== void 0;
628
+ }
629
+ async get(key) {
630
+ const entry = this.store.get(key);
631
+ if (!entry) return null;
632
+ this.store.delete(key);
633
+ this.store.set(key, entry);
634
+ const stale = Date.now() > entry.expiresAt;
635
+ return {
636
+ value: entry.value,
637
+ stale
638
+ };
639
+ }
640
+ async set(key, value, opts) {
641
+ if (opts.generation !== void 0) {
642
+ const current = this.generations.get(key) ?? 0;
643
+ if (opts.generation < current) return;
644
+ }
645
+ const byteSize = this._trackBytes ? estimateByteSize(value) : 0;
646
+ if (this.maxEntryBytes !== void 0 && byteSize > this.maxEntryBytes) return;
647
+ if (this.store.has(key)) {
648
+ const existing = this.store.get(key);
649
+ this.currentBytes -= existing.byteSize;
650
+ this.store.delete(key);
651
+ }
652
+ while (this.store.size >= this.maxEntries) this.evictOldest();
653
+ if (this.maxBytes !== void 0) {
654
+ while (this.currentBytes + byteSize > this.maxBytes && this.store.size > 0) this.evictOldest();
655
+ if (this.currentBytes + byteSize > this.maxBytes) return;
656
+ }
657
+ if (opts.generation !== void 0) this.generations.set(key, opts.generation);
658
+ this.store.set(key, {
659
+ value,
660
+ expiresAt: Date.now() + opts.ttl * 1e3,
661
+ tags: opts.tags,
662
+ byteSize
663
+ });
664
+ this.currentBytes += byteSize;
665
+ }
666
+ async invalidate(opts) {
667
+ if (opts.key) {
668
+ const entry = this.store.get(opts.key);
669
+ if (entry) {
670
+ this.currentBytes -= entry.byteSize;
671
+ this.store.delete(opts.key);
672
+ }
673
+ this.generations.delete(opts.key);
674
+ }
675
+ if (opts.tag) {
676
+ for (const [key, entry] of this.store) if (entry.tags.includes(opts.tag)) {
677
+ this.currentBytes -= entry.byteSize;
678
+ this.store.delete(key);
679
+ this.generations.delete(key);
680
+ }
681
+ }
682
+ }
683
+ /** Number of entries currently in the cache. */
684
+ get size() {
685
+ return this.store.size;
686
+ }
687
+ /** Estimated total byte size of all cached values. Only tracked when maxBytes or maxEntryBytes is configured; returns 0 otherwise. */
688
+ get bytes() {
689
+ return this.currentBytes;
690
+ }
691
+ /** Evict the oldest entry (front of Map). */
692
+ evictOldest() {
693
+ const oldest = this.store.keys().next().value;
694
+ if (oldest !== void 0) {
695
+ const entry = this.store.get(oldest);
696
+ this.currentBytes -= entry.byteSize;
697
+ this.store.delete(oldest);
698
+ this.generations.delete(oldest);
699
+ }
700
+ }
701
+ };
702
+ //#endregion
703
+ //#region src/server/version-skew.ts
704
+ /**
705
+ * Version Skew Detection — graceful recovery when stale clients hit new deployments.
706
+ *
707
+ * When a new version of the app is deployed, clients with open tabs still have
708
+ * the old JavaScript bundle. Without version skew handling, these stale clients
709
+ * will experience:
710
+ *
711
+ * 1. Server action calls that crash (action IDs are content-hashed)
712
+ * 2. Chunk load failures (old filenames gone from CDN)
713
+ * 3. RSC payload mismatches (component references differ between builds)
714
+ *
715
+ * This module implements deployment ID comparison:
716
+ * - A per-build deployment ID is generated at build time (see build-manifest.ts)
717
+ * - The client sends it via `X-Timber-Deployment-Id` header on every RSC/action request
718
+ * - The server compares it against the current build's ID
719
+ * - On mismatch: signal the client to reload (not crash)
720
+ *
721
+ * The deployment ID is always-on in production. Dev mode skips the check
722
+ * (HMR handles code updates without full reloads).
723
+ *
724
+ * See design/25-production-deployments.md, TIM-446
725
+ */
726
+ /** Header sent by the client with every RSC/action request. */
727
+ var DEPLOYMENT_ID_HEADER = "X-Timber-Deployment-Id";
728
+ /** Response header that signals the client to do a full page reload. */
729
+ var RELOAD_HEADER = "X-Timber-Reload";
730
+ /**
731
+ * The current build's deployment ID. Set at startup from the manifest init
732
+ * module (globalThis.__TIMBER_DEPLOYMENT_ID__). Null in dev mode.
733
+ */
734
+ var currentDeploymentId = null;
735
+ /**
736
+ * Get the current deployment ID. Returns null in dev mode.
737
+ */
738
+ function getDeploymentId() {
739
+ return currentDeploymentId;
740
+ }
741
+ /**
742
+ * Check if a request's deployment ID matches the current build.
743
+ *
744
+ * Returns `{ ok: true }` when:
745
+ * - Dev mode (no deployment ID set — HMR handles updates)
746
+ * - No deployment ID header (initial page load, non-RSC request)
747
+ * - Deployment IDs match
748
+ *
749
+ * Returns `{ ok: false }` when:
750
+ * - Client sends a deployment ID that differs from the current build
751
+ */
752
+ function checkVersionSkew(req) {
753
+ if (!currentDeploymentId) return {
754
+ ok: true,
755
+ clientId: null
756
+ };
757
+ const clientId = req.headers.get(DEPLOYMENT_ID_HEADER);
758
+ if (!clientId) return {
759
+ ok: true,
760
+ clientId: null
761
+ };
762
+ if (clientId === currentDeploymentId) return {
763
+ ok: true,
764
+ clientId
765
+ };
766
+ return {
767
+ ok: false,
768
+ clientId
769
+ };
770
+ }
771
+ /**
772
+ * Apply version skew reload headers to a response.
773
+ * Sets X-Timber-Reload: 1 to signal the client to do a full page reload.
774
+ */
775
+ function applyReloadHeaders(headers) {
776
+ headers.set(RELOAD_HEADER, "1");
777
+ }
778
+ //#endregion
779
+ //#region src/server/prebuilt/manifest-tag-index.ts
780
+ /**
781
+ * Build the inverted tag → seed key index from the manifest.
782
+ *
783
+ * Returns a Map where each tag maps to the set of (componentId, cacheKey)
784
+ * pairs whose manifest entries carry that tag. Only entries with non-empty
785
+ * `tags` arrays participate.
786
+ */
787
+ function buildTagIndex(manifest) {
788
+ const index = /* @__PURE__ */ new Map();
789
+ for (const [componentId, component] of Object.entries(manifest)) {
790
+ if (!component || typeof component !== "object" || !("entries" in component)) continue;
791
+ for (const [cacheKey, entry] of Object.entries(component.entries)) {
792
+ if (!entry.tags || entry.tags.length === 0) continue;
793
+ for (const tag of entry.tags) {
794
+ let list = index.get(tag);
795
+ if (!list) {
796
+ list = [];
797
+ index.set(tag, list);
798
+ }
799
+ list.push({
800
+ componentId,
801
+ cacheKey
802
+ });
803
+ }
804
+ }
805
+ }
806
+ return index;
807
+ }
808
+ //#endregion
809
+ //#region src/server/prebuilt/payload-source.ts
810
+ /**
811
+ * Prebuilt payload source — the adapter seam through which the runtime
812
+ * reads build-time flight artifacts (`.timber/dist/prebuilt/`).
813
+ *
814
+ * The runtime never touches the filesystem directly: adapters register a
815
+ * source at startup (Node: fs reads; Cloudflare: the assets binding —
816
+ * design/44-render-at-build-time.md §Adapter Integration). Artifacts are
817
+ * produced by the post-build capture pass (TIM-1119, prebuilt-builder.ts);
818
+ * adapter registration of the source is TIM-1122. Until a source is
819
+ * registered (adapter not wired yet, dev mode, no artifacts built), every
820
+ * lookup misses and cache.component wrappers render live — the designed
821
+ * dynamic-fallback behavior.
822
+ *
823
+ * Phase 3 (design/45 runtime tier) inserts the CacheHandler overlay lookup
824
+ * in front of `lookupPrebuiltPayload` — overlay first, then artifact. The
825
+ * single-lookup-function shape here is that seam.
826
+ */
827
+ var source = null;
828
+ var manifestPromise = null;
829
+ /**
830
+ * Ceiling on the memoized manifest load. Without it, a stalled
831
+ * `loadManifest()` would leave `manifestPromise` pending forever and every
832
+ * subsequent cache.component render would await the same hung promise —
833
+ * the coalesced-promise deadlock class from design/13-security.md (A5).
834
+ * On expiry the load memoizes as null (permanent dynamic fallback, same
835
+ * policy as a failed load) and callers proceed immediately.
836
+ */
837
+ var MANIFEST_LOAD_TIMEOUT_MS = 5e3;
838
+ /**
839
+ * Per-read ceiling on payload reads. The read is awaited inside a server
840
+ * component render — a stalled adapter promise would otherwise hang the
841
+ * RSC stream until the render timeout kills the whole page, when the
842
+ * correct degradation is a miss → live render (codex review round 4 on
843
+ * PR #835).
844
+ */
845
+ var PAYLOAD_READ_TIMEOUT_MS = 5e3;
846
+ /** Race a source promise against a timeout that resolves to `fallback`. */
847
+ async function withTimeout(work, timeoutMs, fallback, onTimeout) {
848
+ let timer;
849
+ try {
850
+ return await Promise.race([work, new Promise((resolve) => {
851
+ timer = setTimeout(() => {
852
+ onTimeout();
853
+ resolve(fallback);
854
+ }, timeoutMs);
855
+ })]);
856
+ } finally {
857
+ clearTimeout(timer);
858
+ }
859
+ }
860
+ async function loadManifestWithTimeout(src) {
861
+ let manifest;
862
+ try {
863
+ manifest = await withTimeout(src.loadManifest(), MANIFEST_LOAD_TIMEOUT_MS, null, () => {
864
+ console.error(`[timber] prebuilt manifest load exceeded ${MANIFEST_LOAD_TIMEOUT_MS}ms — all cache.component lookups will render dynamically`);
865
+ });
866
+ } catch (error) {
867
+ console.error("[timber] failed to load prebuilt manifest — all cache.component lookups will miss:", error);
868
+ return null;
869
+ }
870
+ if (manifest) initTagIndex(manifest);
871
+ return manifest;
872
+ }
873
+ /**
874
+ * Register the payload source. Called once at server startup by the
875
+ * adapter/entry wiring (TIM-1122); tests inject fakes. Passing null
876
+ * unregisters (and drops the memoized manifest).
877
+ */
878
+ function setPrebuiltPayloadSource(next) {
879
+ source = next;
880
+ manifestPromise = null;
881
+ if (!next) resetTagIndex();
882
+ }
883
+ /**
884
+ * Whether a source is registered — the gate for both marker emission and
885
+ * splice-transform installation. False means zero prebuilt overhead.
886
+ */
887
+ function hasPrebuiltPayloadSource() {
888
+ return source !== null;
889
+ }
890
+ /**
891
+ * Ensure the manifest is loaded (and the tag index initialized). No-op
892
+ * when no source is registered. Used by the tombstone path to avoid
893
+ * skipping tombstones on cold processes where the first request is an
894
+ * action rather than a page render.
895
+ */
896
+ async function ensureManifestLoaded() {
897
+ if (source === null) return;
898
+ manifestPromise ??= loadManifestWithTimeout(source);
899
+ await manifestPromise;
900
+ }
901
+ /**
902
+ * Look up a manifest entry (metadata only, no payload read).
903
+ * Used by the overlay to check seed existence and freshness.
904
+ */
905
+ async function isParamIndependent(componentId) {
906
+ if (source === null) return false;
907
+ manifestPromise ??= loadManifestWithTimeout(source);
908
+ return (await manifestPromise)?.[componentId]?.paramIndependent === true;
909
+ }
910
+ async function getManifestEntry(componentId, cacheKey) {
911
+ if (source === null) return null;
912
+ manifestPromise ??= loadManifestWithTimeout(source);
913
+ return (await manifestPromise)?.[componentId]?.entries?.[cacheKey] ?? null;
914
+ }
915
+ /**
916
+ * Look up a cached payload: manifest entry → payload bytes.
917
+ * Null on any miss or read failure — callers fall back to live render.
918
+ *
919
+ * The manifest is loaded once and memoized (design/44 §manifest.json:
920
+ * loaded at startup, held in memory; payloads read on demand). A failed
921
+ * manifest load is memoized as null rather than retried per-request — a
922
+ * broken artifact should degrade to dynamic rendering, not add a failing
923
+ * read to every request.
924
+ */
925
+ async function lookupPrebuiltPayload(componentId, cacheKey) {
926
+ if (source === null) return null;
927
+ manifestPromise ??= loadManifestWithTimeout(source);
928
+ const entry = (await manifestPromise)?.[componentId]?.entries?.[cacheKey];
929
+ if (!entry) return null;
930
+ try {
931
+ return await withTimeout(source.readPayload(entry.file), PAYLOAD_READ_TIMEOUT_MS, null, () => {
932
+ console.error(`[timber] prebuilt payload read for "${entry.file}" exceeded ${PAYLOAD_READ_TIMEOUT_MS}ms — rendering dynamically`);
933
+ });
934
+ } catch (error) {
935
+ console.error(`[timber] failed to read prebuilt payload "${entry.file}" for ${componentId} — rendering dynamically:`, error);
936
+ return null;
937
+ }
938
+ }
939
+ //#endregion
940
+ //#region src/server/prebuilt/overlay.ts
941
+ /**
942
+ * Component cache overlay — runtime CacheHandler layer for ISR.
943
+ *
944
+ * Sits in front of the immutable build artifact (`.flight` files) and
945
+ * stores replacement payloads and tombstones via the configured
946
+ * CacheHandler. Overlay entries are per-deploy namespaced:
947
+ * `timber:c:{deploymentId}:{componentId}:{hash}`
948
+ *
949
+ * The CacheHandler contract is untouched — tombstones and the tag index
950
+ * live above the interface as value conventions. Redis, KV, and custom
951
+ * handlers work unmodified.
952
+ *
953
+ * See design/45-cache-lifetimes.md §ISR mechanics.
954
+ */
955
+ /** Default ceiling TTL for tag-only entries (24 hours), in seconds. */
956
+ var CEILING_TTL_SECONDS = 86400;
957
+ /** Deploy-long physical TTL for seed-backed overlay records (90 days). */
958
+ var DEPLOY_LONG_TTL_SECONDS = 7776e3;
959
+ function isOverlayRecord(v) {
960
+ return v !== null && typeof v === "object" && v._t === "co";
961
+ }
962
+ function isTombstone(v) {
963
+ return v !== null && typeof v === "object" && v._t === "ct";
964
+ }
965
+ function overlayKey(componentId, cacheKey) {
966
+ return `timber:c:${getDeploymentId() ?? "dev"}:${componentId}:${cacheKey}`;
967
+ }
968
+ /**
969
+ * Look up an overlay entry in the cache handler.
970
+ * Returns null on a clean miss (no overlay entry at all).
971
+ */
972
+ async function lookupOverlay(componentId, cacheKey) {
973
+ const handler = getCacheHandler();
974
+ const key = overlayKey(componentId, cacheKey);
975
+ const result = await handler.get(key);
976
+ if (!result) return null;
977
+ const value = result.value;
978
+ if (isTombstone(value)) return {
979
+ kind: "tombstone",
980
+ record: null,
981
+ payload: null
982
+ };
983
+ if (isOverlayRecord(value)) return {
984
+ kind: Date.now() > value.fu ? "stale" : "fresh",
985
+ record: value,
986
+ payload: base64ToBytes(value.p)
987
+ };
988
+ return null;
989
+ }
990
+ /**
991
+ * Resolve the effective TTL for a component's runtime lifetime.
992
+ * Tag-only entries (no explicit ttl) get the ceiling TTL (design/45
993
+ * §Tag-only entries carry a ceiling TTL).
994
+ */
995
+ function effectiveTtl(ttl) {
996
+ return ttl ?? CEILING_TTL_SECONDS;
997
+ }
998
+ /**
999
+ * Store a component flight payload in the overlay.
1000
+ */
1001
+ async function storeOverlayEntry(componentId, cacheKey, payloadBytes, opts) {
1002
+ const handler = getCacheHandler();
1003
+ const key = overlayKey(componentId, cacheKey);
1004
+ const logicalTtl = effectiveTtl(opts.ttl);
1005
+ const physicalTtl = opts.hasSeed ? DEPLOY_LONG_TTL_SECONDS : logicalTtl;
1006
+ const record = {
1007
+ _t: "co",
1008
+ p: bytesToBase64(payloadBytes),
1009
+ fu: Date.now() + logicalTtl * 1e3,
1010
+ s: opts.hasSeed
1011
+ };
1012
+ await handler.set(key, record, {
1013
+ ttl: physicalTtl,
1014
+ tags: opts.tags
1015
+ });
1016
+ }
1017
+ var tagIndex = null;
1018
+ /**
1019
+ * Initialize the tag index from the prebuilt manifest. Called once when the
1020
+ * manifest is loaded. Without a manifest (no prebuilt components), this is
1021
+ * never called and revalidateTag skips the tombstone path entirely.
1022
+ */
1023
+ function initTagIndex(manifest) {
1024
+ tagIndex = buildTagIndex(manifest);
1025
+ emitIsrDiagnosticIfNeeded(manifest);
1026
+ }
1027
+ /**
1028
+ * Reset the tag index (for tests).
1029
+ * @internal
1030
+ */
1031
+ function resetTagIndex() {
1032
+ tagIndex = null;
1033
+ }
1034
+ /**
1035
+ * Write tombstones for all seed entries carrying the given tag.
1036
+ * Called from cache.invalidate (cache-api.ts) AFTER the handler's own
1037
+ * invalidation clears overlay entries.
1038
+ *
1039
+ * The tombstone prevents the immutable seed from being served after
1040
+ * invalidation — without it, a handler.invalidate that clears the overlay
1041
+ * would expose the (now-stale) build artifact on the next request.
1042
+ *
1043
+ * Ensures the manifest is loaded first so cold-process actions that
1044
+ * invalidate before any page render still write tombstones.
1045
+ */
1046
+ async function writeTombstonesForTag(tag) {
1047
+ if (!tagIndex) await ensureManifestLoaded();
1048
+ if (!tagIndex) return;
1049
+ const seeds = tagIndex.get(tag);
1050
+ if (!seeds || seeds.length === 0) return;
1051
+ const handler = getCacheHandler();
1052
+ const tombstone = { _t: "ct" };
1053
+ await Promise.all(seeds.map((seed) => {
1054
+ const key = overlayKey(seed.componentId, seed.cacheKey);
1055
+ return handler.set(key, tombstone, {
1056
+ ttl: DEPLOY_LONG_TTL_SECONDS,
1057
+ tags: [tag]
1058
+ });
1059
+ }));
1060
+ }
1061
+ var isrDiagnosticEmitted = false;
1062
+ function emitIsrDiagnosticIfNeeded(manifest) {
1063
+ if (isrDiagnosticEmitted) return;
1064
+ if (!(getCacheHandler() instanceof MemoryCacheHandler || !isCacheHandlerConfigured())) return;
1065
+ for (const [, component] of Object.entries(manifest)) {
1066
+ if (!component || typeof component !== "object" || !("entries" in component)) continue;
1067
+ for (const [, entry] of Object.entries(component.entries)) if (entry.tags && entry.tags.length > 0) {
1068
+ isrDiagnosticEmitted = true;
1069
+ console.warn("[timber] tag revalidation of prerendered components requires a shared cache handler in multi-instance deployments. The current MemoryCacheHandler is per-process — revalidateTag on one instance will not purge the build seed on others. Configure a shared handler (Redis, KV) for production ISR.");
1070
+ return;
1071
+ }
1072
+ }
1073
+ }
1074
+ function bytesToBase64(bytes) {
1075
+ return Buffer.from(bytes).toString("base64");
1076
+ }
1077
+ function base64ToBytes(b64) {
1078
+ return new Uint8Array(Buffer.from(b64, "base64"));
1079
+ }
1080
+ //#endregion
1081
+ //#region src/cache/cache-api.ts
1082
+ var componentFallbackWarned = /* @__PURE__ */ new WeakSet();
1083
+ /**
1084
+ * Cache namespace — `cache.data`, `cache.component`, `cache.invalidate`.
1085
+ *
1086
+ * ```ts
1087
+ * import { cache } from '@timber-js/app/cache';
1088
+ *
1089
+ * const getUser = cache.data(
1090
+ * async (id: string) => db.users.findUnique({ where: { id } }),
1091
+ * { ttl: 60, tags: (id) => [`user:${id}`] }
1092
+ * );
1093
+ * ```
1094
+ */
1095
+ var cache = {
1096
+ /**
1097
+ * Wrap an async function with cross-request caching.
1098
+ *
1099
+ * The configured cache handler (defaults to MemoryCacheHandler, overridable
1100
+ * via timber.config.ts) is re-resolved on every call, so module-scope
1101
+ * wrappers created before `setCacheHandler()` still pick up the configured
1102
+ * handler (TIM-1029).
1103
+ */
1104
+ data(fn, opts, stableId) {
1105
+ return createCache(fn, opts, getCacheHandler, stableId);
1106
+ },
1107
+ /**
1108
+ * Invalidate cache entries by tag or key.
1109
+ *
1110
+ * ```ts
1111
+ * cache.invalidate({ tag: 'products' });
1112
+ * cache.invalidate({ key: 'user:abc' });
1113
+ * ```
1114
+ */
1115
+ async invalidate(opts) {
1116
+ recordInvalidation(opts);
1117
+ await getCacheHandler().invalidate(opts);
1118
+ if (opts.tag) await writeTombstonesForTag(opts.tag);
1119
+ if (opts.tag) {
1120
+ const purgeHandler = getCdnPurgeHandler();
1121
+ if (purgeHandler) try {
1122
+ await Promise.race([purgeHandler.purgeTags([opts.tag]), new Promise((_, reject) => setTimeout(() => reject(/* @__PURE__ */ new Error("CDN purge timed out (10s)")), 1e4))]);
1123
+ } catch (err) {
1124
+ console.error("[timber] CDN purge failed for tag:", err);
1125
+ }
1126
+ }
1127
+ },
1128
+ /**
1129
+ * Runtime fallback for `cache.component(...)` callsites the timber-prebuilt
1130
+ * transform does not rewrite — nested/computed/argument-position forms (see
1131
+ * plugins/prebuilt.ts). Only module-scope `const X = cache.component(...)`
1132
+ * declarations are transformed and eligible for prebuilding; everything else
1133
+ * lands here, warns once per component, and renders dynamically. Same
1134
+ * safety-net pattern as the data cache's runtime fnId fallback (TIM-1054):
1135
+ * an untraceable callsite degrades in performance, never in correctness.
1136
+ */
1137
+ component(componentFn, _options) {
1138
+ if (!componentFallbackWarned.has(componentFn)) {
1139
+ componentFallbackWarned.add(componentFn);
1140
+ const name = componentFn.name || "anonymous component";
1141
+ console.warn(`[timber] cache.component: "${name}" was not transformed at build time — rendering dynamically. Only module-scope declarations (const X = cache.component(...)) are prebuilt.`);
1142
+ }
1143
+ return componentFn;
1144
+ }
1145
+ };
1146
+ //#endregion
1147
+ export { setDefaultSingleflightTimeout as _, getManifestEntry as a, wasInvalidatedSince as b, lookupPrebuiltPayload as c, checkVersionSkew as d, MemoryCacheHandler as f, setCacheHandler as g, getCacheHandler as h, storeOverlayEntry as i, setPrebuiltPayloadSource as l, RedisCacheHandler as m, lookupOverlay as n, hasPrebuiltPayloadSource as o, TagAwareCacheHandler as p, overlayKey as r, isParamIndependent as s, cache as t, applyReloadHeaders as u, currentInvalidationEpoch as v, lastInvalidationEpochFor as y };
1148
+
1149
+ //# sourceMappingURL=cache-api-ByagcC-J.js.map