@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
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * Design doc: design/41-global-params.md §"Link Component"
13
13
  */
14
- import type { Codec } from '../codec.js';
14
+ import type { Codec } from '../codec.ts';
15
15
  /**
16
16
  * Register the resolved schema codecs for use by Link's URL interpolation.
17
17
  * Called once at startup from the browser entry or RSC entry.
@@ -7,8 +7,8 @@
7
7
  *
8
8
  * Design doc: design/41-global-params.md
9
9
  */
10
- import type { Codec, CatchAllCodec, OptionalCatchAllCodec } from '../codec.js';
11
- import type { StandardSchemaV1 } from '../schema-bridge.js';
10
+ import type { Codec, CatchAllCodec, OptionalCatchAllCodec } from '../codec.ts';
11
+ import type { StandardSchemaV1 } from '../schema-bridge.ts';
12
12
  /**
13
13
  * Infer the output type from a Codec, StandardSchemaV1, or nuqs parser.
14
14
  *
@@ -1,5 +1,5 @@
1
- export { defineSchema } from './define-schema.js';
2
- export type { InferCodecType, SchemaConfig, SegmentParamCodec, ValidDynamicSegmentKeys, ValidDynamicSegmentKeysRegistry, } from './define-schema.js';
3
- export { resolveSchemaCodecs, toBracketKey } from './resolve-schema.js';
4
- export { setLinkCodecs, getLinkCodec } from './codec-registry.js';
1
+ export { defineSchema } from './define-schema.ts';
2
+ export type { InferCodecType, SchemaConfig, SegmentParamCodec, ValidDynamicSegmentKeys, ValidDynamicSegmentKeysRegistry, } from './define-schema.ts';
3
+ export { resolveSchemaCodecs, toBracketKey } from './resolve-schema.ts';
4
+ export { setLinkCodecs, getLinkCodec } from './codec-registry.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/params/define-schema.ts"],"sourcesContent":["/**\n * defineSchema — global segment param schema definition.\n *\n * Identity function at runtime; the type information is what matters.\n * The Vite plugin reads the schema at build time for codegen, and\n * the pipeline reads it at runtime for coercion.\n *\n * Design doc: design/41-global-params.md\n */\n\nimport type { Codec, CatchAllCodec, OptionalCatchAllCodec } from '../codec.js';\nimport type { StandardSchemaV1 } from '../schema-bridge.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/**\n * Infer the output type from a Codec, StandardSchemaV1, or nuqs parser.\n *\n * Used by codegen to reference schema types without hardcoding:\n * `InferCodecType<typeof schema.segmentParams['[year]']>`\n */\nexport type InferCodecType<V> =\n V extends Codec<infer T>\n ? T\n : V extends StandardSchemaV1<infer T>\n ? T\n : V extends { parseServerSide: (value: string) => infer T }\n ? T\n : string;\n\n/** Acceptable codec value for segment params: a Codec or Standard Schema. */\nexport type SegmentParamCodec = Codec<unknown> | StandardSchemaV1<unknown>;\n\n/** Codec constraint for catch-all segment keys (`[...name]`). */\nexport type CatchAllParamCodec = CatchAllCodec<unknown> | StandardSchemaV1<readonly unknown[]>;\n\n/** Codec constraint for optional catch-all segment keys (`[[...name]]`). */\nexport type OptionalCatchAllParamCodec =\n | OptionalCatchAllCodec<unknown>\n | StandardSchemaV1<readonly unknown[] | undefined>;\n\n/**\n * Resolves the required codec type for a given bracket key pattern.\n * - `[...name]` → requires a catch-all codec\n * - `[[...name]]` → requires an optional catch-all codec\n * - `[name]` → accepts any segment param codec\n */\nexport type CodecForKey<K extends string> = K extends `[[...${string}]]`\n ? OptionalCatchAllParamCodec\n : K extends `[...${string}]`\n ? CatchAllParamCodec\n : SegmentParamCodec;\n\n/**\n * Registry interface augmented by codegen with known filesystem bracket keys.\n * When empty (no codegen yet), ValidDynamicSegmentKeys falls back to string.\n */\n// eslint-disable-next-line typescript/no-empty-interface -- augmented by codegen\nexport interface ValidDynamicSegmentKeysRegistry {}\n\n/**\n * Union of valid bracket keys for defineSchema.\n * After codegen runs, this is the set of filesystem segment names.\n * Before codegen (fresh project), accepts any string.\n */\nexport type ValidDynamicSegmentKeys = keyof ValidDynamicSegmentKeysRegistry extends never\n ? string\n : keyof ValidDynamicSegmentKeysRegistry & string;\n\n/** Configuration object for defineSchema. */\nexport interface SchemaConfig<S extends Record<string, SegmentParamCodec>> {\n segmentParams: S;\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\n/**\n * Define the global segment param schema.\n *\n * Each key uses the bracket syntax from the filesystem (`[id]`, `[...slug]`,\n * `[[...slug]]`) mapped to a codec. This makes the relationship between\n * filesystem segments and codecs visually obvious.\n *\n * A dynamic segment with no key here defaults to `string` at codegen time.\n *\n * ```ts\n * // app/schema.ts\n * import { defineSchema } from '@timber-js/app/params';\n * import { codec } from '@timber-js/app/codec';\n * import { z } from 'zod';\n *\n * export default defineSchema({\n * segmentParams: {\n * '[artistSlug]': codec.string,\n * '[year]': codec.integer,\n * '[id]': z.coerce.number().int(),\n * },\n * });\n * ```\n */\nexport function defineSchema<\n S extends {\n [K in keyof S]: K extends ValidDynamicSegmentKeys\n ? K extends string\n ? CodecForKey<K>\n : SegmentParamCodec\n : never;\n },\n>(config: { segmentParams: S }): { segmentParams: S } {\n return config;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAwGA,SAAgB,aAQd,QAAoD;CACpD,OAAO;AACT"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/params/define-schema.ts"],"sourcesContent":["/**\n * defineSchema — global segment param schema definition.\n *\n * Identity function at runtime; the type information is what matters.\n * The Vite plugin reads the schema at build time for codegen, and\n * the pipeline reads it at runtime for coercion.\n *\n * Design doc: design/41-global-params.md\n */\n\nimport type { Codec, CatchAllCodec, OptionalCatchAllCodec } from '../codec.ts';\nimport type { StandardSchemaV1 } from '../schema-bridge.ts';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/**\n * Infer the output type from a Codec, StandardSchemaV1, or nuqs parser.\n *\n * Used by codegen to reference schema types without hardcoding:\n * `InferCodecType<typeof schema.segmentParams['[year]']>`\n */\nexport type InferCodecType<V> =\n V extends Codec<infer T>\n ? T\n : V extends StandardSchemaV1<infer T>\n ? T\n : V extends { parseServerSide: (value: string) => infer T }\n ? T\n : string;\n\n/** Acceptable codec value for segment params: a Codec or Standard Schema. */\nexport type SegmentParamCodec = Codec<unknown> | StandardSchemaV1<unknown>;\n\n/** Codec constraint for catch-all segment keys (`[...name]`). */\nexport type CatchAllParamCodec = CatchAllCodec<unknown> | StandardSchemaV1<readonly unknown[]>;\n\n/** Codec constraint for optional catch-all segment keys (`[[...name]]`). */\nexport type OptionalCatchAllParamCodec =\n | OptionalCatchAllCodec<unknown>\n | StandardSchemaV1<readonly unknown[] | undefined>;\n\n/**\n * Resolves the required codec type for a given bracket key pattern.\n * - `[...name]` → requires a catch-all codec\n * - `[[...name]]` → requires an optional catch-all codec\n * - `[name]` → accepts any segment param codec\n */\nexport type CodecForKey<K extends string> = K extends `[[...${string}]]`\n ? OptionalCatchAllParamCodec\n : K extends `[...${string}]`\n ? CatchAllParamCodec\n : SegmentParamCodec;\n\n/**\n * Registry interface augmented by codegen with known filesystem bracket keys.\n * When empty (no codegen yet), ValidDynamicSegmentKeys falls back to string.\n */\n// eslint-disable-next-line typescript/no-empty-interface -- augmented by codegen\nexport interface ValidDynamicSegmentKeysRegistry {}\n\n/**\n * Union of valid bracket keys for defineSchema.\n * After codegen runs, this is the set of filesystem segment names.\n * Before codegen (fresh project), accepts any string.\n */\nexport type ValidDynamicSegmentKeys = keyof ValidDynamicSegmentKeysRegistry extends never\n ? string\n : keyof ValidDynamicSegmentKeysRegistry & string;\n\n/** Configuration object for defineSchema. */\nexport interface SchemaConfig<S extends Record<string, SegmentParamCodec>> {\n segmentParams: S;\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\n/**\n * Define the global segment param schema.\n *\n * Each key uses the bracket syntax from the filesystem (`[id]`, `[...slug]`,\n * `[[...slug]]`) mapped to a codec. This makes the relationship between\n * filesystem segments and codecs visually obvious.\n *\n * A dynamic segment with no key here defaults to `string` at codegen time.\n *\n * ```ts\n * // app/schema.ts\n * import { defineSchema } from '@timber-js/app/params';\n * import { codec } from '@timber-js/app/codec';\n * import { z } from 'zod';\n *\n * export default defineSchema({\n * segmentParams: {\n * '[artistSlug]': codec.string,\n * '[year]': codec.integer,\n * '[id]': z.coerce.number().int(),\n * },\n * });\n * ```\n */\nexport function defineSchema<\n S extends {\n [K in keyof S]: K extends ValidDynamicSegmentKeys\n ? K extends string\n ? CodecForKey<K>\n : SegmentParamCodec\n : never;\n },\n>(config: { segmentParams: S }): { segmentParams: S } {\n return config;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAwGA,SAAgB,aAQd,QAAoD;CACpD,OAAO;AACT"}
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * Design doc: design/41-global-params.md §Pipeline Integration
10
10
  */
