@timber-js/app 0.2.0-alpha.192 → 0.2.0-alpha.195

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 (678) hide show
  1. package/agent-skill.md +2 -0
  2. package/dist/_chunks/{actions-BjbbNRFN.js → actions-CWYtq6ii.js} +3 -3
  3. package/dist/_chunks/actions-CWYtq6ii.js.map +1 -0
  4. package/dist/_chunks/als-registry-C6kcfprT.js.map +1 -1
  5. package/dist/_chunks/als-slots-BEEIPKYm.js.map +1 -1
  6. package/dist/_chunks/{build-output-helper-C3DrfzZR.js → build-output-helper-9dqCv1pZ.js} +3 -2
  7. package/dist/_chunks/build-output-helper-9dqCv1pZ.js.map +1 -0
  8. package/dist/_chunks/{cache-api-DllJ-Lyw.js → cache-api-CQeYzA5g.js} +6 -8
  9. package/dist/_chunks/cache-api-CQeYzA5g.js.map +1 -0
  10. package/dist/_chunks/chains-h7EO-u3n.js +412 -0
  11. package/dist/_chunks/chains-h7EO-u3n.js.map +1 -0
  12. package/dist/_chunks/{cli-check-DJZDc22E.js → cli-check-BVthpfLS.js} +43 -6
  13. package/dist/_chunks/cli-check-BVthpfLS.js.map +1 -0
  14. package/dist/_chunks/{cli-schema-sync-D4_AZVUb.js → cli-schema-sync-3Wutm8pH.js} +7 -6
  15. package/dist/_chunks/{cli-schema-sync-D4_AZVUb.js.map → cli-schema-sync-3Wutm8pH.js.map} +1 -1
  16. package/dist/_chunks/{cloudflare-CGP6BZKO.js → cloudflare-BKJC3SC_.js} +28 -22
  17. package/dist/_chunks/{cloudflare-CGP6BZKO.js.map → cloudflare-BKJC3SC_.js.map} +1 -1
  18. package/dist/_chunks/codec-registry-oOUxugz3.js.map +1 -1
  19. package/dist/_chunks/{convention-lint-CpteIpTm.js → convention-lint-DO10_pVl.js} +93 -7
  20. package/dist/_chunks/convention-lint-DO10_pVl.js.map +1 -0
  21. package/dist/_chunks/dist-DtrJyBbw.js +386 -0
  22. package/dist/_chunks/dist-DtrJyBbw.js.map +1 -0
  23. package/dist/_chunks/{error-boundary-D-ODYX41.js → error-boundary-D-lkwyaD.js} +3 -3
  24. package/dist/_chunks/{error-boundary-D-ODYX41.js.map → error-boundary-D-lkwyaD.js.map} +1 -1
  25. package/dist/_chunks/{file-cache-DmX7OqZP.js → file-cache-Dw6BJPG7.js} +5 -1
  26. package/dist/_chunks/{file-cache-DmX7OqZP.js.map → file-cache-Dw6BJPG7.js.map} +1 -1
  27. package/dist/_chunks/{format-CfwjgPz9.js → format-BKclgVbk.js} +3 -3
  28. package/dist/_chunks/{format-CfwjgPz9.js.map → format-BKclgVbk.js.map} +1 -1
  29. package/dist/_chunks/graph-cache-CP4GEmf9.js +304 -0
  30. package/dist/_chunks/graph-cache-CP4GEmf9.js.map +1 -0
  31. package/dist/_chunks/href-validation-CMc5JRls.js.map +1 -1
  32. package/dist/_chunks/live-graph-Bx4HodF1.js +150 -0
  33. package/dist/_chunks/live-graph-Bx4HodF1.js.map +1 -0
  34. package/dist/_chunks/{logger-CH7IcMmg.js → logger-pumCm3Il.js} +25 -7
  35. package/dist/_chunks/{logger-CH7IcMmg.js.map → logger-pumCm3Il.js.map} +1 -1
  36. package/dist/_chunks/{mdx-file-C005ay-P.js → mdx-file-CXyHGUpS.js} +3 -3
  37. package/dist/_chunks/mdx-file-CXyHGUpS.js.map +1 -0
  38. package/dist/_chunks/{plugin-context-rCinWLiE.js → plugin-context-8idfR3UZ.js} +2 -2
  39. package/dist/_chunks/plugin-context-8idfR3UZ.js.map +1 -0
  40. package/dist/_chunks/poison-rules-DoEhbqaY.js +110 -0
  41. package/dist/_chunks/poison-rules-DoEhbqaY.js.map +1 -0
  42. package/dist/_chunks/poison-scan-BAxfTT5L.js +101 -0
  43. package/dist/_chunks/poison-scan-BAxfTT5L.js.map +1 -0
  44. package/dist/_chunks/resolve-schema-CBR6Lm4i.js.map +1 -1
  45. package/dist/_chunks/rolldown-runtime-D7D4PA-g.js +13 -0
  46. package/dist/_chunks/{router-ref-DuYuV_0Q.js → router-ref-BzqbPwYC.js} +2 -2
  47. package/dist/_chunks/{router-ref-DuYuV_0Q.js.map → router-ref-BzqbPwYC.js.map} +1 -1
  48. package/dist/_chunks/{rsc-media-type-DRqE_lD_.js → rsc-media-type-DDc7duTD.js} +17 -2
  49. package/dist/_chunks/{rsc-media-type-DRqE_lD_.js.map → rsc-media-type-DDc7duTD.js.map} +1 -1
  50. package/dist/_chunks/scan-BoP17W3w.js +140 -0
  51. package/dist/_chunks/scan-BoP17W3w.js.map +1 -0
  52. package/dist/_chunks/{scanner-CAietmj4.js → scanner-BRIOmHE2.js} +43 -4
  53. package/dist/_chunks/scanner-BRIOmHE2.js.map +1 -0
  54. package/dist/_chunks/schema-bridge-C83xa9lT.js.map +1 -1
  55. package/dist/_chunks/segment-classify-C539Pa2O.js.map +1 -1
  56. package/dist/_chunks/{segment-keys-BawYuNFO.js → segment-keys-BhqoHiLc.js} +14 -2
  57. package/dist/_chunks/{segment-keys-BawYuNFO.js.map → segment-keys-BhqoHiLc.js.map} +1 -1
  58. package/dist/_chunks/slot-params-BCTmZkQB.js.map +1 -1
  59. package/dist/_chunks/{ssr-data-14MXm7Pj.js → ssr-data-Ya2HJPFp.js} +1 -7
  60. package/dist/_chunks/{ssr-data-14MXm7Pj.js.map → ssr-data-Ya2HJPFp.js.map} +1 -1
  61. package/dist/_chunks/use-query-states-I3JMng6J.js.map +1 -1
  62. package/dist/_chunks/{use-segment-params-C4r4BD9T.js → use-segment-params-DzTBpkvj.js} +3 -3
  63. package/dist/_chunks/use-segment-params-DzTBpkvj.js.map +1 -0
  64. package/dist/_chunks/{walkers-BsVLmD1S.js → walkers-BU6z9xRV.js} +9 -6
  65. package/dist/_chunks/{walkers-BsVLmD1S.js.map → walkers-BU6z9xRV.js.map} +1 -1
  66. package/dist/adapters/build-output-helper.d.ts +1 -1
  67. package/dist/adapters/build-output-helper.d.ts.map +1 -1
  68. package/dist/adapters/cloudflare-dev.d.ts.map +1 -1
  69. package/dist/adapters/cloudflare-dev.js +2 -1
  70. package/dist/adapters/cloudflare-dev.js.map +1 -1
  71. package/dist/adapters/cloudflare-kv-cache.d.ts +1 -1
  72. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -1
  73. package/dist/adapters/cloudflare-kv-cache.js +7 -8
  74. package/dist/adapters/cloudflare-kv-cache.js.map +1 -1
  75. package/dist/adapters/cloudflare.d.ts +1 -1
  76. package/dist/adapters/cloudflare.d.ts.map +1 -1
  77. package/dist/adapters/cloudflare.js +1 -1
  78. package/dist/adapters/nitro-presets.d.ts +37 -0
  79. package/dist/adapters/nitro-presets.d.ts.map +1 -0
  80. package/dist/adapters/nitro-preview.d.ts +32 -0
  81. package/dist/adapters/nitro-preview.d.ts.map +1 -0
  82. package/dist/adapters/nitro.d.ts +28 -51
  83. package/dist/adapters/nitro.d.ts.map +1 -1
  84. package/dist/adapters/nitro.js +224 -171
  85. package/dist/adapters/nitro.js.map +1 -1
  86. package/dist/analyze/chains.d.ts +124 -0
  87. package/dist/analyze/chains.d.ts.map +1 -0
  88. package/dist/analyze/classify.d.ts +150 -0
  89. package/dist/analyze/classify.d.ts.map +1 -0
  90. package/dist/analyze/crawl-entry.d.ts +17 -0
  91. package/dist/analyze/crawl-entry.d.ts.map +1 -0
  92. package/dist/analyze/crawl-entry.js +313 -0
  93. package/dist/analyze/crawl-entry.js.map +1 -0
  94. package/dist/analyze/crawl.d.ts +134 -0
  95. package/dist/analyze/crawl.d.ts.map +1 -0
  96. package/dist/analyze/graph-cache.d.ts +104 -0
  97. package/dist/analyze/graph-cache.d.ts.map +1 -0
  98. package/dist/analyze/graph-command.d.ts +43 -0
  99. package/dist/analyze/graph-command.d.ts.map +1 -0
  100. package/dist/analyze/graph-command.js +472 -0
  101. package/dist/analyze/graph-command.js.map +1 -0
  102. package/dist/analyze/live-graph.d.ts +81 -0
  103. package/dist/analyze/live-graph.d.ts.map +1 -0
  104. package/dist/analyze/poison-rules.d.ts +72 -0
  105. package/dist/analyze/poison-rules.d.ts.map +1 -0
  106. package/dist/analyze/poison-scan.d.ts +48 -0
  107. package/dist/analyze/poison-scan.d.ts.map +1 -0
  108. package/dist/analyze/scan.d.ts +73 -0
  109. package/dist/analyze/scan.d.ts.map +1 -0
  110. package/dist/cache/cache-api.d.ts +2 -2
  111. package/dist/cache/cache-api.d.ts.map +1 -1
  112. package/dist/cache/index.d.ts +8 -8
  113. package/dist/cache/index.d.ts.map +1 -1
  114. package/dist/cache/index.js +1 -1
  115. package/dist/cache/redis-handler.d.ts +1 -1
  116. package/dist/cache/redis-handler.d.ts.map +1 -1
  117. package/dist/cache/stores/cloudflare-kv.d.ts +1 -1
  118. package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -1
  119. package/dist/cache/stores/cloudflare-kv.js.map +1 -1
  120. package/dist/cache/stores/memory.d.ts +1 -1
  121. package/dist/cache/stores/memory.d.ts.map +1 -1
  122. package/dist/cache/stores/memory.js.map +1 -1
  123. package/dist/cache/stores/redis.d.ts +1 -1
  124. package/dist/cache/stores/redis.d.ts.map +1 -1
  125. package/dist/cache/stores/redis.js.map +1 -1
  126. package/dist/cache/stores/vercel.d.ts +1 -1
  127. package/dist/cache/stores/vercel.d.ts.map +1 -1
  128. package/dist/cache/stores/vercel.js.map +1 -1
  129. package/dist/cache/tag-aware-handler.d.ts +2 -2
  130. package/dist/cache/tag-aware-handler.d.ts.map +1 -1
  131. package/dist/cache/timber-cache.d.ts +1 -1
  132. package/dist/cache/timber-cache.d.ts.map +1 -1
  133. package/dist/cdn/cloudflare-purge.d.ts +1 -1
  134. package/dist/cdn/cloudflare-purge.d.ts.map +1 -1
  135. package/dist/cdn/cloudflare-purge.js.map +1 -1
  136. package/dist/cdn/fastly-purge.d.ts +1 -1
  137. package/dist/cdn/fastly-purge.d.ts.map +1 -1
  138. package/dist/cdn/fastly-purge.js.map +1 -1
  139. package/dist/cdn/index.d.ts +4 -4
  140. package/dist/cdn/index.d.ts.map +1 -1
  141. package/dist/cdn/workers-cache-purge.d.ts +5 -1
  142. package/dist/cdn/workers-cache-purge.d.ts.map +1 -1
  143. package/dist/cdn/workers-cache-purge.js.map +1 -1
  144. package/dist/cli-check.d.ts +10 -0
  145. package/dist/cli-check.d.ts.map +1 -1
  146. package/dist/cli.d.ts +12 -4
  147. package/dist/cli.d.ts.map +1 -1
  148. package/dist/cli.js +30 -6
  149. package/dist/cli.js.map +1 -1
  150. package/dist/client/browser-entry/hydrate.d.ts +2 -2
  151. package/dist/client/browser-entry/hydrate.d.ts.map +1 -1
  152. package/dist/client/browser-entry/post-hydration.d.ts +2 -2
  153. package/dist/client/browser-entry/router-init.d.ts +2 -2
  154. package/dist/client/browser-entry/rsc-stream.d.ts +1 -1
  155. package/dist/client/error-boundary.js +1 -1
  156. package/dist/client/form.d.ts +2 -2
  157. package/dist/client/form.d.ts.map +1 -1
  158. package/dist/client/history.d.ts +2 -2
  159. package/dist/client/index.d.ts +18 -18
  160. package/dist/client/index.d.ts.map +1 -1
  161. package/dist/client/index.js +3 -3
  162. package/dist/client/index.js.map +1 -1
  163. package/dist/client/internal.d.ts +19 -19
  164. package/dist/client/internal.d.ts.map +1 -1
  165. package/dist/client/internal.js +15 -19
  166. package/dist/client/internal.js.map +1 -1
  167. package/dist/client/link.d.ts +3 -3
  168. package/dist/client/navigation-commit.d.ts +5 -5
  169. package/dist/client/navigation-root.d.ts +1 -1
  170. package/dist/client/navigation-root.d.ts.map +1 -1
  171. package/dist/client/params-context.d.ts +3 -3
  172. package/dist/client/router-pipeline.d.ts +7 -7
  173. package/dist/client/router-ref.d.ts +1 -1
  174. package/dist/client/router-types.d.ts +6 -6
  175. package/dist/client/router-types.d.ts.map +1 -1
  176. package/dist/client/router.d.ts +1 -1
  177. package/dist/client/rsc-fetch.d.ts +4 -4
  178. package/dist/client/rsc-fetch.d.ts.map +1 -1
  179. package/dist/client/segment-cache.d.ts +2 -2
  180. package/dist/client/slot-provider.d.ts +1 -1
  181. package/dist/client/ssr-data.d.ts +2 -2
  182. package/dist/client/state.d.ts +4 -4
  183. package/dist/client/use-query-states.d.ts +1 -1
  184. package/dist/client/use-segment-params.d.ts +3 -3
  185. package/dist/codec.d.ts +2 -2
  186. package/dist/codec.js.map +1 -1
  187. package/dist/config-types.d.ts +12 -9
  188. package/dist/config-types.d.ts.map +1 -1
  189. package/dist/config-validation.d.ts +1 -1
  190. package/dist/cookies/define-cookie.d.ts +3 -3
  191. package/dist/cookies/index.d.ts +3 -3
  192. package/dist/cookies/index.js +4 -5
  193. package/dist/cookies/index.js.map +1 -1
  194. package/dist/cookies/json-cookie.d.ts +1 -1
  195. package/dist/dev-tools/404-page.d.ts +2 -2
  196. package/dist/dev-tools/error-page.d.ts +2 -2
  197. package/dist/dev-tools/index.d.ts +12 -12
  198. package/dist/dev-tools/instrumentation.d.ts +1 -1
  199. package/dist/dev-tools/logs.d.ts +1 -1
  200. package/dist/dev-tools/overlay.d.ts +2 -2
  201. package/dist/dev-tools/terminal.d.ts +1 -1
  202. package/dist/fonts/ast.d.ts +4 -4
  203. package/dist/fonts/bundle.d.ts +3 -3
  204. package/dist/fonts/css.d.ts +1 -1
  205. package/dist/fonts/dev-middleware.d.ts +1 -1
  206. package/dist/fonts/google.d.ts +1 -1
  207. package/dist/fonts/local.d.ts +1 -1
  208. package/dist/fonts/pipeline.d.ts +3 -3
  209. package/dist/fonts/transform.d.ts +2 -2
  210. package/dist/fonts/types.d.ts +1 -1
  211. package/dist/fonts/virtual-modules.d.ts +1 -1
  212. package/dist/index.d.ts +3 -18
  213. package/dist/index.d.ts.map +1 -1
  214. package/dist/index.js +861 -314
  215. package/dist/index.js.map +1 -1
  216. package/dist/params/codec-registry.d.ts +1 -1
  217. package/dist/params/define-schema.d.ts +2 -2
  218. package/dist/params/index.d.ts +4 -4
  219. package/dist/params/index.js.map +1 -1
  220. package/dist/params/resolve-schema.d.ts +1 -1
  221. package/dist/plugin-context.d.ts +9 -9
  222. package/dist/plugin-context.d.ts.map +1 -1
  223. package/dist/plugins/adapter-build.d.ts +2 -2
  224. package/dist/plugins/build-manifest.d.ts +2 -2
  225. package/dist/plugins/build-report.d.ts +5 -5
  226. package/dist/plugins/cache.d.ts +1 -1
  227. package/dist/plugins/callsite-jsx.d.ts +2 -2
  228. package/dist/plugins/chunks.d.ts +1 -1
  229. package/dist/plugins/chunks.d.ts.map +1 -1
  230. package/dist/plugins/cloudflare-wasm.d.ts +1 -1
  231. package/dist/plugins/content.d.ts +1 -1
  232. package/dist/plugins/content.d.ts.map +1 -1
  233. package/dist/plugins/dev-discovery.d.ts +123 -0
  234. package/dist/plugins/dev-discovery.d.ts.map +1 -0
  235. package/dist/plugins/dev-server.d.ts +1 -1
  236. package/dist/plugins/dev-server.d.ts.map +1 -1
  237. package/dist/plugins/entries.d.ts +1 -1
  238. package/dist/plugins/fonts.d.ts +3 -3
  239. package/dist/plugins/fonts.d.ts.map +1 -1
  240. package/dist/plugins/graph-endpoint.d.ts +112 -0
  241. package/dist/plugins/graph-endpoint.d.ts.map +1 -0
  242. package/dist/plugins/mdx.d.ts +1 -1
  243. package/dist/plugins/mdx.d.ts.map +1 -1
  244. package/dist/plugins/prebuilt-capture.d.ts +2 -2
  245. package/dist/plugins/prebuilt-options-analysis.d.ts +1 -1
  246. package/dist/plugins/prebuilt.d.ts +1 -1
  247. package/dist/plugins/prerender-sugar.d.ts +11 -14
  248. package/dist/plugins/prerender-sugar.d.ts.map +1 -1
  249. package/dist/plugins/request-dep/analysis.d.ts +1 -1
  250. package/dist/plugins/request-dep/index.d.ts +5 -5
  251. package/dist/plugins/request-dep/origin.d.ts +1 -1
  252. package/dist/plugins/routing.d.ts +1 -1
  253. package/dist/plugins/routing.d.ts.map +1 -1
  254. package/dist/plugins/server-bundle.d.ts.map +1 -1
  255. package/dist/plugins/shims.d.ts +1 -1
  256. package/dist/plugins/shims.d.ts.map +1 -1
  257. package/dist/plugins/static-build.d.ts +5 -5
  258. package/dist/routing/codegen-shared.d.ts +1 -1
  259. package/dist/routing/codegen-write.d.ts +1 -1
  260. package/dist/routing/codegen.d.ts +1 -1
  261. package/dist/routing/collision-probe.d.ts +1 -1
  262. package/dist/routing/collision-spaces.d.ts +1 -1
  263. package/dist/routing/convention-lint.d.ts +1 -1
  264. package/dist/routing/convention-lint.d.ts.map +1 -1
  265. package/dist/routing/index.d.ts +13 -13
  266. package/dist/routing/index.js +3 -3
  267. package/dist/routing/interception.d.ts +1 -1
  268. package/dist/routing/interception.d.ts.map +1 -1
  269. package/dist/routing/link-codegen.d.ts +1 -1
  270. package/dist/routing/manifest-codegen.d.ts +1 -1
  271. package/dist/routing/scanner.d.ts +14 -1
  272. package/dist/routing/scanner.d.ts.map +1 -1
  273. package/dist/routing/schema-validation.d.ts +1 -1
  274. package/dist/routing/segment-classify.d.ts +1 -1
  275. package/dist/routing/segment-codegen.d.ts +1 -1
  276. package/dist/routing/segment-keys.d.ts +1 -1
  277. package/dist/routing/slot-placement.d.ts +1 -1
  278. package/dist/routing/walkers.d.ts +1 -1
  279. package/dist/rsc-runtime/transforms.d.ts +13 -0
  280. package/dist/rsc-runtime/transforms.d.ts.map +1 -0
  281. package/dist/schema-bridge.d.ts +1 -1
  282. package/dist/search-params/define.d.ts +3 -3
  283. package/dist/search-params/index.d.ts +3 -3
  284. package/dist/search-params/index.js.map +1 -1
  285. package/dist/search-params/wrappers.d.ts +1 -1
  286. package/dist/server/access-gate.d.ts +1 -1
  287. package/dist/server/action-client.d.ts +1 -1
  288. package/dist/server/action-handler.d.ts +5 -5
  289. package/dist/server/actions.d.ts +2 -2
  290. package/dist/server/als-registry.d.ts +8 -8
  291. package/dist/server/asset-headers.d.ts +1 -1
  292. package/dist/server/chain-url-parts.d.ts +3 -3
  293. package/dist/server/children-interception.d.ts +2 -2
  294. package/dist/server/cookie-context.d.ts +1 -1
  295. package/dist/server/cookie-parsing.d.ts +2 -2
  296. package/dist/server/default-logger.d.ts +1 -1
  297. package/dist/server/deny-boundary.d.ts +2 -2
  298. package/dist/server/deny-renderer.d.ts +5 -5
  299. package/dist/server/early-hints.d.ts +1 -1
  300. package/dist/server/error-boundary-wrapper.d.ts +2 -4
  301. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  302. package/dist/server/fallback-error.d.ts +5 -5
  303. package/dist/server/flight-injection-state.d.ts +1 -1
  304. package/dist/server/form-flash.d.ts +1 -1
  305. package/dist/server/html-injector-core.d.ts +2 -2
  306. package/dist/server/html-injectors.d.ts +1 -1
  307. package/dist/server/index.d.ts +18 -18
  308. package/dist/server/index.d.ts.map +1 -1
  309. package/dist/server/index.js +34 -38
  310. package/dist/server/index.js.map +1 -1
  311. package/dist/server/instrumentation.d.ts +1 -1
  312. package/dist/server/internal.d.ts +50 -50
  313. package/dist/server/internal.d.ts.map +1 -1
  314. package/dist/server/internal.js +1024 -1026
  315. package/dist/server/internal.js.map +1 -1
  316. package/dist/server/metadata-collector.d.ts +2 -2
  317. package/dist/server/metadata-platform.d.ts +2 -2
  318. package/dist/server/metadata-render.d.ts +2 -2
  319. package/dist/server/metadata-routes.d.ts +3 -3
  320. package/dist/server/metadata-social.d.ts +2 -2
  321. package/dist/server/metadata.d.ts +2 -2
  322. package/dist/server/middleware-runner.d.ts +1 -1
  323. package/dist/server/node-stream-transforms.d.ts +1 -1
  324. package/dist/server/param-coercion.d.ts +4 -4
  325. package/dist/server/pipeline-helpers.d.ts +3 -3
  326. package/dist/server/pipeline-interception.d.ts +1 -1
  327. package/dist/server/pipeline-metadata.d.ts +1 -1
  328. package/dist/server/pipeline-outcome.d.ts +2 -2
  329. package/dist/server/pipeline-phases.d.ts +3 -3
  330. package/dist/server/pipeline-phases.d.ts.map +1 -1
  331. package/dist/server/pipeline.d.ts +9 -9
  332. package/dist/server/prebuilt/cache-key.d.ts +1 -1
  333. package/dist/server/prebuilt/capture-state.d.ts +1 -1
  334. package/dist/server/prebuilt/key-discipline.d.ts +1 -1
  335. package/dist/server/prebuilt/manifest-tag-index.d.ts +1 -1
  336. package/dist/server/prebuilt/overlay.d.ts +2 -2
  337. package/dist/server/prebuilt/payload-source.d.ts +1 -1
  338. package/dist/server/prebuilt/slots.d.ts +1 -1
  339. package/dist/server/prebuilt/synthetic-store.d.ts +2 -2
  340. package/dist/server/prebuilt-builder.d.ts +2 -2
  341. package/dist/server/primitives.d.ts +2 -2
  342. package/dist/server/publish-params.d.ts +1 -1
  343. package/dist/server/request-context.d.ts +3 -3
  344. package/dist/server/route-element-builder.d.ts +16 -6
  345. package/dist/server/route-element-builder.d.ts.map +1 -1
  346. package/dist/server/route-handler.d.ts +1 -1
  347. package/dist/server/route-matcher.d.ts +4 -4
  348. package/dist/server/rsc-cache-key-guard.d.ts.map +1 -1
  349. package/dist/server/rsc-entry/action-middleware-runner.d.ts +2 -2
  350. package/dist/server/rsc-entry/api-handler.d.ts +1 -1
  351. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  352. package/dist/server/rsc-entry/deny-fallback.d.ts +3 -3
  353. package/dist/server/rsc-entry/error-renderer.d.ts +4 -4
  354. package/dist/server/rsc-entry/helpers.d.ts +6 -6
  355. package/dist/server/rsc-entry/index.d.ts +7 -6
  356. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  357. package/dist/server/rsc-entry/render-route.d.ts +4 -4
  358. package/dist/server/rsc-entry/revalidate-renderer.d.ts +4 -4
  359. package/dist/server/rsc-entry/rsc-payload.d.ts +4 -4
  360. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  361. package/dist/server/rsc-entry/rsc-stream.d.ts +3 -3
  362. package/dist/server/rsc-entry/ssr-bridge.d.ts +1 -1
  363. package/dist/server/rsc-entry/ssr-renderer.d.ts +7 -7
  364. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +5 -5
  365. package/dist/server/sitemap-generator.d.ts +2 -2
  366. package/dist/server/sitemap-handler.d.ts +1 -1
  367. package/dist/server/skippable-prefix.d.ts +3 -3
  368. package/dist/server/slot-interception.d.ts +2 -2
  369. package/dist/server/slot-resolver.d.ts +3 -7
  370. package/dist/server/slot-resolver.d.ts.map +1 -1
  371. package/dist/server/ssr-bridge-types.d.ts +2 -2
  372. package/dist/server/ssr-entry.d.ts +1 -1
  373. package/dist/server/static-generator.d.ts +1 -1
  374. package/dist/server/static-not-found.d.ts +1 -1
  375. package/dist/server/status-code-resolver.d.ts +1 -1
  376. package/dist/server/tracing.d.ts +3 -3
  377. package/dist/server/tree-builder.d.ts +3 -3
  378. package/dist/server/tree-match.d.ts +1 -1
  379. package/dist/server/types.d.ts +2 -2
  380. package/dist/server/utils/mdx-file.d.ts +2 -0
  381. package/dist/server/utils/mdx-file.d.ts.map +1 -1
  382. package/dist/server/workers-cache-bridge.d.ts +1 -1
  383. package/dist/shared/als-slots.d.ts +1 -1
  384. package/dist/shared/payload-root.d.ts +2 -2
  385. package/dist/shared/rsc-media-type.d.ts +12 -0
  386. package/dist/shared/rsc-media-type.d.ts.map +1 -1
  387. package/dist/shared/slot-params.d.ts +1 -1
  388. package/dist/shims/font-google.d.ts +1 -1
  389. package/dist/shims/font-google.js.map +1 -1
  390. package/dist/shims/font-local.d.ts +1 -1
  391. package/dist/shims/font-local.js.map +1 -1
  392. package/dist/shims/navigation-client.d.ts +4 -4
  393. package/dist/shims/navigation.d.ts +2 -2
  394. package/docs/api/34-api-config.mdx +7 -4
  395. package/docs/api/36-cli.mdx +23 -3
  396. package/docs/learn/11-error-handling.mdx +11 -0
  397. package/docs/learn/13-configuration.mdx +1 -1
  398. package/docs/more/01-advanced-routing.mdx +1 -0
  399. package/package.json +11 -10
  400. package/src/adapters/build-output-helper.ts +4 -4
  401. package/src/adapters/cloudflare-dev.ts +7 -1
  402. package/src/adapters/cloudflare-kv-cache.ts +11 -8
  403. package/src/adapters/cloudflare.ts +21 -15
  404. package/src/adapters/compress-module.ts +2 -2
  405. package/src/adapters/nitro-presets.ts +139 -0
  406. package/src/adapters/nitro-preview.ts +340 -0
  407. package/src/adapters/nitro.ts +100 -465
  408. package/src/adapters/shared.ts +1 -1
  409. package/src/analyze/chains.ts +411 -0
  410. package/src/analyze/classify.ts +258 -0
  411. package/src/analyze/crawl-entry.ts +68 -0
  412. package/src/analyze/crawl.ts +500 -0
  413. package/src/analyze/graph-cache.ts +332 -0
  414. package/src/analyze/graph-command.ts +762 -0
  415. package/src/analyze/live-graph.ts +232 -0
  416. package/src/analyze/poison-rules.ts +165 -0
  417. package/src/analyze/poison-scan.ts +162 -0
  418. package/src/analyze/scan.ts +149 -0
  419. package/src/cache/cache-api.ts +7 -7
  420. package/src/cache/index.ts +9 -9
  421. package/src/cache/redis-handler.ts +2 -2
  422. package/src/cache/stores/cloudflare-kv.ts +1 -1
  423. package/src/cache/stores/memory.ts +2 -2
  424. package/src/cache/stores/redis.ts +1 -1
  425. package/src/cache/stores/vercel.ts +1 -1
  426. package/src/cache/tag-aware-handler.ts +2 -2
  427. package/src/cache/timber-cache.ts +8 -8
  428. package/src/cdn/cloudflare-purge.ts +1 -1
  429. package/src/cdn/fastly-purge.ts +1 -1
  430. package/src/cdn/index.ts +10 -4
  431. package/src/cdn/workers-cache-purge.ts +6 -2
  432. package/src/cli-check.ts +53 -4
  433. package/src/cli-schema-sync.ts +3 -3
  434. package/src/cli.ts +50 -11
  435. package/src/client/browser-dev.ts +1 -1
  436. package/src/client/browser-entry/action-dispatch.ts +5 -5
  437. package/src/client/browser-entry/hmr.ts +1 -1
  438. package/src/client/browser-entry/hydrate.ts +9 -9
  439. package/src/client/browser-entry/index.ts +10 -10
  440. package/src/client/browser-entry/post-hydration.ts +5 -5
  441. package/src/client/browser-entry/router-init.ts +9 -9
  442. package/src/client/browser-entry/rsc-stream.ts +3 -3
  443. package/src/client/error-boundary.tsx +4 -4
  444. package/src/client/form.tsx +7 -2
  445. package/src/client/history.ts +2 -2
  446. package/src/client/index.ts +21 -18
  447. package/src/client/internal.ts +19 -19
  448. package/src/client/link.tsx +9 -9
  449. package/src/client/navigation-api.ts +1 -1
  450. package/src/client/navigation-commit.ts +5 -5
  451. package/src/client/navigation-context.ts +1 -1
  452. package/src/client/navigation-root.tsx +1 -1
  453. package/src/client/nuqs-adapter.tsx +2 -2
  454. package/src/client/params-context.ts +4 -4
  455. package/src/client/router-effects.ts +3 -3
  456. package/src/client/router-lifecycle.ts +2 -2
  457. package/src/client/router-pipeline.ts +10 -10
  458. package/src/client/router-ref.ts +2 -2
  459. package/src/client/router-skew.ts +2 -2
  460. package/src/client/router-types.ts +6 -6
  461. package/src/client/router.ts +13 -13
  462. package/src/client/rsc-fetch.ts +11 -16
  463. package/src/client/segment-cache.ts +2 -2
  464. package/src/client/segment-outlet.tsx +1 -1
  465. package/src/client/shallow-url.ts +1 -1
  466. package/src/client/slot-outlet.tsx +1 -1
  467. package/src/client/slot-provider.tsx +1 -1
  468. package/src/client/ssr-data.ts +3 -3
  469. package/src/client/stale-client.ts +1 -1
  470. package/src/client/state.ts +4 -4
  471. package/src/client/top-loader.tsx +1 -1
  472. package/src/client/unload-guard.ts +1 -1
  473. package/src/client/use-cookie.ts +2 -2
  474. package/src/client/use-pathname.ts +2 -2
  475. package/src/client/use-pending-navigation.ts +1 -1
  476. package/src/client/use-query-states.ts +3 -3
  477. package/src/client/use-router.ts +2 -2
  478. package/src/client/use-search-params.ts +3 -3
  479. package/src/client/use-segment-params.ts +6 -6
  480. package/src/client/use-selected-layout-segment.ts +2 -2
  481. package/src/codec.ts +2 -2
  482. package/src/config-types.ts +12 -9
  483. package/src/config-validation.ts +1 -1
  484. package/src/cookies/define-cookie.ts +6 -6
  485. package/src/cookies/index.ts +3 -3
  486. package/src/cookies/json-cookie.ts +1 -1
  487. package/src/dev-tools/404-page.ts +4 -4
  488. package/src/dev-tools/dev-page-shell.ts +1 -1
  489. package/src/dev-tools/error-page.ts +4 -4
  490. package/src/dev-tools/index.ts +12 -12
  491. package/src/dev-tools/instrumentation.ts +1 -1
  492. package/src/dev-tools/logs.ts +1 -1
  493. package/src/dev-tools/overlay.ts +3 -3
  494. package/src/dev-tools/terminal.ts +2 -2
  495. package/src/fonts/ast.ts +5 -5
  496. package/src/fonts/bundle.ts +5 -5
  497. package/src/fonts/css.ts +1 -1
  498. package/src/fonts/dev-middleware.ts +2 -2
  499. package/src/fonts/google.ts +2 -2
  500. package/src/fonts/local.ts +4 -4
  501. package/src/fonts/pipeline.ts +8 -8
  502. package/src/fonts/transform.ts +5 -5
  503. package/src/fonts/types.ts +1 -1
  504. package/src/fonts/virtual-modules.ts +1 -1
  505. package/src/index.ts +90 -95
  506. package/src/params/codec-registry.ts +1 -1
  507. package/src/params/define-schema.ts +2 -2
  508. package/src/params/index.ts +4 -4
  509. package/src/params/resolve-schema.ts +2 -2
  510. package/src/plugin-context.ts +10 -10
  511. package/src/plugins/adapter-build.ts +5 -5
  512. package/src/plugins/build-manifest.ts +4 -4
  513. package/src/plugins/build-report.ts +6 -6
  514. package/src/plugins/cache.ts +3 -3
  515. package/src/plugins/callsite-ast.ts +1 -1
  516. package/src/plugins/callsite-jsx.ts +2 -2
  517. package/src/plugins/chunks.ts +1 -1
  518. package/src/plugins/cloudflare-wasm.ts +1 -1
  519. package/src/plugins/content.ts +5 -1
  520. package/src/plugins/dev-discovery.ts +218 -0
  521. package/src/plugins/dev-server.ts +97 -12
  522. package/src/plugins/entries.ts +1 -1
  523. package/src/plugins/fonts.ts +17 -10
  524. package/src/plugins/graph-endpoint.ts +532 -0
  525. package/src/plugins/mdx.ts +4 -3
  526. package/src/plugins/prebuilt-capture.ts +3 -3
  527. package/src/plugins/prebuilt-options-analysis.ts +1 -1
  528. package/src/plugins/prebuilt.ts +7 -7
  529. package/src/plugins/prerender-sugar.ts +11 -19
  530. package/src/plugins/request-dep/analysis.ts +1 -1
  531. package/src/plugins/request-dep/index.ts +8 -8
  532. package/src/plugins/request-dep/origin.ts +1 -1
  533. package/src/plugins/routing.ts +12 -7
  534. package/src/plugins/server-bundle.ts +9 -2
  535. package/src/plugins/shims.ts +16 -31
  536. package/src/plugins/static-build.ts +10 -10
  537. package/src/routing/codegen-shared.ts +1 -1
  538. package/src/routing/codegen-write.ts +3 -3
  539. package/src/routing/codegen.ts +14 -5
  540. package/src/routing/collision-probe.ts +3 -3
  541. package/src/routing/collision-spaces.ts +3 -3
  542. package/src/routing/convention-lint.ts +136 -6
  543. package/src/routing/export-detect.ts +1 -1
  544. package/src/routing/index.ts +13 -13
  545. package/src/routing/interception.ts +41 -4
  546. package/src/routing/link-codegen.ts +3 -3
  547. package/src/routing/manifest-codegen.ts +2 -2
  548. package/src/routing/scanner.ts +33 -9
  549. package/src/routing/schema-validation.ts +4 -4
  550. package/src/routing/segment-classify.ts +2 -2
  551. package/src/routing/segment-codegen.ts +1 -1
  552. package/src/routing/segment-keys.ts +1 -1
  553. package/src/routing/slot-placement.ts +1 -1
  554. package/src/routing/walkers.ts +1 -1
  555. package/src/rsc-runtime/transforms.ts +13 -0
  556. package/src/rsc-runtime/vendor-types.d.ts +12 -0
  557. package/src/schema-bridge.ts +1 -1
  558. package/src/search-params/define.ts +8 -8
  559. package/src/search-params/index.ts +3 -3
  560. package/src/search-params/wrappers.ts +3 -3
  561. package/src/server/access-gate.tsx +6 -6
  562. package/src/server/action-client.ts +5 -5
  563. package/src/server/action-handler.ts +16 -16
  564. package/src/server/actions.ts +5 -5
  565. package/src/server/als-registry.ts +8 -8
  566. package/src/server/asset-headers.ts +2 -2
  567. package/src/server/chain-url-parts.ts +5 -5
  568. package/src/server/children-interception.ts +4 -4
  569. package/src/server/compress.ts +1 -1
  570. package/src/server/cookie-context.ts +4 -4
  571. package/src/server/cookie-parsing.ts +2 -2
  572. package/src/server/default-logger.ts +3 -3
  573. package/src/server/deny-boundary.ts +10 -10
  574. package/src/server/deny-renderer.ts +38 -25
  575. package/src/server/early-hints-sender.ts +2 -2
  576. package/src/server/early-hints.ts +2 -2
  577. package/src/server/error-boundary-wrapper.ts +4 -12
  578. package/src/server/fallback-error.ts +13 -13
  579. package/src/server/flight-injection-state.ts +1 -1
  580. package/src/server/form-flash.ts +2 -2
  581. package/src/server/html-injector-core.ts +4 -4
  582. package/src/server/html-injectors.ts +5 -5
  583. package/src/server/index.ts +18 -18
  584. package/src/server/instrumentation.ts +1 -1
  585. package/src/server/internal.ts +50 -50
  586. package/src/server/logger.ts +4 -4
  587. package/src/server/metadata-collector.ts +7 -7
  588. package/src/server/metadata-platform.ts +2 -2
  589. package/src/server/metadata-render.ts +4 -4
  590. package/src/server/metadata-routes.ts +3 -3
  591. package/src/server/metadata-social.ts +2 -2
  592. package/src/server/metadata.ts +2 -2
  593. package/src/server/middleware-runner.ts +1 -1
  594. package/src/server/node-stream-transforms.ts +4 -4
  595. package/src/server/param-coercion.ts +8 -8
  596. package/src/server/pipeline-helpers.ts +7 -7
  597. package/src/server/pipeline-interception.ts +2 -2
  598. package/src/server/pipeline-metadata.ts +1 -1
  599. package/src/server/pipeline-outcome.ts +8 -8
  600. package/src/server/pipeline-phases.ts +24 -28
  601. package/src/server/pipeline.ts +22 -22
  602. package/src/server/prebuilt/cache-key.ts +1 -1
  603. package/src/server/prebuilt/capture-state.ts +1 -1
  604. package/src/server/prebuilt/key-discipline.ts +1 -1
  605. package/src/server/prebuilt/manifest-tag-index.ts +1 -1
  606. package/src/server/prebuilt/overlay.ts +6 -6
  607. package/src/server/prebuilt/payload-source.ts +2 -2
  608. package/src/server/prebuilt/slots.ts +5 -5
  609. package/src/server/prebuilt/synthetic-store.ts +2 -2
  610. package/src/server/prebuilt-builder.ts +16 -16
  611. package/src/server/prebuilt-runtime.ts +12 -12
  612. package/src/server/primitives.ts +7 -7
  613. package/src/server/publish-params.ts +3 -3
  614. package/src/server/request-context.ts +7 -7
  615. package/src/server/route-element-builder.ts +108 -50
  616. package/src/server/route-handler.ts +4 -4
  617. package/src/server/route-matcher.ts +5 -5
  618. package/src/server/rsc-cache-key-guard.ts +3 -5
  619. package/src/server/rsc-entry/action-middleware-runner.ts +7 -7
  620. package/src/server/rsc-entry/api-handler.ts +18 -9
  621. package/src/server/rsc-entry/deny-fallback.ts +10 -10
  622. package/src/server/rsc-entry/error-renderer.ts +27 -27
  623. package/src/server/rsc-entry/helpers.ts +10 -10
  624. package/src/server/rsc-entry/index.ts +51 -47
  625. package/src/server/rsc-entry/render-route.ts +20 -20
  626. package/src/server/rsc-entry/revalidate-renderer.ts +12 -12
  627. package/src/server/rsc-entry/rsc-payload.ts +19 -15
  628. package/src/server/rsc-entry/rsc-stream.ts +8 -8
  629. package/src/server/rsc-entry/ssr-bridge.ts +3 -3
  630. package/src/server/rsc-entry/ssr-renderer.ts +23 -23
  631. package/src/server/rsc-entry/wrap-action-dispatch.ts +9 -9
  632. package/src/server/rsc-prop-warnings.ts +1 -1
  633. package/src/server/sensitive-fields.ts +1 -1
  634. package/src/server/server-timing.ts +1 -1
  635. package/src/server/sitemap-generator.ts +3 -3
  636. package/src/server/sitemap-handler.ts +3 -3
  637. package/src/server/skippable-prefix.ts +7 -7
  638. package/src/server/slot-interception.ts +5 -5
  639. package/src/server/slot-resolver.ts +20 -28
  640. package/src/server/ssr-bridge-types.ts +2 -2
  641. package/src/server/ssr-entry.ts +18 -18
  642. package/src/server/ssr-render.ts +4 -4
  643. package/src/server/ssr-wrappers.tsx +1 -1
  644. package/src/server/state-tree-diff.ts +1 -1
  645. package/src/server/static-generator.ts +6 -6
  646. package/src/server/static-not-found.ts +3 -3
  647. package/src/server/status-code-resolver.ts +1 -1
  648. package/src/server/tracing.ts +5 -5
  649. package/src/server/tree-builder.ts +4 -4
  650. package/src/server/tree-match.ts +1 -1
  651. package/src/server/types.ts +2 -2
  652. package/src/server/utils/mdx-file.ts +2 -2
  653. package/src/server/waituntil-bridge.ts +1 -1
  654. package/src/server/workers-cache-bridge.ts +2 -2
  655. package/src/shared/als-slots.ts +1 -1
  656. package/src/shared/payload-root.ts +2 -2
  657. package/src/shared/rsc-media-type.ts +16 -0
  658. package/src/shared/slot-params.ts +1 -1
  659. package/src/shims/font-google.ts +1 -1
  660. package/src/shims/font-local.ts +1 -1
  661. package/src/shims/navigation-client.ts +5 -5
  662. package/src/shims/navigation.ts +2 -2
  663. package/dist/_chunks/actions-BjbbNRFN.js.map +0 -1
  664. package/dist/_chunks/build-output-helper-C3DrfzZR.js.map +0 -1
  665. package/dist/_chunks/cache-api-DllJ-Lyw.js.map +0 -1
  666. package/dist/_chunks/cli-check-DJZDc22E.js.map +0 -1
  667. package/dist/_chunks/convention-lint-CpteIpTm.js.map +0 -1
  668. package/dist/_chunks/dist-BA3u1z3W.js +0 -423
  669. package/dist/_chunks/dist-BA3u1z3W.js.map +0 -1
  670. package/dist/_chunks/mdx-file-C005ay-P.js.map +0 -1
  671. package/dist/_chunks/plugin-context-rCinWLiE.js.map +0 -1
  672. package/dist/_chunks/scanner-CAietmj4.js.map +0 -1
  673. package/dist/_chunks/use-segment-params-C4r4BD9T.js.map +0 -1
  674. package/dist/content/index.d.ts +0 -2
  675. package/dist/content/index.d.ts.map +0 -1
  676. package/dist/content/index.js +0 -0
  677. package/src/content/index.ts +0 -5
  678. package/src/shims/server-only-noop.js +0 -6
