@timber-js/app 0.2.0-alpha.98 → 0.2.0-alpha.99

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 (322) hide show
  1. package/LICENSE +8 -0
  2. package/dist/_chunks/actions-CQ8Z8VGL.js +1061 -0
  3. package/dist/_chunks/actions-CQ8Z8VGL.js.map +1 -0
  4. package/dist/_chunks/build-output-helper-DXnW0qjz.js +61 -0
  5. package/dist/_chunks/build-output-helper-DXnW0qjz.js.map +1 -0
  6. package/dist/_chunks/{define-Itxvcd7F.js → define-B-Q_UMOD.js} +19 -23
  7. package/dist/_chunks/define-B-Q_UMOD.js.map +1 -0
  8. package/dist/_chunks/{define-C77ScO0m.js → define-CfBPoJb0.js} +24 -7
  9. package/dist/_chunks/define-CfBPoJb0.js.map +1 -0
  10. package/dist/_chunks/define-cookie-BjpIt4UC.js +194 -0
  11. package/dist/_chunks/define-cookie-BjpIt4UC.js.map +1 -0
  12. package/dist/_chunks/{format-CYBGxKtc.js → format-Bcn-Iv1x.js} +1 -1
  13. package/dist/_chunks/{format-CYBGxKtc.js.map → format-Bcn-Iv1x.js.map} +1 -1
  14. package/dist/_chunks/handler-store-B-lqaGyh.js +54 -0
  15. package/dist/_chunks/handler-store-B-lqaGyh.js.map +1 -0
  16. package/dist/_chunks/logger-0m8MsKdc.js +291 -0
  17. package/dist/_chunks/logger-0m8MsKdc.js.map +1 -0
  18. package/dist/_chunks/merge-search-params-BphMdht_.js +122 -0
  19. package/dist/_chunks/merge-search-params-BphMdht_.js.map +1 -0
  20. package/dist/_chunks/navigation-root-BCYczjml.js +96 -0
  21. package/dist/_chunks/navigation-root-BCYczjml.js.map +1 -0
  22. package/dist/_chunks/registry-I2ss-lvy.js +20 -0
  23. package/dist/_chunks/registry-I2ss-lvy.js.map +1 -0
  24. package/dist/_chunks/router-ref-h3-UaCQv.js +28 -0
  25. package/dist/_chunks/router-ref-h3-UaCQv.js.map +1 -0
  26. package/dist/_chunks/{schema-bridge-C3xl_vfb.js → schema-bridge-Cxu4l-7p.js} +1 -1
  27. package/dist/_chunks/{schema-bridge-C3xl_vfb.js.map → schema-bridge-Cxu4l-7p.js.map} +1 -1
  28. package/dist/_chunks/{segment-context-fHFLF1PE.js → segment-context-Dx_OizxD.js} +1 -1
  29. package/dist/_chunks/{segment-context-fHFLF1PE.js.map → segment-context-Dx_OizxD.js.map} +1 -1
  30. package/dist/_chunks/{router-ref-C8OCm7g7.js → ssr-data-B4CdH7rE.js} +2 -26
  31. package/dist/_chunks/ssr-data-B4CdH7rE.js.map +1 -0
  32. package/dist/_chunks/{stale-reload-BX5gL1r-.js → stale-reload-Bab885FO.js} +1 -1
  33. package/dist/_chunks/{stale-reload-BX5gL1r-.js.map → stale-reload-Bab885FO.js.map} +1 -1
  34. package/dist/_chunks/tracing-C8V-YGsP.js +329 -0
  35. package/dist/_chunks/tracing-C8V-YGsP.js.map +1 -0
  36. package/dist/_chunks/{use-query-states-BiV5GJgm.js → use-query-states-B2XTqxDR.js} +3 -19
  37. package/dist/_chunks/use-query-states-B2XTqxDR.js.map +1 -0
  38. package/dist/_chunks/{use-params-IOPu7E8t.js → use-segment-params-BkpKAQ7D.js} +9 -95
  39. package/dist/_chunks/use-segment-params-BkpKAQ7D.js.map +1 -0
  40. package/dist/_chunks/{walkers-VOXgavMF.js → walkers-Tg0Alwcg.js} +6 -3
  41. package/dist/_chunks/walkers-Tg0Alwcg.js.map +1 -0
  42. package/dist/_chunks/{dev-warnings-DpGRGoDi.js → warnings-Cg47l5sk.js} +3 -3
  43. package/dist/_chunks/warnings-Cg47l5sk.js.map +1 -0
  44. package/dist/adapters/build-output-helper.d.ts +28 -0
  45. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  46. package/dist/adapters/cloudflare.d.ts.map +1 -1
  47. package/dist/adapters/cloudflare.js +8 -28
  48. package/dist/adapters/cloudflare.js.map +1 -1
  49. package/dist/adapters/nitro.d.ts.map +1 -1
  50. package/dist/adapters/nitro.js +8 -26
  51. package/dist/adapters/nitro.js.map +1 -1
  52. package/dist/adapters/shared.d.ts +16 -0
  53. package/dist/adapters/shared.d.ts.map +1 -0
  54. package/dist/cache/index.js +9 -2
  55. package/dist/cache/index.js.map +1 -1
  56. package/dist/cache/timber-cache.d.ts.map +1 -1
  57. package/dist/client/error-boundary.js +2 -1
  58. package/dist/client/error-boundary.js.map +1 -1
  59. package/dist/client/form.d.ts +10 -24
  60. package/dist/client/form.d.ts.map +1 -1
  61. package/dist/client/index.d.ts +1 -5
  62. package/dist/client/index.d.ts.map +1 -1
  63. package/dist/client/index.js +40 -90
  64. package/dist/client/index.js.map +1 -1
  65. package/dist/client/internal.d.ts +2 -1
  66. package/dist/client/internal.d.ts.map +1 -1
  67. package/dist/client/internal.js +81 -7
  68. package/dist/client/internal.js.map +1 -1
  69. package/dist/client/rsc-fetch.d.ts.map +1 -1
  70. package/dist/client/state.d.ts +1 -1
  71. package/dist/client/use-cookie.d.ts +8 -0
  72. package/dist/client/use-cookie.d.ts.map +1 -1
  73. package/dist/client/{use-params.d.ts → use-segment-params.d.ts} +1 -1
  74. package/dist/client/use-segment-params.d.ts.map +1 -0
  75. package/dist/codec.d.ts +1 -1
  76. package/dist/codec.d.ts.map +1 -1
  77. package/dist/codec.js +2 -2
  78. package/dist/config-types.d.ts +28 -0
  79. package/dist/config-types.d.ts.map +1 -1
  80. package/dist/cookies/define-cookie.d.ts +87 -35
  81. package/dist/cookies/define-cookie.d.ts.map +1 -1
  82. package/dist/cookies/index.d.ts +2 -1
  83. package/dist/cookies/index.d.ts.map +1 -1
  84. package/dist/cookies/index.js +48 -2
  85. package/dist/cookies/index.js.map +1 -0
  86. package/dist/cookies/json-cookie.d.ts +64 -0
  87. package/dist/cookies/json-cookie.d.ts.map +1 -0
  88. package/dist/cookies/validation.d.ts +46 -0
  89. package/dist/cookies/validation.d.ts.map +1 -0
  90. package/dist/{plugins/dev-404-page.d.ts → dev-tools/404-page.d.ts} +1 -1
  91. package/dist/dev-tools/404-page.d.ts.map +1 -0
  92. package/dist/{plugins/dev-browser-logs.d.ts → dev-tools/browser-logs.d.ts} +1 -1
  93. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  94. package/dist/{plugins/dev-error-page.d.ts → dev-tools/error-page.d.ts} +2 -2
  95. package/dist/dev-tools/error-page.d.ts.map +1 -0
  96. package/dist/{server/dev-holding-server.d.ts → dev-tools/holding-server.d.ts} +1 -1
  97. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  98. package/dist/dev-tools/index.d.ts +31 -0
  99. package/dist/dev-tools/index.d.ts.map +1 -0
  100. package/dist/{server/dev-span-processor.d.ts → dev-tools/instrumentation.d.ts} +26 -6
  101. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  102. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  103. package/dist/dev-tools/logger.d.ts.map +1 -0
  104. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +1 -1
  105. package/dist/dev-tools/logs.d.ts.map +1 -0
  106. package/dist/{plugins/dev-error-overlay.d.ts → dev-tools/overlay.d.ts} +3 -12
  107. package/dist/dev-tools/overlay.d.ts.map +1 -0
  108. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  109. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  110. package/dist/{plugins/dev-terminal-error.d.ts → dev-tools/terminal.d.ts} +2 -2
  111. package/dist/dev-tools/terminal.d.ts.map +1 -0
  112. package/dist/{server/dev-warnings.d.ts → dev-tools/warnings.d.ts} +1 -1
  113. package/dist/dev-tools/warnings.d.ts.map +1 -0
  114. package/dist/index.d.ts +1 -0
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +97 -72
  117. package/dist/index.js.map +1 -1
  118. package/dist/plugin-context.d.ts +1 -1
  119. package/dist/plugin-context.d.ts.map +1 -1
  120. package/dist/plugins/adapter-build.d.ts.map +1 -1
  121. package/dist/routing/convention-lint.d.ts.map +1 -1
  122. package/dist/routing/index.js +1 -1
  123. package/dist/routing/scanner.d.ts.map +1 -1
  124. package/dist/routing/status-file-lint.d.ts.map +1 -1
  125. package/dist/search-params/define.d.ts +25 -7
  126. package/dist/search-params/define.d.ts.map +1 -1
  127. package/dist/search-params/index.js +5 -3
  128. package/dist/search-params/index.js.map +1 -1
  129. package/dist/search-params/wrappers.d.ts +2 -2
  130. package/dist/search-params/wrappers.d.ts.map +1 -1
  131. package/dist/segment-params/define.d.ts +23 -6
  132. package/dist/segment-params/define.d.ts.map +1 -1
  133. package/dist/segment-params/index.js +1 -1
  134. package/dist/server/access-gate.d.ts +4 -3
  135. package/dist/server/access-gate.d.ts.map +1 -1
  136. package/dist/server/action-handler.d.ts +15 -6
  137. package/dist/server/action-handler.d.ts.map +1 -1
  138. package/dist/server/als-registry.d.ts +5 -5
  139. package/dist/server/als-registry.d.ts.map +1 -1
  140. package/dist/server/asset-headers.d.ts +1 -15
  141. package/dist/server/asset-headers.d.ts.map +1 -1
  142. package/dist/server/cookie-context.d.ts +170 -0
  143. package/dist/server/cookie-context.d.ts.map +1 -0
  144. package/dist/server/cookie-parsing.d.ts +51 -0
  145. package/dist/server/cookie-parsing.d.ts.map +1 -0
  146. package/dist/server/deny-boundary.d.ts +90 -0
  147. package/dist/server/deny-boundary.d.ts.map +1 -0
  148. package/dist/server/deny-renderer.d.ts.map +1 -1
  149. package/dist/server/early-hints-sender.d.ts.map +1 -1
  150. package/dist/server/index.d.ts +5 -4
  151. package/dist/server/index.d.ts.map +1 -1
  152. package/dist/server/index.js +4 -149
  153. package/dist/server/index.js.map +1 -1
  154. package/dist/server/internal.d.ts +6 -4
  155. package/dist/server/internal.d.ts.map +1 -1
  156. package/dist/server/internal.js +261 -408
  157. package/dist/server/internal.js.map +1 -1
  158. package/dist/server/logger.d.ts +14 -0
  159. package/dist/server/logger.d.ts.map +1 -1
  160. package/dist/server/middleware-runner.d.ts +17 -0
  161. package/dist/server/middleware-runner.d.ts.map +1 -1
  162. package/dist/server/param-coercion.d.ts +26 -0
  163. package/dist/server/param-coercion.d.ts.map +1 -0
  164. package/dist/server/pipeline-helpers.d.ts +14 -7
  165. package/dist/server/pipeline-helpers.d.ts.map +1 -1
  166. package/dist/server/pipeline-outcome.d.ts +49 -0
  167. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  168. package/dist/server/pipeline-phases.d.ts +4 -49
  169. package/dist/server/pipeline-phases.d.ts.map +1 -1
  170. package/dist/server/pipeline.d.ts +0 -2
  171. package/dist/server/pipeline.d.ts.map +1 -1
  172. package/dist/server/request-context.d.ts +22 -159
  173. package/dist/server/request-context.d.ts.map +1 -1
  174. package/dist/server/route-element-builder.d.ts.map +1 -1
  175. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  176. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  177. package/dist/server/rsc-entry/helpers.d.ts +1 -1
  178. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  179. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  180. package/dist/server/rsc-entry/render-route.d.ts +50 -0
  181. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  182. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +59 -14
  183. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -1
  184. package/dist/server/state-tree-diff.d.ts.map +1 -1
  185. package/dist/server/tracing.d.ts +1 -1
  186. package/dist/server/tracing.d.ts.map +1 -1
  187. package/dist/server/tree-builder.d.ts +45 -16
  188. package/dist/server/tree-builder.d.ts.map +1 -1
  189. package/dist/server/types.d.ts +48 -0
  190. package/dist/server/types.d.ts.map +1 -1
  191. package/dist/server/utils/escape-html.d.ts +14 -0
  192. package/dist/server/utils/escape-html.d.ts.map +1 -0
  193. package/dist/shims/headers.d.ts +2 -2
  194. package/dist/shims/headers.d.ts.map +1 -1
  195. package/dist/shims/navigation-client.d.ts +3 -1
  196. package/dist/shims/navigation-client.d.ts.map +1 -1
  197. package/dist/shims/navigation.d.ts +9 -4
  198. package/dist/shims/navigation.d.ts.map +1 -1
  199. package/package.json +6 -7
  200. package/src/adapters/build-output-helper.ts +77 -0
  201. package/src/adapters/cloudflare.ts +10 -50
  202. package/src/adapters/nitro.ts +11 -45
  203. package/src/adapters/shared.ts +40 -0
  204. package/src/cache/timber-cache.ts +3 -2
  205. package/src/cli.ts +0 -0
  206. package/src/client/form.tsx +17 -25
  207. package/src/client/index.ts +16 -9
  208. package/src/client/internal.ts +3 -2
  209. package/src/client/router.ts +1 -1
  210. package/src/client/rsc-fetch.ts +15 -0
  211. package/src/client/state.ts +2 -2
  212. package/src/client/use-cookie.ts +29 -0
  213. package/src/codec.ts +3 -7
  214. package/src/config-types.ts +28 -0
  215. package/src/cookies/define-cookie.ts +271 -78
  216. package/src/cookies/index.ts +11 -8
  217. package/src/cookies/json-cookie.ts +105 -0
  218. package/src/cookies/validation.ts +134 -0
  219. package/src/{plugins/dev-404-page.ts → dev-tools/404-page.ts} +2 -7
  220. package/src/{plugins/dev-error-page.ts → dev-tools/error-page.ts} +5 -32
  221. package/src/dev-tools/index.ts +90 -0
  222. package/src/dev-tools/instrumentation.ts +176 -0
  223. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +2 -2
  224. package/src/{plugins/dev-error-overlay.ts → dev-tools/overlay.ts} +5 -23
  225. package/src/dev-tools/stack-classifier.ts +75 -0
  226. package/src/{plugins/dev-terminal-error.ts → dev-tools/terminal.ts} +4 -38
  227. package/src/{server/dev-warnings.ts → dev-tools/warnings.ts} +1 -1
  228. package/src/index.ts +11 -3
  229. package/src/plugin-context.ts +1 -1
  230. package/src/plugins/adapter-build.ts +3 -1
  231. package/src/plugins/dev-server.ts +3 -3
  232. package/src/plugins/shims.ts +1 -1
  233. package/src/plugins/static-build.ts +1 -1
  234. package/src/routing/convention-lint.ts +5 -4
  235. package/src/routing/scanner.ts +5 -2
  236. package/src/routing/status-file-lint.ts +4 -2
  237. package/src/search-params/define.ts +71 -15
  238. package/src/search-params/wrappers.ts +9 -2
  239. package/src/segment-params/define.ts +66 -13
  240. package/src/server/access-gate.tsx +9 -8
  241. package/src/server/action-handler.ts +28 -38
  242. package/src/server/als-registry.ts +5 -5
  243. package/src/server/asset-headers.ts +8 -34
  244. package/src/server/cookie-context.ts +468 -0
  245. package/src/server/cookie-parsing.ts +135 -0
  246. package/src/server/{deny-page-resolver.ts → deny-boundary.ts} +78 -14
  247. package/src/server/deny-renderer.ts +2 -7
  248. package/src/server/early-hints-sender.ts +3 -2
  249. package/src/server/fallback-error.ts +1 -1
  250. package/src/server/index.ts +13 -14
  251. package/src/server/internal.ts +10 -3
  252. package/src/server/logger.ts +23 -0
  253. package/src/server/middleware-runner.ts +44 -0
  254. package/src/server/param-coercion.ts +76 -0
  255. package/src/server/pipeline-helpers.ts +37 -13
  256. package/src/server/pipeline-outcome.ts +167 -0
  257. package/src/server/pipeline-phases.ts +27 -209
  258. package/src/server/pipeline.ts +2 -9
  259. package/src/server/request-context.ts +46 -451
  260. package/src/server/route-element-builder.ts +7 -3
  261. package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
  262. package/src/server/rsc-entry/error-renderer.ts +1 -1
  263. package/src/server/rsc-entry/helpers.ts +2 -7
  264. package/src/server/rsc-entry/index.ts +34 -273
  265. package/src/server/rsc-entry/render-route.ts +304 -0
  266. package/src/server/rsc-entry/rsc-payload.ts +1 -1
  267. package/src/server/rsc-entry/ssr-renderer.ts +2 -2
  268. package/src/server/rsc-entry/wrap-action-dispatch.ts +316 -23
  269. package/src/server/ssr-entry.ts +1 -1
  270. package/src/server/state-tree-diff.ts +4 -1
  271. package/src/server/tracing.ts +3 -3
  272. package/src/server/tree-builder.ts +128 -52
  273. package/src/server/types.ts +52 -0
  274. package/src/server/utils/escape-html.ts +20 -0
  275. package/src/shims/headers.ts +3 -3
  276. package/src/shims/navigation-client.ts +4 -3
  277. package/src/shims/navigation.ts +9 -7
  278. package/dist/_chunks/actions-DLnUaR65.js +0 -421
  279. package/dist/_chunks/actions-DLnUaR65.js.map +0 -1
  280. package/dist/_chunks/als-registry-HS0LGUl2.js +0 -41
  281. package/dist/_chunks/als-registry-HS0LGUl2.js.map +0 -1
  282. package/dist/_chunks/debug-ECi_61pb.js +0 -108
  283. package/dist/_chunks/debug-ECi_61pb.js.map +0 -1
  284. package/dist/_chunks/define-C77ScO0m.js.map +0 -1
  285. package/dist/_chunks/define-Itxvcd7F.js.map +0 -1
  286. package/dist/_chunks/define-cookie-BowvzoP0.js +0 -94
  287. package/dist/_chunks/define-cookie-BowvzoP0.js.map +0 -1
  288. package/dist/_chunks/dev-warnings-DpGRGoDi.js.map +0 -1
  289. package/dist/_chunks/merge-search-params-Cm_KIWDX.js +0 -41
  290. package/dist/_chunks/merge-search-params-Cm_KIWDX.js.map +0 -1
  291. package/dist/_chunks/request-context-CK5tZqIP.js +0 -478
  292. package/dist/_chunks/request-context-CK5tZqIP.js.map +0 -1
  293. package/dist/_chunks/router-ref-C8OCm7g7.js.map +0 -1
  294. package/dist/_chunks/tracing-CCYbKn5n.js +0 -238
  295. package/dist/_chunks/tracing-CCYbKn5n.js.map +0 -1
  296. package/dist/_chunks/use-params-IOPu7E8t.js.map +0 -1
  297. package/dist/_chunks/use-query-states-BiV5GJgm.js.map +0 -1
  298. package/dist/_chunks/walkers-VOXgavMF.js.map +0 -1
  299. package/dist/client/use-params.d.ts.map +0 -1
  300. package/dist/plugins/dev-404-page.d.ts.map +0 -1
  301. package/dist/plugins/dev-browser-logs.d.ts.map +0 -1
  302. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  303. package/dist/plugins/dev-error-page.d.ts.map +0 -1
  304. package/dist/plugins/dev-logs.d.ts.map +0 -1
  305. package/dist/plugins/dev-terminal-error.d.ts.map +0 -1
  306. package/dist/server/deny-page-resolver.d.ts +0 -52
  307. package/dist/server/deny-page-resolver.d.ts.map +0 -1
  308. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  309. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  310. package/dist/server/dev-holding-server.d.ts.map +0 -1
  311. package/dist/server/dev-logger.d.ts.map +0 -1
  312. package/dist/server/dev-span-processor.d.ts.map +0 -1
  313. package/dist/server/dev-warnings.d.ts.map +0 -1
  314. package/dist/server/page-deny-boundary.d.ts +0 -31
  315. package/dist/server/page-deny-boundary.d.ts.map +0 -1
  316. package/src/server/dev-fetch-instrumentation.ts +0 -96
  317. package/src/server/dev-span-processor.ts +0 -78
  318. package/src/server/page-deny-boundary.tsx +0 -56
  319. /package/src/client/{use-params.ts → use-segment-params.ts} +0 -0
  320. /package/src/{plugins/dev-browser-logs.ts → dev-tools/browser-logs.ts} +0 -0
  321. /package/src/{server/dev-holding-server.ts → dev-tools/holding-server.ts} +0 -0
  322. /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