11
- import type { Codec } from '../codec.js';
11
+ import type { Codec } from '../codec.ts';
12
12
  /**
13
13
  * Reconstruct the bracket key for a segment from its type and param name.
14
14
  * Used by the coercion layer to look up codecs in the bracket-keyed map.
@@ -7,15 +7,15 @@
7
7
  *
8
8
  * Design doc: 18-build-system.md §"Shared Plugin Context"
9
9
  */
10
- import type { RouteTree } from './routing/types';
11
- import type { BuildManifest } from './server/build-manifest';
12
- import type { CaptureSummary } from './server/prebuilt-builder';
13
- import type { StartupTimer } from './utils/startup-timer';
14
- import type { TimberUserConfig } from './config-types.js';
15
- import type { RscManifest } from './plugins/static-build.js';
16
- import type { HoldingServer } from './dev-tools/holding-server.js';
17
- import type { ProgramNode } from './plugins/callsite-ast.js';
18
- export type { TimberUserConfig, ClientJavascriptConfig } from './config-types.js';
10
+ import type { RouteTree } from './routing/types.ts';
11
+ import type { BuildManifest } from './server/build-manifest.ts';
12
+ import type { CaptureSummary } from './server/prebuilt-builder.ts';
13
+ import type { StartupTimer } from './utils/startup-timer.ts';
14
+ import type { TimberUserConfig } from './config-types.ts';
15
+ import type { RscManifest } from './plugins/static-build.ts';
16
+ import type { HoldingServer } from './dev-tools/holding-server.ts';
17
+ import type { ProgramNode } from './plugins/callsite-ast.ts';
18
+ export type { TimberUserConfig, ClientJavascriptConfig } from './config-types.ts';
19
19
  /** Fully resolved client JavaScript configuration (no optionals). */