@@ -17,43 +17,40 @@
17
17
 
18
18
  import { createElement, Fragment } from 'react';
19
19
 
20
- import { withSpan } from './tracing.js';
21
- import type { RouteMatch } from './pipeline.js';
22
- import type { ManifestSegmentNode } from './route-matcher.js';
23
- import type { Metadata } from './types.js';
24
- import { DenySignal, RedirectSignal } from './primitives.js';
25
- import { MetadataCollector, MetadataHead } from './metadata-collector.js';
26
- import { AccessGate } from './access-gate.js';
27
- import { requestContextAls } from './als-registry.js';
28
- import { PageDenyBoundary, buildDenyPageChain, handleCaughtDeny } from './deny-boundary.js';
29
- import type { DenyPageEntry } from './deny-boundary.js';
30
- import { LAYOUT_CHILDREN_SLOT } from './prebuilt/slots.js';
20
+ import { withSpan } from './tracing.ts';
21
+ import type { RouteMatch } from './pipeline.ts';
22
+ import type { ManifestSegmentNode } from './route-matcher.ts';
23
+ import type { Metadata } from './types.ts';
24
+ import { DenySignal, RedirectSignal } from './primitives.ts';
25
+ import { MetadataCollector, MetadataHead } from './metadata-collector.ts';
26
+ import { AccessGate } from './access-gate.tsx';
27
+ import { requestContextAls } from './als-registry.ts';
28
+ import { PageDenyBoundary, buildDenyPageChain, handleCaughtDeny } from './deny-boundary.ts';
29
+ import type { DenyPageEntry } from './deny-boundary.ts';
31
30
  import {
32
31
  resolveSlotProps,
33
32
  publishSlotSegmentParams,
34
33
  emitSlotInfoForSkippedLayout,
35
34
  type SlotSkipEntry,
36
- } from './slot-resolver.js';
37
- import { consumedUrlParts } from './chain-url-parts.js';
38
- import { withPublishedParams } from './publish-params.js';
39
- import type { RscPayloadRoot } from '../shared/payload-root.js';
40
- import { SegmentProvider } from '../client/segment-context.js';
41
- import { SegmentOutlet } from '../client/segment-outlet.js';
42
- import { SlotOutlet } from '../client/slot-outlet.js';
43
- import { SlotsProvider } from '../client/slot-provider.js';
44
-
45
- import { TimberErrorBoundary } from '../client/error-boundary.js';
46
- import { wrapSegmentWithErrorBoundaries } from './error-boundary-wrapper.js';
47
- import type { InterceptionContext } from './pipeline.js';
48
- import { shouldSkipSegment, type ClientStateTree } from './state-tree-diff.js';
49
- import { truncateSkippableForChangedSlots } from './skippable-prefix.js';
35
+ } from './slot-resolver.ts';
36
+ import { consumedUrlParts } from './chain-url-parts.ts';
37
+ import { withPublishedParams } from './publish-params.ts';
38
+ import type { RscPayloadRoot } from '../shared/payload-root.ts';
39
+ import { SegmentProvider } from '../client/segment-context.ts';
40
+ import { SegmentOutlet } from '../client/segment-outlet.tsx';
41
+
42
+ import { TimberErrorBoundary } from '../client/error-boundary.tsx';
43
+ import { wrapSegmentWithErrorBoundaries } from './error-boundary-wrapper.ts';
44
+ import type { InterceptionContext } from './pipeline.ts';
45
+ import { shouldSkipSegment, type ClientStateTree } from './state-tree-diff.ts';
46
+ import { truncateSkippableForChangedSlots } from './skippable-prefix.ts';
50
47
  import {
51
48
  computeSegmentKeys,
52
49
  computeSegmentTreePaths,
53
50
  computeSlotKey,
54
- } from '../routing/segment-keys.js';
55
- import { setFirstDeniedSegmentIndex } from './deny-boundary.js';
56
- import { loadModule } from './safe-load.js';
51
+ } from '../routing/segment-keys.ts';
52
+ import { setFirstDeniedSegmentIndex } from './deny-boundary.ts';
53
+ import { loadModule } from './safe-load.ts';
57
54
 