@@ -19,15 +19,7 @@ import type { ViteDevServer } from 'vite';
19
19
  export type ErrorPhase = 'module-transform' | 'proxy' | 'middleware' | 'access' | 'render' | 'handler';
20
20
  /** Labels for terminal output. */
21
21
  export declare const PHASE_LABELS: Record<ErrorPhase, string>;
22
- export type FrameType = 'app' | 'framework' | 'internal';
23
- /**
24
- * Classify a stack frame line by origin.
25
- *
26
- * - 'app': user application code (in project root, not node_modules)
27
- * - 'framework': timber-app internal code
28
- * - 'internal': node_modules, Node.js internals
29
- */
30
- export declare function classifyFrame(frameLine: string, projectRoot: string): FrameType;
22
+ export { classifyFrame, classifyStack, type FrameType, type ClassifiedFrame } from './stack-classifier.js';
31
23
  /**
32
24
  * Extract the React component stack from an error, if present.
33
25
  * React attaches this as `componentStack` during renderToReadableStream errors.
@@ -48,7 +40,7 @@ export declare function parseFirstAppFrame(stack: string, projectRoot: string):
48
40
  * Falls back to 'render' if no specific phase can be determined.
49
41
  */
50
42
  export declare function classifyErrorPhase(error: Error, projectRoot: string): ErrorPhase;
