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

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 (667) 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-ZwM9u_ob.js} +6 -5
  15. package/dist/_chunks/{cli-schema-sync-D4_AZVUb.js.map → cli-schema-sync-ZwM9u_ob.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.map +1 -1
  24. package/dist/_chunks/{file-cache-DmX7OqZP.js → file-cache-Dw6BJPG7.js} +5 -1
  25. package/dist/_chunks/{file-cache-DmX7OqZP.js.map → file-cache-Dw6BJPG7.js.map} +1 -1
  26. package/dist/_chunks/{format-CfwjgPz9.js → format-BKclgVbk.js} +3 -3
  27. package/dist/_chunks/{format-CfwjgPz9.js.map → format-BKclgVbk.js.map} +1 -1
  28. package/dist/_chunks/graph-cache-CP4GEmf9.js +304 -0
  29. package/dist/_chunks/graph-cache-CP4GEmf9.js.map +1 -0
  30. package/dist/_chunks/href-validation-CMc5JRls.js.map +1 -1
  31. package/dist/_chunks/live-graph-Bx4HodF1.js +150 -0
  32. package/dist/_chunks/live-graph-Bx4HodF1.js.map +1 -0
  33. package/dist/_chunks/{logger-CH7IcMmg.js → logger-pumCm3Il.js} +25 -7
  34. package/dist/_chunks/{logger-CH7IcMmg.js.map → logger-pumCm3Il.js.map} +1 -1
  35. package/dist/_chunks/{mdx-file-C005ay-P.js → mdx-file-CXyHGUpS.js} +3 -3
  36. package/dist/_chunks/mdx-file-CXyHGUpS.js.map +1 -0
  37. package/dist/_chunks/{plugin-context-rCinWLiE.js → plugin-context-8idfR3UZ.js} +2 -2
  38. package/dist/_chunks/plugin-context-8idfR3UZ.js.map +1 -0
  39. package/dist/_chunks/poison-rules-DoEhbqaY.js +110 -0
  40. package/dist/_chunks/poison-rules-DoEhbqaY.js.map +1 -0
  41. package/dist/_chunks/poison-scan-BAxfTT5L.js +101 -0
  42. package/dist/_chunks/poison-scan-BAxfTT5L.js.map +1 -0
  43. package/dist/_chunks/resolve-schema-CBR6Lm4i.js.map +1 -1
  44. package/dist/_chunks/rolldown-runtime-D7D4PA-g.js +13 -0
  45. package/dist/_chunks/router-ref-DuYuV_0Q.js.map +1 -1
  46. package/dist/_chunks/{rsc-media-type-DRqE_lD_.js → rsc-media-type-DDc7duTD.js} +17 -2
  47. package/dist/_chunks/{rsc-media-type-DRqE_lD_.js.map → rsc-media-type-DDc7duTD.js.map} +1 -1
  48. package/dist/_chunks/scan-BoP17W3w.js +140 -0
  49. package/dist/_chunks/scan-BoP17W3w.js.map +1 -0
  50. package/dist/_chunks/{scanner-CAietmj4.js → scanner-BRIOmHE2.js} +43 -4
  51. package/dist/_chunks/scanner-BRIOmHE2.js.map +1 -0
  52. package/dist/_chunks/schema-bridge-C83xa9lT.js.map +1 -1
  53. package/dist/_chunks/segment-classify-C539Pa2O.js.map +1 -1
  54. package/dist/_chunks/{segment-keys-BawYuNFO.js → segment-keys-BhqoHiLc.js} +14 -2
  55. package/dist/_chunks/{segment-keys-BawYuNFO.js.map → segment-keys-BhqoHiLc.js.map} +1 -1
  56. package/dist/_chunks/slot-params-BCTmZkQB.js.map +1 -1
  57. package/dist/_chunks/ssr-data-14MXm7Pj.js.map +1 -1
  58. package/dist/_chunks/use-query-states-I3JMng6J.js.map +1 -1
  59. package/dist/_chunks/use-segment-params-C4r4BD9T.js.map +1 -1
  60. package/dist/_chunks/{walkers-BsVLmD1S.js → walkers-uCu3WW6_.js} +9 -6
  61. package/dist/_chunks/{walkers-BsVLmD1S.js.map → walkers-uCu3WW6_.js.map} +1 -1
  62. package/dist/adapters/build-output-helper.d.ts +1 -1
  63. package/dist/adapters/build-output-helper.d.ts.map +1 -1
  64. package/dist/adapters/cloudflare-dev.d.ts.map +1 -1
  65. package/dist/adapters/cloudflare-dev.js +2 -1
  66. package/dist/adapters/cloudflare-dev.js.map +1 -1
  67. package/dist/adapters/cloudflare-kv-cache.d.ts +1 -1
  68. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -1
  69. package/dist/adapters/cloudflare-kv-cache.js +7 -8
  70. package/dist/adapters/cloudflare-kv-cache.js.map +1 -1
  71. package/dist/adapters/cloudflare.d.ts +1 -1
  72. package/dist/adapters/cloudflare.d.ts.map +1 -1
  73. package/dist/adapters/cloudflare.js +1 -1
  74. package/dist/adapters/nitro-presets.d.ts +37 -0
  75. package/dist/adapters/nitro-presets.d.ts.map +1 -0
  76. package/dist/adapters/nitro-preview.d.ts +32 -0
  77. package/dist/adapters/nitro-preview.d.ts.map +1 -0
  78. package/dist/adapters/nitro.d.ts +28 -51
  79. package/dist/adapters/nitro.d.ts.map +1 -1
  80. package/dist/adapters/nitro.js +224 -171
  81. package/dist/adapters/nitro.js.map +1 -1
  82. package/dist/analyze/chains.d.ts +124 -0
  83. package/dist/analyze/chains.d.ts.map +1 -0
  84. package/dist/analyze/classify.d.ts +150 -0
  85. package/dist/analyze/classify.d.ts.map +1 -0
  86. package/dist/analyze/crawl-entry.d.ts +17 -0
  87. package/dist/analyze/crawl-entry.d.ts.map +1 -0
  88. package/dist/analyze/crawl-entry.js +313 -0
  89. package/dist/analyze/crawl-entry.js.map +1 -0
  90. package/dist/analyze/crawl.d.ts +134 -0
  91. package/dist/analyze/crawl.d.ts.map +1 -0
  92. package/dist/analyze/graph-cache.d.ts +104 -0
  93. package/dist/analyze/graph-cache.d.ts.map +1 -0
  94. package/dist/analyze/graph-command.d.ts +43 -0
  95. package/dist/analyze/graph-command.d.ts.map +1 -0
  96. package/dist/analyze/graph-command.js +472 -0
  97. package/dist/analyze/graph-command.js.map +1 -0
  98. package/dist/analyze/live-graph.d.ts +81 -0
  99. package/dist/analyze/live-graph.d.ts.map +1 -0
  100. package/dist/analyze/poison-rules.d.ts +72 -0
  101. package/dist/analyze/poison-rules.d.ts.map +1 -0
  102. package/dist/analyze/poison-scan.d.ts +48 -0
  103. package/dist/analyze/poison-scan.d.ts.map +1 -0
  104. package/dist/analyze/scan.d.ts +73 -0
  105. package/dist/analyze/scan.d.ts.map +1 -0
  106. package/dist/cache/cache-api.d.ts +2 -2
  107. package/dist/cache/cache-api.d.ts.map +1 -1
  108. package/dist/cache/index.d.ts +8 -8
  109. package/dist/cache/index.d.ts.map +1 -1
  110. package/dist/cache/index.js +1 -1
  111. package/dist/cache/redis-handler.d.ts +1 -1
  112. package/dist/cache/redis-handler.d.ts.map +1 -1
  113. package/dist/cache/stores/cloudflare-kv.d.ts +1 -1
  114. package/dist/cache/stores/cloudflare-kv.d.ts.map +1 -1
  115. package/dist/cache/stores/cloudflare-kv.js.map +1 -1
  116. package/dist/cache/stores/memory.d.ts +1 -1
  117. package/dist/cache/stores/memory.d.ts.map +1 -1
  118. package/dist/cache/stores/memory.js.map +1 -1
  119. package/dist/cache/stores/redis.d.ts +1 -1
  120. package/dist/cache/stores/redis.d.ts.map +1 -1
  121. package/dist/cache/stores/redis.js.map +1 -1
  122. package/dist/cache/stores/vercel.d.ts +1 -1
  123. package/dist/cache/stores/vercel.d.ts.map +1 -1
  124. package/dist/cache/stores/vercel.js.map +1 -1
  125. package/dist/cache/tag-aware-handler.d.ts +2 -2
  126. package/dist/cache/tag-aware-handler.d.ts.map +1 -1
  127. package/dist/cache/timber-cache.d.ts +1 -1
  128. package/dist/cache/timber-cache.d.ts.map +1 -1
  129. package/dist/cdn/cloudflare-purge.d.ts +1 -1
  130. package/dist/cdn/cloudflare-purge.d.ts.map +1 -1
  131. package/dist/cdn/cloudflare-purge.js.map +1 -1
  132. package/dist/cdn/fastly-purge.d.ts +1 -1
  133. package/dist/cdn/fastly-purge.d.ts.map +1 -1
  134. package/dist/cdn/fastly-purge.js.map +1 -1
  135. package/dist/cdn/index.d.ts +4 -4
  136. package/dist/cdn/index.d.ts.map +1 -1
  137. package/dist/cdn/workers-cache-purge.d.ts +5 -1
  138. package/dist/cdn/workers-cache-purge.d.ts.map +1 -1
  139. package/dist/cdn/workers-cache-purge.js.map +1 -1
  140. package/dist/cli-check.d.ts +10 -0
  141. package/dist/cli-check.d.ts.map +1 -1
  142. package/dist/cli.d.ts +12 -4
  143. package/dist/cli.d.ts.map +1 -1
  144. package/dist/cli.js +30 -6
  145. package/dist/cli.js.map +1 -1
  146. package/dist/client/browser-entry/hydrate.d.ts +2 -2
  147. package/dist/client/browser-entry/hydrate.d.ts.map +1 -1
  148. package/dist/client/browser-entry/post-hydration.d.ts +2 -2
  149. package/dist/client/browser-entry/router-init.d.ts +2 -2
  150. package/dist/client/browser-entry/rsc-stream.d.ts +1 -1
  151. package/dist/client/form.d.ts +2 -2
  152. package/dist/client/form.d.ts.map +1 -1
  153. package/dist/client/history.d.ts +2 -2
  154. package/dist/client/index.d.ts +18 -18
  155. package/dist/client/index.d.ts.map +1 -1
  156. package/dist/client/index.js.map +1 -1
  157. package/dist/client/internal.d.ts +19 -19
  158. package/dist/client/internal.d.ts.map +1 -1
  159. package/dist/client/internal.js +11 -15
  160. package/dist/client/internal.js.map +1 -1
  161. package/dist/client/link.d.ts +3 -3
  162. package/dist/client/navigation-commit.d.ts +5 -5
  163. package/dist/client/navigation-root.d.ts +1 -1
  164. package/dist/client/navigation-root.d.ts.map +1 -1
  165. package/dist/client/params-context.d.ts +3 -3
  166. package/dist/client/router-pipeline.d.ts +7 -7
  167. package/dist/client/router-ref.d.ts +1 -1
  168. package/dist/client/router-types.d.ts +6 -6
  169. package/dist/client/router-types.d.ts.map +1 -1
  170. package/dist/client/router.d.ts +1 -1
  171. package/dist/client/rsc-fetch.d.ts +4 -4
  172. package/dist/client/rsc-fetch.d.ts.map +1 -1
  173. package/dist/client/segment-cache.d.ts +2 -2
  174. package/dist/client/slot-provider.d.ts +1 -1
  175. package/dist/client/ssr-data.d.ts +2 -2
  176. package/dist/client/state.d.ts +4 -4
  177. package/dist/client/use-query-states.d.ts +1 -1
  178. package/dist/client/use-segment-params.d.ts +3 -3
  179. package/dist/codec.d.ts +2 -2
  180. package/dist/codec.js.map +1 -1
  181. package/dist/config-validation.d.ts +1 -1
  182. package/dist/cookies/define-cookie.d.ts +3 -3
  183. package/dist/cookies/index.d.ts +3 -3
  184. package/dist/cookies/index.js +3 -4
  185. package/dist/cookies/index.js.map +1 -1
  186. package/dist/cookies/json-cookie.d.ts +1 -1
  187. package/dist/dev-tools/404-page.d.ts +2 -2
  188. package/dist/dev-tools/error-page.d.ts +2 -2
  189. package/dist/dev-tools/index.d.ts +12 -12
  190. package/dist/dev-tools/instrumentation.d.ts +1 -1
  191. package/dist/dev-tools/logs.d.ts +1 -1
  192. package/dist/dev-tools/overlay.d.ts +2 -2
  193. package/dist/dev-tools/terminal.d.ts +1 -1
  194. package/dist/fonts/ast.d.ts +4 -4
  195. package/dist/fonts/bundle.d.ts +3 -3
  196. package/dist/fonts/css.d.ts +1 -1
  197. package/dist/fonts/dev-middleware.d.ts +1 -1
  198. package/dist/fonts/google.d.ts +1 -1
  199. package/dist/fonts/local.d.ts +1 -1
  200. package/dist/fonts/pipeline.d.ts +3 -3
  201. package/dist/fonts/transform.d.ts +2 -2
  202. package/dist/fonts/types.d.ts +1 -1
  203. package/dist/fonts/virtual-modules.d.ts +1 -1
  204. package/dist/index.d.ts +3 -3
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js +785 -282
  207. package/dist/index.js.map +1 -1
  208. package/dist/params/codec-registry.d.ts +1 -1
  209. package/dist/params/define-schema.d.ts +2 -2
  210. package/dist/params/index.d.ts +4 -4
  211. package/dist/params/index.js.map +1 -1
  212. package/dist/params/resolve-schema.d.ts +1 -1
  213. package/dist/plugin-context.d.ts +9 -9
  214. package/dist/plugin-context.d.ts.map +1 -1
  215. package/dist/plugins/adapter-build.d.ts +2 -2
  216. package/dist/plugins/build-manifest.d.ts +2 -2
  217. package/dist/plugins/build-report.d.ts +5 -5
  218. package/dist/plugins/cache.d.ts +1 -1
  219. package/dist/plugins/callsite-jsx.d.ts +2 -2
  220. package/dist/plugins/chunks.d.ts +1 -1
  221. package/dist/plugins/chunks.d.ts.map +1 -1
  222. package/dist/plugins/cloudflare-wasm.d.ts +1 -1
  223. package/dist/plugins/content.d.ts +1 -1
  224. package/dist/plugins/content.d.ts.map +1 -1
  225. package/dist/plugins/dev-discovery.d.ts +123 -0
  226. package/dist/plugins/dev-discovery.d.ts.map +1 -0
  227. package/dist/plugins/dev-server.d.ts +1 -1
  228. package/dist/plugins/dev-server.d.ts.map +1 -1
  229. package/dist/plugins/entries.d.ts +1 -1
  230. package/dist/plugins/fonts.d.ts +3 -3
  231. package/dist/plugins/fonts.d.ts.map +1 -1
  232. package/dist/plugins/graph-endpoint.d.ts +112 -0
  233. package/dist/plugins/graph-endpoint.d.ts.map +1 -0
  234. package/dist/plugins/mdx.d.ts +1 -1
  235. package/dist/plugins/mdx.d.ts.map +1 -1
  236. package/dist/plugins/prebuilt-capture.d.ts +2 -2
  237. package/dist/plugins/prebuilt-options-analysis.d.ts +1 -1
  238. package/dist/plugins/prebuilt.d.ts +1 -1
  239. package/dist/plugins/prerender-sugar.d.ts +11 -14
  240. package/dist/plugins/prerender-sugar.d.ts.map +1 -1
  241. package/dist/plugins/request-dep/analysis.d.ts +1 -1
  242. package/dist/plugins/request-dep/index.d.ts +5 -5
  243. package/dist/plugins/request-dep/origin.d.ts +1 -1
  244. package/dist/plugins/routing.d.ts +1 -1
  245. package/dist/plugins/routing.d.ts.map +1 -1
  246. package/dist/plugins/server-bundle.d.ts.map +1 -1
  247. package/dist/plugins/shims.d.ts +1 -1
  248. package/dist/plugins/shims.d.ts.map +1 -1
  249. package/dist/plugins/static-build.d.ts +5 -5
  250. package/dist/routing/codegen-shared.d.ts +1 -1
  251. package/dist/routing/codegen-write.d.ts +1 -1
  252. package/dist/routing/codegen.d.ts +1 -1
  253. package/dist/routing/collision-probe.d.ts +1 -1
  254. package/dist/routing/collision-spaces.d.ts +1 -1
  255. package/dist/routing/convention-lint.d.ts +1 -1
  256. package/dist/routing/convention-lint.d.ts.map +1 -1
  257. package/dist/routing/index.d.ts +13 -13
  258. package/dist/routing/index.js +3 -3
  259. package/dist/routing/interception.d.ts +1 -1
  260. package/dist/routing/interception.d.ts.map +1 -1
  261. package/dist/routing/link-codegen.d.ts +1 -1
  262. package/dist/routing/manifest-codegen.d.ts +1 -1
  263. package/dist/routing/scanner.d.ts +14 -1
  264. package/dist/routing/scanner.d.ts.map +1 -1
  265. package/dist/routing/schema-validation.d.ts +1 -1
  266. package/dist/routing/segment-classify.d.ts +1 -1
  267. package/dist/routing/segment-codegen.d.ts +1 -1
  268. package/dist/routing/segment-keys.d.ts +1 -1
  269. package/dist/routing/slot-placement.d.ts +1 -1
  270. package/dist/routing/walkers.d.ts +1 -1
  271. package/dist/rsc-runtime/transforms.d.ts +13 -0
  272. package/dist/rsc-runtime/transforms.d.ts.map +1 -0
  273. package/dist/schema-bridge.d.ts +1 -1
  274. package/dist/search-params/define.d.ts +3 -3
  275. package/dist/search-params/index.d.ts +3 -3
  276. package/dist/search-params/index.js.map +1 -1
  277. package/dist/search-params/wrappers.d.ts +1 -1
  278. package/dist/server/access-gate.d.ts +1 -1
  279. package/dist/server/action-client.d.ts +1 -1
  280. package/dist/server/action-handler.d.ts +5 -5
  281. package/dist/server/actions.d.ts +2 -2
  282. package/dist/server/als-registry.d.ts +8 -8
  283. package/dist/server/asset-headers.d.ts +1 -1
  284. package/dist/server/chain-url-parts.d.ts +3 -3
  285. package/dist/server/children-interception.d.ts +2 -2
  286. package/dist/server/cookie-context.d.ts +1 -1
  287. package/dist/server/cookie-parsing.d.ts +2 -2
  288. package/dist/server/default-logger.d.ts +1 -1
  289. package/dist/server/deny-boundary.d.ts +2 -2
  290. package/dist/server/deny-renderer.d.ts +5 -5
  291. package/dist/server/early-hints.d.ts +1 -1
  292. package/dist/server/error-boundary-wrapper.d.ts +2 -4
  293. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  294. package/dist/server/fallback-error.d.ts +5 -5
  295. package/dist/server/flight-injection-state.d.ts +1 -1
  296. package/dist/server/form-flash.d.ts +1 -1
  297. package/dist/server/html-injector-core.d.ts +2 -2
  298. package/dist/server/html-injectors.d.ts +1 -1
  299. package/dist/server/index.d.ts +18 -18
  300. package/dist/server/index.d.ts.map +1 -1
  301. package/dist/server/index.js +33 -32
  302. package/dist/server/index.js.map +1 -1
  303. package/dist/server/instrumentation.d.ts +1 -1
  304. package/dist/server/internal.d.ts +50 -50
  305. package/dist/server/internal.d.ts.map +1 -1
  306. package/dist/server/internal.js +1023 -1025
  307. package/dist/server/internal.js.map +1 -1
  308. package/dist/server/metadata-collector.d.ts +2 -2
  309. package/dist/server/metadata-platform.d.ts +2 -2
  310. package/dist/server/metadata-render.d.ts +2 -2
  311. package/dist/server/metadata-routes.d.ts +3 -3
  312. package/dist/server/metadata-social.d.ts +2 -2
  313. package/dist/server/metadata.d.ts +2 -2
  314. package/dist/server/middleware-runner.d.ts +1 -1
  315. package/dist/server/node-stream-transforms.d.ts +1 -1
  316. package/dist/server/param-coercion.d.ts +4 -4
  317. package/dist/server/pipeline-helpers.d.ts +3 -3
  318. package/dist/server/pipeline-interception.d.ts +1 -1
  319. package/dist/server/pipeline-metadata.d.ts +1 -1
  320. package/dist/server/pipeline-outcome.d.ts +2 -2
  321. package/dist/server/pipeline-phases.d.ts +3 -3
  322. package/dist/server/pipeline-phases.d.ts.map +1 -1
  323. package/dist/server/pipeline.d.ts +9 -9
  324. package/dist/server/prebuilt/cache-key.d.ts +1 -1
  325. package/dist/server/prebuilt/capture-state.d.ts +1 -1
  326. package/dist/server/prebuilt/key-discipline.d.ts +1 -1
  327. package/dist/server/prebuilt/manifest-tag-index.d.ts +1 -1
  328. package/dist/server/prebuilt/overlay.d.ts +2 -2
  329. package/dist/server/prebuilt/payload-source.d.ts +1 -1
  330. package/dist/server/prebuilt/slots.d.ts +1 -1
  331. package/dist/server/prebuilt/synthetic-store.d.ts +2 -2
  332. package/dist/server/prebuilt-builder.d.ts +2 -2
  333. package/dist/server/primitives.d.ts +2 -2
  334. package/dist/server/publish-params.d.ts +1 -1
  335. package/dist/server/request-context.d.ts +3 -3
  336. package/dist/server/route-element-builder.d.ts +16 -6
  337. package/dist/server/route-element-builder.d.ts.map +1 -1
  338. package/dist/server/route-handler.d.ts +1 -1
  339. package/dist/server/route-matcher.d.ts +4 -4
  340. package/dist/server/rsc-cache-key-guard.d.ts.map +1 -1
  341. package/dist/server/rsc-entry/action-middleware-runner.d.ts +2 -2
  342. package/dist/server/rsc-entry/api-handler.d.ts +1 -1
  343. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  344. package/dist/server/rsc-entry/deny-fallback.d.ts +3 -3
  345. package/dist/server/rsc-entry/error-renderer.d.ts +4 -4
  346. package/dist/server/rsc-entry/helpers.d.ts +6 -6
  347. package/dist/server/rsc-entry/index.d.ts +7 -6
  348. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  349. package/dist/server/rsc-entry/render-route.d.ts +4 -4
  350. package/dist/server/rsc-entry/revalidate-renderer.d.ts +4 -4
  351. package/dist/server/rsc-entry/rsc-payload.d.ts +4 -4
  352. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  353. package/dist/server/rsc-entry/rsc-stream.d.ts +3 -3
  354. package/dist/server/rsc-entry/ssr-bridge.d.ts +1 -1
  355. package/dist/server/rsc-entry/ssr-renderer.d.ts +7 -7
  356. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +5 -5
  357. package/dist/server/sitemap-generator.d.ts +2 -2
  358. package/dist/server/sitemap-handler.d.ts +1 -1
  359. package/dist/server/skippable-prefix.d.ts +3 -3
  360. package/dist/server/slot-interception.d.ts +2 -2
  361. package/dist/server/slot-resolver.d.ts +3 -7
  362. package/dist/server/slot-resolver.d.ts.map +1 -1
  363. package/dist/server/ssr-bridge-types.d.ts +2 -2
  364. package/dist/server/ssr-entry.d.ts +1 -1
  365. package/dist/server/static-generator.d.ts +1 -1
  366. package/dist/server/static-not-found.d.ts +1 -1
  367. package/dist/server/status-code-resolver.d.ts +1 -1
  368. package/dist/server/tracing.d.ts +3 -3
  369. package/dist/server/tree-builder.d.ts +3 -3
  370. package/dist/server/tree-match.d.ts +1 -1
  371. package/dist/server/types.d.ts +2 -2
  372. package/dist/server/utils/mdx-file.d.ts +2 -0
  373. package/dist/server/utils/mdx-file.d.ts.map +1 -1
  374. package/dist/server/workers-cache-bridge.d.ts +1 -1
  375. package/dist/shared/als-slots.d.ts +1 -1
  376. package/dist/shared/payload-root.d.ts +2 -2
  377. package/dist/shared/rsc-media-type.d.ts +12 -0
  378. package/dist/shared/rsc-media-type.d.ts.map +1 -1
  379. package/dist/shared/slot-params.d.ts +1 -1
  380. package/dist/shims/font-google.d.ts +1 -1
  381. package/dist/shims/font-google.js.map +1 -1
  382. package/dist/shims/font-local.d.ts +1 -1
  383. package/dist/shims/font-local.js.map +1 -1
  384. package/dist/shims/navigation-client.d.ts +4 -4
  385. package/dist/shims/navigation.d.ts +2 -2
  386. package/docs/api/36-cli.mdx +23 -3
  387. package/docs/learn/11-error-handling.mdx +11 -0
  388. package/docs/more/01-advanced-routing.mdx +1 -0
  389. package/package.json +17 -16
  390. package/src/adapters/build-output-helper.ts +4 -4
  391. package/src/adapters/cloudflare-dev.ts +7 -1
  392. package/src/adapters/cloudflare-kv-cache.ts +11 -8
  393. package/src/adapters/cloudflare.ts +21 -15
  394. package/src/adapters/compress-module.ts +2 -2
  395. package/src/adapters/nitro-presets.ts +139 -0
  396. package/src/adapters/nitro-preview.ts +340 -0
  397. package/src/adapters/nitro.ts +100 -465
  398. package/src/adapters/shared.ts +1 -1
  399. package/src/analyze/chains.ts +411 -0
  400. package/src/analyze/classify.ts +258 -0
  401. package/src/analyze/crawl-entry.ts +68 -0
  402. package/src/analyze/crawl.ts +500 -0
  403. package/src/analyze/graph-cache.ts +332 -0
  404. package/src/analyze/graph-command.ts +762 -0
  405. package/src/analyze/live-graph.ts +232 -0
  406. package/src/analyze/poison-rules.ts +165 -0
  407. package/src/analyze/poison-scan.ts +162 -0
  408. package/src/analyze/scan.ts +149 -0
  409. package/src/cache/cache-api.ts +7 -7
  410. package/src/cache/index.ts +9 -9
  411. package/src/cache/redis-handler.ts +2 -2
  412. package/src/cache/stores/cloudflare-kv.ts +1 -1
  413. package/src/cache/stores/memory.ts +2 -2
  414. package/src/cache/stores/redis.ts +1 -1
  415. package/src/cache/stores/vercel.ts +1 -1
  416. package/src/cache/tag-aware-handler.ts +2 -2
  417. package/src/cache/timber-cache.ts +8 -8
  418. package/src/cdn/cloudflare-purge.ts +1 -1
  419. package/src/cdn/fastly-purge.ts +1 -1
  420. package/src/cdn/index.ts +10 -4
  421. package/src/cdn/workers-cache-purge.ts +6 -2
  422. package/src/cli-check.ts +53 -4
  423. package/src/cli-schema-sync.ts +3 -3
  424. package/src/cli.ts +50 -11
  425. package/src/client/browser-dev.ts +1 -1
  426. package/src/client/browser-entry/action-dispatch.ts +5 -5
  427. package/src/client/browser-entry/hmr.ts +1 -1
  428. package/src/client/browser-entry/hydrate.ts +9 -9
  429. package/src/client/browser-entry/index.ts +10 -10
  430. package/src/client/browser-entry/post-hydration.ts +5 -5
  431. package/src/client/browser-entry/router-init.ts +9 -9
  432. package/src/client/browser-entry/rsc-stream.ts +3 -3
  433. package/src/client/error-boundary.tsx +4 -4
  434. package/src/client/form.tsx +7 -2
  435. package/src/client/history.ts +2 -2
  436. package/src/client/index.ts +21 -18
  437. package/src/client/internal.ts +19 -19
  438. package/src/client/link.tsx +9 -9
  439. package/src/client/navigation-api.ts +1 -1
  440. package/src/client/navigation-commit.ts +5 -5
  441. package/src/client/navigation-context.ts +1 -1
  442. package/src/client/navigation-root.tsx +1 -1
  443. package/src/client/nuqs-adapter.tsx +2 -2
  444. package/src/client/params-context.ts +4 -4
  445. package/src/client/router-effects.ts +3 -3
  446. package/src/client/router-lifecycle.ts +2 -2
  447. package/src/client/router-pipeline.ts +10 -10
  448. package/src/client/router-ref.ts +2 -2
  449. package/src/client/router-skew.ts +2 -2
  450. package/src/client/router-types.ts +6 -6
  451. package/src/client/router.ts +13 -13
  452. package/src/client/rsc-fetch.ts +11 -16
  453. package/src/client/segment-cache.ts +2 -2
  454. package/src/client/segment-outlet.tsx +1 -1
  455. package/src/client/shallow-url.ts +1 -1
  456. package/src/client/slot-outlet.tsx +1 -1
  457. package/src/client/slot-provider.tsx +1 -1
  458. package/src/client/ssr-data.ts +3 -3
  459. package/src/client/stale-client.ts +1 -1
  460. package/src/client/state.ts +4 -4
  461. package/src/client/top-loader.tsx +1 -1
  462. package/src/client/unload-guard.ts +1 -1
  463. package/src/client/use-cookie.ts +2 -2
  464. package/src/client/use-pathname.ts +2 -2
  465. package/src/client/use-pending-navigation.ts +1 -1
  466. package/src/client/use-query-states.ts +3 -3
  467. package/src/client/use-router.ts +2 -2
  468. package/src/client/use-search-params.ts +3 -3
  469. package/src/client/use-segment-params.ts +6 -6
  470. package/src/client/use-selected-layout-segment.ts +2 -2
  471. package/src/codec.ts +2 -2
  472. package/src/config-validation.ts +1 -1
  473. package/src/cookies/define-cookie.ts +6 -6
  474. package/src/cookies/index.ts +3 -3
  475. package/src/cookies/json-cookie.ts +1 -1
  476. package/src/dev-tools/404-page.ts +4 -4
  477. package/src/dev-tools/dev-page-shell.ts +1 -1
  478. package/src/dev-tools/error-page.ts +4 -4
  479. package/src/dev-tools/index.ts +12 -12
  480. package/src/dev-tools/instrumentation.ts +1 -1
  481. package/src/dev-tools/logs.ts +1 -1
  482. package/src/dev-tools/overlay.ts +3 -3
  483. package/src/dev-tools/terminal.ts +2 -2
  484. package/src/fonts/ast.ts +5 -5
  485. package/src/fonts/bundle.ts +5 -5
  486. package/src/fonts/css.ts +1 -1
  487. package/src/fonts/dev-middleware.ts +2 -2
  488. package/src/fonts/google.ts +2 -2
  489. package/src/fonts/local.ts +4 -4
  490. package/src/fonts/pipeline.ts +8 -8
  491. package/src/fonts/transform.ts +5 -5
  492. package/src/fonts/types.ts +1 -1
  493. package/src/fonts/virtual-modules.ts +1 -1
  494. package/src/index.ts +46 -37
  495. package/src/params/codec-registry.ts +1 -1
  496. package/src/params/define-schema.ts +2 -2
  497. package/src/params/index.ts +4 -4
  498. package/src/params/resolve-schema.ts +2 -2
  499. package/src/plugin-context.ts +10 -10
  500. package/src/plugins/adapter-build.ts +5 -5
  501. package/src/plugins/build-manifest.ts +4 -4
  502. package/src/plugins/build-report.ts +6 -6
  503. package/src/plugins/cache.ts +3 -3
  504. package/src/plugins/callsite-ast.ts +1 -1
  505. package/src/plugins/callsite-jsx.ts +2 -2
  506. package/src/plugins/chunks.ts +1 -1
  507. package/src/plugins/cloudflare-wasm.ts +1 -1
  508. package/src/plugins/content.ts +5 -1
  509. package/src/plugins/dev-discovery.ts +218 -0
  510. package/src/plugins/dev-server.ts +97 -12
  511. package/src/plugins/entries.ts +1 -1
  512. package/src/plugins/fonts.ts +17 -10
  513. package/src/plugins/graph-endpoint.ts +532 -0
  514. package/src/plugins/mdx.ts +4 -3
  515. package/src/plugins/prebuilt-capture.ts +3 -3
  516. package/src/plugins/prebuilt-options-analysis.ts +1 -1
  517. package/src/plugins/prebuilt.ts +7 -7
  518. package/src/plugins/prerender-sugar.ts +11 -19
  519. package/src/plugins/request-dep/analysis.ts +1 -1
  520. package/src/plugins/request-dep/index.ts +8 -8
  521. package/src/plugins/request-dep/origin.ts +1 -1
  522. package/src/plugins/routing.ts +12 -7
  523. package/src/plugins/server-bundle.ts +9 -2
  524. package/src/plugins/shims.ts +16 -31
  525. package/src/plugins/static-build.ts +10 -10
  526. package/src/routing/codegen-shared.ts +1 -1
  527. package/src/routing/codegen-write.ts +3 -3
  528. package/src/routing/codegen.ts +14 -5
  529. package/src/routing/collision-probe.ts +3 -3
  530. package/src/routing/collision-spaces.ts +3 -3
  531. package/src/routing/convention-lint.ts +136 -6
  532. package/src/routing/export-detect.ts +1 -1
  533. package/src/routing/index.ts +13 -13
  534. package/src/routing/interception.ts +41 -4
  535. package/src/routing/link-codegen.ts +3 -3
  536. package/src/routing/manifest-codegen.ts +2 -2
  537. package/src/routing/scanner.ts +33 -9
  538. package/src/routing/schema-validation.ts +4 -4
  539. package/src/routing/segment-classify.ts +2 -2
  540. package/src/routing/segment-codegen.ts +1 -1
  541. package/src/routing/segment-keys.ts +1 -1
  542. package/src/routing/slot-placement.ts +1 -1
  543. package/src/routing/walkers.ts +1 -1
  544. package/src/rsc-runtime/transforms.ts +13 -0
  545. package/src/rsc-runtime/vendor-types.d.ts +12 -0
  546. package/src/schema-bridge.ts +1 -1
  547. package/src/search-params/define.ts +8 -8
  548. package/src/search-params/index.ts +3 -3
  549. package/src/search-params/wrappers.ts +3 -3
  550. package/src/server/access-gate.tsx +6 -6
  551. package/src/server/action-client.ts +5 -5
  552. package/src/server/action-handler.ts +16 -16
  553. package/src/server/actions.ts +5 -5
  554. package/src/server/als-registry.ts +8 -8
  555. package/src/server/asset-headers.ts +2 -2
  556. package/src/server/chain-url-parts.ts +5 -5
  557. package/src/server/children-interception.ts +4 -4
  558. package/src/server/compress.ts +1 -1
  559. package/src/server/cookie-context.ts +4 -4
  560. package/src/server/cookie-parsing.ts +2 -2
  561. package/src/server/default-logger.ts +3 -3
  562. package/src/server/deny-boundary.ts +10 -10
  563. package/src/server/deny-renderer.ts +38 -25
  564. package/src/server/early-hints-sender.ts +2 -2
  565. package/src/server/early-hints.ts +2 -2
  566. package/src/server/error-boundary-wrapper.ts +4 -12
  567. package/src/server/fallback-error.ts +13 -13
  568. package/src/server/flight-injection-state.ts +1 -1
  569. package/src/server/form-flash.ts +2 -2
  570. package/src/server/html-injector-core.ts +4 -4
  571. package/src/server/html-injectors.ts +5 -5
  572. package/src/server/index.ts +18 -18
  573. package/src/server/instrumentation.ts +1 -1
  574. package/src/server/internal.ts +50 -50
  575. package/src/server/logger.ts +4 -4
  576. package/src/server/metadata-collector.ts +7 -7
  577. package/src/server/metadata-platform.ts +2 -2
  578. package/src/server/metadata-render.ts +4 -4
  579. package/src/server/metadata-routes.ts +3 -3
  580. package/src/server/metadata-social.ts +2 -2
  581. package/src/server/metadata.ts +2 -2
  582. package/src/server/middleware-runner.ts +1 -1
  583. package/src/server/node-stream-transforms.ts +4 -4
  584. package/src/server/param-coercion.ts +8 -8
  585. package/src/server/pipeline-helpers.ts +7 -7
  586. package/src/server/pipeline-interception.ts +2 -2
  587. package/src/server/pipeline-metadata.ts +1 -1
  588. package/src/server/pipeline-outcome.ts +8 -8
  589. package/src/server/pipeline-phases.ts +24 -28
  590. package/src/server/pipeline.ts +22 -22
  591. package/src/server/prebuilt/cache-key.ts +1 -1
  592. package/src/server/prebuilt/capture-state.ts +1 -1
  593. package/src/server/prebuilt/key-discipline.ts +1 -1
  594. package/src/server/prebuilt/manifest-tag-index.ts +1 -1
  595. package/src/server/prebuilt/overlay.ts +6 -6
  596. package/src/server/prebuilt/payload-source.ts +2 -2
  597. package/src/server/prebuilt/slots.ts +5 -5
  598. package/src/server/prebuilt/synthetic-store.ts +2 -2
  599. package/src/server/prebuilt-builder.ts +16 -16
  600. package/src/server/prebuilt-runtime.ts +12 -12
  601. package/src/server/primitives.ts +7 -7
  602. package/src/server/publish-params.ts +3 -3
  603. package/src/server/request-context.ts +7 -7
  604. package/src/server/route-element-builder.ts +108 -50
  605. package/src/server/route-handler.ts +4 -4
  606. package/src/server/route-matcher.ts +5 -5
  607. package/src/server/rsc-cache-key-guard.ts +3 -5
  608. package/src/server/rsc-entry/action-middleware-runner.ts +7 -7
  609. package/src/server/rsc-entry/api-handler.ts +18 -9
  610. package/src/server/rsc-entry/deny-fallback.ts +10 -10
  611. package/src/server/rsc-entry/error-renderer.ts +27 -27
  612. package/src/server/rsc-entry/helpers.ts +10 -10
  613. package/src/server/rsc-entry/index.ts +51 -47
  614. package/src/server/rsc-entry/render-route.ts +20 -20
  615. package/src/server/rsc-entry/revalidate-renderer.ts +12 -12
  616. package/src/server/rsc-entry/rsc-payload.ts +19 -15
  617. package/src/server/rsc-entry/rsc-stream.ts +8 -8
  618. package/src/server/rsc-entry/ssr-bridge.ts +3 -3
  619. package/src/server/rsc-entry/ssr-renderer.ts +23 -23
  620. package/src/server/rsc-entry/wrap-action-dispatch.ts +9 -9
  621. package/src/server/rsc-prop-warnings.ts +1 -1
  622. package/src/server/sensitive-fields.ts +1 -1
  623. package/src/server/server-timing.ts +1 -1
  624. package/src/server/sitemap-generator.ts +3 -3
  625. package/src/server/sitemap-handler.ts +3 -3
  626. package/src/server/skippable-prefix.ts +7 -7
  627. package/src/server/slot-interception.ts +5 -5
  628. package/src/server/slot-resolver.ts +20 -28
  629. package/src/server/ssr-bridge-types.ts +2 -2
  630. package/src/server/ssr-entry.ts +18 -18
  631. package/src/server/ssr-render.ts +4 -4
  632. package/src/server/ssr-wrappers.tsx +1 -1
  633. package/src/server/state-tree-diff.ts +1 -1
  634. package/src/server/static-generator.ts +6 -6
  635. package/src/server/static-not-found.ts +3 -3
  636. package/src/server/status-code-resolver.ts +1 -1
  637. package/src/server/tracing.ts +5 -5
  638. package/src/server/tree-builder.ts +4 -4
  639. package/src/server/tree-match.ts +1 -1
  640. package/src/server/types.ts +2 -2
  641. package/src/server/utils/mdx-file.ts +2 -2
  642. package/src/server/waituntil-bridge.ts +1 -1
  643. package/src/server/workers-cache-bridge.ts +2 -2
  644. package/src/shared/als-slots.ts +1 -1
  645. package/src/shared/payload-root.ts +2 -2
  646. package/src/shared/rsc-media-type.ts +16 -0
  647. package/src/shared/slot-params.ts +1 -1
  648. package/src/shims/font-google.ts +1 -1
  649. package/src/shims/font-local.ts +1 -1
  650. package/src/shims/navigation-client.ts +5 -5
  651. package/src/shims/navigation.ts +2 -2
  652. package/LICENSE +0 -8
  653. package/dist/_chunks/actions-BjbbNRFN.js.map +0 -1
  654. package/dist/_chunks/build-output-helper-C3DrfzZR.js.map +0 -1
  655. package/dist/_chunks/cache-api-DllJ-Lyw.js.map +0 -1
  656. package/dist/_chunks/cli-check-DJZDc22E.js.map +0 -1
  657. package/dist/_chunks/convention-lint-CpteIpTm.js.map +0 -1
  658. package/dist/_chunks/dist-BA3u1z3W.js +0 -423
  659. package/dist/_chunks/dist-BA3u1z3W.js.map +0 -1
  660. package/dist/_chunks/mdx-file-C005ay-P.js.map +0 -1
  661. package/dist/_chunks/plugin-context-rCinWLiE.js.map +0 -1
  662. package/dist/_chunks/scanner-CAietmj4.js.map +0 -1
  663. package/dist/content/index.d.ts +0 -2
  664. package/dist/content/index.d.ts.map +0 -1
  665. package/dist/content/index.js +0 -0
  666. package/src/content/index.ts +0 -5
  667. package/src/shims/server-only-noop.js +0 -6
@@ -17,15 +17,15 @@ import type {
17
17
  RouteFile,
18
18
  ScannerConfig,
19
19
  InterceptionMarker,
20
- } from './types.js';
21
- import { classifySegment, effectiveUrlSegment } from './segment-classify.js';
22
- import { validateInterceptionPlacement, computeInterceptedBase } from './interception.js';
23
- import { validateRouteGroupCollisions } from './collision-spaces.js';
24
- import { validateSlotPlacement } from './slot-placement.js';
25
- import { DEFAULT_PAGE_EXTENSIONS } from './types.js';
26
- import { classifyMetadataRoute, isDynamicMetadataExtension } from '../server/metadata-routes.js';
27
- import { swallow } from '../server/logger.js';
28
- import { ENCODED_SEPARATOR_RE, NULL_BYTE_RE } from '../server/canonicalize.js';
20
+ } from './types.ts';
21
+ import { classifySegment, effectiveUrlSegment } from './segment-classify.ts';
22
+ import { validateInterceptionPlacement, computeInterceptedBase } from './interception.ts';
23
+ import { validateRouteGroupCollisions } from './collision-spaces.ts';
24
+ import { validateSlotPlacement } from './slot-placement.ts';
25
+ import { DEFAULT_PAGE_EXTENSIONS } from './types.ts';
26
+ import { classifyMetadataRoute, isDynamicMetadataExtension } from '../server/metadata-routes.ts';
27
+ import { swallow } from '../server/logger.ts';
28
+ import { ENCODED_SEPARATOR_RE, NULL_BYTE_RE } from '../server/canonicalize.ts';
29
29
 