58
55
  /**
59
56
  * Replace the outermost SegmentOutlet in a partial payload with its
@@ -81,6 +78,59 @@ function replaceOutermostSegmentOutlet(
81
78
  return element;
82
79
  }
83
80
 
81
+ /**
82
+ * Whether a layout's returned tree still contains its children boundary.
83
+ *
84
+ * Layouts may forward `children` through a non-children prop or clone it with
85
+ * React.Children/cloneElement. Checking only `props.children` or object
86
+ * identity would incorrectly classify those layouts as suppressing their
87
+ * descendants and let shell settlement complete before an async child deny.
88
+ */
89
+ export function containsLayoutChildren(
90
+ node: unknown,
91
+ boundaryType: React.ElementType,
92
+ seen = new WeakSet<object>()
93
+ ): boolean {
94
+ if (node == null || typeof node !== 'object') return false;
95
+ if (seen.has(node)) return false;
96
+ seen.add(node);
97
+ try {
98
+ if (Array.isArray(node)) {
99
+ return node.some((child) => containsLayoutChildren(child, boundaryType, seen));
100
+ }
101
+ if ('$$typeof' in node && 'type' in node && 'props' in node) {
102
+ if (node.type === boundaryType) return true;
103
+ // React's development element also exposes `_owner`; following it can
104
+ // walk back into the currently rendering layout's pending props and
105
+ // falsely "find" a child that the returned tree actually suppressed.
106
+ return containsLayoutChildren(node.props, boundaryType, seen);
107
+ }
108
+ const descriptors = Object.getOwnPropertyDescriptors(node);
109
+ return Object.values(descriptors).some(
110
+ (descriptor) =>
111
+ 'value' in descriptor &&
112
+ descriptor.enumerable === true &&
113
+ containsLayoutChildren(descriptor.value, boundaryType, seen)
114
+ );
115
+ } catch {
116
+ // An opaque return value cannot safely prove that it retained the
117
+ // boundary. Treat it as suppression so an uninspectable Proxy cannot
118
+ // strand every descendant settlement promise and hang the response.
119
+ return false;
120
+ }
121
+ }
122
+
123
+ export function descendantSettleCallbacks(
124
+ callbacks: Array<() => void>,
125
+ layoutSettled: (() => void) | undefined
126
+ ): Array<() => void> {
127
+ // A tracked layout appended its own callback last; descendants are every
128
+ // callback before it. An untracked layout appended nothing, so all current
129
+ // callbacks belong to descendants. `slice(0, undefined)` is not equivalent
130
+ // to `slice()` — it returns an empty array.
131
+ return layoutSettled ? callbacks.slice(0, -1) : callbacks.slice();
132
+ }
133
+
84
134
  // ─── Client Reference Detection ──────────────────────────────────────────