51
- import { formatTerminalError as _formatTerminalError } from './dev-terminal-error.js';
43
+ import { formatTerminalError as _formatTerminalError } from './terminal.js';
52
44
  export declare const formatTerminalError: typeof _formatTerminalError;
53
45
  /**
54
46
  * Component info extracted from the RSC debug channel.
@@ -96,5 +88,4 @@ export declare function fixErrorStacktrace(server: ViteDevServer, error: Error,
96
88
  * The dev server remains running — errors are handled, not fatal.
97
89
  */
98
90
  export declare function sendErrorToOverlay(server: ViteDevServer, error: Error, phase: ErrorPhase, projectRoot: string, rscDebugComponents?: RscDebugComponentInfo[]): void;
99
- export {};
100
- //# sourceMappingURL=dev-error-overlay.d.ts.map
91
+ //# sourceMappingURL=overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/dev-tools/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,MAAM,CAAC;AAqC1D,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAClB,kBAAkB,GAClB,OAAO,GACP,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,SAAS,CAAC;AAEd,kCAAkC;AAClC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAOnD,CAAC;AAIF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI3G;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAUnE;AAID,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAqB5F;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAehF;AAOD,OAAO,EAAE,mBAAmB,IAAI,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,eAAO,MAAM,mBAAmB,6BAAuB,CAAC;AAIxD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAiCjF;AAkBD,wBAAgB,2BAA2B,IAAI,MAAM,CAyBpD;AAmHD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAMhG;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EACnB,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,GAC3C,IAAI,CA0CN"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Stack trace frame classifier — categorizes stack frames by origin.
3
+ *
4
+ * Provides `classifyFrame` (single frame) and `classifyStack` (full stack
5
+ * string) as the shared primitives used by the error page, terminal
6
+ * formatter, and overlay.
7
+ *
8
+ * Dev-only: this module is only imported by other dev-tools modules.
9
+ */
10
+ export type FrameType = 'app' | 'framework' | 'internal';
11
+ export interface ClassifiedFrame {
12
+ raw: string;
13
+ type: FrameType;
14
+ file?: string;
15
+ line?: number;
16
+ col?: number;
17
+ }
18
+ /**
19
+ * Classify a single stack frame line by origin.
20
+ *
21
+ * - 'app': user application code (in project root, not node_modules)
22
+ * - 'framework': timber-app internal code
23
+ * - 'internal': node_modules, Node.js internals
24
+ */
25
+ export declare function classifyFrame(frameLine: string, projectRoot: string): FrameType;
26
+ /**
27
+ * Classify all frames in a full stack trace string.
28
+ *
29
+ * Parses the stack, skips the first line (error message), filters to
30
+ * lines starting with "at ", and returns classified frames with optional
31
+ * file/line/col metadata.
32
+ */
33
+ export declare function classifyStack(stack: string, projectRoot: string): ClassifiedFrame[];
34
+ //# sourceMappingURL=stack-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-classifier.d.ts","sourceRoot":"","sources":["../../src/dev-tools/stack-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAmBD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,CAS/E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,EAAE,CAUnF"}
@@ -13,7 +13,7 @@
13
13
  *