30
30
  /**
31
31
  * File convention names that use pageExtensions (can be .tsx, .ts, .jsx, .js, .mdx, etc.)
@@ -44,6 +44,30 @@ const FIXED_CONVENTIONS = new Set(['middleware', 'access', 'route']);
44
44
  */
45
45
  const STATUS_CODE_PATTERN = /^(\d{3}|[45]xx)$/;
46
46
 
47
+ /**
48
+ * Whether a basename + extension pair is a route-convention file the
49
+ * framework itself imports: page/layout/error/default/denied and
50
+ * global-error on pageExtensions, middleware/access/route/proxy on
51
+ * .ts/.tsx/.js/.jsx only, and status-code files (404, 4xx, …) on
52
+ * pageExtensions or .json — mirroring this scanner's own recognition
53
+ * rules per family.
54
+ *
55
+ * Exported for the analyze classifier so its provisional classification
56
+ * (design/47 §2) derives from the scanner's real conventions instead of
57
+ * a duplicate list that can drift.
58
+ */
59
+ export function isRouteConventionFile(
60
+ base: string,
61
+ ext: string,
62
+ pageExtensions: readonly string[] = DEFAULT_PAGE_EXTENSIONS
63
+ ): boolean {
64
+ const isPageExt = pageExtensions.includes(ext);
65
+ if ((PAGE_EXT_CONVENTIONS.has(base) || base === 'global-error') && isPageExt) return true;
66
+ if ((FIXED_CONVENTIONS.has(base) || base === 'proxy') && /^[jt]sx?$/.test(ext)) return true;
67
+ if (STATUS_CODE_PATTERN.test(base) && (isPageExt || ext === 'json')) return true;
68
+ return false;
69
+ }
70
+
47
71
  /**
48
72
  * Scan the app/ directory and build the route tree.
49
73
  *
@@ -7,10 +7,10 @@
7
7
  * Design doc: design/41-global-params.md
8
8
  */