85
135
 
86
136
  /**
@@ -367,21 +417,27 @@ export async function buildRouteElement(
367
417
  const h = createElement as (...args: unknown[]) => React.ReactElement;
368
418
 
369
419
  // Shell settlement tracking (TIM-1045 pages, TIM-1208 layouts).
370
- // SlotsProvider is 'use client', so React Flight eagerly
371
- // serializes both the layout and child content as independent subtrees —
372
- // the page can settle before an outer layout. We need all deny-capable
373
- // components to settle before committing the HTTP status.
420
+ // Multiple deny-capable components can suspend independently. We need all
421
+ // of them to settle before committing the HTTP status.
374
422
  //
375
423
  // Each tracked component gets its own deferred. shellSettled resolves
376
424
  // when ALL settle (Promise.all) OR when any in-tree deny fires
377
425
  // (short-circuit via onDenyStatus — covers AccessGate, TracedLayout,
378
426
  // and PageDenyBoundary without threading callbacks into each).
379
427
  const shellPromises: Promise<void>[] = [];
428
+ const shellSettleCallbacks: Array<() => void> = [];
380
429
  let resolveShortCircuit: (() => void) | undefined;
381
430
  const trackShellComponent = (): (() => void) => {
382
431
  let resolve!: () => void;
383
432
  shellPromises.push(new Promise<void>((r) => (resolve = r)));
384
- return resolve;
433
+ let settled = false;
434
+ const settle = () => {
435
+ if (settled) return;
436
+ settled = true;
437
+ resolve();
438
+ };
439
+ shellSettleCallbacks.push(settle);
440
+ return settle;
385
441
  };
386
442
 
387
443
  // Build the page element.
@@ -681,18 +737,18 @@ export async function buildRouteElement(
681
737
  const parallelRouteKeys = Object.keys(segment.slots ?? {});
682
738
 
683
739
  // Build the layout element.
684
- // Layouts receive <SlotOutlet slot={LAYOUT_CHILDREN_SLOT} /> as
685
- // children — a stable client reference — instead of the varying
686
- // inner content. The actual child content is provided via
687
- // SlotsProvider above the layout. Uses a reserved slot name to
688
- // avoid collision with user-declared cache.component slots.
689
- // See design/45-cache-lifetimes.md §Layout Propagation.
690
- const childOutlet = h(SlotOutlet, { slot: LAYOUT_CHILDREN_SLOT });
740
+ // Keep the descendant tree in a SERVER layout's children prop. Moving it
741
+ // to a client-provider prop above that layout makes React Flight evaluate
742
+ // and serialize it independently, even when the layout denies access or
743
+ // deliberately omits children. Client layouts cannot provide this
744
+ // containment: Flight must serialize their server-valued children props
745
+ // before they execute in the browser. Convention lint warns users not to
746
+ // treat a client layout as an authorization or data-hiding boundary.
691
747
  let layoutElement: React.ReactElement;
692
748
  if (isClientReference(layoutComponent)) {
693
749
  layoutElement = h(layoutComponent, {
694
750
  ...slotProps,
695
- children: childOutlet,
751
+ children: element,
696
752
  });
697
753
  } else {
698
754
  // Server component layout — wrap with OTEL tracing AND DenySignal
@@ -705,11 +761,20 @@ export async function buildRouteElement(
705
761
  const layoutDenyPages = denyPageChains.get(i);
706
762
  const hasLayoutDenyChain = !!layoutDenyPages && layoutDenyPages.length > 0;
707
763
  const onLayoutSettled = hasLayoutDenyChain ? trackShellComponent() : undefined;
764
+ const descendantSettlers = descendantSettleCallbacks(shellSettleCallbacks, onLayoutSettled);
765
+ const LayoutChildrenBoundary = ({ children }: { children: React.ReactNode }) => children;
708
766
  const TracedLayout = async (props: Record<string, unknown>) => {
709
767
  try {
710
- return await withSpan('timber.layout', { 'timber.segment': segmentId }, () =>
768
+ const rendered = await withSpan('timber.layout', { 'timber.segment': segmentId }, () =>
711
769
  (layoutComponentRef as (props: Record<string, unknown>) => unknown)(props)
712
770
  );
771
+ // A layout is allowed to suppress children. Descendant deny-capable
772
+ // components will never execute in that case, so settle their
773
+ // bookkeeping rather than leaving the RSC response waiting forever.
774
+ if (!containsLayoutChildren(rendered, LayoutChildrenBoundary)) {
775
+ for (const settle of descendantSettlers) settle();
776
+ }
777
+ return rendered;
713
778
  } catch (error: unknown) {
714
779
  // A layout that denied never renders its own chrome — it threw
715
780
  // instead of returning it — so an entry this segment owns is
@@ -728,17 +793,10 @@ export async function buildRouteElement(
728
793
  };
729
794
  layoutElement = h(TracedLayout, {
730
795
  ...slotProps,
731
- children: childOutlet,
796
+ children: h(LayoutChildrenBoundary, { children: element }),
732
797
  });
733
798
  }
734
799
 
735
- // Wrap the layout in SlotsProvider so the SlotOutlet inside the
736
- // layout's children can read the actual child content.
737
- layoutElement = h(SlotsProvider, {
738
- values: { [LAYOUT_CHILDREN_SLOT]: element },
739
- children: layoutElement,
740
- });
741
-
742
800
  const segmentProviderElement = h(SegmentProvider, {
743
801
  segments: segmentPath,
744
802
  segmentId,
@@ -8,10 +8,10 @@
8
8
  * See design/07-routing.md §"route.ts — API Endpoints"
9
9
  */