14
14
  * Design doc: 21-dev-server.md §"Error Overlay"
15
15
  */
16
- import { type ErrorPhase } from './dev-error-overlay.js';
16
+ import { type ErrorPhase } from './overlay.js';
17
17
  /**
18
18
  * Format an error for terminal output with a boxed layout.
19
19
  *
@@ -25,4 +25,4 @@ import { type ErrorPhase } from './dev-error-overlay.js';
25
25
  * 5. Component stack (if present)
26
26
  */
27
27
  export declare function formatTerminalError(error: Error, phase: ErrorPhase, projectRoot: string): string;
28
- //# sourceMappingURL=dev-terminal-error.d.ts.map
28
+ //# sourceMappingURL=terminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/dev-tools/terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AA4EtB;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAkEhG"}
@@ -106,4 +106,4 @@ export declare function _resetWarnings(): void;
106
106
  * @internal
107
107
  */
108
108
  export declare function _getEmitted(): ReadonlySet<string>;
109
- //# sourceMappingURL=dev-warnings.d.ts.map
109
+ //# sourceMappingURL=warnings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../src/dev-tools/warnings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAK1C,eAAO,MAAM,SAAS;;;;;;;CAOZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAInE,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AASD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAEhE;AA0CD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CASrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAUpE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CASxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAU5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQnF;AAKD;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAQtF;AAID;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,CAEjD"}
package/dist/index.d.ts CHANGED
@@ -12,6 +12,7 @@
12
12
  import type { PluginOption } from 'vite';
