@timber-js/app 0.2.0-alpha.1 → 0.2.0-alpha.100

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 (742) 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/chunk-BYIpzuS7.js +39 -0
  7. package/dist/_chunks/define-B-Q_UMOD.js +195 -0
  8. package/dist/_chunks/define-B-Q_UMOD.js.map +1 -0
  9. package/dist/_chunks/define-CfBPoJb0.js +123 -0
  10. package/dist/_chunks/define-CfBPoJb0.js.map +1 -0
  11. package/dist/_chunks/define-cookie-BjpIt4UC.js +194 -0
  12. package/dist/_chunks/define-cookie-BjpIt4UC.js.map +1 -0
  13. package/dist/_chunks/format-Bcn-Iv1x.js +14 -0
  14. package/dist/_chunks/format-Bcn-Iv1x.js.map +1 -0
  15. package/dist/_chunks/handler-store-B-lqaGyh.js +54 -0
  16. package/dist/_chunks/handler-store-B-lqaGyh.js.map +1 -0
  17. package/dist/_chunks/logger-0m8MsKdc.js +291 -0
  18. package/dist/_chunks/logger-0m8MsKdc.js.map +1 -0
  19. package/dist/_chunks/merge-search-params-BphMdht_.js +122 -0
  20. package/dist/_chunks/merge-search-params-BphMdht_.js.map +1 -0
  21. package/dist/_chunks/{metadata-routes-CQCnF4VK.js → metadata-routes-BU684ls2.js} +1 -1
  22. package/dist/_chunks/{metadata-routes-CQCnF4VK.js.map → metadata-routes-BU684ls2.js.map} +1 -1
  23. package/dist/_chunks/navigation-root-BCYczjml.js +96 -0
  24. package/dist/_chunks/navigation-root-BCYczjml.js.map +1 -0
  25. package/dist/_chunks/registry-I2ss-lvy.js +20 -0
  26. package/dist/_chunks/registry-I2ss-lvy.js.map +1 -0
  27. package/dist/_chunks/router-ref-h3-UaCQv.js +28 -0
  28. package/dist/_chunks/router-ref-h3-UaCQv.js.map +1 -0
  29. package/dist/_chunks/schema-bridge-Cxu4l-7p.js +86 -0
  30. package/dist/_chunks/schema-bridge-Cxu4l-7p.js.map +1 -0
  31. package/dist/_chunks/segment-classify-BjfuctV2.js +137 -0
  32. package/dist/_chunks/segment-classify-BjfuctV2.js.map +1 -0
  33. package/dist/_chunks/segment-context-Dx_OizxD.js +34 -0
  34. package/dist/_chunks/segment-context-Dx_OizxD.js.map +1 -0
  35. package/dist/_chunks/{ssr-data-DLnbYpj1.js → ssr-data-B4CdH7rE.js} +1 -1
  36. package/dist/_chunks/ssr-data-B4CdH7rE.js.map +1 -0
  37. package/dist/_chunks/stale-reload-Bab885FO.js +64 -0
  38. package/dist/_chunks/stale-reload-Bab885FO.js.map +1 -0
  39. package/dist/_chunks/tracing-C8V-YGsP.js +329 -0
  40. package/dist/_chunks/tracing-C8V-YGsP.js.map +1 -0
  41. package/dist/_chunks/{use-query-states-DAhgj8Gx.js → use-query-states-B2XTqxDR.js} +7 -20
  42. package/dist/_chunks/use-query-states-B2XTqxDR.js.map +1 -0
  43. package/dist/_chunks/use-segment-params-BkpKAQ7D.js +185 -0
  44. package/dist/_chunks/use-segment-params-BkpKAQ7D.js.map +1 -0
  45. package/dist/_chunks/walkers-Tg0Alwcg.js +850 -0
  46. package/dist/_chunks/walkers-Tg0Alwcg.js.map +1 -0
  47. package/dist/_chunks/{format-DNt20Kt8.js → warnings-Cg47l5sk.js} +7 -45
  48. package/dist/_chunks/warnings-Cg47l5sk.js.map +1 -0
  49. package/dist/adapters/build-output-helper.d.ts +28 -0
  50. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  51. package/dist/adapters/cloudflare-dev.d.ts +109 -0
  52. package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
  53. package/dist/adapters/cloudflare-dev.js +73 -0
  54. package/dist/adapters/cloudflare-dev.js.map +1 -0
  55. package/dist/adapters/cloudflare-kv-cache.d.ts +64 -0
  56. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
  57. package/dist/adapters/cloudflare-kv-cache.js +95 -0
  58. package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
  59. package/dist/adapters/cloudflare.d.ts +148 -12
  60. package/dist/adapters/cloudflare.d.ts.map +1 -1
  61. package/dist/adapters/cloudflare.js +142 -38
  62. package/dist/adapters/cloudflare.js.map +1 -1
  63. package/dist/adapters/compress-module.d.ts.map +1 -1
  64. package/dist/adapters/nitro.d.ts +17 -1
  65. package/dist/adapters/nitro.d.ts.map +1 -1
  66. package/dist/adapters/nitro.js +143 -45
  67. package/dist/adapters/nitro.js.map +1 -1
  68. package/dist/adapters/shared.d.ts +16 -0
  69. package/dist/adapters/shared.d.ts.map +1 -0
  70. package/dist/cache/cache-api.d.ts +24 -0
  71. package/dist/cache/cache-api.d.ts.map +1 -0
  72. package/dist/cache/fast-hash.d.ts +22 -0
  73. package/dist/cache/fast-hash.d.ts.map +1 -0
  74. package/dist/cache/handler-store.d.ts +31 -0
  75. package/dist/cache/handler-store.d.ts.map +1 -0
  76. package/dist/cache/index.d.ts +23 -7
  77. package/dist/cache/index.d.ts.map +1 -1
  78. package/dist/cache/index.js +195 -84
  79. package/dist/cache/index.js.map +1 -1
  80. package/dist/cache/singleflight.d.ts +18 -1
  81. package/dist/cache/singleflight.d.ts.map +1 -1
  82. package/dist/cache/sizeof.d.ts +22 -0
  83. package/dist/cache/sizeof.d.ts.map +1 -0
  84. package/dist/cache/timber-cache.d.ts +1 -1
  85. package/dist/cache/timber-cache.d.ts.map +1 -1
  86. package/dist/cli.d.ts +6 -1
  87. package/dist/cli.d.ts.map +1 -1
  88. package/dist/cli.js +8 -3
  89. package/dist/cli.js.map +1 -1
  90. package/dist/client/browser-dev.d.ts +34 -1
  91. package/dist/client/browser-dev.d.ts.map +1 -1
  92. package/dist/client/browser-entry/action-dispatch.d.ts +17 -0
  93. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  94. package/dist/client/browser-entry/hmr.d.ts +21 -0
  95. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  96. package/dist/client/browser-entry/hydrate.d.ts +46 -0
  97. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  98. package/dist/client/browser-entry/index.d.ts +30 -0
  99. package/dist/client/browser-entry/index.d.ts.map +1 -0
  100. package/dist/client/browser-entry/post-hydration.d.ts +26 -0
  101. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  102. package/dist/client/browser-entry/router-init.d.ts +23 -0
  103. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  104. package/dist/client/browser-entry/rsc-stream.d.ts +24 -0
  105. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  106. package/dist/client/browser-entry/scroll.d.ts +19 -0
  107. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  108. package/dist/client/error-boundary.d.ts +12 -5
  109. package/dist/client/error-boundary.d.ts.map +1 -1
  110. package/dist/client/error-boundary.js +26 -5
  111. package/dist/client/error-boundary.js.map +1 -1
  112. package/dist/client/error-reconstituter.d.ts +54 -0
  113. package/dist/client/error-reconstituter.d.ts.map +1 -0
  114. package/dist/client/form.d.ts +16 -27
  115. package/dist/client/form.d.ts.map +1 -1
  116. package/dist/client/history.d.ts +19 -4
  117. package/dist/client/history.d.ts.map +1 -1
  118. package/dist/client/index.d.ts +9 -24
  119. package/dist/client/index.d.ts.map +1 -1
  120. package/dist/client/index.js +312 -1109
  121. package/dist/client/index.js.map +1 -1
  122. package/dist/client/internal.d.ts +19 -0
  123. package/dist/client/internal.d.ts.map +1 -0
  124. package/dist/client/internal.js +964 -0
  125. package/dist/client/internal.js.map +1 -0
  126. package/dist/client/link-pending-store.d.ts +63 -0
  127. package/dist/client/link-pending-store.d.ts.map +1 -0
  128. package/dist/client/link.d.ts +73 -63
  129. package/dist/client/link.d.ts.map +1 -1
  130. package/dist/client/nav-link-store.d.ts +36 -0
  131. package/dist/client/nav-link-store.d.ts.map +1 -0
  132. package/dist/client/navigation-api-types.d.ts +90 -0
  133. package/dist/client/navigation-api-types.d.ts.map +1 -0
  134. package/dist/client/navigation-api.d.ts +115 -0
  135. package/dist/client/navigation-api.d.ts.map +1 -0
  136. package/dist/client/navigation-context.d.ts +22 -5
  137. package/dist/client/navigation-context.d.ts.map +1 -1
  138. package/dist/client/{transition-root.d.ts → navigation-root.d.ts} +42 -8
  139. package/dist/client/navigation-root.d.ts.map +1 -0
  140. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  141. package/dist/client/router-ref.d.ts +1 -1
  142. package/dist/client/router.d.ts +70 -4
  143. package/dist/client/router.d.ts.map +1 -1
  144. package/dist/client/rsc-fetch.d.ts +38 -3
  145. package/dist/client/rsc-fetch.d.ts.map +1 -1
  146. package/dist/client/segment-cache.d.ts +1 -1
  147. package/dist/client/segment-cache.d.ts.map +1 -1
  148. package/dist/client/segment-context.d.ts +1 -1
  149. package/dist/client/segment-context.d.ts.map +1 -1
  150. package/dist/client/segment-merger.d.ts.map +1 -1
  151. package/dist/client/segment-outlet.d.ts +63 -0
  152. package/dist/client/segment-outlet.d.ts.map +1 -0
  153. package/dist/client/ssr-data.d.ts +13 -4
  154. package/dist/client/ssr-data.d.ts.map +1 -1
  155. package/dist/client/stale-reload.d.ts +15 -0
  156. package/dist/client/stale-reload.d.ts.map +1 -1
  157. package/dist/client/state.d.ts +1 -1
  158. package/dist/client/top-loader.d.ts +5 -5
  159. package/dist/client/top-loader.d.ts.map +1 -1
  160. package/dist/client/use-cookie.d.ts +8 -0
  161. package/dist/client/use-cookie.d.ts.map +1 -1
  162. package/dist/client/use-link-status.d.ts +5 -5
  163. package/dist/client/use-link-status.d.ts.map +1 -1
  164. package/dist/client/{use-navigation-pending.d.ts → use-pending-navigation.d.ts} +4 -4
  165. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  166. package/dist/client/use-query-states.d.ts +1 -1
  167. package/dist/client/use-query-states.d.ts.map +1 -1
  168. package/dist/client/use-router.d.ts +1 -1
  169. package/dist/client/{use-params.d.ts → use-segment-params.d.ts} +7 -5
  170. package/dist/client/use-segment-params.d.ts.map +1 -0
  171. package/dist/codec.d.ts +33 -0
  172. package/dist/codec.d.ts.map +1 -0
  173. package/dist/codec.js +2 -0
  174. package/dist/config-types.d.ts +294 -0
  175. package/dist/config-types.d.ts.map +1 -0
  176. package/dist/config-validation.d.ts +51 -0
  177. package/dist/config-validation.d.ts.map +1 -0
  178. package/dist/content/index.d.ts +1 -10
  179. package/dist/content/index.d.ts.map +1 -1
  180. package/dist/content/index.js +0 -2
  181. package/dist/cookies/define-cookie.d.ts +98 -25
  182. package/dist/cookies/define-cookie.d.ts.map +1 -1
  183. package/dist/cookies/index.d.ts +2 -1
  184. package/dist/cookies/index.d.ts.map +1 -1
  185. package/dist/cookies/index.js +36 -72
  186. package/dist/cookies/index.js.map +1 -1
  187. package/dist/cookies/json-cookie.d.ts +64 -0
  188. package/dist/cookies/json-cookie.d.ts.map +1 -0
  189. package/dist/cookies/validation.d.ts +46 -0
  190. package/dist/cookies/validation.d.ts.map +1 -0
  191. package/dist/dev-tools/404-page.d.ts +46 -0
  192. package/dist/dev-tools/404-page.d.ts.map +1 -0
  193. package/dist/dev-tools/browser-logs.d.ts +84 -0
  194. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  195. package/dist/dev-tools/error-page.d.ts +58 -0
  196. package/dist/dev-tools/error-page.d.ts.map +1 -0
  197. package/dist/dev-tools/holding-server.d.ts +54 -0
  198. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  199. package/dist/dev-tools/index.d.ts +31 -0
  200. package/dist/dev-tools/index.d.ts.map +1 -0
  201. package/dist/{server/dev-span-processor.d.ts → dev-tools/instrumentation.d.ts} +26 -6
  202. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  203. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  204. package/dist/dev-tools/logger.d.ts.map +1 -0
  205. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +2 -2
  206. package/dist/dev-tools/logs.d.ts.map +1 -0
  207. package/dist/dev-tools/overlay.d.ts +91 -0
  208. package/dist/dev-tools/overlay.d.ts.map +1 -0
  209. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  210. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  211. package/dist/dev-tools/terminal.d.ts +28 -0
  212. package/dist/dev-tools/terminal.d.ts.map +1 -0
  213. package/dist/{server/dev-warnings.d.ts → dev-tools/warnings.d.ts} +2 -22
  214. package/dist/dev-tools/warnings.d.ts.map +1 -0
  215. package/dist/fonts/bundle.d.ts +48 -0
  216. package/dist/fonts/bundle.d.ts.map +1 -0
  217. package/dist/fonts/css.d.ts +1 -0
  218. package/dist/fonts/css.d.ts.map +1 -1
  219. package/dist/fonts/dev-middleware.d.ts +22 -0
  220. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  221. package/dist/fonts/local.d.ts +4 -2
  222. package/dist/fonts/local.d.ts.map +1 -1
  223. package/dist/fonts/pipeline.d.ts +167 -0
  224. package/dist/fonts/pipeline.d.ts.map +1 -0
  225. package/dist/fonts/transform.d.ts +64 -0
  226. package/dist/fonts/transform.d.ts.map +1 -0
  227. package/dist/fonts/types.d.ts +45 -1
  228. package/dist/fonts/types.d.ts.map +1 -1
  229. package/dist/fonts/virtual-modules.d.ts +103 -0
  230. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  231. package/dist/index.d.ts +46 -152
  232. package/dist/index.d.ts.map +1 -1
  233. package/dist/index.js +14702 -12350
  234. package/dist/index.js.map +1 -1
  235. package/dist/plugin-context.d.ts +107 -0
  236. package/dist/plugin-context.d.ts.map +1 -0
  237. package/dist/plugins/adapter-build.d.ts +1 -1
  238. package/dist/plugins/adapter-build.d.ts.map +1 -1
  239. package/dist/plugins/build-manifest.d.ts +2 -2
  240. package/dist/plugins/build-manifest.d.ts.map +1 -1
  241. package/dist/plugins/build-report.d.ts +16 -4
  242. package/dist/plugins/build-report.d.ts.map +1 -1
  243. package/dist/plugins/chunks.d.ts +9 -1
  244. package/dist/plugins/chunks.d.ts.map +1 -1
  245. package/dist/plugins/client-chunks.d.ts +32 -0
  246. package/dist/plugins/client-chunks.d.ts.map +1 -0
  247. package/dist/plugins/content.d.ts +1 -1
  248. package/dist/plugins/content.d.ts.map +1 -1
  249. package/dist/plugins/dev-server.d.ts +1 -1
  250. package/dist/plugins/dev-server.d.ts.map +1 -1
  251. package/dist/plugins/entries.d.ts +8 -1
  252. package/dist/plugins/entries.d.ts.map +1 -1
  253. package/dist/plugins/fonts.d.ts +17 -65
  254. package/dist/plugins/fonts.d.ts.map +1 -1
  255. package/dist/plugins/mdx.d.ts +7 -1
  256. package/dist/plugins/mdx.d.ts.map +1 -1
  257. package/dist/plugins/routing.d.ts +1 -1
  258. package/dist/plugins/routing.d.ts.map +1 -1
  259. package/dist/plugins/server-bundle.d.ts.map +1 -1
  260. package/dist/plugins/shims.d.ts +6 -5
  261. package/dist/plugins/shims.d.ts.map +1 -1
  262. package/dist/plugins/static-build.d.ts +4 -4
  263. package/dist/plugins/static-build.d.ts.map +1 -1
  264. package/dist/routing/codegen-shared.d.ts +55 -0
  265. package/dist/routing/codegen-shared.d.ts.map +1 -0
  266. package/dist/routing/codegen-types.d.ts +52 -0
  267. package/dist/routing/codegen-types.d.ts.map +1 -0
  268. package/dist/routing/codegen.d.ts +2 -2
  269. package/dist/routing/codegen.d.ts.map +1 -1
  270. package/dist/routing/convention-lint.d.ts +41 -0
  271. package/dist/routing/convention-lint.d.ts.map +1 -0
  272. package/dist/routing/index.d.ts +5 -1
  273. package/dist/routing/index.d.ts.map +1 -1
  274. package/dist/routing/index.js +3 -2
  275. package/dist/routing/link-codegen.d.ts +90 -0
  276. package/dist/routing/link-codegen.d.ts.map +1 -0
  277. package/dist/routing/scanner.d.ts +1 -10
  278. package/dist/routing/scanner.d.ts.map +1 -1
  279. package/dist/routing/segment-classify.d.ts +75 -0
  280. package/dist/routing/segment-classify.d.ts.map +1 -0
  281. package/dist/routing/status-file-lint.d.ts +2 -1
  282. package/dist/routing/status-file-lint.d.ts.map +1 -1
  283. package/dist/routing/types.d.ts +77 -25
  284. package/dist/routing/types.d.ts.map +1 -1
  285. package/dist/routing/walkers.d.ts +51 -0
  286. package/dist/routing/walkers.d.ts.map +1 -0
  287. package/dist/rsc-runtime/rsc.d.ts +1 -1
  288. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  289. package/dist/rsc-runtime/ssr.d.ts +12 -0
  290. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  291. package/dist/schema-bridge.d.ts +76 -0
  292. package/dist/schema-bridge.d.ts.map +1 -0
  293. package/dist/search-params/define.d.ts +157 -0
  294. package/dist/search-params/define.d.ts.map +1 -0
  295. package/dist/search-params/index.d.ts +4 -7
  296. package/dist/search-params/index.d.ts.map +1 -1
  297. package/dist/search-params/index.js +34 -441
  298. package/dist/search-params/index.js.map +1 -1
  299. package/dist/search-params/registry.d.ts +2 -2
  300. package/dist/search-params/registry.d.ts.map +1 -1
  301. package/dist/search-params/wrappers.d.ts +53 -0
  302. package/dist/search-params/wrappers.d.ts.map +1 -0
  303. package/dist/segment-params/define.d.ts +95 -0
  304. package/dist/segment-params/define.d.ts.map +1 -0
  305. package/dist/segment-params/index.d.ts +3 -0
  306. package/dist/segment-params/index.d.ts.map +1 -0
  307. package/dist/segment-params/index.js +2 -0
  308. package/dist/server/access-gate.d.ts +8 -3
  309. package/dist/server/access-gate.d.ts.map +1 -1
  310. package/dist/server/action-client.d.ts +41 -6
  311. package/dist/server/action-client.d.ts.map +1 -1
  312. package/dist/server/action-encryption.d.ts +76 -0
  313. package/dist/server/action-encryption.d.ts.map +1 -0
  314. package/dist/server/action-handler.d.ts +35 -1
  315. package/dist/server/action-handler.d.ts.map +1 -1
  316. package/dist/server/actions.d.ts +3 -6
  317. package/dist/server/actions.d.ts.map +1 -1
  318. package/dist/server/als-registry.d.ts +33 -5
  319. package/dist/server/als-registry.d.ts.map +1 -1
  320. package/dist/server/asset-headers.d.ts +1 -15
  321. package/dist/server/asset-headers.d.ts.map +1 -1
  322. package/dist/server/build-manifest.d.ts +2 -2
  323. package/dist/server/build-manifest.d.ts.map +1 -1
  324. package/dist/server/cookie-context.d.ts +170 -0
  325. package/dist/server/cookie-context.d.ts.map +1 -0
  326. package/dist/server/cookie-parsing.d.ts +51 -0
  327. package/dist/server/cookie-parsing.d.ts.map +1 -0
  328. package/dist/server/debug.d.ts +82 -0
  329. package/dist/server/debug.d.ts.map +1 -0
  330. package/dist/server/default-logger.d.ts +22 -0
  331. package/dist/server/default-logger.d.ts.map +1 -0
  332. package/dist/server/deny-boundary.d.ts +90 -0
  333. package/dist/server/deny-boundary.d.ts.map +1 -0
  334. package/dist/server/deny-renderer.d.ts.map +1 -1
  335. package/dist/server/dev-source-map.d.ts +22 -0
  336. package/dist/server/dev-source-map.d.ts.map +1 -0
  337. package/dist/server/early-hints-sender.d.ts.map +1 -1
  338. package/dist/server/early-hints.d.ts +13 -5
  339. package/dist/server/early-hints.d.ts.map +1 -1
  340. package/dist/server/error-boundary-wrapper.d.ts +7 -1
  341. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  342. package/dist/server/fallback-error.d.ts +12 -7
  343. package/dist/server/fallback-error.d.ts.map +1 -1
  344. package/dist/server/flight-injection-state.d.ts +66 -0
  345. package/dist/server/flight-injection-state.d.ts.map +1 -0
  346. package/dist/server/flight-scripts.d.ts +42 -0
  347. package/dist/server/flight-scripts.d.ts.map +1 -0
  348. package/dist/server/flush.d.ts.map +1 -1
  349. package/dist/server/form-data.d.ts +29 -0
  350. package/dist/server/form-data.d.ts.map +1 -1
  351. package/dist/server/html-injector-core.d.ts +212 -0
  352. package/dist/server/html-injector-core.d.ts.map +1 -0
  353. package/dist/server/html-injectors.d.ts +81 -41
  354. package/dist/server/html-injectors.d.ts.map +1 -1
  355. package/dist/server/index.d.ts +9 -46
  356. package/dist/server/index.d.ts.map +1 -1
  357. package/dist/server/index.js +158 -2899
  358. package/dist/server/index.js.map +1 -1
  359. package/dist/server/internal.d.ts +48 -0
  360. package/dist/server/internal.d.ts.map +1 -0
  361. package/dist/server/internal.js +2900 -0
  362. package/dist/server/internal.js.map +1 -0
  363. package/dist/server/logger.d.ts +39 -7
  364. package/dist/server/logger.d.ts.map +1 -1
  365. package/dist/server/middleware-runner.d.ts +36 -4
  366. package/dist/server/middleware-runner.d.ts.map +1 -1
  367. package/dist/server/node-stream-transforms.d.ts +110 -0
  368. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  369. package/dist/server/param-coercion.d.ts +26 -0
  370. package/dist/server/param-coercion.d.ts.map +1 -0
  371. package/dist/server/pipeline-helpers.d.ts +95 -0
  372. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  373. package/dist/server/pipeline-interception.d.ts +1 -1
  374. package/dist/server/pipeline-interception.d.ts.map +1 -1
  375. package/dist/server/pipeline-metadata.d.ts +6 -0
  376. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  377. package/dist/server/pipeline-outcome.d.ts +49 -0
  378. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  379. package/dist/server/pipeline-phases.d.ts +52 -0
  380. package/dist/server/pipeline-phases.d.ts.map +1 -0
  381. package/dist/server/pipeline.d.ts +93 -23
  382. package/dist/server/pipeline.d.ts.map +1 -1
  383. package/dist/server/port-resolution.d.ts +117 -0
  384. package/dist/server/port-resolution.d.ts.map +1 -0
  385. package/dist/server/primitives.d.ts +69 -18
  386. package/dist/server/primitives.d.ts.map +1 -1
  387. package/dist/server/render-timeout.d.ts +51 -0
  388. package/dist/server/render-timeout.d.ts.map +1 -0
  389. package/dist/server/request-context.d.ts +41 -109
  390. package/dist/server/request-context.d.ts.map +1 -1
  391. package/dist/server/route-element-builder.d.ts +27 -1
  392. package/dist/server/route-element-builder.d.ts.map +1 -1
  393. package/dist/server/route-handler.d.ts.map +1 -1
  394. package/dist/server/route-matcher.d.ts +21 -34
  395. package/dist/server/route-matcher.d.ts.map +1 -1
  396. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  397. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  398. package/dist/server/rsc-entry/api-handler.d.ts +2 -2
  399. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  400. package/dist/server/rsc-entry/error-renderer.d.ts +26 -13
  401. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  402. package/dist/server/rsc-entry/helpers.d.ts +49 -6
  403. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  404. package/dist/server/rsc-entry/index.d.ts +20 -3
  405. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  406. package/dist/server/rsc-entry/render-route.d.ts +50 -0
  407. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  408. package/dist/server/rsc-entry/rsc-payload.d.ts +3 -3
  409. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  410. package/dist/server/rsc-entry/rsc-stream.d.ts +20 -1
  411. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  412. package/dist/server/rsc-entry/ssr-bridge.d.ts +1 -1
  413. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  414. package/dist/server/rsc-entry/ssr-renderer.d.ts +19 -4
  415. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  416. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +119 -0
  417. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  418. package/dist/server/rsc-prop-warnings.d.ts.map +1 -1
  419. package/dist/server/safe-load.d.ts +46 -0
  420. package/dist/server/safe-load.d.ts.map +1 -0
  421. package/dist/server/sensitive-fields.d.ts +74 -0
  422. package/dist/server/sensitive-fields.d.ts.map +1 -0
  423. package/dist/server/sitemap-generator.d.ts +129 -0
  424. package/dist/server/sitemap-generator.d.ts.map +1 -0
  425. package/dist/server/sitemap-handler.d.ts +22 -0
  426. package/dist/server/sitemap-handler.d.ts.map +1 -0
  427. package/dist/server/slot-resolver.d.ts +1 -1
  428. package/dist/server/slot-resolver.d.ts.map +1 -1
  429. package/dist/server/ssr-entry.d.ts +23 -0
  430. package/dist/server/ssr-entry.d.ts.map +1 -1
  431. package/dist/server/ssr-render.d.ts +39 -21
  432. package/dist/server/ssr-render.d.ts.map +1 -1
  433. package/dist/server/ssr-wrappers.d.ts +50 -0
  434. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  435. package/dist/server/state-tree-diff.d.ts.map +1 -1
  436. package/dist/server/status-code-resolver.d.ts +16 -11
  437. package/dist/server/status-code-resolver.d.ts.map +1 -1
  438. package/dist/server/stream-utils.d.ts +36 -0
  439. package/dist/server/stream-utils.d.ts.map +1 -0
  440. package/dist/server/tracing.d.ts +15 -5
  441. package/dist/server/tracing.d.ts.map +1 -1
  442. package/dist/server/tree-builder.d.ts +62 -30
  443. package/dist/server/tree-builder.d.ts.map +1 -1
  444. package/dist/server/types.d.ts +49 -4
  445. package/dist/server/types.d.ts.map +1 -1
  446. package/dist/server/utils/escape-html.d.ts +14 -0
  447. package/dist/server/utils/escape-html.d.ts.map +1 -0
  448. package/dist/server/version-skew.d.ts +61 -0
  449. package/dist/server/version-skew.d.ts.map +1 -0
  450. package/dist/server/waituntil-bridge.d.ts.map +1 -1
  451. package/dist/shared/merge-search-params.d.ts +22 -0
  452. package/dist/shared/merge-search-params.d.ts.map +1 -0
  453. package/dist/shims/font-google.d.ts +1 -1
  454. package/dist/shims/font-google.d.ts.map +1 -1
  455. package/dist/shims/font-google.js +42 -0
  456. package/dist/shims/font-google.js.map +1 -0
  457. package/dist/shims/font-local.d.ts +26 -0
  458. package/dist/shims/font-local.d.ts.map +1 -0
  459. package/dist/shims/font-local.js +20 -0
  460. package/dist/shims/font-local.js.map +1 -0
  461. package/dist/shims/headers.d.ts +2 -1
  462. package/dist/shims/headers.d.ts.map +1 -1
  463. package/dist/shims/navigation-client.d.ts +3 -1
  464. package/dist/shims/navigation-client.d.ts.map +1 -1
  465. package/dist/shims/navigation.d.ts +11 -5
  466. package/dist/shims/navigation.d.ts.map +1 -1
  467. package/dist/utils/directive-parser.d.ts +1 -43
  468. package/dist/utils/directive-parser.d.ts.map +1 -1
  469. package/dist/utils/state-machine.d.ts +80 -0
  470. package/dist/utils/state-machine.d.ts.map +1 -0
  471. package/package.json +56 -22
  472. package/src/adapters/build-output-helper.ts +77 -0
  473. package/src/adapters/cloudflare-dev.ts +177 -0
  474. package/src/adapters/cloudflare-kv-cache.ts +142 -0
  475. package/src/adapters/cloudflare.ts +350 -76
  476. package/src/adapters/compress-module.ts +24 -4
  477. package/src/adapters/nitro.ts +148 -60
  478. package/src/adapters/shared.ts +40 -0
  479. package/src/adapters/wrangler.d.ts +7 -0
  480. package/src/cache/cache-api.ts +38 -0
  481. package/src/cache/fast-hash.ts +34 -0
  482. package/src/cache/handler-store.ts +68 -0
  483. package/src/cache/index.ts +81 -18
  484. package/src/cache/singleflight.ts +62 -4
  485. package/src/cache/sizeof.ts +31 -0
  486. package/src/cache/timber-cache.ts +41 -29
  487. package/src/cli.ts +16 -6
  488. package/src/client/browser-dev.ts +153 -1
  489. package/src/client/browser-entry/action-dispatch.ts +116 -0
  490. package/src/client/browser-entry/hmr.ts +81 -0
  491. package/src/client/browser-entry/hydrate.ts +145 -0
  492. package/src/client/browser-entry/index.ts +143 -0
  493. package/src/client/browser-entry/post-hydration.ts +119 -0
  494. package/src/client/browser-entry/router-init.ts +193 -0
  495. package/src/client/browser-entry/rsc-stream.ts +157 -0
  496. package/src/client/browser-entry/scroll.ts +27 -0
  497. package/src/client/error-boundary.tsx +97 -20
  498. package/src/client/error-reconstituter.tsx +65 -0
  499. package/src/client/form.tsx +31 -32
  500. package/src/client/history.ts +26 -4
  501. package/src/client/index.ts +77 -43
  502. package/src/client/internal.ts +58 -0
  503. package/src/client/link-pending-store.ts +111 -0
  504. package/src/client/link.tsx +432 -140
  505. package/src/client/nav-link-store.ts +47 -0
  506. package/src/client/navigation-api-types.ts +112 -0
  507. package/src/client/navigation-api.ts +332 -0
  508. package/src/client/navigation-context.ts +83 -18
  509. package/src/client/navigation-root.tsx +342 -0
  510. package/src/client/nuqs-adapter.tsx +16 -3
  511. package/src/client/router-ref.ts +1 -1
  512. package/src/client/router.ts +303 -78
  513. package/src/client/rsc-fetch.ts +112 -8
  514. package/src/client/segment-cache.ts +1 -1
  515. package/src/client/segment-context.ts +6 -1
  516. package/src/client/segment-merger.ts +2 -8
  517. package/src/client/segment-outlet.tsx +86 -0
  518. package/src/client/ssr-data.ts +13 -5
  519. package/src/client/stale-reload.ts +74 -7
  520. package/src/client/state.ts +2 -2
  521. package/src/client/top-loader.tsx +41 -25
  522. package/src/client/use-cookie.ts +29 -0
  523. package/src/client/use-link-status.ts +7 -7
  524. package/src/client/{use-navigation-pending.ts → use-pending-navigation.ts} +6 -6
  525. package/src/client/use-query-states.ts +9 -3
  526. package/src/client/use-router.ts +1 -1
  527. package/src/client/{use-params.ts → use-segment-params.ts} +7 -5
  528. package/src/codec.ts +45 -0
  529. package/src/config-types.ts +292 -0
  530. package/src/config-validation.ts +303 -0
  531. package/src/content/index.ts +5 -13
  532. package/src/cookies/define-cookie.ts +301 -55
  533. package/src/cookies/index.ts +12 -1
  534. package/src/cookies/json-cookie.ts +105 -0
  535. package/src/cookies/validation.ts +134 -0
  536. package/src/dev-tools/404-page.ts +387 -0
  537. package/src/dev-tools/browser-logs.ts +288 -0
  538. package/src/dev-tools/error-page.ts +509 -0
  539. package/src/dev-tools/holding-server.ts +187 -0
  540. package/src/dev-tools/index.ts +90 -0
  541. package/src/dev-tools/instrumentation.ts +176 -0
  542. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +3 -3
  543. package/src/dev-tools/overlay.ts +456 -0
  544. package/src/dev-tools/stack-classifier.ts +75 -0
  545. package/src/dev-tools/terminal.ts +183 -0
  546. package/src/{server/dev-warnings.ts → dev-tools/warnings.ts} +6 -50
  547. package/src/fonts/bundle.ts +142 -0
  548. package/src/fonts/css.ts +2 -1
  549. package/src/fonts/dev-middleware.ts +74 -0
  550. package/src/fonts/local.ts +7 -3
  551. package/src/fonts/pipeline.ts +314 -0
  552. package/src/fonts/transform.ts +406 -0
  553. package/src/fonts/types.ts +50 -1
  554. package/src/fonts/virtual-modules.ts +227 -0
  555. package/src/index.ts +376 -315
  556. package/src/plugin-context.ts +240 -0
  557. package/src/plugins/adapter-build.ts +12 -4
  558. package/src/plugins/build-manifest.ts +13 -2
  559. package/src/plugins/build-report.ts +32 -21
  560. package/src/plugins/chunks.ts +9 -1
  561. package/src/plugins/client-chunks.ts +65 -0
  562. package/src/plugins/content.ts +1 -1
  563. package/src/plugins/dev-server.ts +154 -21
  564. package/src/plugins/entries.ts +119 -12
  565. package/src/plugins/fonts.ts +177 -524
  566. package/src/plugins/mdx.ts +52 -15
  567. package/src/plugins/routing.ts +225 -41
  568. package/src/plugins/server-action-exports.ts +1 -1
  569. package/src/plugins/server-bundle.ts +36 -1
  570. package/src/plugins/shims.ts +136 -35
  571. package/src/plugins/static-build.ts +17 -11
  572. package/src/routing/codegen-shared.ts +98 -0
  573. package/src/routing/codegen-types.ts +53 -0
  574. package/src/routing/codegen.ts +143 -176
  575. package/src/routing/convention-lint.ts +357 -0
  576. package/src/routing/index.ts +5 -1
  577. package/src/routing/interception.ts +1 -1
  578. package/src/routing/link-codegen.ts +294 -0
  579. package/src/routing/scanner.ts +107 -110
  580. package/src/routing/segment-classify.ts +188 -0
  581. package/src/routing/status-file-lint.ts +10 -7
  582. package/src/routing/types.ts +78 -25
  583. package/src/routing/walkers.ts +90 -0
  584. package/src/rsc-runtime/rsc.ts +2 -0
  585. package/src/rsc-runtime/ssr.ts +50 -0
  586. package/src/rsc-runtime/vendor-types.d.ts +7 -0
  587. package/src/{search-params/codecs.ts → schema-bridge.ts} +57 -20
  588. package/src/search-params/define.ts +538 -0
  589. package/src/search-params/index.ts +14 -20
  590. package/src/search-params/registry.ts +2 -2
  591. package/src/search-params/wrappers.ts +92 -0
  592. package/src/segment-params/define.ts +332 -0
  593. package/src/segment-params/index.ts +9 -0
  594. package/src/server/access-gate.tsx +79 -36
  595. package/src/server/action-client.ts +103 -20
  596. package/src/server/action-encryption.ts +144 -0
  597. package/src/server/action-handler.ts +112 -14
  598. package/src/server/actions.ts +10 -9
  599. package/src/server/als-registry.ts +35 -7
  600. package/src/server/asset-headers.ts +8 -34
  601. package/src/server/build-manifest.ts +10 -4
  602. package/src/server/compress.ts +25 -7
  603. package/src/server/cookie-context.ts +468 -0
  604. package/src/server/cookie-parsing.ts +135 -0
  605. package/src/server/debug.ts +137 -0
  606. package/src/server/default-logger.ts +99 -0
  607. package/src/server/deny-boundary.ts +218 -0
  608. package/src/server/deny-renderer.ts +33 -51
  609. package/src/server/dev-source-map.ts +31 -0
  610. package/src/server/early-hints-sender.ts +3 -2
  611. package/src/server/early-hints.ts +36 -15
  612. package/src/server/error-boundary-wrapper.ts +74 -22
  613. package/src/server/fallback-error.ts +74 -102
  614. package/src/server/flight-injection-state.ts +113 -0
  615. package/src/server/flight-scripts.ts +62 -0
  616. package/src/server/flush.ts +2 -1
  617. package/src/server/form-data.ts +76 -0
  618. package/src/server/html-injector-core.ts +403 -0
  619. package/src/server/html-injectors.ts +244 -223
  620. package/src/server/index.ts +31 -184
  621. package/src/server/internal.ts +176 -0
  622. package/src/server/logger.ts +67 -35
  623. package/src/server/middleware-runner.ts +75 -4
  624. package/src/server/node-stream-transforms.ts +369 -0
  625. package/src/server/param-coercion.ts +76 -0
  626. package/src/server/pipeline-helpers.ts +204 -0
  627. package/src/server/pipeline-interception.ts +17 -16
  628. package/src/server/pipeline-metadata.ts +13 -0
  629. package/src/server/pipeline-outcome.ts +167 -0
  630. package/src/server/pipeline-phases.ts +409 -0
  631. package/src/server/pipeline.ts +128 -387
  632. package/src/server/port-resolution.ts +215 -0
  633. package/src/server/primitives.ts +113 -29
  634. package/src/server/render-timeout.ts +108 -0
  635. package/src/server/request-context.ts +94 -337
  636. package/src/server/route-element-builder.ts +289 -198
  637. package/src/server/route-handler.ts +24 -4
  638. package/src/server/route-matcher.ts +44 -65
  639. package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
  640. package/src/server/rsc-entry/api-handler.ts +16 -17
  641. package/src/server/rsc-entry/error-renderer.ts +305 -89
  642. package/src/server/rsc-entry/helpers.ts +136 -12
  643. package/src/server/rsc-entry/index.ts +330 -312
  644. package/src/server/rsc-entry/render-route.ts +304 -0
  645. package/src/server/rsc-entry/rsc-payload.ts +100 -18
  646. package/src/server/rsc-entry/rsc-stream.ts +90 -17
  647. package/src/server/rsc-entry/ssr-bridge.ts +14 -5
  648. package/src/server/rsc-entry/ssr-renderer.ts +177 -37
  649. package/src/server/rsc-entry/wrap-action-dispatch.ts +449 -0
  650. package/src/server/rsc-prop-warnings.ts +3 -1
  651. package/src/server/safe-load.ts +60 -0
  652. package/src/server/sensitive-fields.ts +230 -0
  653. package/src/server/sitemap-generator.ts +338 -0
  654. package/src/server/sitemap-handler.ts +126 -0
  655. package/src/server/slot-resolver.ts +245 -230
  656. package/src/server/ssr-entry.ts +215 -32
  657. package/src/server/ssr-render.ts +289 -67
  658. package/src/server/ssr-wrappers.tsx +139 -0
  659. package/src/server/state-tree-diff.ts +4 -1
  660. package/src/server/status-code-resolver.ts +112 -128
  661. package/src/server/stream-utils.ts +213 -0
  662. package/src/server/tracing.ts +44 -10
  663. package/src/server/tree-builder.ts +202 -90
  664. package/src/server/types.ts +55 -6
  665. package/src/server/utils/escape-html.ts +20 -0
  666. package/src/server/version-skew.ts +104 -0
  667. package/src/server/waituntil-bridge.ts +4 -1
  668. package/src/shared/merge-search-params.ts +55 -0
  669. package/src/shims/font-google.ts +1 -1
  670. package/src/shims/font-local.ts +34 -0
  671. package/src/shims/headers.ts +5 -1
  672. package/src/shims/navigation-client.ts +4 -3
  673. package/src/shims/navigation.ts +14 -7
  674. package/src/utils/directive-parser.ts +1 -390
  675. package/src/utils/state-machine.ts +111 -0
  676. package/dist/_chunks/als-registry-k-AtAQ9R.js +0 -41
  677. package/dist/_chunks/als-registry-k-AtAQ9R.js.map +0 -1
  678. package/dist/_chunks/format-DNt20Kt8.js.map +0 -1
  679. package/dist/_chunks/interception-DGDIjDbR.js +0 -676
  680. package/dist/_chunks/interception-DGDIjDbR.js.map +0 -1
  681. package/dist/_chunks/request-context-CRj2Zh1E.js +0 -329
  682. package/dist/_chunks/request-context-CRj2Zh1E.js.map +0 -1
  683. package/dist/_chunks/ssr-data-DLnbYpj1.js.map +0 -1
  684. package/dist/_chunks/tracing-DF0G3FB7.js +0 -173
  685. package/dist/_chunks/tracing-DF0G3FB7.js.map +0 -1
  686. package/dist/_chunks/use-cookie-dDbpCTx-.js +0 -91
  687. package/dist/_chunks/use-cookie-dDbpCTx-.js.map +0 -1
  688. package/dist/_chunks/use-query-states-DAhgj8Gx.js.map +0 -1
  689. package/dist/cache/register-cached-function.d.ts +0 -17
  690. package/dist/cache/register-cached-function.d.ts.map +0 -1
  691. package/dist/client/browser-entry.d.ts +0 -22
  692. package/dist/client/browser-entry.d.ts.map +0 -1
  693. package/dist/client/browser-links.d.ts +0 -32
  694. package/dist/client/browser-links.d.ts.map +0 -1
  695. package/dist/client/link-navigate-interceptor.d.ts +0 -28
  696. package/dist/client/link-navigate-interceptor.d.ts.map +0 -1
  697. package/dist/client/link-status-provider.d.ts +0 -11
  698. package/dist/client/link-status-provider.d.ts.map +0 -1
  699. package/dist/client/transition-root.d.ts.map +0 -1
  700. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  701. package/dist/client/use-params.d.ts.map +0 -1
  702. package/dist/plugins/cache-transform.d.ts +0 -36
  703. package/dist/plugins/cache-transform.d.ts.map +0 -1
  704. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  705. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  706. package/dist/plugins/dev-logs.d.ts.map +0 -1
  707. package/dist/plugins/dynamic-transform.d.ts +0 -72
  708. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  709. package/dist/search-params/analyze.d.ts +0 -54
  710. package/dist/search-params/analyze.d.ts.map +0 -1
  711. package/dist/search-params/builtin-codecs.d.ts +0 -105
  712. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  713. package/dist/search-params/codecs.d.ts +0 -53
  714. package/dist/search-params/codecs.d.ts.map +0 -1
  715. package/dist/search-params/create.d.ts +0 -106
  716. package/dist/search-params/create.d.ts.map +0 -1
  717. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  718. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  719. package/dist/server/dev-logger.d.ts.map +0 -1
  720. package/dist/server/dev-span-processor.d.ts.map +0 -1
  721. package/dist/server/dev-warnings.d.ts.map +0 -1
  722. package/dist/server/manifest-status-resolver.d.ts +0 -58
  723. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  724. package/dist/server/prerender.d.ts +0 -77
  725. package/dist/server/prerender.d.ts.map +0 -1
  726. package/src/cache/register-cached-function.ts +0 -99
  727. package/src/client/browser-entry.ts +0 -686
  728. package/src/client/browser-links.ts +0 -90
  729. package/src/client/link-navigate-interceptor.tsx +0 -62
  730. package/src/client/link-status-provider.tsx +0 -30
  731. package/src/client/transition-root.tsx +0 -160
  732. package/src/plugins/cache-transform.ts +0 -199
  733. package/src/plugins/dev-error-overlay.ts +0 -230
  734. package/src/plugins/dynamic-transform.ts +0 -161
  735. package/src/search-params/analyze.ts +0 -192
  736. package/src/search-params/builtin-codecs.ts +0 -228
  737. package/src/search-params/create.ts +0 -321
  738. package/src/server/dev-fetch-instrumentation.ts +0 -96
  739. package/src/server/dev-span-processor.ts +0 -78
  740. package/src/server/manifest-status-resolver.ts +0 -215
  741. package/src/server/prerender.ts +0 -139
  742. /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