10
10
 
11
- import type { RouteContext } from './types.js';
12
- import { logRouteError } from './logger.js';
13
- import { DenySignal, RedirectSignal } from './primitives.js';
14
- import { stripHeadBody } from './head-response.js';
11
+ import type { RouteContext } from './types.ts';
12
+ import { logRouteError } from './logger.ts';
13
+ import { DenySignal, RedirectSignal } from './primitives.ts';
14
+ import { stripHeadBody } from './head-response.ts';
15
15
 
16
16
  // ─── Types ───────────────────────────────────────────────────────────────
17
17
 
@@ -8,17 +8,17 @@
8
8
  * See design/07-routing.md §"Request Lifecycle"
9
9
  */
10
10
 
11
- import type { RouteMatch } from './pipeline.js';
12
- import type { MiddlewareFn } from './middleware-runner.js';
13
- import type { SegmentNode, RouteTree } from '../routing/types.js';
11
+ import type { RouteMatch } from './pipeline.ts';
12
+ import type { MiddlewareFn } from './middleware-runner.ts';
13
+ import type { SegmentNode, RouteTree } from '../routing/types.ts';
14
14
  import {
15
15
  METADATA_ROUTE_CONVENTIONS,
16
16
  isStaticMetadataExtension,
17
17
  resolveStaticContentType,
18
18
  resolveServePathForFile,
19
19
  type MetadataRouteType,
20
- } from './metadata-routes.js';
21
- import { matchUrlParts } from './tree-match.js';
20
+ } from './metadata-routes.ts';
21
+ import { matchUrlParts } from './tree-match.ts';
22
22
 