13
13
  import type { TimberUserConfig } from './config-types.js';
14
14
  export type { TimberUserConfig } from './config-types.js';
15
+ export type { Metadata, MetadataRoute, MetadataHandler, MetadataResult } from './server/types.js';
15
16
  /**
16
17
  * Route map interface — augmented by the generated timber-routes.d.ts.
17
18
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,MAAM,CAAC;AA0BjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAc1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;;;;;;GASG;AAEH,MAAM,WAAW,MAAM;CAAG;AAE1B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAgGD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CA+ShE;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,MAAM,CAAC;AA0BjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAc1D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQ1D,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAElG;;;;;;;;;GASG;AAEH,MAAM,WAAW,MAAM;CAAG;AAE1B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAgGD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,YAAY,EAAE,CA+ShE;AAED,eAAe,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "./_chunks/chunk-BYIpzuS7.js";
2
- import { n as setViteServer } from "./_chunks/dev-warnings-DpGRGoDi.js";
3
- import { i as scanRoutes, n as collectInterceptionRewrites, r as generateRouteMap, t as collectLeafRoutes } from "./_chunks/walkers-VOXgavMF.js";
4
- import { t as formatSize } from "./_chunks/format-CYBGxKtc.js";
2
+ import { n as setViteServer } from "./_chunks/warnings-Cg47l5sk.js";
3
+ import { h as swallow } from "./_chunks/logger-0m8MsKdc.js";
4
+ import { i as scanRoutes, n as collectInterceptionRewrites, r as generateRouteMap, t as collectLeafRoutes } from "./_chunks/walkers-Tg0Alwcg.js";
5
+ import { t as formatSize } from "./_chunks/format-Bcn-Iv1x.js";
5
6
  import { dirname, extname, join, normalize, resolve } from "node:path";
6
7
  import { createRequire } from "node:module";
7
8
  import react, { reactCompilerPreset } from "@vitejs/plugin-react";
@@ -98,7 +99,60 @@ function timberContent(ctx) {
98
99
  };
99
100
  }
100
101
  //#endregion
101
- //#region src/plugins/dev-terminal-error.ts
102
+ //#region src/dev-tools/stack-classifier.ts
103
+ /** Parse file/line/col from a stack frame line. */
104
+ function parseFrame(frameLine) {
105
+ const parenMatch = /\(([^)]+):(\d+):(\d+)\)/.exec(frameLine);
106
+ if (parenMatch) return {
107
+ file: parenMatch[1],
108
+ line: Number(parenMatch[2]),
109
+ col: Number(parenMatch[3])
110
+ };
111
+ const bareMatch = /at (\/[^:]+):(\d+):(\d+)/.exec(frameLine);
112
+ if (bareMatch) return {
113
+ file: bareMatch[1],
114
+ line: Number(bareMatch[2]),
115
+ col: Number(bareMatch[3])
116
+ };
117
+ return {};
118
+ }
119
+ /**
120
+ * Classify a single stack frame line by origin.
121
+ *
122
+ * - 'app': user application code (in project root, not node_modules)
123
+ * - 'framework': timber-app internal code
124
+ * - 'internal': node_modules, Node.js internals
125
+ */
126
+ function classifyFrame(frameLine, projectRoot) {
127
+ const trimmed = frameLine.trim();
128
+ if (trimmed.includes("packages/timber-app/")) return "framework";
129
+ if (trimmed.includes("node_modules/")) return "internal";
130
+ if (trimmed.startsWith("at node:") || trimmed.includes("(node:")) return "internal";
131
+ if (trimmed.includes(projectRoot)) return "app";
132
+ return "internal";
133
+ }
134
+ /**
135
+ * Classify all frames in a full stack trace string.
136
+ *
137
+ * Parses the stack, skips the first line (error message), filters to
138
+ * lines starting with "at ", and returns classified frames with optional
139
+ * file/line/col metadata.
140
+ */
141
+ function classifyStack(stack, projectRoot) {
142
+ return stack.split("\n").slice(1).filter((line) => line.trim().startsWith("at ")).map((raw) => {
143
+ const type = classifyFrame(raw, projectRoot);
144
+ const { file, line, col } = parseFrame(raw);
145
+ return {
146
+ raw,
147
+ type,
148
+ file,
149
+ line,
150
+ col
151
+ };
152
+ });
153
+ }
154
+ //#endregion
155
+ //#region src/dev-tools/terminal.ts
102
156
  /**
103
157
  * Terminal error formatting — boxed, color-coded error output for dev mode.
104
158
  *
@@ -165,35 +219,6 @@ function box(lines, borderColor, width = 80) {
165
219
  output.push(`${borderColor}${BOX.bottomLeft}${bar}${BOX.bottomRight}${RESET$2}`);
166
220
  return output.join("\n");
167
221
  }
168
- /** Parse file/line/col from a stack frame line. */
169
- function parseFrame(frameLine) {
170
- const parenMatch = /\(([^)]+):(\d+):(\d+)\)/.exec(frameLine);
171
- if (parenMatch) return {
172
- file: parenMatch[1],
173
- line: Number(parenMatch[2]),
174
- col: Number(parenMatch[3])
175
- };
176
- const bareMatch = /at (\/[^:]+):(\d+):(\d+)/.exec(frameLine);
177
- if (bareMatch) return {
178
- file: bareMatch[1],
179
- line: Number(bareMatch[2]),
180
- col: Number(bareMatch[3])
181
- };
182
- return {};
183
- }
184
- function classifyFrames(stack, projectRoot) {
185
- return stack.split("\n").slice(1).filter((l) => l.trim().startsWith("at ")).map((raw) => {
186
- const type = classifyFrame(raw, projectRoot);
187
- const { file, line, col } = parseFrame(raw);
188
- return {
189
- raw,
190
- type,
191
- file,
192
- line,
193
- col
194
- };
195
- });
196
- }
197
222
  /**
198
223
  * Format an error for terminal output with a boxed layout.
199
224
  *
@@ -208,7 +233,7 @@ function formatTerminalError$1(error, phase, projectRoot) {
208
233
  const sections = [];
209
234
  const componentStack = extractComponentStack(error);
210
235
  const loc = parseFirstAppFrame(error.stack ?? "", projectRoot);
211
- const frames = error.stack ? classifyFrames(error.stack, projectRoot) : [];
236
+ const frames = error.stack ? classifyStack(error.stack, projectRoot) : [];
212
237
  const appFrames = frames.filter((f) => f.type === "app");
213
238
  const internalCount = frames.filter((f) => f.type !== "app").length;
214
239
  const boxLines = [];
@@ -247,7 +272,7 @@ function extractFnName(frameLine) {
247
272
  return match ? match[1] : "";
248
273
  }
249
274
  //#endregion
250
- //#region src/plugins/dev-error-overlay.ts
275
+ //#region src/dev-tools/overlay.ts
251
276
  var _traceMapping = null;
252
277
  /**
253
278
  * Lazy-load @jridgewell/trace-mapping from Vite's dependency tree.
@@ -269,21 +294,6 @@ var PHASE_LABELS$1 = {
269
294
  "handler": "Route Handler"
270
295
  };
271
296
  /**
272
- * Classify a stack frame line by origin.
273
- *
274
- * - 'app': user application code (in project root, not node_modules)
275
- * - 'framework': timber-app internal code
276
- * - 'internal': node_modules, Node.js internals
277
- */
278
- function classifyFrame(frameLine, projectRoot) {
279
- const trimmed = frameLine.trim();
280
- if (trimmed.includes("packages/timber-app/")) return "framework";
281
- if (trimmed.includes("node_modules/")) return "internal";
282
- if (trimmed.startsWith("at node:") || trimmed.includes("(node:")) return "internal";
283
- if (trimmed.includes(projectRoot)) return "app";
284
- return "internal";
285
- }
286
- /**
287
297
  * Extract the React component stack from an error, if present.
288
298
  * React attaches this as `componentStack` during renderToReadableStream errors.
289
299
  */