@@ -1,129 +1,43 @@
1
1
  // @timber-js/app/server — Server-side primitives
2
2
  // These are the primary imports for server components, middleware, and access files.
3
+ //
4
+ // Framework-internal pipeline plumbing is in #server-internal (Node package import).
5
+ // Design doc: design/triage/api-naming-spike.md §8.5
3
6
 
4
7
  export type { AccessContext } from './types';
5
8
  export type { MiddlewareContext } from './types';
6
9
  export type { RouteContext } from './types';
7
- export type { Metadata, MetadataRoute } from './types';
10
+ export type { Metadata, MetadataRoute, MetadataHandler, MetadataResult } from './types';
8
11
 
9
- // Request Context — ALS-backed headers(), cookies(), and searchParams()
12
+ // Request Context — ALS-backed accessors (all sync)
13
+ // Prefer defineSearchParams().get() and defineSegmentParams().get() for typed access.
10
14
  // Design doc: design/04-authorization.md §"AccessContext does not include cookies or headers"
11
- // Design doc: design/23-search-params.md §"Server Integration"
12
- export {
13
- headers,
14
- cookies,
15
- searchParams,
16
- setParsedSearchParams,
17
- runWithRequestContext,
18
- setMutableCookieContext,
19
- markResponseFlushed,
20
- getSetCookieHeaders,
21
- setCookieSecrets,
22
- } from './request-context';
23
- export type { ReadonlyHeaders, RequestCookies, CookieOptions } from './request-context';
15
+ export { getHeaders, getSegmentParams } from './request-context';
16
+ export type { ReadonlyHeaders } from './request-context';
17
+
18
+ // Cookie Context — ALS-backed getCookieJar() escape hatch
19
+ // Design doc: design/29-cookies.md
20
+ export { getCookieJar } from './cookie-context';
21
+ export type { RequestCookies, CookieOptions, SetCookieOptions } from './cookie-context';
24
22
 