23
23
  // ─── Manifest Types ───────────────────────────────────────────────────────
24
24
  //
@@ -25,8 +25,8 @@
25
25
  * See design/19-client-navigation.md §"The `_rsc` cache key".
26
26
  */
27
27
 
28
- import { rscCacheKey, isRscCacheKeyShape, RSC_KEY_PARAM } from '../shared/rsc-cache-key.js';
29
- import { RSC_CONTENT_TYPE } from '../shared/rsc-media-type.js';
28
+ import { rscCacheKey, isRscCacheKeyShape, RSC_KEY_PARAM } from '../shared/rsc-cache-key.ts';
29
+ import { isRscContentType } from '../shared/rsc-media-type.ts';
30
30
 
31
31
  /**
32
32
  * Legacy shared-cache control fields that predate RFC 9213 and so do not
@@ -122,9 +122,7 @@ export async function hasValidRscCacheKey(req: Request): Promise<boolean> {
122
122
  * #36c.
123
123
  */
124
124
  export function hardenRscPayloadResponse(response: Response): void {
125
- const contentType = response.headers.get('content-type');
126
- if (!contentType) return;
127
- if (contentType.split(';')[0].trim().toLowerCase() !== RSC_CONTENT_TYPE) return;
125
+ if (!isRscContentType(response.headers.get('content-type'))) return;
128
126
  response.headers.set('X-Content-Type-Options', 'nosniff');
129
127
  }