@@ -528,7 +538,24 @@ function sendErrorToOverlay(server, error, phase, projectRoot, rscDebugComponent
528
538
  } catch {}
529
539
  }
530
540
  //#endregion
531
- //#region src/plugins/dev-error-page.ts
541
+ //#region src/server/utils/escape-html.ts
542
+ /**
543
+ * Shared HTML escaping utility.
544
+ *
545
+ * Used by both dev-only paths (error pages, 404 page) and production
546
+ * paths (deny-renderer, RSC helpers). Lives in server/utils/ because
547
+ * it's not dev-only.
548
+ */
549
+ /**
550
+ * Escape a string for safe embedding in HTML content or attributes.
551
+ *
552
+ * Replaces `&`, `<`, `>`, and `"` with their HTML entity equivalents.
553
+ */
554
+ function escapeHtml(str) {
555
+ return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
556
+ }
557
+ //#endregion
558
+ //#region src/dev-tools/error-page.ts
532
559
  /**
533
560
  * Dev error page — self-contained HTML error page for dev server 500s.
534
561
  *
@@ -560,12 +587,6 @@ var PHASE_HINTS = {
560
587
  "render": "This error occurred while rendering a server component. Check the component for runtime errors.",
561
588
  "handler": "This error occurred in a route handler (route.ts). Check the handler function."
562
589
  };
563
- function classifyStack(stack, projectRoot) {
564
- return stack.split("\n").slice(1).filter((line) => line.trim().startsWith("at ")).map((line) => ({
565
- raw: line,
566
- type: classifyFrame(line, projectRoot)
567
- }));
568
- }
569
590
  /**
570
591
  * Try to read a few lines of source code around the error location.
571
592
  * Returns null if the file can't be read (e.g., virtual modules).
@@ -588,9 +609,7 @@ function readSourceContext(filePath, line, contextLines = 3) {
588
609
  return null;
589
610
  }
590
611
  }
591
- function esc(str) {
592
- return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
593
- }
612
+ var esc = escapeHtml;
594
613
  /**
595
614
  * Escape a JSON string for safe embedding in an HTML `<script>` block.
596
615
  *
@@ -12856,7 +12875,8 @@ function checkFile(filePath, extension, fileType, warnings) {
12856
12875
  let code;
12857
12876
  try {
12858
12877
  code = readFileSync(filePath, "utf-8");
12859
- } catch {
12878
+ } catch (err) {
12879
+ swallow(err, `status-file-lint: unreadable file ${filePath}`);
12860
12880
  return;
12861
12881
  }
12862
12882
  if (!detectFileDirective(code, ["use client"])) warnings.push({
@@ -12988,7 +13008,9 @@ function checkRouteExports(node, warnings) {
12988
13008
  level: "warn"
12989
13009
  });
12990
13010
  }
12991
- } catch {}
13011
+ } catch (err) {
13012
+ swallow(err, `convention-lint: unreadable route.ts ${filePath}`);
13013
+ }
12992
13014
  }
12993
13015
  for (const child of node.children) checkRouteExports(child, warnings);
12994
13016
  for (const slot of Object.values(node.slots)) checkRouteExports(slot, warnings);
@@ -13046,7 +13068,9 @@ function checkFileDefaultExport(filePath, fileType, warnings) {
13046
13068
  details: ` File: ${filePath}\n\n ${fileType}.tsx files must export a default React component.\n Without a default export, the ${fileType === "page" ? "page renders nothing" : "layout has no component to wrap children"}.\n\n To fix: Add a default export:\n\n export default function My${fileType === "page" ? "Page" : "Layout"}(${fileType === "layout" ? "{ children }" : ""}) {\n return ${fileType === "layout" ? "<div>{children}</div>" : "<h1>Hello</h1>"};\n }\n`,
13047
13069
  level: "warn"
13048
13070
  });
13049
- } catch {}
13071
+ } catch (err) {
13072
+ swallow(err, `convention-lint: unreadable ${fileType} file ${filePath}`);
13073
+ }
13050
13074
  }
13051
13075
  /**
13052
13076
  * Check if the app/ directory exists. Called before scanning.
@@ -13590,7 +13614,7 @@ export const headers = stub;
13590
13614
  export const cookies = stub;
13591
13615
  export const getHeaders = stub;
13592
13616
  export const getHeader = stub;
13593
- export const getCookies = stub;
13617
+ export const getCookieJar = stub;
13594
13618
  export const getCookie = stub;
13595
13619
  export const getSearchParams = stub;
13596
13620
  export const getSegmentParams = stub;
@@ -15214,8 +15238,8 @@ function timberFonts(ctx) {
15214
15238
  */