25
23
  // Runtime primitives
26
24
  export {
27
25
  deny,
28
- notFound,
29
26
  redirect,
30
- permanentRedirect,
31
27
  redirectExternal,
32
28
  RedirectType,
33
- RenderError,
34
29
  waitUntil,
35
- DenySignal,
36
- RedirectSignal,
30
+ type DenyOptions,
31
+ type RedirectOptions,
37
32
  } from './primitives';
33
+ // RenderError removed from public exports per TIM-724.
34
+ // Use deny({ status: 500, data: ... }) instead. RenderError stays in
35
+ // #server-internal for pipeline catch logic.
38
36
  export type { RenderErrorDigest, WaitUntilAdapter } from './primitives';
39
- export type { JsonSerializable } from './types';
40
-
41
- // Pipeline
42
- export { createPipeline } from './pipeline';
43
- export type {
44
- PipelineConfig,
45
- RouteMatch,
46
- RouteMatcher,
47
- RouteRenderer,
48
- EarlyHintsEmitter,
49
- } from './pipeline';
50
-
51
- // Early Hints
52
- export { collectEarlyHintHeaders, formatLinkHeader } from './early-hints';
53
- export type { EarlyHint } from './early-hints';
54
-
55
- // Early Hints 103 Sender — ALS bridge for platform adapters
56
- export { runWithEarlyHintsSender, sendEarlyHints103 } from './early-hints-sender';
57
- export type { EarlyHintsSenderFn } from './early-hints-sender';
58
-
59
- // Canonicalization
60
- export { canonicalize } from './canonicalize';
61
- export type { CanonicalizeResult } from './canonicalize';
62
-
63
- // Proxy
64
- export { runProxy } from './proxy';
65
- export type { ProxyFn, ProxyExport } from './proxy';
66
-
67
- // Middleware
68
- export { runMiddleware } from './middleware-runner';
69
- export type { MiddlewareFn } from './middleware-runner';
70
-
71
- // Tree Builder
72
- export { buildElementTree } from './tree-builder';
73
- export type {
74
- TreeBuilderConfig,
75
- TreeBuildResult,
76
- LoadedModule,
77
- ModuleLoader,
78
- AccessGateProps,
79
- SlotAccessGateProps,
80
- ErrorBoundaryProps,
81
- } from './tree-builder';
82
-
83
- // Access Gates
84
- export { AccessGate, SlotAccessGate } from './access-gate';
85
-
86
- // Status-Code Resolver
87
- export { resolveStatusFile, resolveSlotDenied } from './status-code-resolver';
88
- export type {
89
- StatusFileResolution,
90
- StatusFileKind,
91
- StatusFileFormat,
92
- SlotDeniedResolution,
93
- SlotDeniedKind,
94
- } from './status-code-resolver';
95
-
96
- // Flush Controller
97
- export { flushResponse } from './flush';
98
- export type { FlushOptions, FlushResult, RenderFn, RenderResult } from './flush';
37
+ // JsonSerializable moved to @timber-js/app/codec as the single canonical path.
38
+ // Re-export removed per TIM-721.
99
39
 