130
128
 
@@ -18,18 +18,18 @@
18
18
  * this in try/catch.
19
19
  */
20
20
 
21
- import { getCookiesForSsr, getSetCookieHeaders } from '../cookie-context.js';
21
+ import { getCookiesForSsr, getSetCookieHeaders } from '../cookie-context.ts';
22
22
  import {
23
23
  applyRequestHeaderOverlay,
24
24
  runWithRequestContext,
25
25
  setMutableCookieContext,
26
26
  setSegmentParams,
27
- } from '../request-context.js';
28
- import { runMiddlewareChain } from '../middleware-runner.js';
29
- import { DenySignal, RedirectSignal } from '../primitives.js';
30
- import { ParamCoercionError } from '../route-element-builder.js';
31
- import type { RouteMatch } from '../pipeline.js';
32
- import type { MiddlewareContext } from '../types.js';
27
+ } from '../request-context.ts';
28
+ import { runMiddlewareChain } from '../middleware-runner.ts';
29
+ import { DenySignal, RedirectSignal } from '../primitives.ts';
30
+ import { ParamCoercionError } from '../route-element-builder.ts';
31
+ import type { RouteMatch } from '../pipeline.ts';
32
+ import type { MiddlewareContext } from '../types.ts';
33
33
 
34
34
  /** Coerce a matched route's segment params via its `params.ts` codecs. */
35
35
  export type CoerceSegmentParamsFn = (match: RouteMatch) => Promise<void>;
@@ -6,14 +6,15 @@
6
6
  * See design/04-authorization.md §"Auth in API Routes".
7
7
  */
8
8
 
9
- import { withSpan, setSpanAttribute } from '../tracing.js';
10
- import type { ManifestSegmentNode } from '../route-matcher.js';
11
- import { loadModule } from '../safe-load.js';
12
- import { DenySignal, RedirectSignal } from '../primitives.js';
13
- import { handleRouteRequest } from '../route-handler.js';
14
- import { stripHeadBody } from '../head-response.js';
15
- import type { RouteModule } from '../route-handler.js';
16
- import type { RouteContext } from '../types.js';
9
+ import { withSpan, setSpanAttribute } from '../tracing.ts';
10
+ import type { ManifestSegmentNode } from '../route-matcher.ts';
11
+ import { loadModule } from '../safe-load.ts';
12
+ import { DenySignal, RedirectSignal } from '../primitives.ts';
13
+ import { handleRouteRequest } from '../route-handler.ts';
14
+ import { stripHeadBody } from '../head-response.ts';
15
+ import { isDebug } from '../debug.ts';
16
+ import type { RouteModule } from '../route-handler.ts';
17
+ import type { RouteContext } from '../types.ts';
17
18
 