9
9
 
10
- import { readFileCached } from './file-cache.js';
11
- import type { RouteTree, SegmentNode } from './types.js';
12
- import { findSchemaFile, parseExistingSchemaKeys } from '../cli-schema-sync.js';
13
- import { classifyUrlSegment } from './segment-classify.js';
10
+ import { readFileCached } from './file-cache.ts';
11
+ import type { RouteTree, SegmentNode } from './types.ts';
12
+ import { findSchemaFile, parseExistingSchemaKeys } from '../cli-schema-sync.ts';
13
+ import { classifyUrlSegment } from './segment-classify.ts';
14
14
 
15
15
  export interface SchemaWarning {
16
16
  type: 'stale-key' | 'missing-key' | 'bracket-mismatch';
@@ -22,8 +22,8 @@
22
22
  * See design/07-routing.md §"Route Segments"
23
23
  */
24
24
 
25
- import type { InterceptionMarker, SegmentType } from './types.js';
26
- import { INTERCEPTION_MARKERS } from './types.js';
25
+ import type { InterceptionMarker, SegmentType } from './types.ts';
26
+ import { INTERCEPTION_MARKERS } from './types.ts';
27
27
 
28
28
  export type UrlSegment =
29
29
  | { kind: 'static'; value: string }
@@ -10,7 +10,7 @@
10
10
 
11
11
  import { writeFile, mkdir } from 'node:fs/promises';
12
12
  import { join } from 'node:path';
13
- import type { RouteTree, SegmentNode } from './types.js';
13
+ import type { RouteTree, SegmentNode } from './types.ts';
14
14
 
15
15
  /** Info carried per directory for type generation. */
16
16
  export interface SegmentInfo {
@@ -23,7 +23,7 @@
23
23
  * URL path and the segment classification, never on file payloads.
24
24
  */
25
25
 
26
- import type { CoercedParams } from '../shared/param-value.js';
26
+ import type { CoercedParams } from '../shared/param-value.ts';
27
27
 
28
28
  export interface SegmentKeyInput {
29
29
  urlPath: string;
@@ -9,7 +9,7 @@
9
9
  * See design/07-routing.md §"Parallel Routes".
10
10
  */
11
11
 
12
- import type { SegmentNode } from './types.js';
12
+ import type { SegmentNode } from './types.ts';
13
13
 
14
14
  /**
15
15
  * Reject every parallel slot that no renderer reaches.
@@ -14,7 +14,7 @@
14
14
  * local; the other two now share `collectLeafRoutes` from this file.
15
15
  */
16
16
 
17
- import type { SegmentNode } from './types.js';
17
+ import type { SegmentNode } from './types.ts';
18
18
 
19
19
  /** A leaf route discovered while walking the segment tree. */
20
20
  export interface LeafRoute<TFile> {
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Transforms Adapter — Re-exports from @vitejs/plugin-rsc/transforms.
3
+ *
4
+ * This module insulates the rest of the framework from direct imports of
5
+ * @vitejs/plugin-rsc. The plugin is pre-1.0 and its API surface will change.
6
+ * By routing all transform-helper imports through this single file, a
7
+ * breaking upstream change only requires updating one place.
8
+ *
9
+ * Keep this as thin pass-through re-exports — the value is the single choke
10
+ * point, not abstraction.
11
+ */
12
+
13
+ export { hasDirective } from '@vitejs/plugin-rsc/transforms';
@@ -5,3 +5,15 @@ declare module '@vitejs/plugin-rsc/vendor/react-server-dom/client.node' {
5
5
  options?: Record<string, unknown>
6
6
  ): React.ReactNode;
7
7
  }
8
+
9
+ declare module '@vitejs/plugin-rsc/vendor/react-server-dom/server.edge' {
10
+ export function renderToReadableStream(
11
+ model: unknown,
12
+ manifest: unknown,
13
+ options?: {
14
+ signal?: AbortSignal;
15
+ onError?: (error: unknown) => string | void;
16
+ onPostpone?: (reason: string) => void;
17
+ }
18
+ ): ReadableStream<Uint8Array>;
19
+ }
@@ -24,7 +24,7 @@
24
24
  * Design doc: design/23a-search-params-triage.md §"Unify Codec<T> type"
25
25
  */
26
26
 
27
- import type { Codec } from './codec.js';
27
+ import type { Codec } from './codec.ts';
28
28
 
29
29
  // ---------------------------------------------------------------------------
30
30
  // Standard Schema interface (subset)
@@ -10,18 +10,18 @@
10
10
  * Design doc: design/23-search-params.md §"defineSearchParams — The Factory"
11
11
  */
12
12
 
13
- import { useQueryStates as clientUseQueryStates } from '../client/use-query-states.js';
14
- import { fromSchema, isStandardSchema, isCodec } from '../schema-bridge.js';
15
- import type { StandardSchemaV1 } from '../schema-bridge.js';
16
- import type { Codec } from '../codec.js';
13
+ import { useQueryStates as clientUseQueryStates } from '../client/use-query-states.ts';
14
+ import { fromSchema, isStandardSchema, isCodec } from '../schema-bridge.ts';
15
+ import type { StandardSchemaV1 } from '../schema-bridge.ts';
16
+ import type { Codec } from '../codec.ts';
17
17
  // Server-only reference for .get() — avoids pulling server ALS into client
18
18
  // bundles. In client environments, .get() throws before reaching this code
19
19
  // path. The slot lives in its own leaf module so that `request-context.ts`
20
20
  // can register the getter without importing this file, which would drag
21
21
  // `nuqs` into every server entry (TIM-1298). See shared/als-slots.ts.
22
- import { getSearchParamsFromAls } from '../shared/als-slots.js';
23
- import { parseTotal } from './parse-total.js';
24
- import { serializedEqual } from './serialize-equal.js';
22
+ import { getSearchParamsFromAls } from '../shared/als-slots.ts';
23
+ import { parseTotal } from './parse-total.ts';
24
+ import { serializedEqual } from './serialize-equal.ts';
25
25
 
26
26
  // ---------------------------------------------------------------------------
27
27
  // Types
@@ -186,7 +186,7 @@ export interface SearchParamsDefinition<T extends Record<string, unknown>> {
186
186
 
187
187
  // StandardSchemaV1 is imported from schema-bridge.ts — single source of truth.
188
188
  // Re-export for consumers that import it from this module.
189
- export type { StandardSchemaV1 } from '../schema-bridge.js';
189
+ export type { StandardSchemaV1 } from '../schema-bridge.ts';
190
190
 
191
191
  // ---------------------------------------------------------------------------
192
192
  // Type-level helpers
@@ -16,13 +16,13 @@ export type {
16
16
  SetParamsOptions,
17
17
  QueryStatesOptions,
18
18
  StandardSchemaV1,
19
- } from './define.js';
20
- export { defineSearchParams } from './define.js';
19
+ } from './define.ts';
20
+ export { defineSearchParams } from './define.ts';
21
21
 
22
22
  // Codec bridges moved to @timber-js/app/codec
23
23
  // Import fromSchema / fromArraySchema from '@timber-js/app/codec' instead.
24
24
 
25
25
  // Codec wrappers
26
- export { withDefault, withUrlKey } from './wrappers.js';
26
+ export { withDefault, withUrlKey } from './wrappers.ts';
27
27
 
28
28
  // Runtime registry (route-scoped useQueryStates)
@@ -13,9 +13,9 @@ import type {
13
13
  SearchParamCodec,
14
14
  SearchParamCodecWithUrlKey,
15
15
  SearchParamField,
16
- } from './define.js';
17
- import { isCodec, isStandardSchema, fromSchema } from '../schema-bridge.js';
18
- import { parseTotal } from './parse-total.js';
16
+ } from './define.ts';
17
+ import { isCodec, isStandardSchema, fromSchema } from '../schema-bridge.ts';
18
+ import { parseTotal } from './parse-total.ts';
19
19
 
20
20
  // ---------------------------------------------------------------------------
21
21
  // withDefault
@@ -13,12 +13,12 @@
13
13
  * See design/04-authorization.md and design/02-rendering-pipeline.md §"AccessGate"
14
14
  */
15
15
 
16
- import { DenySignal, RedirectSignal } from './primitives.js';
17
- import type { AccessGateProps, SlotAccessGateProps } from './tree-builder.js';
18
- import { withSpan, setSpanAttribute } from './tracing.js';
19
- import { isDebug } from './debug.js';
20
- import type { DenyPageEntry } from './deny-boundary.js';
21
- import { handleCaughtDeny, setFirstDeniedSegmentIndex } from './deny-boundary.js';
16
+ import { DenySignal, RedirectSignal } from './primitives.ts';
17
+ import type { AccessGateProps, SlotAccessGateProps } from './tree-builder.ts';
18
+ import { withSpan, setSpanAttribute } from './tracing.ts';
19
+ import { isDebug } from './debug.ts';
20
+ import type { DenyPageEntry } from './deny-boundary.ts';
21
+ import { handleCaughtDeny, setFirstDeniedSegmentIndex } from './deny-boundary.ts';
22
22
  import type { ReactNode } from 'react';
23
23
 
24
24
  // ─── AccessGate ─────────────────────────────────────────────────────────────
@@ -220,16 +220,16 @@ async function runActionMiddleware<TCtx>(
220
220
  }
221
221
 
222
222
  // Re-export parseFormData for use throughout the framework
223
- import { parseFormData } from './form-data.js';
224
- import { formatSize } from '../utils/format.js';
225
- import { isDebug, isDevMode } from './debug.js';
226
- import { RedirectSignal, DenySignal } from './primitives.js';
223
+ import { parseFormData } from './form-data.ts';
224
+ import { formatSize } from '../utils/format.ts';
225
+ import { isDebug, isDevMode } from './debug.ts';
226
+ import { RedirectSignal, DenySignal } from './primitives.ts';
227
227
  import {
228
228
  stripSensitiveFields,
229
229
  resolveSensitivePredicate,
230
230
  getGlobalSensitiveFieldsConfig,
231
231
  type SensitiveFieldsOption,
232
- } from './sensitive-fields.js';
232
+ } from './sensitive-fields.ts';
233
233
 
234
234
  /**
235
235
  * Extract validation errors from a schema error.
@@ -18,27 +18,27 @@ import {
18
18
  decodeReply,
19
19
  decodeAction,
20
20
  renderToReadableStream,
21
- } from '../rsc-runtime/rsc.js';
22
-
23
- import { validateCsrf, type CsrfConfig } from './csrf.js';
24
- import { DenySignal, RedirectSignal } from './primitives.js';
25
- import { executeAction, type RevalidateRenderer } from './actions.js';
26
- import { runWithRequestContext, setMutableCookieContext } from './request-context.js';
27
- import { getSetCookieHeaders, getCookiesForSsr } from './cookie-context.js';
28
- import { handleActionError } from './action-client.js';
29
- import { enforceBodyLimits, enforceFieldLimit, type BodyLimitsConfig } from './body-limits.js';
30
- import { parseFormData } from './form-data.js';
21
+ } from '../rsc-runtime/rsc.ts';
22
+
23
+ import { validateCsrf, type CsrfConfig } from './csrf.ts';
24
+ import { DenySignal, RedirectSignal } from './primitives.ts';
25
+ import { executeAction, type RevalidateRenderer } from './actions.ts';
26
+ import { runWithRequestContext, setMutableCookieContext } from './request-context.ts';
27
+ import { getSetCookieHeaders, getCookiesForSsr } from './cookie-context.ts';
28
+ import { handleActionError } from './action-client.ts';
29
+ import { enforceBodyLimits, enforceFieldLimit, type BodyLimitsConfig } from './body-limits.ts';
30
+ import { parseFormData } from './form-data.ts';
31
31
  import {
32
32
  stripSensitiveFields,
33
33
  resolveSensitivePredicate,
34
34
  getGlobalSensitiveFieldsConfig,
35
35
  type SensitiveFieldsOption,
36
- } from './sensitive-fields.js';
37
- import type { FormFlashData } from './form-flash.js';
38
- import { checkVersionSkew, applyReloadHeaders } from './version-skew.js';
39
- import { logActionError } from './logger.js';
40
- import { withTimeout, RenderTimeoutError } from './render-timeout.js';
41
- import { RSC_CONTENT_TYPE } from '../shared/rsc-media-type.js';
36
+ } from './sensitive-fields.ts';
37
+ import type { FormFlashData } from './form-flash.ts';
38
+ import { checkVersionSkew, applyReloadHeaders } from './version-skew.ts';
39
+ import { logActionError } from './logger.ts';
40
+ import { withTimeout, RenderTimeoutError } from './render-timeout.ts';
41
+ import { RSC_CONTENT_TYPE } from '../shared/rsc-media-type.ts';
42
42
 
43
43
  // ─── Types ────────────────────────────────────────────────────────────────
44
44
 
@@ -14,10 +14,10 @@
14
14
  * See design/08-forms-and-actions.md
15
15
  */
16
16
 
17
- import { cache } from '../cache/cache-api';
18
- import { DenySignal, RedirectSignal } from './primitives';
19
- import { withSpan } from './tracing';
20
- import { revalidationAls, type RevalidationState } from './als-registry.js';
17
+ import { cache } from '../cache/cache-api.ts';
18
+ import { DenySignal, RedirectSignal } from './primitives.ts';
19
+ import { withSpan } from './tracing.ts';
20
+ import { revalidationAls, type RevalidationState } from './als-registry.ts';
21
21
  // ─── Types ───────────────────────────────────────────────────────────────
22
22
 
23
23
  /** Result of rendering a revalidation — payload root before RSC serialization. */
@@ -33,7 +33,7 @@ export interface RevalidationResult {
33
33
  export type RevalidateRenderer = (path: string) => Promise<RevalidationResult>;
34
34
 
35
35
  // Re-export the type from the registry for public API consumers.
36
- export type { RevalidationState } from './als-registry.js';
36
+ export type { RevalidationState } from './als-registry.ts';
37
37
 
38
38
  /** Options for creating the action handler. */
39
39
  export interface ActionHandlerConfig {
@@ -32,10 +32,10 @@
32
32
  */
33
33
 
34
34
  import '#server-only-guard';
35
- import type { CoercedParams } from '../shared/param-value.js';
36
- import type { SlotParamsRecord } from '../shared/slot-params.js';
35
+ import type { CoercedParams } from '../shared/param-value.ts';
36
+ import type { SlotParamsRecord } from '../shared/slot-params.ts';
37
37
  import { AsyncLocalStorage } from 'node:async_hooks';
38
- import type { DebugComponentEntry } from './rsc-entry/helpers.js';
38
+ import type { DebugComponentEntry } from './rsc-entry/helpers.ts';
39
39
 
40
40
  /**
41
41
  * Return a process-wide singleton `AsyncLocalStorage` keyed by `symbol`.
@@ -159,7 +159,7 @@ export interface RequestContextStore {
159
159
  * See TIM-1363, TIM-1367, design/16-metadata.md.
160
160
  */
161
161
  _metadataEntries?: Array<{
162
- metadata: import('./types.js').Metadata | Promise<import('./types.js').Metadata | null>;
162
+ metadata: import('./types.ts').Metadata | Promise<import('./types.ts').Metadata | null>;
163
163
  isPage: boolean;
164
164
  }>;
165
165
  }
@@ -168,7 +168,7 @@ export interface RequestContextStore {
168
168
  export interface CookieEntry {
169
169
  name: string;
170
170
  value: string;
171
- options: import('./cookie-context.js').CookieOptions;
171
+ options: import('./cookie-context.ts').CookieOptions;
172
172
  }
173
173
 
174
174
  // ─── Tracing ──────────────────────────────────────────────────────────────
@@ -186,7 +186,7 @@ export interface TraceStore {
186
186
  * after span creation — the platform API has no getActiveSpan() equivalent.
187
187
  * Saved/restored by withSpan() around each callback. See TIM-1135.
188
188
  */
189
- platformSpan?: import('./tracing.js').PlatformSpan;
189
+ platformSpan?: import('./tracing.ts').PlatformSpan;
190
190
  }
191
191
 
192
192
  /** @internal — import via tracing.ts public API */
@@ -197,7 +197,7 @@ export const traceAls = getOrCreateAls<TraceStore>(Symbol.for('timber:trace-als'
197
197
  // Design doc: (dev-only performance instrumentation)
198
198
 
199
199
  export interface TimingStore {
200
- entries: import('./server-timing.js').TimingEntry[];
200
+ entries: import('./server-timing.ts').TimingEntry[];
201
201
  }
202
202
 
203
203
  /** @internal — import via server-timing.ts public API */
@@ -224,7 +224,7 @@ export const revalidationAls = getOrCreateAls<RevalidationState>(
224
224
  // Design doc: design/08-forms-and-actions.md §"No-JS Error Round-Trip"
225
225
 
226
226
  /** @internal — import via form-flash.ts public API */
227
- export const formFlashAls = getOrCreateAls<import('./form-flash.js').FormFlashData>(
227
+ export const formFlashAls = getOrCreateAls<import('./form-flash.ts').FormFlashData>(
228
228
  Symbol.for('timber:form-flash-als')
229
229
  );
230
230
 
@@ -19,13 +19,13 @@
19
19
  * Design docs: 18-build-system.md, 06-caching.md
20
20
  */
21
21
 
22
- import { IMMUTABLE_CACHE, STATIC_CACHE } from '../adapters/shared.js';
22
+ import { IMMUTABLE_CACHE, STATIC_CACHE } from '../adapters/shared.ts';
23
23
 
24
24
  // Re-export cache constants and generateHeadersFile from the shared adapter
25
25
  // module. The canonical definitions live in adapters/shared.ts because
26
26
  // adapters are loaded by Node before Vite's resolver is available — they
27
27
  // can only import from within their own directory.
28
- export { IMMUTABLE_CACHE, STATIC_CACHE, generateHeadersFile } from '../adapters/shared.js';
28
+ export { IMMUTABLE_CACHE, STATIC_CACHE, generateHeadersFile } from '../adapters/shared.ts';
29
29
 
30
30
  /**
31
31
  * Regex matching Vite-hashed asset filenames.
@@ -20,11 +20,11 @@
20
20
  * See design/07-routing.md §"Intercepting Routes".
21
21
  */
22
22
 
23
- import type { ManifestSegmentNode } from './route-matcher.js';
24
- import type { RouteMatch } from './pipeline.js';
25
- import type { CoercedParams } from '../shared/param-value.js';
26
- import { effectiveUrlSegment } from '../routing/segment-classify.js';
27
- import { computeInterceptedBase } from '../routing/interception.js';
23
+ import type { ManifestSegmentNode } from './route-matcher.ts';
24
+ import type { RouteMatch } from './pipeline.ts';
25
+ import type { CoercedParams } from '../shared/param-value.ts';
26
+ import { effectiveUrlSegment } from '../routing/segment-classify.ts';
27
+ import { computeInterceptedBase } from '../routing/interception.ts';
28
28
 
29
29
  /**
30
30
  * Extract raw URL path parts from a segment chain.
@@ -29,10 +29,10 @@
29
29
  * See design/07-routing.md §"Intercepting Routes".
30
30
  */
31
31
 
32
- import type { RouteMatch } from './pipeline.js';
33
- import { collectMiddlewareChain, type ManifestSegmentNode } from './route-matcher.js';
34
- import { findInterceptingMatch } from './slot-interception.js';
35
- import { treePathNames } from '../routing/segment-keys.js';
32
+ import type { RouteMatch } from './pipeline.ts';
33
+ import { collectMiddlewareChain, type ManifestSegmentNode } from './route-matcher.ts';
34
+ import { findInterceptingMatch } from './slot-interception.ts';
35
+ import { treePathNames } from '../routing/segment-keys.ts';
36
36
 
37
37
  /**
38
38
  * Resolve a children-path interception to a complete route match.
@@ -14,7 +14,7 @@
14
14
  // fails the build with an explanatory error rather than resolving to nothing
15
15
  // on the deployed server.
16
16
 
17
- import { RSC_CONTENT_TYPE } from '../shared/rsc-media-type.js';
17
+ import { RSC_CONTENT_TYPE } from '../shared/rsc-media-type.ts';
18
18
 
19
19
  // ─── Constants ────────────────────────────────────────────────────────────
20
20
 
@@ -12,19 +12,19 @@
12
12
  * smuggling primitive that the encoding contract closes.
13
13
  */
14
14
 
15
- import { requestContextAls, type RequestContextStore } from './als-registry.js';
16
- import { isDebug } from './debug.js';
15
+ import { requestContextAls, type RequestContextStore } from './als-registry.ts';
16
+ import { isDebug } from './debug.ts';
17
17
  import {
18
18
  assertValidCookieName,
19
19
  assertValidCookieValue,
20
20
  assertValidCookieOptions,
21
- } from '../cookies/validation.js';
21
+ } from '../cookies/validation.ts';
22
22
  import {
23
23
  parseCookieHeader,
24
24
  parseSetCookie,
25
25
  safeDecodeCookieValue,
26
26
  serializeCookieEntry,
27
- } from './cookie-parsing.js';
27
+ } from './cookie-parsing.ts';
28
28
 
29
29
  // Re-export the validators so framework-internal consumers and tests can
30
30
  // import the canonical implementation from the same module that hosts
@@ -17,8 +17,8 @@
17
17
 
18
18
  import { parseCookie, parseSetCookie as upstreamParseSetCookie, stringifySetCookie } from 'cookie';
19
19
 
20
- import type { CookieEntry } from './als-registry.js';
21
- import type { CookieOptions } from './cookie-context.js';
20
+ import type { CookieEntry } from './als-registry.ts';
21
+ import type { CookieOptions } from './cookie-context.ts';
22
22
 
23
23
  /**
24
24
  * Parse a Cookie header string into a Map of name → value pairs.
@@ -18,9 +18,9 @@
18
18
  * See design/17-logging.md §"DefaultLogger"
19
19
  */
20
20
 
21
- import { isDevMode, isDebug } from './debug.js';
22
- import { formatSsrError } from './error-formatter.js';
23
- import type { TimberLogger } from './logger.js';
21
+ import { isDevMode, isDebug } from './debug.ts';
22
+ import { formatSsrError } from './error-formatter.ts';
23
+ import type { TimberLogger } from './logger.ts';
24
24
 
25
25
  /**
26
26
  * Format data fields as `key=value` pairs for human-readable output.
@@ -35,16 +35,16 @@
35
35
 
36
36
  import { createElement } from 'react';
37
37
 
38
- import { ErrorReconstituter } from '../client/error-reconstituter.js';
39
- import type { SerializableError } from '../client/error-reconstituter.js';
40
- import { requestContextAls } from './als-registry.js';
41
- import { DenySignal } from './primitives.js';
42
- import { loadModule } from './safe-load.js';
43
- import type { ManifestLoader } from './safe-load.js';
44
- import { withSpan } from './tracing.js';
45
- import { isValidElementType, type LoadedComponent } from './utils/element-type.js';
46
- import { isMdxFilePath } from './utils/mdx-file.js';
47
- import type { ManifestSegmentNode } from './route-matcher.js';
38
+ import { ErrorReconstituter } from '../client/error-reconstituter.tsx';
39
+ import type { SerializableError } from '../client/error-reconstituter.tsx';
40
+ import { requestContextAls } from './als-registry.ts';
41
+ import { DenySignal } from './primitives.ts';
42
+ import { loadModule } from './safe-load.ts';
43
+ import type { ManifestLoader } from './safe-load.ts';
44
+ import { withSpan } from './tracing.ts';
45
+ import { isValidElementType, type LoadedComponent } from './utils/element-type.ts';
46
+ import { isMdxFilePath } from './utils/mdx-file.ts';
47
+ import type { ManifestSegmentNode } from './route-matcher.ts';
48
48
 
49
49
  // ─── Types ────────────────────────────────────────────────────────────────
50
50
 
@@ -16,31 +16,31 @@
16
16
  */
17
17
 
18
18
  import { createElement, Fragment } from 'react';
19
- import { renderToReadableStream } from '../rsc-runtime/rsc.js';
20
-
21
- import { DenySignal } from './primitives.js';
22
- import { appVisibleSearch } from '../shared/rsc-cache-key.js';
23
- import { getSlotParamsForClient } from './request-context.js';
24
- import { withPublishedParams } from './publish-params.js';
25
- import { renderDenyEntry, type DenyEntryShape } from './deny-boundary.js';
26
- import { getCookiesForSsr } from './cookie-context.js';
27
- import { logRenderError } from './logger.js';
28
- import { loadModule } from './safe-load.js';
29
- import { isMdxFilePath } from './utils/mdx-file.js';
30
- import { isDebug } from './debug.js';
31
- import { resolveMetadata, renderMetadataToElements } from './metadata.js';
32
- import { headElementsToReact } from './metadata.js';
33
- import { resolveStatusFile } from './status-code-resolver.js';
34
- import { defaultStatusPageResponse } from './default-status-page.js';
35
- import { rscErrorEnvelope } from '../shared/rsc-error-envelope.js';
36
- import type { ManifestSegmentNode } from './route-matcher.js';
37
- import type { RouteMatch } from './pipeline.js';
38
- import type { NavContext } from './ssr-bridge-types.js';
39
- import { flightInitScript } from './flight-scripts.js';
40
- import type { ClientBootstrapConfig } from './html-injectors.js';
41
- import type { Metadata } from './types.js';
42
- import { teeWithErrorPropagation } from './stream-utils.js';
43
- import { RSC_CONTENT_TYPE } from '../shared/rsc-media-type.js';
19
+ import { renderToReadableStream } from '../rsc-runtime/rsc.ts';
20
+
21
+ import { DenySignal } from './primitives.ts';
22
+ import { appVisibleSearch } from '../shared/rsc-cache-key.ts';
23
+ import { getSlotParamsForClient } from './request-context.ts';
24
+ import { withPublishedParams } from './publish-params.ts';
25
+ import { renderDenyEntry, type DenyEntryShape } from './deny-boundary.ts';
26
+ import { getCookiesForSsr } from './cookie-context.ts';
27
+ import { logRenderError } from './logger.ts';
28
+ import { loadModule } from './safe-load.ts';
29
+ import { isMdxFilePath } from './utils/mdx-file.ts';
30
+ import { isDebug } from './debug.ts';
31
+ import { resolveMetadata, renderMetadataToElements } from './metadata.ts';
32
+ import { headElementsToReact } from './metadata.ts';
33
+ import { resolveStatusFile } from './status-code-resolver.ts';
34
+ import { defaultStatusPageResponse } from './default-status-page.ts';
35
+ import { rscErrorEnvelope } from '../shared/rsc-error-envelope.ts';
36
+ import type { ManifestSegmentNode } from './route-matcher.ts';
37
+ import type { RouteMatch } from './pipeline.ts';
38
+ import type { NavContext } from './ssr-bridge-types.ts';
39
+ import { flightInitScript } from './flight-scripts.ts';
40
+ import type { ClientBootstrapConfig } from './html-injectors.ts';
41
+ import type { Metadata } from './types.ts';
42
+ import { teeWithErrorPropagation } from './stream-utils.ts';
43
+ import { RSC_CONTENT_TYPE } from '../shared/rsc-media-type.ts';
44
44
 
45
45
  /** Layout component entry for deny page wrapping. */
46
46
  export interface LayoutEntry {
@@ -357,6 +357,19 @@ async function renderDenyPageJson(
357
357
  // A .json status file that fails to load is not a usable match — return
358
358
  // null so the caller continues to the framework default rather than
359
359
  // rejecting out of the chain.
360
+ // Dev warning: deny(status, data) carries data but JSON status files are
361
+ // static bodies — the data is silently dropped. The same deny() would
362
+ // deliver the data to a .tsx file's dangerouslyPassData prop. See
363
+ // design/10-error-handling.md §"Status-Code File Variants".
364
+ if (isDebug() && deny.data !== undefined) {
365
+ console.warn(
366
+ `[timber] deny(${deny.status}, data) resolved to ${resolution.file.filePath}, ` +
367
+ `which is a static JSON file. The data argument is dropped — JSON status files ` +
368
+ `are returned verbatim with no interpolation. If you need the data in the ` +
369
+ `response, use a .tsx status file or a route handler (route.ts).`
370
+ );
371
+ }
372
+
360
373
  const mod = await loadModule(resolution.file).catch(() => null);
361
374
  if (!mod) return null;
362
375
  const jsonContent = mod.default ?? mod;