100
- // CSRF Protection
101
- export { validateCsrf } from './csrf';
102
- export type { CsrfConfig, CsrfResult } from './csrf';
103
-
104
- // Body Limits
105
- export { parseBodySize, enforceBodyLimits, DEFAULT_LIMITS } from './body-limits';
106
- export type { BodyLimitsConfig, BodyLimitResult, BodyKind } from './body-limits';
107
-
108
- // Metadata
109
- export {
110
- resolveMetadata,
111
- resolveTitle,
112
- resolveMetadataUrls,
113
- renderMetadataToElements,
114
- } from './metadata';
115
- export type { SegmentMetadataEntry, ResolveMetadataOptions, HeadElement } from './metadata';
116
-
117
- // Metadata Routes
118
- export {
119
- classifyMetadataRoute,
120
- getMetadataRouteServePath,
121
- getMetadataRouteAutoLink,
122
- METADATA_ROUTE_CONVENTIONS,
123
- } from './metadata-routes';
124
- export type { MetadataRouteInfo, MetadataRouteType } from './metadata-routes';
125
-
126
- // Server Actions
40
+ // Server Actions — user-facing action client and validation
127
41
  export { createActionClient, ActionError, validated } from './action-client';
128
42
  export type {
129
43
  ActionResult,
@@ -136,88 +50,21 @@ export type {
136
50
  ValidationErrors,
137
51
  } from './action-client';
138
52
 
139
- // FormData Preprocessing
140
- export { parseFormData, coerce } from './form-data';
53
+ // FormData Preprocessing — internal only, not part of public API.
54
+ // Schema libraries (Zod z.coerce.*, Valibot v.transform(), ArkType morphs)
55
+ // handle form coercion. Kept for action-client/action-handler internals.
141
56
 
142
57
  // Form Flash (no-JS error round-trip)
143
58
  export { getFormFlash } from './form-flash';
144
59
  export type { FormFlashData } from './form-flash';
145
60
 
146
- // Revalidation
147
- export {
148
- revalidatePath,
149
- revalidateTag,
150
- executeAction,
151
- buildNoJsResponse,
152
- isRscActionRequest,
153
- } from './actions';
154
- export type {
155
- RevalidateRenderer,
156
- RevalidationState,
157
- ActionHandlerConfig,
158
- ActionHandlerResult,
159
- } from './actions';
61
+ // Revalidation — user-facing revalidation APIs
62
+ export { revalidatePath, revalidateTag } from './actions';
160
63
 
161
- // Tracing — per-request trace ID via ALS
64
+ // Tracing — per-request trace ID via ALS (user-facing accessors)
162
65
  // Design doc: design/17-logging.md §"trace_id is Always Set"
163
- export {
164
- traceId,
165
- spanId,
166
- generateTraceId,
167
- runWithTraceId,
168
- replaceTraceId,
169
- withSpan,
170
- addSpanEvent,
171
- } from './tracing';
172
- export type { TraceStore } from './tracing';
173
-
174
- // Logger — structured logging
175
- // Design doc: design/17-logging.md §"Production Logging"
176
- export { setLogger, getLogger } from './logger';
177
- export {
178
- logRequestCompleted,
179
- logRequestReceived,
180
- logSlowRequest,
181
- logMiddlewareShortCircuit,
182
- logMiddlewareError,
183
- logRenderError,
184
- logProxyError,
185
- logWaitUntilUnsupported,
186
- logWaitUntilRejected,
187
- logSwrRefetchFailed,
188
- logCacheMiss,
189
- } from './logger';
190
- export type { TimberLogger } from './logger';
191
-
192
- // Instrumentation — instrumentation.ts file convention
193
- // Design doc: design/17-logging.md §"instrumentation.ts"
194
- export { loadInstrumentation, callOnRequestError, hasOnRequestError } from './instrumentation';
195
- export type {
196
- InstrumentationOnRequestError,
197
- InstrumentationRequestInfo,
198
- InstrumentationErrorContext,
199
- } from './instrumentation';
200
-
201
- // Dev Warnings — dev-mode misuse detection
202
- // Design doc: design/21-dev-server.md §"Dev-Mode Warnings", design/11-platform.md §"Dev Mode"
203
- export {
204
- warnSuspenseWrappingChildren,
205
- warnDenyInSuspense,
206
- warnRedirectInSuspense,
207
- warnRedirectInAccess,
208
- warnStaticRequestApi,
209
- warnCacheRequestProps,
210
- warnSlowSlotWithoutSuspense,
211
- setViteServer,
212
- WarningId,
213
- // Legacy aliases
214
- warnDynamicApiInStaticBuild,
215
- warnRedirectInSlotAccess,
216
- warnDenyAfterFlush,
217
- } from './dev-warnings';
218
- export type { DevWarningConfig } from './dev-warnings';
66
+ export { getTraceId, getSpanId, withSpan, addSpanEvent } from './tracing';
219
67
 
220
- // Route Handler — route.ts API endpoints
221
- // Design doc: design/07-routing.md §"route.ts — API Endpoints"
222
- export { handleRouteRequest, resolveAllowedMethods } from './route-handler';
223
- export type { RouteModule, RouteHandler, HttpMethod } from './route-handler';
68
+ // Segment params types — re-exported for convenience.
69
+ // defineSegmentParams itself lives at @timber-js/app/segment-params.
70
+ export type { ParamsDefinition, InferParamField, ParamField } from '../segment-params/define.js';
@@ -0,0 +1,176 @@
1
+ // #server-internal — Framework-internal server exports
2
+ //
3
+ // This module is a Node package import (#server-internal in package.json
4
+ // "imports" field). It is only resolvable from within @timber-js/app —
5
+ // external consumers cannot import it.
6
+ //
7
+ // These exports are consumed by entry modules (rsc-entry, ssr-entry),
8
+ // adapters, dev server plugins, and build plugins. They are NOT part of
9
+ // the user-facing API and should not appear in documentation or autocomplete
10
+ // for application developers.
11
+ //
12
+ // Design doc: design/triage/api-naming-spike.md §8.5
13
+
14
+ // ── Request Context internals ────────────────────────────────────────────
15
+ export {
16
+ getSearchParams,
17
+ getSegmentParams,
18
+ getHeader,
19
+ setSegmentParams,
20
+ runWithRequestContext,
21
+ setMutableCookieContext,
22
+ markResponseFlushed,
23
+ } from './request-context.js';
24
+ export { getCookie, getSetCookieHeaders } from './cookie-context.js';
25
+
26
+ // ── Form-data coercion (internal) ────────────────────────────────────────
27
+ export { coerce } from './form-data.js';
28
+
29
+ // ── Signal classes (instanceof targets for pipeline catch logic) ──────────
30
+ export { DenySignal, RedirectSignal, RenderError } from './primitives.js';
31
+ export type { RenderErrorDigest } from './primitives.js';
32
+
33
+ // ── Pipeline ─────────────────────────────────────────────────────────────
34
+ export { createPipeline } from './pipeline.js';
35
+ export type {
36
+ PipelineConfig,
37
+ RouteMatch,
38
+ RouteMatcher,
39
+ RouteRenderer,
40
+ EarlyHintsEmitter,
41
+ } from './pipeline.js';
42
+
43
+ // ── Early Hints ──────────────────────────────────────────────────────────
44
+ export { collectEarlyHintHeaders, formatLinkHeader } from './early-hints.js';
45
+ export type { EarlyHint } from './early-hints.js';
46
+
47
+ // ── Early Hints 103 Sender — ALS bridge for platform adapters ────────────
48
+ export { runWithEarlyHintsSender, sendEarlyHints103 } from './early-hints-sender.js';
49
+ export type { EarlyHintsSenderFn } from './early-hints-sender.js';
50
+
51
+ // ── Canonicalization ─────────────────────────────────────────────────────
52
+ export { canonicalize } from './canonicalize.js';
53
+ export type { CanonicalizeResult } from './canonicalize.js';
54
+
55
+ // ── Proxy ────────────────────────────────────────────────────────────────
56
+ export { runProxy } from './proxy.js';
57
+ export type { ProxyFn, ProxyExport } from './proxy.js';
58
+
59
+ // ── Middleware ────────────────────────────────────────────────────────────
60
+ export { runMiddleware } from './middleware-runner.js';
61
+ export type { MiddlewareFn } from './middleware-runner.js';
62
+
63
+ // ── Tree Builder ─────────────────────────────────────────────────────────
64
+ export { buildElementTree } from './tree-builder.js';
65
+ export type {
66
+ TreeBuilderConfig,
67
+ TreeBuildResult,
68
+ LoadedModule,
69
+ LoadedComponent,
70
+ ModuleLoader,
71
+ AccessGateProps,
72
+ SlotAccessGateProps,
73
+ ErrorBoundaryProps,
74
+ } from './tree-builder.js';
75
+
76
+ // ── Access Gates ─────────────────────────────────────────────────────────
77
+ export { AccessGate, SlotAccessGate } from './access-gate.js';
78
+
79
+ // ── Status-Code Resolver ─────────────────────────────────────────────────
80
+ export { resolveStatusFile, resolveSlotDenied } from './status-code-resolver.js';
81
+ export type {
82
+ StatusFileResolution,
83
+ StatusFileKind,
84
+ StatusFileFormat,
85
+ SlotDeniedResolution,
86
+ SlotDeniedKind,
87
+ } from './status-code-resolver.js';
88
+
89
+ // ── Flush Controller ─────────────────────────────────────────────────────
90
+ export { flushResponse } from './flush.js';
91
+ export type { FlushOptions, FlushResult, RenderFn, RenderResult } from './flush.js';
92
+
93
+ // ── CSRF Protection ──────────────────────────────────────────────────────
94
+ export { validateCsrf } from './csrf.js';
95
+ export type { CsrfConfig, CsrfResult } from './csrf.js';
96
+
97
+ // ── Body Limits ──────────────────────────────────────────────────────────
98
+ export { parseBodySize, enforceBodyLimits, DEFAULT_LIMITS } from './body-limits.js';
99
+ export type { BodyLimitsConfig, BodyLimitResult, BodyKind } from './body-limits.js';
100
+
101
+ // ── Metadata ─────────────────────────────────────────────────────────────
102
+ export {
103
+ resolveMetadata,
104
+ resolveTitle,
105
+ resolveMetadataUrls,
106
+ renderMetadataToElements,
107
+ } from './metadata.js';
108
+ export type { SegmentMetadataEntry, ResolveMetadataOptions, HeadElement } from './metadata.js';
109
+
110
+ // ── Metadata Routes ──────────────────────────────────────────────────────
111
+ export {
112
+ classifyMetadataRoute,
113
+ getMetadataRouteServePath,
114
+ getMetadataRouteAutoLink,
115
+ METADATA_ROUTE_CONVENTIONS,
116
+ } from './metadata-routes.js';
117
+ export type { MetadataRouteInfo, MetadataRouteType } from './metadata-routes.js';
118
+
119
+ // ── Server Actions (pipeline internals) ──────────────────────────────────
120
+ export { executeAction, buildNoJsResponse, isRscActionRequest } from './actions.js';
121
+ export type {
122
+ RevalidateRenderer,
123
+ RevalidationState,
124
+ ActionHandlerConfig,
125
+ ActionHandlerResult,
126
+ } from './actions.js';
127
+
128
+ // ── Tracing internals ────────────────────────────────────────────────────
129
+ export { runWithTraceId, replaceTraceId, generateTraceId } from './tracing.js';
130
+ export type { TraceStore } from './tracing.js';
131
+
132
+ // ── Logger ───────────────────────────────────────────────────────────────
133
+ export { setLogger, getLogger } from './logger.js';
134
+ export {
135
+ logRequestCompleted,
136
+ logRequestReceived,
137
+ logSlowRequest,
138
+ logMiddlewareShortCircuit,
139
+ logMiddlewareError,
140
+ logRenderError,
141
+ logProxyError,
142
+ logWaitUntilUnsupported,
143
+ logWaitUntilRejected,
144
+ logSwrRefetchFailed,
145
+ logCacheMiss,
146
+ } from './logger.js';
147
+ export type { TimberLogger } from './logger.js';
148
+
149
+ // ── Instrumentation ──────────────────────────────────────────────────────
150
+ export { loadInstrumentation, callOnRequestError, hasOnRequestError } from './instrumentation.js';
151
+ export type {
152
+ InstrumentationOnRequestError,
153
+ InstrumentationRequestInfo,
154
+ InstrumentationErrorContext,
155
+ } from './instrumentation.js';
156
+
157
+ // ── Dev Warnings ─────────────────────────────────────────────────────────
158
+ export {
159
+ warnSuspenseWrappingChildren,
160
+ warnDenyInSuspense,
161
+ warnRedirectInSuspense,
162
+ warnRedirectInAccess,
163
+ warnStaticRequestApi,
164
+ warnSlowSlotWithoutSuspense,
165
+ setViteServer,
166
+ WarningId,
167
+ } from '../dev-tools/warnings.js';
168
+ export type { DevWarningConfig } from '../dev-tools/warnings.js';
169
+
170
+ // ── Route Handler ────────────────────────────────────────────────────────
171
+ export { handleRouteRequest, resolveAllowedMethods } from './route-handler.js';
172
+ export type { RouteModule, RouteHandler, HttpMethod } from './route-handler.js';
173
+
174
+ // ── Render Timeout ───────────────────────────────────────────────────────
175
+ export { RenderTimeoutError } from './render-timeout.js';
176
+ export type { RenderTimeout } from './render-timeout.js';
@@ -1,15 +1,16 @@
1
1
  /**
2
2
  * Logger — structured logging with environment-aware formatting.
3
3
  *
4
- * timber.js does not ship a logger. Users export any object with
5
- * info/warn/error/debug methods from instrumentation.ts and the framework
6
- * picks it up. Silent if no logger export is present.
4
+ * timber.js ships a DefaultLogger that writes human-readable lines to stderr
5
+ * in production. Users can export a custom logger from instrumentation.ts to
6
+ * replace it with pino, winston, or any TimberLogger-compatible object.
7
7
  *
8
8
  * See design/17-logging.md §"Production Logging"
9
9
  */
10
10
 
11
11
  import { getTraceStore } from './tracing.js';
12
- import { formatSsrError } from './error-formatter.js';
12
+ import { createDefaultLogger } from './default-logger.js';
13
+ import { isDevMode } from './debug.js';
13
14
 
14
15
  // ─── Logger Interface ─────────────────────────────────────────────────────
15
16
 
@@ -23,21 +24,24 @@ export interface TimberLogger {
23
24
 
24
25
  // ─── Logger Registry ──────────────────────────────────────────────────────
25
26
 
26
- let _logger: TimberLogger | null = null;
27
+ // Initialize with DefaultLogger so production errors are never silent.
28
+ // Replaced when setLogger() is called from instrumentation.ts.
29
+ let _logger: TimberLogger = createDefaultLogger();
27
30
 
28
31
  /**
29
32
  * Set the user-provided logger. Called by the instrumentation loader
30
- * when it finds a `logger` export in instrumentation.ts.
33
+ * when it finds a `logger` export in instrumentation.ts. Replaces
34
+ * the DefaultLogger entirely.
31
35
  */
32
36
  export function setLogger(logger: TimberLogger): void {
33
37
  _logger = logger;
34
38
  }
35
39
 
36
40
  /**
37
- * Get the current logger, or null if none configured.
38
- * Framework-internal — used at framework event points to emit structured logs.
41
+ * Get the current logger. Always non-null — returns DefaultLogger when
42
+ * no custom logger is configured.
39
43
  */
40
- export function getLogger(): TimberLogger | null {
44
+ export function getLogger(): TimberLogger {
41
45
  return _logger;
42
46
  }
43
47
 
@@ -70,12 +74,12 @@ export function logRequestCompleted(data: {
70
74
  /** Number of concurrent in-flight requests (including this one) at completion time. */
71
75
  concurrency?: number;
72
76
  }): void {
73
- _logger?.info('request completed', withTraceContext(data));
77
+ _logger.info('request completed', withTraceContext(data));
74
78
  }
75
79
 
76
80
  /** Log request received. Level: debug. */
77
81
  export function logRequestReceived(data: { method: string; path: string }): void {
78
- _logger?.debug('request received', withTraceContext(data));
82
+ _logger.debug('request received', withTraceContext(data));
79
83
  }
80
84
 
81
85
  /** Log a slow request warning. Level: warn. */
@@ -87,7 +91,7 @@ export function logSlowRequest(data: {
87
91
  /** Number of concurrent in-flight requests at the time the slow request completed. */
88
92
  concurrency?: number;
89
93
  }): void {
90
- _logger?.warn('slow request exceeded threshold', withTraceContext(data));
94
+ _logger.warn('slow request exceeded threshold', withTraceContext(data));
91
95
  }
92
96
 
93
97
  /** Log middleware short-circuit. Level: debug. */
@@ -96,54 +100,82 @@ export function logMiddlewareShortCircuit(data: {
96
100
  path: string;
97
101
  status: number;
98
102
  }): void {
99
- _logger?.debug('middleware short-circuited', withTraceContext(data));
103
+ _logger.debug('middleware short-circuited', withTraceContext(data));
100
104
  }
101
105
 
102
106
  /** Log unhandled error in middleware phase. Level: error. */
103
107
  export function logMiddlewareError(data: { method: string; path: string; error: unknown }): void {
104
- if (_logger) {
105
- _logger.error('unhandled error in middleware phase', withTraceContext(data));
106
- } else if (process.env.NODE_ENV !== 'production') {
107
- console.error('[timber] middleware error', data.error);
108
- }
108
+ _logger.error('unhandled error in middleware phase', withTraceContext(data));
109
109
  }
110
110
 
111
111
  /** Log unhandled render-phase error. Level: error. */
112
- export function logRenderError(data: { method: string; path: string; error: unknown }): void {
113
- if (_logger) {
114
- _logger.error('unhandled render-phase error', withTraceContext(data));
115
- } else if (process.env.NODE_ENV !== 'production') {
116
- // No logger configured — fall back to console.error in dev with
117
- // cleaned-up error messages (vendor paths rewritten, hints added).
118
- console.error('[timber] render error:', formatSsrError(data.error));
119
- }
112
+ export function logRenderError(data: {
113
+ method: string;
114
+ path: string;
115
+ error: unknown;
116
+ errorId?: string;
117
+ }): void {
118
+ _logger.error('unhandled render-phase error', withTraceContext(data));
120
119
  }
121
120
 
122
121
  /** Log proxy.ts uncaught error. Level: error. */
123
122
  export function logProxyError(data: { error: unknown }): void {
124
- if (_logger) {
125
- _logger.error('proxy.ts threw uncaught error', withTraceContext(data));
126
- } else if (process.env.NODE_ENV !== 'production') {
127
- console.error('[timber] proxy error', data.error);
128
- }
123
+ _logger.error('proxy.ts threw uncaught error', withTraceContext(data));
124
+ }
125
+
126
+ /** Log unhandled error in server action. Level: error. */
127
+ export function logActionError(data: { method: string; path: string; error: unknown }): void {
128
+ _logger.error('unhandled server action error', withTraceContext(data));
129
+ }
130
+
131
+ /** Log unhandled error in route handler. Level: error. */
132
+ export function logRouteError(data: { method: string; path: string; error: unknown }): void {
133
+ _logger.error('unhandled route handler error', withTraceContext(data));
134
+ }
135
+
136
+ /** Log SSR streaming error (post-shell). Level: error. */
137
+ export function logStreamingError(data: { error: unknown }): void {
138
+ _logger.error('SSR streaming error (post-shell)', withTraceContext(data));
129
139
  }
130
140
 
131
141
  /** Log waitUntil() adapter missing (once at startup). Level: warn. */
132
142
  export function logWaitUntilUnsupported(): void {
133
- _logger?.warn('adapter does not support waitUntil()');
143
+ _logger.warn('adapter does not support waitUntil()');
134
144
  }
135
145
 
136
146
  /** Log waitUntil() promise rejection. Level: warn. */
137
147
  export function logWaitUntilRejected(data: { error: unknown }): void {
138
- _logger?.warn('waitUntil() promise rejected', withTraceContext(data));
148
+ _logger.warn('waitUntil() promise rejected', withTraceContext(data));
139
149
  }
140
150
 
141
151
  /** Log staleWhileRevalidate refetch failure. Level: warn. */
142
152
  export function logSwrRefetchFailed(data: { cacheKey: string; error: unknown }): void {
143
- _logger?.warn('staleWhileRevalidate refetch failed', withTraceContext(data));
153
+ _logger.warn('staleWhileRevalidate refetch failed', withTraceContext(data));
144
154
  }
145
155
 
146
156
  /** Log cache miss. Level: debug. */
147
157
  export function logCacheMiss(data: { cacheKey: string }): void {
148
- _logger?.debug('timber.cache MISS', withTraceContext(data));
158
+ _logger.debug('timber.cache MISS', withTraceContext(data));
159
+ }
160
+
161
+ // ─── Swallow Helper ───────────────────────────────────────────────────────
162
+
163
+ /**
164
+ * Log an intentionally swallowed error. Provides observability into catch
165
+ * blocks that are deliberately empty — the error is consumed, never rethrown.
166
+ *
167
+ * Default level: `warn` in dev (so the overlay surfaces patterns), `debug`
168
+ * in production (low noise unless TIMBER_DEBUG is set). Pass `opts.level`
169
+ * to override.
170
+ *
171
+ * **Infallible** — swallow() itself never throws, even if the logger is
172
+ * broken. A thrown swallow would turn a benign catch into a crash.
173
+ */
174
+ export function swallow(err: unknown, reason: string, opts?: { level?: 'debug' | 'warn' }): void {
175
+ try {
176
+ const level = opts?.level ?? (isDevMode() ? 'warn' : 'debug');
177
+ _logger[level](`swallowed: ${reason}`, withTraceContext({ error: err }));
178
+ } catch {
179
+ // swallow() must never throw.
180
+ }
149
181
  }