18
19
  /**
19
20
  * Handle a `route.ts` request.
@@ -125,10 +126,18 @@ async function renderApiDeny(
125
126
  segments: ManifestSegmentNode[],
126
127
  responseHeaders: Headers
127
128
  ): Promise<Response> {
128
- const { resolveStatusFile } = await import('../status-code-resolver.js');
129
+ const { resolveStatusFile } = await import('../status-code-resolver.ts');
129
130
 
130
131
  const resolution = resolveStatusFile(deny.status, segments, 'json');
131
132
  if (resolution) {
133
+ if (isDebug() && deny.data !== undefined) {
134
+ console.warn(
135
+ `[timber] deny(${deny.status}, data) resolved to ${resolution.file.filePath}, ` +
136
+ `which is a static JSON file. The data argument is dropped — JSON status files ` +
137
+ `are returned verbatim with no interpolation. If you need the data in the ` +
138
+ `response, use a route handler (route.ts) that returns Response.json() directly.`
139
+ );
140
+ }
132
141
  const mod = await loadModule(resolution.file);
133
142
  const jsonContent = mod.default ?? mod;
134
143
  responseHeaders.set('content-type', 'application/json; charset=utf-8');
@@ -10,16 +10,16 @@
10
10
  * Design docs: 04-authorization.md, 10-error-handling.md
11
11
  */
12
12
 
13
- import type { LayoutEntry } from '../deny-renderer.js';
14
- import { renderDenyPage, renderDenyPageAsRsc } from '../deny-renderer.js';
15
- import type { ClientBootstrapConfig } from '../html-injectors.js';
16
- import { logRenderError } from '../logger.js';
17
- import type { PipelineConfig, RouteMatch } from '../pipeline.js';
18
- import type { ManifestSegmentNode } from '../route-matcher.js';
19
- import { loadModule } from '../safe-load.js';
20
- import { createDebugChannelSink } from './helpers.js';
21
- import { isRscRequest } from '../../shared/rsc-media-type.js';
22
- import { callSsr } from './ssr-bridge.js';
13
+ import type { LayoutEntry } from '../deny-renderer.ts';
14
+ import { renderDenyPage, renderDenyPageAsRsc } from '../deny-renderer.ts';
15
+ import type { ClientBootstrapConfig } from '../html-injectors.ts';
16
+ import { logRenderError } from '../logger.ts';
17
+ import type { PipelineConfig, RouteMatch } from '../pipeline.ts';
18
+ import type { ManifestSegmentNode } from '../route-matcher.ts';
19
+ import { loadModule } from '../safe-load.ts';
20
+ import { createDebugChannelSink } from './helpers.ts';
21
+ import { isRscRequest } from '../../shared/rsc-media-type.ts';
22
+ import { callSsr } from './ssr-bridge.ts';
23
23
 
24
24
  /**
25
25
  * Create the pipeline's deny fallback renderer.
@@ -13,33 +13,33 @@
13
13
  */
14
14
 
15
15
  import { createElement } from 'react';
16
- import { renderToReadableStream } from '../../rsc-runtime/rsc.js';
17
-
18
- import type { RouteMatch } from '../pipeline.js';
19
- import { logRenderError } from '../logger.js';
20
- import { appVisibleSearch } from '../../shared/rsc-cache-key.js';
21
- import { getSlotParamsForClient } from '../request-context.js';
22
- import type { ManifestSegmentNode } from '../route-matcher.js';
23
- import { DenySignal, RenderError } from '../primitives.js';
24
- import type { ClientBootstrapConfig } from '../html-injectors.js';
25
- import { flightInitScript, htmlEscapeJsonString } from '../flight-scripts.js';
26
- import { renderDenyPage, renderDenyPageAsRsc } from '../deny-renderer.js';
27
- import type { DefaultPageRenderer, LayoutEntry } from '../deny-renderer.js';
28
- import type { NavContext } from '../ssr-bridge-types.js';
29
- import { createDebugChannelSink } from './helpers.js';
30
- import { isRscRequest } from '../../shared/rsc-media-type.js';
31
- import { withPublishedParams } from '../publish-params.js';
32
- import { getCookiesForSsr } from '../cookie-context.js';
33
- import { callSsr } from './ssr-bridge.js';
34
- import { teeWithErrorPropagation } from '../stream-utils.js';
35
- import { isDevMode } from '../debug.js';
36
- import { ErrorReconstituter } from '../../client/error-reconstituter.js';
37
- import type { SerializableError } from '../../client/error-reconstituter.js';
38
- import { loadModule } from '../safe-load.js';
39
- import { sourceMapError } from '../dev-source-map.js';
40
- import { isMdxFilePath as isMdxFile } from '../utils/mdx-file.js';
41
- import { defaultStatusPageResponse } from '../default-status-page.js';
42
- import { rscErrorEnvelope } from '../../shared/rsc-error-envelope.js';
16
+ import { renderToReadableStream } from '../../rsc-runtime/rsc.ts';
17
+
18
+ import type { RouteMatch } from '../pipeline.ts';
19
+ import { logRenderError } from '../logger.ts';
20
+ import { appVisibleSearch } from '../../shared/rsc-cache-key.ts';
21
+ import { getSlotParamsForClient } from '../request-context.ts';
22
+ import type { ManifestSegmentNode } from '../route-matcher.ts';
23
+ import { DenySignal, RenderError } from '../primitives.ts';
24
+ import type { ClientBootstrapConfig } from '../html-injectors.ts';
25
+ import { flightInitScript, htmlEscapeJsonString } from '../flight-scripts.ts';
26
+ import { renderDenyPage, renderDenyPageAsRsc } from '../deny-renderer.ts';
27
+ import type { DefaultPageRenderer, LayoutEntry } from '../deny-renderer.ts';
28
+ import type { NavContext } from '../ssr-bridge-types.ts';
29
+ import { createDebugChannelSink } from './helpers.ts';
30
+ import { isRscRequest } from '../../shared/rsc-media-type.ts';
31
+ import { withPublishedParams } from '../publish-params.ts';
32
+ import { getCookiesForSsr } from '../cookie-context.ts';
33
+ import { callSsr } from './ssr-bridge.ts';
34
+ import { teeWithErrorPropagation } from '../stream-utils.ts';
35
+ import { isDevMode } from '../debug.ts';
36
+ import { ErrorReconstituter } from '../../client/error-reconstituter.tsx';
37
+ import type { SerializableError } from '../../client/error-reconstituter.tsx';
38
+ import { loadModule } from '../safe-load.ts';
39
+ import { sourceMapError } from '../dev-source-map.ts';
40
+ import { isMdxFilePath as isMdxFile } from '../utils/mdx-file.ts';
41
+ import { defaultStatusPageResponse } from '../default-status-page.ts';
42
+ import { rscErrorEnvelope } from '../../shared/rsc-error-envelope.ts';
43
43
 
44
44
  /**
45
45
  * A manifest file reference with lazy import and path.
@@ -4,13 +4,13 @@
4
4
  * Small, stateless functions used across the RSC entry modules.
5
5
  */
6
6
 
7
- import type { ManifestSegmentNode } from '../route-matcher.js';
8
- import { swallow } from '../logger.js';
9
- import { computeSegmentKeys, computeSegmentTreePaths } from '../../routing/segment-keys.js';
10
- import type { SegmentInfo } from '../../shared/segment-info.js';
11
- import type { SlotSkipEntry } from '../slot-resolver.js';
12
- import { isClientReference } from '../route-element-builder.js';
13
- import { isStaticRequestDependent } from '../request-dep.js';
7
+ import type { ManifestSegmentNode } from '../route-matcher.ts';
8
+ import { swallow } from '../logger.ts';
9
+ import { computeSegmentKeys, computeSegmentTreePaths } from '../../routing/segment-keys.ts';
10
+ import type { SegmentInfo } from '../../shared/segment-info.ts';
11
+ import type { SlotSkipEntry } from '../slot-resolver.ts';
12
+ import { isClientReference } from '../route-element-builder.ts';
13
+ import { isStaticRequestDependent } from '../request-dep.ts';
14
14
 
15
15
  /**
16
16
  * Create a debug channel sink that discards all debug data.
@@ -263,11 +263,11 @@ export function buildSegmentInfo(
263
263
  // Callers within rsc-entry/ import from this file; the implementations
264
264
  // live in pipeline-helpers.ts (buildRedirectResponse) and render-utils.ts
265
265
  // (isAbortError). See TIM-1071 item 1.
266
- export { buildRedirectResponse } from '../pipeline-helpers.js';
267
- export { isAbortError } from '../render-utils.js';
266
+ export { buildRedirectResponse } from '../pipeline-helpers.ts';
267
+ export { isAbortError } from '../render-utils.ts';
268
268
 
269
269
  // escapeHtml is now imported from server/utils/escape-html.ts
270
- export { escapeHtml } from '../utils/escape-html.js';
270
+ export { escapeHtml } from '../utils/escape-html.ts';
271
271
 
272
272
  // Params no longer travel beside the payload. The payload root is the
273
273
  // outermost node of every tree the server sends (`server/publish-params.ts`),