15215
15239
  var DYNAMIC_API_PATTERNS = [
15216
15240
  {
15217
- pattern: /\bgetCookies\s*\(/,
15218
- name: "getCookies()"
15241
+ pattern: /\bgetCookieJar\s*\(/,
15242
+ name: "getCookieJar()"
15219
15243
  },
15220
15244
  {
15221
15245
  pattern: /\bgetHeaders\s*\(/,
@@ -15592,7 +15616,7 @@ function timberBuildManifest(ctx) {
15592
15616
  };
15593
15617
  }
15594
15618
  //#endregion
15595
- //#region src/plugins/dev-logs.ts
15619
+ //#region src/dev-tools/logs.ts
15596
15620
  var LOG_LEVELS = [
15597
15621
  "log",
15598
15622
  "warn",
@@ -15671,7 +15695,7 @@ function extractCallerLocation(projectRoot) {
15671
15695
  const lines = stack.split("\n");
15672
15696
  for (let i = 1; i < lines.length; i++) {
15673
15697
  const line = lines[i].trim();
15674
- if (line.includes("dev-logs")) continue;
15698
+ if (line.includes("dev-tools/logs")) continue;
15675
15699
  if (line.includes("node:") || line.includes("node_modules")) continue;
15676
15700
  const match = line.match(/\((.+?):(\d+):(\d+)\)/) ?? line.match(/at (.+?):(\d+):(\d+)/);
15677
15701
  if (match) {
@@ -15699,7 +15723,7 @@ function isFrameworkInternalCaller() {
15699
15723
  const lines = stack.split("\n");
15700
15724
  for (let i = 1; i < lines.length; i++) {
15701
15725
  const line = lines[i].trim();
15702
- if (line.includes("dev-logs")) continue;
15726
+ if (line.includes("dev-tools/logs")) continue;
15703
15727
  if (line.includes("node:")) continue;
15704
15728
  if (!(line.includes("timber-app/") || line.includes("@timber-js/app/"))) return false;
15705
15729
  return line.includes("/plugins/") || line.includes("/adapters/");
@@ -15757,7 +15781,7 @@ function timberDevLogs(_ctx) {
15757
15781
  };
15758
15782
  }
15759
15783
  //#endregion
15760
- //#region src/plugins/dev-browser-logs.ts
15784
+ //#region src/dev-tools/browser-logs.ts
15761
15785
  /** Max message size in bytes before truncation. */
15762
15786
  var MAX_MESSAGE_BYTES = 2048;
15763
15787
  /** HMR event name for browser→server log forwarding. */
@@ -16163,7 +16187,8 @@ async function stripJsFromRscAssetsManifests(buildDir) {
16163
16187
  let manifest;
16164
16188
  try {
16165
16189
  manifest = JSON.parse(jsonStr);
16166
- } catch {
16190
+ } catch (err) {
16191
+ swallow(err, `corrupted RSC assets manifest: ${path}`, { level: "warn" });
16167
16192
  continue;
16168
16193
  }
16169
16194
  const deps = manifest.clientReferenceDeps;
@@ -16534,7 +16559,7 @@ function validateKeyFormat(key) {
16534
16559
  }
16535
16560
  }
16536
16561
  //#endregion
16537
- //#region src/server/dev-holding-server.ts
16562
+ //#region src/dev-tools/holding-server.ts
16538
16563
  /**
16539
16564
  * Dev holding server — serves a loading page while Vite initializes.
16540
16565
  *