20
20
  export interface ResolvedClientJavascript {
21
21
  disabled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-context.d.ts","sourceRoot":"","sources":["../src/plugin-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-context.d.ts","sourceRoot":"","sources":["../src/plugin-context.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,8 @@
13
13
  * Design docs: design/11-platform.md, design/25-production-deployments.md
14
14
  */
15
15
  import type { Plugin } from 'vite';
16
- import type { PluginContext } from '../plugin-context.js';
17
- import type { BuildManifest } from '../server/build-manifest.js';
16
+ import type { PluginContext } from '../plugin-context.ts';
17
+ import type { BuildManifest } from '../server/build-manifest.ts';
18
18
  export declare function timberAdapterBuild(ctx: PluginContext): Plugin;
19
19
  /**
20
20
  * Strip JS references from the RSC plugin's assets manifest files.
@@ -16,8 +16,8 @@
16
16
  * Design docs: 18-build-system.md §"Build Manifest", 02-rendering-pipeline.md §"Early Hints"
17
17
  */
18
18
  import type { Plugin } from 'vite';
19
- import type { PluginContext } from '../plugin-context.js';
20
- import { type BuildManifest } from '../server/build-manifest.js';
19
+ import type { PluginContext } from '../plugin-context.ts';
20
+ import { type BuildManifest } from '../server/build-manifest.ts';
21
21
  interface OutputChunk {
22
22
  type: 'chunk';
23
23
  fileName: string;
@@ -13,11 +13,11 @@
13
13
  * Task: TIM-287
14
14
  */
15
15
  import type { Plugin } from 'vite';
16
- import type { PluginContext } from '../plugin-context.js';
17
- import type { SegmentNode, RouteTree } from '../routing/types.js';
18
- import type { CaptureSummary } from '../server/prebuilt-builder.js';
19
- import type { PrebuiltManifest } from '../server/prebuilt/payload-source.js';
20
- import { formatSize } from '../utils/format.js';
16
+ import type { PluginContext } from '../plugin-context.ts';
17
+ import type { SegmentNode, RouteTree } from '../routing/types.ts';
18
+ import type { CaptureSummary } from '../server/prebuilt-builder.ts';
19
+ import type { PrebuiltManifest } from '../server/prebuilt/payload-source.ts';
20
+ import { formatSize } from '../utils/format.ts';
21
21
  export type RouteType = 'static' | 'dynamic' | 'function';
22
22
  export interface RouteEntry {
23
23
  path: string;
@@ -53,7 +53,7 @@
53
53
  * See TIM-997, TIM-1053, design/06-caching.md §"Cache Key Security".
54
54
  */
55
55
  import type { Plugin } from 'vite';
56
- import type { PluginContext } from '../plugin-context.js';
56
+ import type { PluginContext } from '../plugin-context.ts';
57
57
  /**
58
58
  * Generate a stable callsite ID for a cache() call. See callsite-ast.ts for
59
59
  * the derivation properties.
@@ -10,8 +10,8 @@
10
10
  *
11
11
  * See design/44-render-at-build-time.md §Props Derivation at Build Time.
12
12
  */
13
- import type { PluginContext } from '../plugin-context.js';
14
- import type { PositionedNode, ProgramNode } from './callsite-ast.js';
13
+ import type { PluginContext } from '../plugin-context.ts';
14
+ import type { PositionedNode, ProgramNode } from './callsite-ast.ts';
15
15
  export type JsonValue = string | number | boolean | null | JsonValue[] | {
16
16
  [key: string]: JsonValue;
17
17
  };
@@ -21,7 +21,7 @@
21
21
  * Design docs: 27-chunking-strategy.md
22
22
  */
23
23
  import type { Plugin } from 'vite';
24
- import type { PluginContext } from '../plugin-context';
24
+ import type { PluginContext } from '../plugin-context.ts';
25
25
  /**
26
26
  * Check if a module is part of the timber framework runtime.
27
27
  *
@@ -1 +1 @@
1
- {"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../../src/plugins/chunks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAU,MAAM,MAAM,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAOnD;AA4DD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAQvD"}
1
+ {"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../../src/plugins/chunks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAU,MAAM,MAAM,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAOnD;AA4DD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAQvD"}
@@ -16,6 +16,6 @@
16
16
  * a clear build error), never silently externalized.
17
17
  */
18
18
  import type { Plugin } from 'vite';
19
- import type { PluginContext } from '../plugin-context.js';
19
+ import type { PluginContext } from '../plugin-context.ts';
20
20
  export declare function timberCloudflareWasm(ctx: PluginContext): Plugin[];
21
21
  //# sourceMappingURL=cloudflare-wasm.d.ts.map
@@ -8,7 +8,7 @@
8
8
  * Design doc: 20-content-collections.md §"Content Collections"
9
9
  */
10
10
  import type { Plugin } from 'vite';
11
- import type { PluginContext } from '../plugin-context.js';
11
+ import type { PluginContext } from '../plugin-context.ts';
12
12
  /**
13
13
  * Create the timber-content Vite plugin.
14
14
  *
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/plugins/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAoB1D;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAgGxD"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/plugins/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAoB1D;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAoGxD"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Dev-server discovery records — `.timber/dev/<pid>-<port>-<token>.json`.
3
+ *
4
+ * On startup each dev server writes `{ port, pid, host, protocol }` to its own record
5
+ * file under the app's `.timber/dev/` so the `timber graph` CLI and the
6
+ * VS Code extension can discover a running dev server for the
7
+ * live-graph fast path.
8
+ *
9
+ * One record file per server, one writer per file. This is what makes
10
+ * multi-server roots (Vite auto-increments the port across processes;
11
+ * programmatic embeddings run several servers in one process) safe
12
+ * without any coordination: there is no shared file to displace, no
13
+ * ownership to arbitrate, and no shutdown-order dependency — each
14
+ * server removes exactly its own record.
15
+ *
16
+ * Consumers must list the directory and trust a record only if its pid
17
+ * is alive AND a probe request to the endpoint succeeds; anything else
18
+ * is treated as absent (silent fallback), never an error. Stale records
19
+ * (crashed servers) are therefore the normal case — startup sweeps
20
+ * dead-pid records best-effort, and consumers validate the rest away.
21
+ *
22
+ * The directory layout and file format are implementation details, not
23
+ * a public contract.
24
+ *
25
+ * Design doc: 47-module-environment-tooling.md §5, 21-dev-server.md.
26
+ */
27
+ import type { Server } from 'node:net';
28
+ /** Relative path of the discovery directory within the project root. */
29
+ export declare const DEV_DISCOVERY_DIR: string;
30
+ export interface DevRecord {
31
+ port: number;
32
+ pid: number;
33
+ /**
34
+ * The bound address, as reported by the socket. Consumers probing the
35
+ * endpoint need it for servers bound to non-default interfaces;
36
+ * wildcard addresses (`0.0.0.0`, `::`) should be probed via loopback.
37
+ */
38
+ host: string;
39
+ /**
40
+ * Probe scheme. `server.https` dev servers (including HTTP/2) answer
41
+ * only TLS — an http:// probe of one would fail and wrongly trigger
42
+ * the cold-crawl fallback.
43
+ */
44
+ protocol: 'http' | 'https';
45
+ /**
46
+ * Vite `base` path. When non-root (e.g. `/my-app/`), the WebSocket
47
+ * upgrade path is `base + hmrPath`.
48
+ */
49
+ base?: string;
50
+ /**
51
+ * HMR WebSocket path (from `server.ws.path` or deprecated
52
+ * `server.hmr.path`). Absent when no path is configured (default `/`).
53
+ */
54
+ hmrPath?: string;
55
+ /**
56
+ * Custom WebSocket host override (from `server.ws.host` or deprecated
57
+ * `server.hmr.host`). When set, the WS connection targets this host
58
+ * instead of the HTTP server's bound address.
59
+ */
60
+ hmrHost?: string;
61
+ /**
62
+ * Custom WebSocket port override (from `server.ws.clientPort` ??
63
+ * `server.ws.port`, or deprecated `server.hmr.clientPort` ??
64
+ * `server.hmr.port`). When set, the WS connection targets this port
65
+ * instead of the HTTP server's bound port.
66
+ */
67
+ hmrPort?: number;
68
+ /**
69
+ * Custom WebSocket protocol override (from `server.ws.protocol` or
70
+ * deprecated `server.hmr.protocol`). When set (e.g. `'wss'`), the
71
+ * upgrade request uses the corresponding HTTP scheme.
72
+ */
73
+ hmrProtocol?: string;
74
+ /**
75
+ * Vite 8 WebSocket token (from `config.webSocketToken`). Required for
76
+ * browser WS upgrades; the extension passes it as `?token=` on the
77
+ * WebSocket URL.
78
+ */
79
+ webSocketToken?: string;
80
+ /**
81
+ * Absolute path to the Vite config file this server was started with.
82
+ * When multiple dev servers share a project root but use different
83
+ * configs, the fast path must only accept the record matching the
84
+ * config the CLI resolved (TIM-1393).
85
+ */
86
+ configFile?: string;
87
+ }
88
+ /** Best-effort "is this pid alive" — signal 0 probes without killing. */
89
+ export declare function isPidAlive(pid: number): boolean;
90
+ /**
91
+ * Register discovery-record lifecycle handlers on the dev server's HTTP
92
+ * server. Writes `.timber/dev/<pid>-<port>-<token>.json` once the server is
93
+ * listening (the bound port is only known then) and removes exactly
94
+ * that record on clean shutdown.
95
+ *
96
+ * All filesystem work is best-effort: a failure to write or remove a
97
+ * record must never break the dev server. `httpServer` is null in
98
+ * middleware mode — no port exists, so there is nothing to advertise.
99
+ * Typed as `net.Server` — the common base of Vite's `http.Server` and
100
+ * `Http2SecureServer` variants, which carries the events and `address()`.
101
+ */
102
+ export declare function registerDevDiscovery(httpServer: Server | null, root: string, config?: {
103
+ configFile?: string | false;
104
+ base?: string;
105
+ server?: {
106
+ hmr?: {
107
+ path?: string;
108
+ host?: string;
109
+ port?: number;
110
+ clientPort?: number;
111
+ protocol?: string;
112
+ } | boolean;
113
+ ws?: {
114
+ path?: string;
115
+ host?: string;
116
+ port?: number;
117
+ clientPort?: number;
118
+ protocol?: string;
119
+ } | false;
120
+ };
121
+ webSocketToken?: string;
122
+ }): void;
123
+ //# sourceMappingURL=dev-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-discovery.d.ts","sourceRoot":"","sources":["../../src/plugins/dev-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMvC,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,QAAyB,CAAC;AAExD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ/C;AA+BD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE;IACP,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACP,GAAG,CAAC,EACA;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,GACvF,OAAO,CAAC;QACZ,EAAE,CAAC,EACC;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,GACvF,KAAK,CAAC;KACX,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACA,IAAI,CAsDN"}
@@ -13,7 +13,7 @@
13
13
  */
14
14
  import type { Plugin } from 'vite';
15
15
  import type { IncomingMessage } from 'node:http';
16
- import type { PluginContext } from '../plugin-context.js';
16
+ import type { PluginContext } from '../plugin-context.ts';
17
17
  /**
18
18
  * Create the timber-dev-server Vite plugin.
19
19
  *
@@ -1 +1 @@
1
- {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/plugins/dev-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,WAAW,CAAC;AAKjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA8C1D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA6D1D;AA8PD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAuC9D"}
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/plugins/dev-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,WAAW,CAAC;AAKjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAoD1D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA4I1D;AA8PD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAuC9D"}
@@ -11,7 +11,7 @@
11
11
  * Design docs: 18-build-system.md §"Entry Generation", §"Virtual Modules"
12
12
  */
13
13
  import type { Plugin } from 'vite';
14
- import type { PluginContext } from '../plugin-context.js';
14
+ import type { PluginContext } from '../plugin-context.ts';
15
15
  /**
16
16
  * Detect a user convention file at both root and src/.
17
17
  *
@@ -18,9 +18,9 @@
18
18
  * Design doc: 24-fonts.md
19
19
  */
20
20
  import type { Plugin } from 'vite';
21
- import type { PluginContext } from '../plugin-context.js';
22
- export { FontPipeline } from '../fonts/pipeline.js';
23
- export { generateFontId, extractFontConfig, detectDynamicFontCall, parseGoogleFontImports, parseGoogleFontFamilies, parseLocalFontImportName, } from '../fonts/transform.js';
21
+ import type { PluginContext } from '../plugin-context.ts';
22
+ export { FontPipeline } from '../fonts/pipeline.ts';
23
+ export { generateFontId, extractFontConfig, detectDynamicFontCall, parseGoogleFontImports, parseGoogleFontFamilies, parseLocalFontImportName, } from '../fonts/transform.ts';
24
24
  /**
25
25
  * Create the timber-fonts Vite plugin.
26
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/plugins/fonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA2B1D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA8OtD"}
1
+ {"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/plugins/fonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA2B1D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAqPtD"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * graph-endpoint — `GET /__timber/graph` on the dev server.
3
+ *
4
+ * The fast path of design/47: when a dev server runs, the env module
5
+ * graphs are already resident and classification is a lookup. Serves
6
+ * the `timber graph` CLI (delegation lands with the fast-path ticket)
7
+ * and the VS Code extension, which additionally needs push updates on
8
+ * HMR — something a CLI cannot provide.
9
+ *
10
+ * Dev-only by construction: registered from the timber-dev-server
11
+ * plugin, which is `apply: 'serve'`; production builds contain none of
12
+ * this. Same JSON contract as the CLI, produced by the same
13
+ * classification module (analyze/live-graph.ts → classify/chains/
14
+ * poison-scan) — never a second implementation.
15
+ *
16
+ * Endpoint hygiene (§10): requests are validated against DNS rebinding
17
+ * consistent with Vite's own dev-endpoint protections — the Host
18
+ * header must be a localhost form or an allowed host (Vite's
19
+ * `server.allowedHosts` semantics, including leading-dot suffix
20
+ * entries), and a present Origin header must pass the same check. A
21
+ * CLI probe sends no Origin and passes; a browser on an attacker's
22
+ * page either fails the Host check (rebinding: Host is the attacker's
23
+ * domain) or the Origin check (direct cross-origin fetch).
24
+ *
25
+ * Push channel: `timber:graph-update` custom HMR events, one per
26
+ * project-source watcher event. The channel just emits — debounce is
27
+ * the consumer's concern (design/47 §"Dev-server endpoint").
28
+ *
29
+ * Design docs: 47-module-environment-tooling.md §10, 21-dev-server.md.
30
+ */
31
+ import type { ViteDevServer } from 'vite';
32
+ import type { IncomingMessage, ServerResponse } from 'node:http';
33
+ import type { PluginContext } from '../plugin-context.ts';
34
+ export declare const GRAPH_ENDPOINT_PATH = "/__timber/graph";
35
+ /** HMR custom event name for graph-affecting file changes. */
36
+ export declare const GRAPH_UPDATE_EVENT = "timber:graph-update";
37
+ /**
38
+ * Host-header allowlist check, ported branch-for-branch from Vite's
39
+ * host-validation middleware (`isHostAllowedWithoutCache`) so this
40
+ * endpoint's reachability matches the rest of the dev server:
41
+ *
42
+ * - `allowedHosts: true` allows everything
43
+ * - a MISSING Host header is allowed (Vite parity — HTTP/1.0 probes)
44
+ * - any IP-literal host is allowed (`vite --host` LAN access sends
45
+ * `Host: 192.168.x.x:port`; rejecting it would 403 this endpoint
46
+ * while every other dev route works)
47
+ * - `localhost` and `*.localhost` are always allowed
48
+ * - allowedHosts entries: exact match, or `.suffix` subdomain entries
49
+ */
50
+ export declare function isAllowedGraphHost(hostHeader: string | undefined, allowedHosts: true | string[] | undefined): boolean;
51
+ /** Origin check: absent is fine (CLI probe); present must pass the host allowlist. */
52
+ export declare function isAllowedGraphOrigin(originHeader: string | undefined, allowedHosts: true | string[] | undefined): boolean;
53
+ /**
54
+ * Create the Connect middleware handling GET /__timber/graph.
55
+ *
56
+ * Query surface: `?file=<path>` (absolute or project-root-relative) or
57
+ * `?all=1`. Anything else is a 400 — fail loudly, like the CLI.
58
+ */
59
+ export declare function createGraphEndpointMiddleware(server: ViteDevServer, ctx: PluginContext): (req: IncomingMessage, res: ServerResponse, next: () => void) => Promise<void>;
60
+ /** What one hotUpdate invocation tells the emitter. */
61
+ export interface GraphHotUpdate {
62
+ file: string;
63
+ /** Vite's own hotUpdate vocabulary. */
64
+ type: 'create' | 'update' | 'delete';
65
+ /** Environment the hook ran for (rsc/ssr/client). */
66
+ environment: string;
67
+ }
68
+ /** The push channel's two notification points for one edit. */
69
+ export interface GraphUpdateChannel {
70
+ /** Feed from the plugin's hotUpdate hook (post graph invalidation). */
71
+ onHotUpdate(update: GraphHotUpdate): void;
72
+ /**
73
+ * Feed from the plugin's transform hook (module id, may carry a
74
+ * query suffix). Emits phase "transformed" for files with a pending
75
+ * invalidation, once their import edges are actually rebuilt.
76
+ */
77
+ onTransform(id: string, environment: string): void;
78
+ }
79
+ /**
80
+ * Accessor the channel uses to decide when a re-transforming module's
81
+ * graph data is current: Vite stores the node's `transformResult` only
82
+ * at the END of the transform request — after `vite:import-analysis`
83
+ * has rebuilt the importer edges — so a non-null result is the
84
+ * edges-are-current signal.
85
+ */
86
+ export type IsNodeTransformed = (file: string, environment: string) => boolean;
87
+ /**
88
+ * Build the push channel: `timber:graph-update` custom HMR events per
89
+ * project-source change. Consumers (the VS Code extension) re-query
90
+ * and debounce on their side; the channel just emits. Non-source noise
91
+ * (build output, dotdirs) is filtered by the same extension set the
92
+ * scanners use.
93
+ *
94
+ * Two phases per edit, because one is not enough (codex review, PR
95
+ * #1057): the `invalidated` event fires from the plugin's `hotUpdate`
96
+ * hook — after Vite clears the module's transform result, but its
97
+ * importer EDGES are only rebuilt when the module is next transformed.
98
+ * The `transformed` event fires for exactly the files with a pending
99
+ * invalidation, and only once the node's `transformResult` is set
100
+ * again — the plugin transform hook itself runs BEFORE Vite's trailing
101
+ * `vite:import-analysis` (which rebuilds the edges), so the hook only
102
+ * marks the file "settling" and a short bounded timer confirms
103
+ * completion via `isTransformed` before emitting. (A module nothing
104
+ * re-requests never re-transforms — its `transformed` event waits for
105
+ * the next render, which is also when the graph has new information.)
106
+ */
107
+ export declare function makeGraphUpdateChannel(ctx: Pick<PluginContext, 'root' | 'config'>, send: (payload: {
108
+ type: 'custom';
109
+ event: string;
110
+ data: unknown;
111
+ }) => void, isTransformed?: IsNodeTransformed, canonicalize?: (file: string) => string): GraphUpdateChannel;
112
+ //# sourceMappingURL=graph-endpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-endpoint.d.ts","sourceRoot":"","sources":["../../src/plugins/graph-endpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,8DAA8D;AAC9D,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAExD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,YAAY,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,SAAS,GACxC,OAAO,CAwBT;AAqBD,sFAAsF;AACtF,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,YAAY,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,SAAS,GACxC,OAAO,CA2BT;AAsBD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,SAElE,eAAe,OAAO,cAAc,QAAQ,MAAM,IAAI,KAAG,OAAO,CAAC,IAAI,CAAC,CAkM1F;AAED,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC1C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACpD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,CAAC,EAC3C,IAAI,EAAE,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,EACzE,aAAa,CAAC,EAAE,iBAAiB,EAMjC,YAAY,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAuB,GACtD,kBAAkB,CA2GpB"}
@@ -20,7 +20,7 @@
20
20
  * Design doc: 20-content-collections.md §"The timber-mdx Plugin"
21
21
  */
22
22
  import type { Plugin } from 'vite';
23
- import type { PluginContext } from '../plugin-context.js';
23
+ import type { PluginContext } from '../plugin-context.ts';
24
24
  /**
25
25
  * Check if mdx-components.tsx (or .ts, .jsx, .js) exists at the project root
26
26
  * or in src/. Root takes precedence, matching Next.js behavior.
@@ -1 +1 @@
1
- {"version":3,"file":"mdx.d.ts","sourceRoot":"","sources":["../../src/plugins/mdx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAelE;AAqED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA4HpD"}
1
+ {"version":3,"file":"mdx.d.ts","sourceRoot":"","sources":["../../src/plugins/mdx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAelE;AAqED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA4HpD"}
@@ -24,8 +24,8 @@
24
24
  * call timber.cache), and it only happens when the app actually declares
25
25
  * prebuilt components.
26
26
  */
27
- import type { PluginContext } from '../plugin-context.js';
28
- import type { CaptureSummary, CapturedEntry } from '../server/prebuilt-builder.js';
27
+ import type { PluginContext } from '../plugin-context.ts';
28
+ import type { CaptureSummary, CapturedEntry } from '../server/prebuilt-builder.ts';
29
29
  export interface PrebuiltArtifactWriter {
30
30
  write(entry: CapturedEntry): Promise<void>;
31
31
  /** Write manifest.json (if any entries exist). Returns the entry count. */
@@ -11,7 +11,7 @@
11
11
  * pass re-checks the real options at runtime and skips), under-inclusion
12
12
  * would silently skip prerendering.
13
13
  */
14
- import type { CallExpressionNode, PositionedNode } from './callsite-ast.js';
14
+ import type { CallExpressionNode, PositionedNode } from './callsite-ast.ts';
15
15
  /** Unwrap TS expression wrappers (`as`, `satisfies`, `!`, parens). */
16
16
  export declare function unwrapExpression(node: PositionedNode): PositionedNode;
17
17
  /**
@@ -57,7 +57,7 @@
57
57
  * See TIM-1118, design/44-render-at-build-time.md, design/45-cache-lifetimes.md.
58
58
  */
59
59
  import type { Plugin } from 'vite';
60
- import type { PluginContext } from '../plugin-context.js';
60
+ import type { PluginContext } from '../plugin-context.ts';
61
61
  /**
62
62
  * Generate the stable component ID for a cache.component() call site:
63
63
  * `<sanitized-name>_<content-hash16>`. Exported for testing.
@@ -11,31 +11,28 @@
11
11
  * `export const prerender` to descendant pages via most-specific-wins:
12
12
  * walk the segment tree from leaf to root, first explicit value wins.
13
13
  *
14
- * A layout that declares `export const prerender` is ALSO wrapped — the
15
- * layout's flight payload is its own static shell (`children` is a
16
- * separate component boundary), so caching it is natural (nav, sidebar,
17
- * footer benefit from build-time rendering). See design/45 §Layout
18
- * Propagation.
14
+ * Layout declarations are propagation policy only. Layouts receive the real
15
+ * descendant React element as `children` to preserve the server-layout
16
+ * containment boundary, so their props are not cache-keyable and the layout
17
+ * itself must not be registered for capture.
19
18
  *
20
19
  * This transform runs BEFORE timber-prebuilt so the generated
21
20
  * `cache.component(...)` call is picked up by the callsite rewrite.
22
21
  */
23
22
  import type { Plugin } from 'vite';
24
- import type { PluginContext } from '../plugin-context.js';
25
- import type { SegmentNode } from '../routing/types.js';
26
- import { type PrerenderExportValue } from '../routing/export-detect.js';
23
+ import type { PluginContext } from '../plugin-context.ts';
24
+ import type { SegmentNode } from '../routing/types.ts';
25
+ import { type PrerenderExportValue } from '../routing/export-detect.ts';
27
26
  /**
28
27
  * Walk the segment tree and resolve the effective prerender value for
29
- * every page and layout. Returns a map from file path to resolved value.
28
+ * every page. Returns a map from page file path to resolved value.
30
29
  *
31
30
  * **Pages:** walk from leaf toward root; first explicit `export const prerender`
32
31
  * wins (page > nearest layout > ... > root layout). If none, dynamic.
33
32
  *
34
- * **Layouts:** a layout that declares `export const prerender` is wrapped
35
- * directly (its own shell is a separate component boundary from `children`).
36
- * Layouts without their own declaration are NOT wrapped — they don't
37
- * inherit from ancestors, because wrapping a layout's shell without the
38
- * author's explicit opt-in would cache content they may expect to be dynamic.
33
+ * **Layouts:** declarations propagate to descendant pages but layouts are not
34
+ * included in the result. Their real React-element `children` preserve secure
35
+ * containment and deliberately make child-independent layout caching invalid.
39
36
  */
40
37
  export declare function resolvePagePrerender(root: SegmentNode): Map<string, PrerenderExportValue>;
41
38
  export declare function timberPrerenderSugar(ctx: PluginContext): Plugin;
@@ -1 +1 @@
1
- {"version":3,"file":"prerender-sugar.d.ts","sourceRoot":"","sources":["../../src/plugins/prerender-sugar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAY5F;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAgCzF;AAuFD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA4J/D"}
1
+ {"version":3,"file":"prerender-sugar.d.ts","sourceRoot":"","sources":["../../src/plugins/prerender-sugar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAY5F;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CA2BzF;AAuFD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA4J/D"}
@@ -16,7 +16,7 @@
16
16
  *
17
17
  * See design/19-client-navigation.md §"Why the slot comparison ignores the query".
18
18
  */
19
- import type { ProgramNode } from '../callsite-ast.js';
19
+ import type { ProgramNode } from '../callsite-ast.ts';
20
20
  /**
21
21
  * One module-graph edge introduced by an `import` or `export … from`.
22
22
  *