@timber-js/app 0.2.0-alpha.10 → 0.2.0-alpha.101

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 (729) hide show
  1. package/LICENSE +8 -0
  2. package/dist/_chunks/actions-BsfxK6yu.js +1061 -0
  3. package/dist/_chunks/actions-BsfxK6yu.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-Cfpv9whK.js +32 -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-cookie-BjpIt4UC.js +194 -0
  10. package/dist/_chunks/define-cookie-BjpIt4UC.js.map +1 -0
  11. package/dist/_chunks/define-k32T6NL2.js +123 -0
  12. package/dist/_chunks/define-k32T6NL2.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-Cjmvi3rQ.js → metadata-routes-BU684ls2.js} +1 -1
  22. package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js.map → metadata-routes-BU684ls2.js.map} +1 -1
  23. package/dist/_chunks/navigation-root-yx917rG0.js +96 -0
  24. package/dist/_chunks/navigation-root-yx917rG0.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-MjmprTmO.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-D5KaffOK.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-DlsOX1YS.js +185 -0
  44. package/dist/_chunks/use-segment-params-DlsOX1YS.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-DviM89f0.js → warnings-Cg47l5sk.js} +6 -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/handler-store.d.ts +31 -0
  73. package/dist/cache/handler-store.d.ts.map +1 -0
  74. package/dist/cache/index.d.ts +23 -7
  75. package/dist/cache/index.d.ts.map +1 -1
  76. package/dist/cache/index.js +150 -81
  77. package/dist/cache/index.js.map +1 -1
  78. package/dist/cache/singleflight.d.ts +18 -1
  79. package/dist/cache/singleflight.d.ts.map +1 -1
  80. package/dist/cache/sizeof.d.ts +22 -0
  81. package/dist/cache/sizeof.d.ts.map +1 -0
  82. package/dist/cache/timber-cache.d.ts +1 -1
  83. package/dist/cache/timber-cache.d.ts.map +1 -1
  84. package/dist/cli.d.ts +6 -1
  85. package/dist/cli.d.ts.map +1 -1
  86. package/dist/cli.js +8 -3
  87. package/dist/cli.js.map +1 -1
  88. package/dist/client/browser-dev.d.ts +34 -1
  89. package/dist/client/browser-dev.d.ts.map +1 -1
  90. package/dist/client/browser-entry/action-dispatch.d.ts +17 -0
  91. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  92. package/dist/client/browser-entry/hmr.d.ts +21 -0
  93. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  94. package/dist/client/browser-entry/hydrate.d.ts +46 -0
  95. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  96. package/dist/client/browser-entry/index.d.ts +30 -0
  97. package/dist/client/browser-entry/index.d.ts.map +1 -0
  98. package/dist/client/browser-entry/post-hydration.d.ts +26 -0
  99. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  100. package/dist/client/browser-entry/router-init.d.ts +23 -0
  101. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  102. package/dist/client/browser-entry/rsc-stream.d.ts +24 -0
  103. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  104. package/dist/client/browser-entry/scroll.d.ts +19 -0
  105. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  106. package/dist/client/error-boundary.d.ts +12 -5
  107. package/dist/client/error-boundary.d.ts.map +1 -1
  108. package/dist/client/error-boundary.js +26 -5
  109. package/dist/client/error-boundary.js.map +1 -1
  110. package/dist/client/error-reconstituter.d.ts +54 -0
  111. package/dist/client/error-reconstituter.d.ts.map +1 -0
  112. package/dist/client/form.d.ts +16 -27
  113. package/dist/client/form.d.ts.map +1 -1
  114. package/dist/client/history.d.ts +19 -4
  115. package/dist/client/history.d.ts.map +1 -1
  116. package/dist/client/index.d.ts +9 -24
  117. package/dist/client/index.d.ts.map +1 -1
  118. package/dist/client/index.js +261 -1100
  119. package/dist/client/index.js.map +1 -1
  120. package/dist/client/internal.d.ts +19 -0
  121. package/dist/client/internal.d.ts.map +1 -0
  122. package/dist/client/internal.js +964 -0
  123. package/dist/client/internal.js.map +1 -0
  124. package/dist/client/link-pending-store.d.ts +63 -0
  125. package/dist/client/link-pending-store.d.ts.map +1 -0
  126. package/dist/client/link.d.ts +62 -55
  127. package/dist/client/link.d.ts.map +1 -1
  128. package/dist/client/nav-link-store.d.ts +36 -0
  129. package/dist/client/nav-link-store.d.ts.map +1 -0
  130. package/dist/client/navigation-api-types.d.ts +90 -0
  131. package/dist/client/navigation-api-types.d.ts.map +1 -0
  132. package/dist/client/navigation-api.d.ts +115 -0
  133. package/dist/client/navigation-api.d.ts.map +1 -0
  134. package/dist/client/navigation-context.d.ts +13 -2
  135. package/dist/client/navigation-context.d.ts.map +1 -1
  136. package/dist/client/{transition-root.d.ts → navigation-root.d.ts} +42 -8
  137. package/dist/client/navigation-root.d.ts.map +1 -0
  138. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  139. package/dist/client/router-ref.d.ts +1 -1
  140. package/dist/client/router.d.ts +70 -4
  141. package/dist/client/router.d.ts.map +1 -1
  142. package/dist/client/rsc-fetch.d.ts +38 -3
  143. package/dist/client/rsc-fetch.d.ts.map +1 -1
  144. package/dist/client/segment-cache.d.ts +1 -1
  145. package/dist/client/segment-cache.d.ts.map +1 -1
  146. package/dist/client/segment-outlet.d.ts +63 -0
  147. package/dist/client/segment-outlet.d.ts.map +1 -0
  148. package/dist/client/ssr-data.d.ts +13 -4
  149. package/dist/client/ssr-data.d.ts.map +1 -1
  150. package/dist/client/stale-reload.d.ts +15 -0
  151. package/dist/client/stale-reload.d.ts.map +1 -1
  152. package/dist/client/state.d.ts +1 -1
  153. package/dist/client/top-loader.d.ts +5 -5
  154. package/dist/client/top-loader.d.ts.map +1 -1
  155. package/dist/client/use-cookie.d.ts +8 -0
  156. package/dist/client/use-cookie.d.ts.map +1 -1
  157. package/dist/client/use-link-status.d.ts +5 -5
  158. package/dist/client/use-link-status.d.ts.map +1 -1
  159. package/dist/client/{use-navigation-pending.d.ts → use-pending-navigation.d.ts} +4 -4
  160. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  161. package/dist/client/use-query-states.d.ts +1 -1
  162. package/dist/client/use-query-states.d.ts.map +1 -1
  163. package/dist/client/use-router.d.ts +1 -1
  164. package/dist/client/{use-params.d.ts → use-segment-params.d.ts} +7 -5
  165. package/dist/client/use-segment-params.d.ts.map +1 -0
  166. package/dist/codec.d.ts +33 -0
  167. package/dist/codec.d.ts.map +1 -0
  168. package/dist/codec.js +2 -0
  169. package/dist/config-types.d.ts +294 -0
  170. package/dist/config-types.d.ts.map +1 -0
  171. package/dist/config-validation.d.ts +51 -0
  172. package/dist/config-validation.d.ts.map +1 -0
  173. package/dist/content/index.d.ts +1 -10
  174. package/dist/content/index.d.ts.map +1 -1
  175. package/dist/content/index.js +0 -2
  176. package/dist/cookies/define-cookie.d.ts +98 -25
  177. package/dist/cookies/define-cookie.d.ts.map +1 -1
  178. package/dist/cookies/index.d.ts +2 -1
  179. package/dist/cookies/index.d.ts.map +1 -1
  180. package/dist/cookies/index.js +36 -72
  181. package/dist/cookies/index.js.map +1 -1
  182. package/dist/cookies/json-cookie.d.ts +64 -0
  183. package/dist/cookies/json-cookie.d.ts.map +1 -0
  184. package/dist/cookies/validation.d.ts +46 -0
  185. package/dist/cookies/validation.d.ts.map +1 -0
  186. package/dist/dev-tools/404-page.d.ts +46 -0
  187. package/dist/dev-tools/404-page.d.ts.map +1 -0
  188. package/dist/dev-tools/browser-logs.d.ts +84 -0
  189. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  190. package/dist/dev-tools/error-page.d.ts +58 -0
  191. package/dist/dev-tools/error-page.d.ts.map +1 -0
  192. package/dist/dev-tools/holding-server.d.ts +54 -0
  193. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  194. package/dist/dev-tools/index.d.ts +31 -0
  195. package/dist/dev-tools/index.d.ts.map +1 -0
  196. package/dist/{server/dev-span-processor.d.ts → dev-tools/instrumentation.d.ts} +26 -6
  197. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  198. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  199. package/dist/dev-tools/logger.d.ts.map +1 -0
  200. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +2 -2
  201. package/dist/dev-tools/logs.d.ts.map +1 -0
  202. package/dist/dev-tools/overlay.d.ts +91 -0
  203. package/dist/dev-tools/overlay.d.ts.map +1 -0
  204. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  205. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  206. package/dist/dev-tools/terminal.d.ts +28 -0
  207. package/dist/dev-tools/terminal.d.ts.map +1 -0
  208. package/dist/{server/dev-warnings.d.ts → dev-tools/warnings.d.ts} +2 -22
  209. package/dist/dev-tools/warnings.d.ts.map +1 -0
  210. package/dist/fonts/ast.d.ts +98 -6
  211. package/dist/fonts/ast.d.ts.map +1 -1
  212. package/dist/fonts/bundle.d.ts +48 -0
  213. package/dist/fonts/bundle.d.ts.map +1 -0
  214. package/dist/fonts/css.d.ts +1 -0
  215. package/dist/fonts/css.d.ts.map +1 -1
  216. package/dist/fonts/dev-middleware.d.ts +22 -0
  217. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  218. package/dist/fonts/local.d.ts +1 -1
  219. package/dist/fonts/pipeline.d.ts +167 -0
  220. package/dist/fonts/pipeline.d.ts.map +1 -0
  221. package/dist/fonts/transform.d.ts +78 -0
  222. package/dist/fonts/transform.d.ts.map +1 -0
  223. package/dist/fonts/types.d.ts +45 -1
  224. package/dist/fonts/types.d.ts.map +1 -1
  225. package/dist/fonts/virtual-modules.d.ts +103 -0
  226. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  227. package/dist/index.d.ts +46 -190
  228. package/dist/index.d.ts.map +1 -1
  229. package/dist/index.js +5348 -13285
  230. package/dist/index.js.map +1 -1
  231. package/dist/plugin-context.d.ts +107 -0
  232. package/dist/plugin-context.d.ts.map +1 -0
  233. package/dist/plugins/adapter-build.d.ts +1 -1
  234. package/dist/plugins/adapter-build.d.ts.map +1 -1
  235. package/dist/plugins/build-manifest.d.ts +2 -2
  236. package/dist/plugins/build-manifest.d.ts.map +1 -1
  237. package/dist/plugins/build-report.d.ts +9 -7
  238. package/dist/plugins/build-report.d.ts.map +1 -1
  239. package/dist/plugins/client-chunks.d.ts +32 -0
  240. package/dist/plugins/client-chunks.d.ts.map +1 -0
  241. package/dist/plugins/content.d.ts +1 -1
  242. package/dist/plugins/content.d.ts.map +1 -1
  243. package/dist/plugins/dev-server.d.ts +1 -1
  244. package/dist/plugins/dev-server.d.ts.map +1 -1
  245. package/dist/plugins/entries.d.ts +1 -1
  246. package/dist/plugins/entries.d.ts.map +1 -1
  247. package/dist/plugins/fonts.d.ts +17 -73
  248. package/dist/plugins/fonts.d.ts.map +1 -1
  249. package/dist/plugins/mdx.d.ts +1 -1
  250. package/dist/plugins/mdx.d.ts.map +1 -1
  251. package/dist/plugins/routing.d.ts +1 -1
  252. package/dist/plugins/routing.d.ts.map +1 -1
  253. package/dist/plugins/server-bundle.d.ts.map +1 -1
  254. package/dist/plugins/shims.d.ts +6 -5
  255. package/dist/plugins/shims.d.ts.map +1 -1
  256. package/dist/plugins/static-build.d.ts +5 -26
  257. package/dist/plugins/static-build.d.ts.map +1 -1
  258. package/dist/routing/codegen-shared.d.ts +55 -0
  259. package/dist/routing/codegen-shared.d.ts.map +1 -0
  260. package/dist/routing/codegen-types.d.ts +52 -0
  261. package/dist/routing/codegen-types.d.ts.map +1 -0
  262. package/dist/routing/codegen.d.ts +2 -2
  263. package/dist/routing/codegen.d.ts.map +1 -1
  264. package/dist/routing/convention-lint.d.ts +41 -0
  265. package/dist/routing/convention-lint.d.ts.map +1 -0
  266. package/dist/routing/index.d.ts +5 -1
  267. package/dist/routing/index.d.ts.map +1 -1
  268. package/dist/routing/index.js +3 -2
  269. package/dist/routing/link-codegen.d.ts +90 -0
  270. package/dist/routing/link-codegen.d.ts.map +1 -0
  271. package/dist/routing/scanner.d.ts +1 -10
  272. package/dist/routing/scanner.d.ts.map +1 -1
  273. package/dist/routing/segment-classify.d.ts +75 -0
  274. package/dist/routing/segment-classify.d.ts.map +1 -0
  275. package/dist/routing/types.d.ts +77 -25
  276. package/dist/routing/types.d.ts.map +1 -1
  277. package/dist/routing/walkers.d.ts +51 -0
  278. package/dist/routing/walkers.d.ts.map +1 -0
  279. package/dist/rsc-runtime/rsc.d.ts +1 -1
  280. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  281. package/dist/rsc-runtime/ssr.d.ts +12 -0
  282. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  283. package/dist/schema-bridge.d.ts +76 -0
  284. package/dist/schema-bridge.d.ts.map +1 -0
  285. package/dist/search-params/define.d.ts +157 -0
  286. package/dist/search-params/define.d.ts.map +1 -0
  287. package/dist/search-params/index.d.ts +4 -7
  288. package/dist/search-params/index.d.ts.map +1 -1
  289. package/dist/search-params/index.js +34 -441
  290. package/dist/search-params/index.js.map +1 -1
  291. package/dist/search-params/registry.d.ts +2 -2
  292. package/dist/search-params/registry.d.ts.map +1 -1
  293. package/dist/search-params/wrappers.d.ts +53 -0
  294. package/dist/search-params/wrappers.d.ts.map +1 -0
  295. package/dist/segment-params/define.d.ts +95 -0
  296. package/dist/segment-params/define.d.ts.map +1 -0
  297. package/dist/segment-params/index.d.ts +3 -0
  298. package/dist/segment-params/index.d.ts.map +1 -0
  299. package/dist/segment-params/index.js +2 -0
  300. package/dist/server/access-gate.d.ts +8 -3
  301. package/dist/server/access-gate.d.ts.map +1 -1
  302. package/dist/server/action-client.d.ts +41 -6
  303. package/dist/server/action-client.d.ts.map +1 -1
  304. package/dist/server/action-encryption.d.ts +76 -0
  305. package/dist/server/action-encryption.d.ts.map +1 -0
  306. package/dist/server/action-handler.d.ts +35 -1
  307. package/dist/server/action-handler.d.ts.map +1 -1
  308. package/dist/server/actions.d.ts +3 -6
  309. package/dist/server/actions.d.ts.map +1 -1
  310. package/dist/server/als-registry.d.ts +33 -5
  311. package/dist/server/als-registry.d.ts.map +1 -1
  312. package/dist/server/asset-headers.d.ts +1 -15
  313. package/dist/server/asset-headers.d.ts.map +1 -1
  314. package/dist/server/build-manifest.d.ts +2 -2
  315. package/dist/server/build-manifest.d.ts.map +1 -1
  316. package/dist/server/cookie-context.d.ts +170 -0
  317. package/dist/server/cookie-context.d.ts.map +1 -0
  318. package/dist/server/cookie-parsing.d.ts +51 -0
  319. package/dist/server/cookie-parsing.d.ts.map +1 -0
  320. package/dist/server/debug.d.ts +1 -1
  321. package/dist/server/default-logger.d.ts +22 -0
  322. package/dist/server/default-logger.d.ts.map +1 -0
  323. package/dist/server/deny-boundary.d.ts +90 -0
  324. package/dist/server/deny-boundary.d.ts.map +1 -0
  325. package/dist/server/deny-renderer.d.ts.map +1 -1
  326. package/dist/server/dev-source-map.d.ts +22 -0
  327. package/dist/server/dev-source-map.d.ts.map +1 -0
  328. package/dist/server/early-hints-sender.d.ts.map +1 -1
  329. package/dist/server/early-hints.d.ts +13 -5
  330. package/dist/server/early-hints.d.ts.map +1 -1
  331. package/dist/server/error-boundary-wrapper.d.ts +7 -1
  332. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  333. package/dist/server/fallback-error.d.ts +12 -7
  334. package/dist/server/fallback-error.d.ts.map +1 -1
  335. package/dist/server/flight-injection-state.d.ts +66 -0
  336. package/dist/server/flight-injection-state.d.ts.map +1 -0
  337. package/dist/server/flight-scripts.d.ts +42 -0
  338. package/dist/server/flight-scripts.d.ts.map +1 -0
  339. package/dist/server/flush.d.ts.map +1 -1
  340. package/dist/server/form-data.d.ts +29 -0
  341. package/dist/server/form-data.d.ts.map +1 -1
  342. package/dist/server/html-injector-core.d.ts +212 -0
  343. package/dist/server/html-injector-core.d.ts.map +1 -0
  344. package/dist/server/html-injectors.d.ts +81 -41
  345. package/dist/server/html-injectors.d.ts.map +1 -1
  346. package/dist/server/index.d.ts +9 -46
  347. package/dist/server/index.d.ts.map +1 -1
  348. package/dist/server/index.js +155 -2905
  349. package/dist/server/index.js.map +1 -1
  350. package/dist/server/internal.d.ts +48 -0
  351. package/dist/server/internal.d.ts.map +1 -0
  352. package/dist/server/internal.js +2900 -0
  353. package/dist/server/internal.js.map +1 -0
  354. package/dist/server/logger.d.ts +39 -7
  355. package/dist/server/logger.d.ts.map +1 -1
  356. package/dist/server/middleware-runner.d.ts +36 -4
  357. package/dist/server/middleware-runner.d.ts.map +1 -1
  358. package/dist/server/node-stream-transforms.d.ts +110 -0
  359. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  360. package/dist/server/param-coercion.d.ts +26 -0
  361. package/dist/server/param-coercion.d.ts.map +1 -0
  362. package/dist/server/pipeline-helpers.d.ts +95 -0
  363. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  364. package/dist/server/pipeline-interception.d.ts +1 -1
  365. package/dist/server/pipeline-interception.d.ts.map +1 -1
  366. package/dist/server/pipeline-metadata.d.ts +6 -0
  367. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  368. package/dist/server/pipeline-outcome.d.ts +49 -0
  369. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  370. package/dist/server/pipeline-phases.d.ts +52 -0
  371. package/dist/server/pipeline-phases.d.ts.map +1 -0
  372. package/dist/server/pipeline.d.ts +93 -23
  373. package/dist/server/pipeline.d.ts.map +1 -1
  374. package/dist/server/port-resolution.d.ts +117 -0
  375. package/dist/server/port-resolution.d.ts.map +1 -0
  376. package/dist/server/primitives.d.ts +69 -18
  377. package/dist/server/primitives.d.ts.map +1 -1
  378. package/dist/server/render-timeout.d.ts +51 -0
  379. package/dist/server/render-timeout.d.ts.map +1 -0
  380. package/dist/server/request-context.d.ts +41 -109
  381. package/dist/server/request-context.d.ts.map +1 -1
  382. package/dist/server/route-element-builder.d.ts +27 -1
  383. package/dist/server/route-element-builder.d.ts.map +1 -1
  384. package/dist/server/route-handler.d.ts.map +1 -1
  385. package/dist/server/route-matcher.d.ts +21 -34
  386. package/dist/server/route-matcher.d.ts.map +1 -1
  387. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  388. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  389. package/dist/server/rsc-entry/api-handler.d.ts +2 -2
  390. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  391. package/dist/server/rsc-entry/error-renderer.d.ts +26 -13
  392. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  393. package/dist/server/rsc-entry/helpers.d.ts +49 -6
  394. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  395. package/dist/server/rsc-entry/index.d.ts +20 -3
  396. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  397. package/dist/server/rsc-entry/render-route.d.ts +50 -0
  398. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  399. package/dist/server/rsc-entry/rsc-payload.d.ts +3 -3
  400. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  401. package/dist/server/rsc-entry/rsc-stream.d.ts +14 -1
  402. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  403. package/dist/server/rsc-entry/ssr-bridge.d.ts +1 -1
  404. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  405. package/dist/server/rsc-entry/ssr-renderer.d.ts +19 -4
  406. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  407. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +119 -0
  408. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  409. package/dist/server/safe-load.d.ts +46 -0
  410. package/dist/server/safe-load.d.ts.map +1 -0
  411. package/dist/server/sensitive-fields.d.ts +74 -0
  412. package/dist/server/sensitive-fields.d.ts.map +1 -0
  413. package/dist/server/sitemap-generator.d.ts +129 -0
  414. package/dist/server/sitemap-generator.d.ts.map +1 -0
  415. package/dist/server/sitemap-handler.d.ts +22 -0
  416. package/dist/server/sitemap-handler.d.ts.map +1 -0
  417. package/dist/server/slot-resolver.d.ts +1 -1
  418. package/dist/server/slot-resolver.d.ts.map +1 -1
  419. package/dist/server/ssr-entry.d.ts +23 -0
  420. package/dist/server/ssr-entry.d.ts.map +1 -1
  421. package/dist/server/ssr-render.d.ts +39 -21
  422. package/dist/server/ssr-render.d.ts.map +1 -1
  423. package/dist/server/ssr-wrappers.d.ts +50 -0
  424. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  425. package/dist/server/state-tree-diff.d.ts.map +1 -1
  426. package/dist/server/status-code-resolver.d.ts +16 -11
  427. package/dist/server/status-code-resolver.d.ts.map +1 -1
  428. package/dist/server/stream-utils.d.ts +36 -0
  429. package/dist/server/stream-utils.d.ts.map +1 -0
  430. package/dist/server/tracing.d.ts +5 -5
  431. package/dist/server/tracing.d.ts.map +1 -1
  432. package/dist/server/tree-builder.d.ts +62 -30
  433. package/dist/server/tree-builder.d.ts.map +1 -1
  434. package/dist/server/types.d.ts +49 -4
  435. package/dist/server/types.d.ts.map +1 -1
  436. package/dist/server/utils/escape-html.d.ts +14 -0
  437. package/dist/server/utils/escape-html.d.ts.map +1 -0
  438. package/dist/server/version-skew.d.ts +61 -0
  439. package/dist/server/version-skew.d.ts.map +1 -0
  440. package/dist/shared/merge-search-params.d.ts +22 -0
  441. package/dist/shared/merge-search-params.d.ts.map +1 -0
  442. package/dist/shims/font-google.d.ts +1 -1
  443. package/dist/shims/font-google.d.ts.map +1 -1
  444. package/dist/shims/font-google.js +42 -0
  445. package/dist/shims/font-google.js.map +1 -0
  446. package/dist/shims/font-local.d.ts +26 -0
  447. package/dist/shims/font-local.d.ts.map +1 -0
  448. package/dist/shims/font-local.js +20 -0
  449. package/dist/shims/font-local.js.map +1 -0
  450. package/dist/shims/headers.d.ts +2 -1
  451. package/dist/shims/headers.d.ts.map +1 -1
  452. package/dist/shims/navigation-client.d.ts +3 -1
  453. package/dist/shims/navigation-client.d.ts.map +1 -1
  454. package/dist/shims/navigation.d.ts +11 -5
  455. package/dist/shims/navigation.d.ts.map +1 -1
  456. package/dist/utils/state-machine.d.ts +80 -0
  457. package/dist/utils/state-machine.d.ts.map +1 -0
  458. package/package.json +57 -22
  459. package/src/adapters/build-output-helper.ts +77 -0
  460. package/src/adapters/cloudflare-dev.ts +177 -0
  461. package/src/adapters/cloudflare-kv-cache.ts +142 -0
  462. package/src/adapters/cloudflare.ts +350 -76
  463. package/src/adapters/compress-module.ts +24 -4
  464. package/src/adapters/nitro.ts +142 -59
  465. package/src/adapters/shared.ts +40 -0
  466. package/src/adapters/wrangler.d.ts +7 -0
  467. package/src/cache/cache-api.ts +38 -0
  468. package/src/cache/handler-store.ts +68 -0
  469. package/src/cache/index.ts +81 -18
  470. package/src/cache/singleflight.ts +62 -4
  471. package/src/cache/sizeof.ts +31 -0
  472. package/src/cache/timber-cache.ts +25 -20
  473. package/src/cli.ts +16 -6
  474. package/src/client/browser-dev.ts +153 -1
  475. package/src/client/browser-entry/action-dispatch.ts +116 -0
  476. package/src/client/browser-entry/hmr.ts +81 -0
  477. package/src/client/browser-entry/hydrate.ts +145 -0
  478. package/src/client/browser-entry/index.ts +143 -0
  479. package/src/client/browser-entry/post-hydration.ts +119 -0
  480. package/src/client/browser-entry/router-init.ts +193 -0
  481. package/src/client/browser-entry/rsc-stream.ts +157 -0
  482. package/src/client/browser-entry/scroll.ts +27 -0
  483. package/src/client/error-boundary.tsx +97 -20
  484. package/src/client/error-reconstituter.tsx +65 -0
  485. package/src/client/form.tsx +31 -32
  486. package/src/client/history.ts +26 -4
  487. package/src/client/index.ts +77 -43
  488. package/src/client/internal.ts +58 -0
  489. package/src/client/link-pending-store.ts +111 -0
  490. package/src/client/link.tsx +342 -113
  491. package/src/client/nav-link-store.ts +47 -0
  492. package/src/client/navigation-api-types.ts +112 -0
  493. package/src/client/navigation-api.ts +332 -0
  494. package/src/client/navigation-context.ts +31 -6
  495. package/src/client/navigation-root.tsx +342 -0
  496. package/src/client/nuqs-adapter.tsx +16 -3
  497. package/src/client/router-ref.ts +1 -1
  498. package/src/client/router.ts +300 -73
  499. package/src/client/rsc-fetch.ts +112 -8
  500. package/src/client/segment-cache.ts +1 -1
  501. package/src/client/segment-outlet.tsx +86 -0
  502. package/src/client/ssr-data.ts +13 -5
  503. package/src/client/stale-reload.ts +72 -3
  504. package/src/client/state.ts +2 -2
  505. package/src/client/top-loader.tsx +18 -6
  506. package/src/client/use-cookie.ts +29 -0
  507. package/src/client/use-link-status.ts +7 -7
  508. package/src/client/{use-navigation-pending.ts → use-pending-navigation.ts} +6 -6
  509. package/src/client/use-query-states.ts +9 -3
  510. package/src/client/use-router.ts +1 -1
  511. package/src/client/{use-params.ts → use-segment-params.ts} +7 -5
  512. package/src/codec.ts +45 -0
  513. package/src/config-types.ts +292 -0
  514. package/src/config-validation.ts +303 -0
  515. package/src/content/index.ts +5 -13
  516. package/src/cookies/define-cookie.ts +301 -55
  517. package/src/cookies/index.ts +12 -1
  518. package/src/cookies/json-cookie.ts +105 -0
  519. package/src/cookies/validation.ts +134 -0
  520. package/src/dev-tools/404-page.ts +387 -0
  521. package/src/dev-tools/browser-logs.ts +288 -0
  522. package/src/dev-tools/error-page.ts +509 -0
  523. package/src/dev-tools/holding-server.ts +187 -0
  524. package/src/dev-tools/index.ts +90 -0
  525. package/src/dev-tools/instrumentation.ts +176 -0
  526. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +3 -3
  527. package/src/dev-tools/overlay.ts +456 -0
  528. package/src/dev-tools/stack-classifier.ts +75 -0
  529. package/src/dev-tools/terminal.ts +183 -0
  530. package/src/{server/dev-warnings.ts → dev-tools/warnings.ts} +5 -50
  531. package/src/fonts/ast.ts +488 -16
  532. package/src/fonts/bundle.ts +142 -0
  533. package/src/fonts/css.ts +2 -1
  534. package/src/fonts/dev-middleware.ts +74 -0
  535. package/src/fonts/local.ts +1 -1
  536. package/src/fonts/pipeline.ts +314 -0
  537. package/src/fonts/transform.ts +317 -0
  538. package/src/fonts/types.ts +50 -1
  539. package/src/fonts/virtual-modules.ts +227 -0
  540. package/src/index.ts +390 -358
  541. package/src/plugin-context.ts +240 -0
  542. package/src/plugins/adapter-build.ts +12 -4
  543. package/src/plugins/build-manifest.ts +13 -2
  544. package/src/plugins/build-report.ts +16 -25
  545. package/src/plugins/client-chunks.ts +65 -0
  546. package/src/plugins/content.ts +1 -1
  547. package/src/plugins/dev-server.ts +162 -30
  548. package/src/plugins/entries.ts +111 -10
  549. package/src/plugins/fonts.ts +155 -654
  550. package/src/plugins/mdx.ts +43 -10
  551. package/src/plugins/routing.ts +217 -44
  552. package/src/plugins/server-bundle.ts +32 -1
  553. package/src/plugins/shims.ts +136 -35
  554. package/src/plugins/static-build.ts +15 -89
  555. package/src/routing/codegen-shared.ts +98 -0
  556. package/src/routing/codegen-types.ts +53 -0
  557. package/src/routing/codegen.ts +143 -176
  558. package/src/routing/convention-lint.ts +357 -0
  559. package/src/routing/index.ts +5 -1
  560. package/src/routing/interception.ts +1 -1
  561. package/src/routing/link-codegen.ts +294 -0
  562. package/src/routing/scanner.ts +107 -110
  563. package/src/routing/segment-classify.ts +188 -0
  564. package/src/routing/types.ts +78 -25
  565. package/src/routing/walkers.ts +90 -0
  566. package/src/rsc-runtime/rsc.ts +2 -0
  567. package/src/rsc-runtime/ssr.ts +50 -0
  568. package/src/rsc-runtime/vendor-types.d.ts +7 -0
  569. package/src/{search-params/codecs.ts → schema-bridge.ts} +57 -20
  570. package/src/search-params/define.ts +538 -0
  571. package/src/search-params/index.ts +14 -20
  572. package/src/search-params/registry.ts +2 -2
  573. package/src/search-params/wrappers.ts +92 -0
  574. package/src/segment-params/define.ts +332 -0
  575. package/src/segment-params/index.ts +9 -0
  576. package/src/server/access-gate.tsx +76 -34
  577. package/src/server/action-client.ts +88 -15
  578. package/src/server/action-encryption.ts +144 -0
  579. package/src/server/action-handler.ts +112 -14
  580. package/src/server/actions.ts +10 -9
  581. package/src/server/als-registry.ts +35 -7
  582. package/src/server/asset-headers.ts +8 -34
  583. package/src/server/build-manifest.ts +10 -4
  584. package/src/server/compress.ts +25 -7
  585. package/src/server/cookie-context.ts +468 -0
  586. package/src/server/cookie-parsing.ts +135 -0
  587. package/src/server/debug.ts +1 -1
  588. package/src/server/default-logger.ts +99 -0
  589. package/src/server/deny-boundary.ts +218 -0
  590. package/src/server/deny-renderer.ts +31 -50
  591. package/src/server/dev-source-map.ts +31 -0
  592. package/src/server/early-hints-sender.ts +3 -2
  593. package/src/server/early-hints.ts +36 -15
  594. package/src/server/error-boundary-wrapper.ts +74 -22
  595. package/src/server/fallback-error.ts +74 -102
  596. package/src/server/flight-injection-state.ts +113 -0
  597. package/src/server/flight-scripts.ts +62 -0
  598. package/src/server/flush.ts +2 -1
  599. package/src/server/form-data.ts +76 -0
  600. package/src/server/html-injector-core.ts +403 -0
  601. package/src/server/html-injectors.ts +244 -223
  602. package/src/server/index.ts +31 -184
  603. package/src/server/internal.ts +176 -0
  604. package/src/server/logger.ts +67 -36
  605. package/src/server/middleware-runner.ts +75 -4
  606. package/src/server/node-stream-transforms.ts +369 -0
  607. package/src/server/param-coercion.ts +76 -0
  608. package/src/server/pipeline-helpers.ts +204 -0
  609. package/src/server/pipeline-interception.ts +17 -16
  610. package/src/server/pipeline-metadata.ts +13 -0
  611. package/src/server/pipeline-outcome.ts +167 -0
  612. package/src/server/pipeline-phases.ts +409 -0
  613. package/src/server/pipeline.ts +128 -394
  614. package/src/server/port-resolution.ts +215 -0
  615. package/src/server/primitives.ts +111 -28
  616. package/src/server/render-timeout.ts +108 -0
  617. package/src/server/request-context.ts +94 -338
  618. package/src/server/route-element-builder.ts +288 -192
  619. package/src/server/route-handler.ts +24 -4
  620. package/src/server/route-matcher.ts +44 -65
  621. package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
  622. package/src/server/rsc-entry/api-handler.ts +16 -17
  623. package/src/server/rsc-entry/error-renderer.ts +305 -89
  624. package/src/server/rsc-entry/helpers.ts +136 -12
  625. package/src/server/rsc-entry/index.ts +312 -341
  626. package/src/server/rsc-entry/render-route.ts +304 -0
  627. package/src/server/rsc-entry/rsc-payload.ts +65 -18
  628. package/src/server/rsc-entry/rsc-stream.ts +81 -13
  629. package/src/server/rsc-entry/ssr-bridge.ts +14 -5
  630. package/src/server/rsc-entry/ssr-renderer.ts +171 -38
  631. package/src/server/rsc-entry/wrap-action-dispatch.ts +449 -0
  632. package/src/server/safe-load.ts +60 -0
  633. package/src/server/sensitive-fields.ts +230 -0
  634. package/src/server/sitemap-generator.ts +338 -0
  635. package/src/server/sitemap-handler.ts +126 -0
  636. package/src/server/slot-resolver.ts +245 -230
  637. package/src/server/ssr-entry.ts +215 -32
  638. package/src/server/ssr-render.ts +289 -67
  639. package/src/server/ssr-wrappers.tsx +139 -0
  640. package/src/server/state-tree-diff.ts +4 -1
  641. package/src/server/status-code-resolver.ts +112 -128
  642. package/src/server/stream-utils.ts +213 -0
  643. package/src/server/tracing.ts +21 -10
  644. package/src/server/tree-builder.ts +202 -90
  645. package/src/server/types.ts +55 -6
  646. package/src/server/utils/escape-html.ts +20 -0
  647. package/src/server/version-skew.ts +104 -0
  648. package/src/shared/merge-search-params.ts +55 -0
  649. package/src/shims/font-google.ts +1 -1
  650. package/src/shims/font-local.ts +34 -0
  651. package/src/shims/headers.ts +5 -1
  652. package/src/shims/navigation-client.ts +4 -3
  653. package/src/shims/navigation.ts +14 -7
  654. package/src/utils/state-machine.ts +111 -0
  655. package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
  656. package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
  657. package/dist/_chunks/debug-gwlJkDuf.js +0 -108
  658. package/dist/_chunks/debug-gwlJkDuf.js.map +0 -1
  659. package/dist/_chunks/format-DviM89f0.js.map +0 -1
  660. package/dist/_chunks/interception-BOoWmLUA.js +0 -676
  661. package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
  662. package/dist/_chunks/request-context-DIkVh_jG.js +0 -330
  663. package/dist/_chunks/request-context-DIkVh_jG.js.map +0 -1
  664. package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
  665. package/dist/_chunks/tracing-CemImE6h.js +0 -187
  666. package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
  667. package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
  668. package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
  669. package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
  670. package/dist/cache/register-cached-function.d.ts +0 -17
  671. package/dist/cache/register-cached-function.d.ts.map +0 -1
  672. package/dist/client/browser-entry.d.ts +0 -21
  673. package/dist/client/browser-entry.d.ts.map +0 -1
  674. package/dist/client/link-status-provider.d.ts +0 -11
  675. package/dist/client/link-status-provider.d.ts.map +0 -1
  676. package/dist/client/transition-root.d.ts.map +0 -1
  677. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  678. package/dist/client/use-params.d.ts.map +0 -1
  679. package/dist/plugins/cache-transform.d.ts +0 -36
  680. package/dist/plugins/cache-transform.d.ts.map +0 -1
  681. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  682. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  683. package/dist/plugins/dev-logs.d.ts.map +0 -1
  684. package/dist/plugins/dynamic-transform.d.ts +0 -72
  685. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  686. package/dist/plugins/server-action-exports.d.ts +0 -26
  687. package/dist/plugins/server-action-exports.d.ts.map +0 -1
  688. package/dist/routing/status-file-lint.d.ts +0 -33
  689. package/dist/routing/status-file-lint.d.ts.map +0 -1
  690. package/dist/search-params/analyze.d.ts +0 -54
  691. package/dist/search-params/analyze.d.ts.map +0 -1
  692. package/dist/search-params/builtin-codecs.d.ts +0 -105
  693. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  694. package/dist/search-params/codecs.d.ts +0 -53
  695. package/dist/search-params/codecs.d.ts.map +0 -1
  696. package/dist/search-params/create.d.ts +0 -106
  697. package/dist/search-params/create.d.ts.map +0 -1
  698. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  699. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  700. package/dist/server/dev-logger.d.ts.map +0 -1
  701. package/dist/server/dev-span-processor.d.ts.map +0 -1
  702. package/dist/server/dev-warnings.d.ts.map +0 -1
  703. package/dist/server/manifest-status-resolver.d.ts +0 -58
  704. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  705. package/dist/server/prerender.d.ts +0 -77
  706. package/dist/server/prerender.d.ts.map +0 -1
  707. package/dist/server/response-cache.d.ts +0 -54
  708. package/dist/server/response-cache.d.ts.map +0 -1
  709. package/dist/utils/directive-parser.d.ts +0 -70
  710. package/dist/utils/directive-parser.d.ts.map +0 -1
  711. package/src/cache/register-cached-function.ts +0 -103
  712. package/src/client/browser-entry.ts +0 -678
  713. package/src/client/link-status-provider.tsx +0 -30
  714. package/src/client/transition-root.tsx +0 -166
  715. package/src/plugins/cache-transform.ts +0 -199
  716. package/src/plugins/dev-error-overlay.ts +0 -230
  717. package/src/plugins/dynamic-transform.ts +0 -161
  718. package/src/plugins/server-action-exports.ts +0 -220
  719. package/src/routing/status-file-lint.ts +0 -112
  720. package/src/search-params/analyze.ts +0 -192
  721. package/src/search-params/builtin-codecs.ts +0 -228
  722. package/src/search-params/create.ts +0 -321
  723. package/src/server/dev-fetch-instrumentation.ts +0 -96
  724. package/src/server/dev-span-processor.ts +0 -78
  725. package/src/server/manifest-status-resolver.ts +0 -215
  726. package/src/server/prerender.ts +0 -139
  727. package/src/server/response-cache.ts +0 -410
  728. package/src/utils/directive-parser.ts +0 -529
  729. /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
@@ -11,7 +11,9 @@
11
11
  import type { Plugin } from 'vite';
12
12
  import { existsSync } from 'node:fs';
13
13
  import { join } from 'node:path';
14
- import type { PluginContext } from '#/index.js';
14
+ import { createRequire } from 'node:module';
15
+ import { pathToFileURL } from 'node:url';
16
+ import type { PluginContext } from '../plugin-context.js';
15
17
 
16
18
  const MDX_EXTENSIONS = ['mdx', 'md'];
17
19
 
@@ -54,15 +56,45 @@ function shouldActivate(ctx: PluginContext): boolean {
54
56
  }
55
57
 
56
58
  /**
57
- * Try to dynamically import a module by name. Returns the default export
58
- * or the module itself, or undefined if the module is not installed.
59
+ * Try to dynamically import a module by name, resolving from the user's
60
+ * project root rather than from `@timber-js/app`'s own location.
61
+ *
62
+ * Why this matters: pnpm only hoists declared (peer) dependencies into a
63
+ * package's resolution scope. The MDX integration's optional companions
64
+ * — `remark-frontmatter`, `remark-mdx-frontmatter`, `@mdx-js/rollup` — are
65
+ * installed as direct deps of the consumer (e.g. `packages/website`), not
66
+ * `@timber-js/app`. A bare `import('remark-frontmatter')` from inside this
67
+ * file resolves against `packages/timber-app/node_modules` and silently
68
+ * fails with `ERR_MODULE_NOT_FOUND`, which made `tryImport` return
69
+ * `undefined` and skipped frontmatter parsing entirely — leaving MDX to
70
+ * choke on YAML as JS expressions (TIM-840).
71
+ *
72
+ * Resolving relative to `projectRoot` (via `createRequire`) makes the
73
+ * lookup walk the consumer's `node_modules` tree first, which is where
74
+ * pnpm puts the user's deps.
75
+ *
76
+ * Returns the default export, the module itself, or undefined if the
77
+ * module is not installed.
59
78
  */
60
- async function tryImport(name: string): Promise<unknown | undefined> {
79
+ async function tryImport(name: string, projectRoot: string): Promise<unknown | undefined> {
61
80
  try {
62
- const mod = await import(name);
81
+ // Anchor resolution at the consumer's package.json so we walk their
82
+ // node_modules tree, not @timber-js/app's. createRequire().resolve()
83
+ // returns an absolute file path that ESM dynamic import accepts when
84
+ // wrapped as a file:// URL.
85
+ const require = createRequire(join(projectRoot, 'package.json'));
86
+ const resolved = require.resolve(name);
87
+ const mod = await import(pathToFileURL(resolved).href);
63
88
  return mod.default ?? mod;
64
89
  } catch {
65
- return undefined;
90
+ // Fall back to a bare import — covers the rare case where the package
91
+ // lives next to @timber-js/app (e.g. monorepo with hoisted deps).
92
+ try {
93
+ const mod = await import(name);
94
+ return mod.default ?? mod;
95
+ } catch {
96
+ return undefined;
97
+ }
66
98
  }
67
99
  }
68
100
 
@@ -80,7 +112,7 @@ export function timberMdx(ctx: PluginContext): Plugin {
80
112
  async function activate(): Promise<void> {
81
113
  if (innerPlugin !== null || !shouldActivate(ctx)) return;
82
114
 
83
- const createMdxPlugin = (await tryImport('@mdx-js/rollup')) as
115
+ const createMdxPlugin = (await tryImport('@mdx-js/rollup', ctx.root)) as
84
116
  | ((options?: Record<string, unknown>) => Plugin)
85
117
  | undefined;
86
118
 
@@ -99,10 +131,11 @@ export function timberMdx(ctx: PluginContext): Plugin {
99
131
 
100
132
  const mdxConfig = ctx.config.mdx ?? {};
101
133
 
102
- // Auto-register frontmatter plugins
134
+ // Auto-register frontmatter plugins. Resolve from the consumer's root
135
+ // so pnpm finds packages declared in the user's package.json (TIM-840).
103
136
  const remarkPlugins: unknown[] = [];
104
- const remarkFrontmatter = await tryImport('remark-frontmatter');
105
- const remarkMdxFrontmatter = await tryImport('remark-mdx-frontmatter');
137
+ const remarkFrontmatter = await tryImport('remark-frontmatter', ctx.root);
138
+ const remarkMdxFrontmatter = await tryImport('remark-mdx-frontmatter', ctx.root);
106
139
  if (remarkFrontmatter) remarkPlugins.push(remarkFrontmatter);
107
140
  if (remarkMdxFrontmatter) remarkPlugins.push(remarkMdxFrontmatter);
108
141
 
@@ -10,25 +10,43 @@
10
10
 
11
11
  import type { Plugin, ViteDevServer } from 'vite';
12
12
  import { writeFile, mkdir } from 'node:fs/promises';
13
+ import { existsSync, readFileSync } from 'node:fs';
13
14
  import { join } from 'node:path';
14
- import { scanRoutes } from '#/routing/scanner.js';
15
- import { generateRouteMap } from '#/routing/codegen.js';
16
- import { collectInterceptionRewrites } from '#/routing/interception.js';
15
+ import { scanRoutes } from '../routing/scanner.js';
16
+ import { generateRouteMap } from '../routing/codegen.js';
17
+ import { collectInterceptionRewrites } from '../routing/interception.js';
18
+
17
19
  import {
18
- lintStatusFileDirectives,
19
- formatStatusFileLintWarnings,
20
- } from '#/routing/status-file-lint.js';
21
- import type { RouteTree, SegmentNode, RouteFile } from '#/routing/types.js';
22
- import type { PluginContext } from '#/index.js';
20
+ lintConventions,
21
+ checkAppDirExists,
22
+ formatConventionWarnings,
23
+ } from '../routing/convention-lint.js';
24
+ import type { RouteTree, SegmentNode, RouteFile } from '../routing/types.js';
25
+ import type { PluginContext } from '../plugin-context.js';
23
26
 
24
27
  const VIRTUAL_MODULE_ID = 'virtual:timber-route-manifest';
25
28
  const RESOLVED_VIRTUAL_ID = `\0${VIRTUAL_MODULE_ID}`;
26
29
 
30
+ // TIM-830: Search-params registry virtual module.
31
+ //
32
+ // Statically imports the `searchParams` named export from every page
33
+ // that exports one, and registers each definition into the shared
34
+ // search-params registry keyed by the un-interpolated route pattern
35
+ // (e.g. '/products/[id]'). This lets `<Link>` serialize flat
36
+ // `Partial<T>` values at runtime without callers importing the
37
+ // definition at the call site.
38
+ //
39
+ // The imports are STATIC (`import { searchParams as r0 } from '...'`)
40
+ // so Vite/Rolldown tree-shakes each page's component body out of the
41
+ // registry chunk — only the `searchParams` named export is pulled in.
42
+ const SEARCH_PARAMS_REGISTRY_ID = 'virtual:timber-search-params-registry';
43
+ const RESOLVED_SEARCH_PARAMS_REGISTRY_ID = `\0${SEARCH_PARAMS_REGISTRY_ID}`;
44
+
27
45
  /**
28
46
  * File convention names we track for changes that require manifest regeneration.
29
47
  */
30
48
  const ROUTE_FILE_PATTERNS =
31
- /\/(page|layout|middleware|access|route|error|default|denied|search-params|\d{3}|[45]xx|not-found|forbidden|unauthorized|sitemap|robots|manifest|favicon|icon|opengraph-image|twitter-image|apple-icon)\./;
49
+ /\/(page|layout|middleware|access|route|error|global-error|default|denied|params|\d{3}|[45]xx|not-found|forbidden|unauthorized|sitemap|robots|manifest|favicon|icon|opengraph-image|twitter-image|apple-icon)\./;
32
50
 
33
51
  /**
34
52
  * Create the timber-routing Vite plugin.
@@ -83,6 +101,24 @@ export function timberRouting(ctx: PluginContext): Plugin {
83
101
  const warnedFiles = new Set<string>();
84
102
 
85
103
  function rescan(): void {
104
+ // Check app/ directory exists before scanning
105
+ const appDirWarning = checkAppDirExists(ctx.appDir);
106
+ if (appDirWarning) {
107
+ const formatted = formatConventionWarnings([appDirWarning]);
108
+ if (formatted) process.stderr.write(`${formatted}\n`);
109
+ // Still create an empty tree so the rest of the pipeline doesn't crash
110
+ ctx.routeTree = {
111
+ root: {
112
+ segmentName: '',
113
+ segmentType: 'static',
114
+ urlPath: '/',
115
+ children: [],
116
+ slots: {},
117
+ },
118
+ };
119
+ return;
120
+ }
121
+
86
122
  ctx.timer.start('route-scan');
87
123
  ctx.routeTree = scanRoutes(ctx.appDir, {
88
124
  pageExtensions: ctx.config.pageExtensions,
@@ -90,12 +126,13 @@ export function timberRouting(ctx: PluginContext): Plugin {
90
126
  ctx.timer.end('route-scan');
91
127
  writeCodegen(ctx);
92
128
 
93
- // Lint status files for missing 'use client' directive
94
- const warnings = lintStatusFileDirectives(ctx.routeTree);
95
- const newWarnings = warnings.filter((w) => !warnedFiles.has(w.filePath));
96
- if (newWarnings.length > 0) {
97
- for (const w of newWarnings) warnedFiles.add(w.filePath);
98
- console.warn(formatStatusFileLintWarnings(newWarnings));
129
+ // Lint conventions (empty app, missing methods, missing root layout)
130
+ const conventionWarnings = lintConventions(ctx.routeTree, ctx.appDir);
131
+ const newConventionWarnings = conventionWarnings.filter((w) => !warnedFiles.has(w.id));
132
+ if (newConventionWarnings.length > 0) {
133
+ for (const w of newConventionWarnings) warnedFiles.add(w.id);
134
+ const formatted = formatConventionWarnings(newConventionWarnings);
135
+ if (formatted) process.stderr.write(`${formatted}\n`);
99
136
  }
100
137
  }
101
138
 
@@ -123,6 +160,14 @@ export function timberRouting(ctx: PluginContext): Plugin {
123
160
  return RESOLVED_VIRTUAL_ID;
124
161
  }
125
162
 
163
+ // TIM-830: Search-params registry virtual module
164
+ if (
165
+ cleanId === SEARCH_PARAMS_REGISTRY_ID ||
166
+ cleanId.endsWith(`/${SEARCH_PARAMS_REGISTRY_ID}`)
167
+ ) {
168
+ return RESOLVED_SEARCH_PARAMS_REGISTRY_ID;
169
+ }
170
+
126
171
  return null;
127
172
  },
128
173
 
@@ -133,14 +178,22 @@ export function timberRouting(ctx: PluginContext): Plugin {
133
178
  * with absolute import paths for all file references.
134
179
  */
135
180
  load(id: string) {
136
- if (id !== RESOLVED_VIRTUAL_ID) return null;
181
+ if (id === RESOLVED_VIRTUAL_ID) {
182
+ // If routeTree hasn't been built yet (shouldn't happen), scan now
183
+ if (!ctx.routeTree) {
184
+ rescan();
185
+ }
186
+ return generateManifestModule(ctx.routeTree!, ctx.root);
187
+ }
137
188
 
138
- // If routeTree hasn't been built yet (shouldn't happen), scan now
139
- if (!ctx.routeTree) {
140
- rescan();
189
+ if (id === RESOLVED_SEARCH_PARAMS_REGISTRY_ID) {
190
+ if (!ctx.routeTree) {
191
+ rescan();
192
+ }
193
+ return generateSearchParamsRegistryModule(ctx.routeTree!);
141
194
  }
142
195
 
143
- return generateManifestModule(ctx.routeTree!);
196
+ return null;
144
197
  },
145
198
 
146
199
  /**
@@ -168,20 +221,49 @@ export function timberRouting(ctx: PluginContext): Plugin {
168
221
  // Watch the app directory
169
222
  devServer.watcher.add(ctx.appDir);
170
223
 
171
- const handleFileChange = (filePath: string) => {
172
- // Only react to route-significant files in the app directory
224
+ /** Snapshot of the last generated manifest, used to detect structural changes. */
225
+ let lastManifest = ctx.routeTree ? generateManifestModule(ctx.routeTree, ctx.root) : '';
226
+
227
+ /**
228
+ * Handle a route-significant file being added or removed.
229
+ * Always triggers a full-reload since the route tree structure changed.
230
+ */
231
+ const handleStructuralChange = (filePath: string) => {
173
232
  if (!filePath.startsWith(ctx.appDir)) return;
174
233
  if (!ROUTE_FILE_PATTERNS.test(filePath)) return;
175
234
 
176
- // Rescan the route tree
177
235
  rescan();
178
-
179
- // Invalidate the virtual module in all environments
236
+ lastManifest = ctx.routeTree ? generateManifestModule(ctx.routeTree, ctx.root) : '';
180
237
  invalidateManifest(devServer);
181
238
  };
182
239
 
183
- devServer.watcher.on('add', handleFileChange);
184
- devServer.watcher.on('unlink', handleFileChange);
240
+ /**
241
+ * Handle a route file's content changing.
242
+ *
243
+ * Most content edits (JSX changes, fixing typos) don't affect route
244
+ * metadata — Vite's React Fast Refresh handles those via normal HMR.
245
+ * Only rescan and full-reload when route metadata actually changed
246
+ * (e.g., searchParams export added/removed, metadata export changed).
247
+ */
248
+ const handleContentChange = (filePath: string) => {
249
+ if (!filePath.startsWith(ctx.appDir)) return;
250
+ if (!ROUTE_FILE_PATTERNS.test(filePath)) return;
251
+
252
+ rescan();
253
+ const newManifest = ctx.routeTree ? generateManifestModule(ctx.routeTree, ctx.root) : '';
254
+ if (newManifest !== lastManifest) {
255
+ lastManifest = newManifest;
256
+ invalidateManifest(devServer);
257
+ }
258
+ // Otherwise: content edit didn't change route metadata — let Vite HMR handle it
259
+ };
260
+
261
+ devServer.watcher.on('add', handleStructuralChange);
262
+ devServer.watcher.on('unlink', handleStructuralChange);
263
+ // Watch content changes to page files — searchParams detection depends
264
+ // on file contents (export const searchParams), not just file presence.
265
+ // But only full-reload when route metadata actually changes.
266
+ devServer.watcher.on('change', handleContentChange);
185
267
  // Also watch renames (which are add+unlink) — handled by the above
186
268
  },
187
269
  };
@@ -198,9 +280,11 @@ function invalidateManifest(server: ViteDevServer): void {
198
280
  const env = server.environments[envName];
199
281
  if (!env?.moduleGraph) continue;
200
282
 
201
- const mod = env.moduleGraph.getModuleById(RESOLVED_VIRTUAL_ID);
202
- if (mod) {
203
- env.moduleGraph.invalidateModule(mod);
283
+ for (const virtualId of [RESOLVED_VIRTUAL_ID, RESOLVED_SEARCH_PARAMS_REGISTRY_ID]) {
284
+ const mod = env.moduleGraph.getModuleById(virtualId);
285
+ if (mod) {
286
+ env.moduleGraph.invalidateModule(mod);
287
+ }
204
288
  }
205
289
  }
206
290
 
@@ -208,13 +292,88 @@ function invalidateManifest(server: ViteDevServer): void {
208
292
  server.hot.send({ type: 'full-reload' });
209
293
  }
210
294
 
295
+ /**
296
+ * TIM-830: Walk the route tree and collect every page that exports a
297
+ * `searchParams` definition, then emit a module that statically imports
298
+ * each export and registers it into the shared search-params registry.
299
+ *
300
+ * Keys use the un-interpolated route pattern (e.g. '/products/[id]') so
301
+ * <Link> can look up the definition from the original `href` prop before
302
+ * segmentParams are interpolated.
303
+ */
304
+ function generateSearchParamsRegistryModule(tree: RouteTree): string {
305
+ const entries: Array<{ urlPath: string; filePath: string }> = [];
306
+
307
+ function walk(node: SegmentNode): void {
308
+ // params.ts is the canonical location for `export const searchParams`;
309
+ // page.tsx is the legacy fallback (see codegen.ts `collectRoutes`).
310
+ if (node.page) {
311
+ if (node.params && fileHasSearchParamsExport(node.params.filePath)) {
312
+ entries.push({ urlPath: node.urlPath, filePath: node.params.filePath });
313
+ } else if (fileHasSearchParamsExport(node.page.filePath)) {
314
+ entries.push({ urlPath: node.urlPath, filePath: node.page.filePath });
315
+ }
316
+ }
317
+ for (const child of node.children) walk(child);
318
+ for (const slot of Object.values(node.slots)) walk(slot);
319
+ }
320
+ walk(tree.root);
321
+
322
+ // Deterministic order for stable output / snapshots
323
+ entries.sort((a, b) => a.urlPath.localeCompare(b.urlPath));
324
+
325
+ const lines: string[] = [];
326
+ lines.push('// Auto-generated search-params registry — do not edit.');
327
+ lines.push('// Generated by timber-routing plugin (TIM-830).');
328
+ lines.push('');
329
+ lines.push("import { registerSearchParams } from '@timber-js/app/search-params';");
330
+ lines.push('');
331
+
332
+ // Static imports — Vite/Rolldown tree-shakes the page component body out
333
+ // of this chunk, leaving only the `searchParams` named export.
334
+ entries.forEach((entry, i) => {
335
+ lines.push(`import { searchParams as r${i} } from ${JSON.stringify(entry.filePath)};`);
336
+ });
337
+ lines.push('');
338
+
339
+ entries.forEach((entry, i) => {
340
+ lines.push(`registerSearchParams(${JSON.stringify(entry.urlPath)}, r${i});`);
341
+ });
342
+ lines.push('');
343
+
344
+ // Exporting an empty object keeps the module a real ESM module even
345
+ // when there are zero entries (no top-level imports in that case).
346
+ lines.push('export {};');
347
+ lines.push('');
348
+
349
+ return lines.join('\n');
350
+ }
351
+
352
+ /**
353
+ * Lightweight check for a `searchParams` named export. Mirrors
354
+ * `fileHasExport('searchParams')` in routing/codegen.ts so we stay
355
+ * in sync with what the type codegen detects.
356
+ */
357
+ function fileHasSearchParamsExport(filePath: string): boolean {
358
+ try {
359
+ if (!existsSync(filePath)) return false;
360
+ const content = readFileSync(filePath, 'utf-8');
361
+ return (
362
+ /export\s+(const|let|var)\s+searchParams\b/.test(content) ||
363
+ /export\s*\{[^}]*\bsearchParams\b[^}]*\}/.test(content)
364
+ );
365
+ } catch {
366
+ return false;
367
+ }
368
+ }
369
+
211
370
  /**
212
371
  * Generate the virtual module source code for the route manifest.
213
372
  *
214
373
  * The output is a default-exported object containing the serialized route tree.
215
374
  * All file references use absolute paths (required for virtual modules).
216
375
  */
217
- function generateManifestModule(tree: RouteTree): string {
376
+ function generateManifestModule(tree: RouteTree, viteRoot: string): string {
218
377
  const imports: string[] = [];
219
378
  let importIndex = 0;
220
379
 
@@ -301,17 +460,20 @@ function generateManifestModule(tree: RouteTree): string {
301
460
  `${nextIndent}denied: { load: ${v}, filePath: ${JSON.stringify(node.denied.filePath)} },`
302
461
  );
303
462
  }
304
- if (node.searchParams) {
305
- const v = addImport(node.searchParams);
463
+ if (node.params) {
464
+ const v = addImport(node.params);
306
465
  parts.push(
307
- `${nextIndent}searchParams: { load: ${v}, filePath: ${JSON.stringify(node.searchParams.filePath)} },`
466
+ `${nextIndent}params: { load: ${v}, filePath: ${JSON.stringify(node.params.filePath)} },`
308
467
  );
309
468
  }
469
+ // searchParams is now a named export from page.tsx, not a separate file.
470
+ // The page module's searchParams export is loaded via the page's lazy import.
471
+ // Runtime registration happens in the route loader using the page module.
310
472
 
311
473
  // Status-code files
312
- if (node.statusFiles && node.statusFiles.size > 0) {
474
+ if (node.statusFiles && Object.keys(node.statusFiles).length > 0) {
313
475
  const statusEntries: string[] = [];
314
- for (const [code, file] of node.statusFiles) {
476
+ for (const [code, file] of Object.entries(node.statusFiles)) {
315
477
  const v = addImport(file);
316
478
  statusEntries.push(
317
479
  `${nextIndent} ${JSON.stringify(code)}: { load: ${v}, filePath: ${JSON.stringify(file.filePath)} }`
@@ -321,9 +483,9 @@ function generateManifestModule(tree: RouteTree): string {
321
483
  }
322
484
 
323
485
  // JSON status-code files
324
- if (node.jsonStatusFiles && node.jsonStatusFiles.size > 0) {
486
+ if (node.jsonStatusFiles && Object.keys(node.jsonStatusFiles).length > 0) {
325
487
  const jsonEntries: string[] = [];
326
- for (const [code, file] of node.jsonStatusFiles) {
488
+ for (const [code, file] of Object.entries(node.jsonStatusFiles)) {
327
489
  const v = addImport(file);
328
490
  jsonEntries.push(
329
491
  `${nextIndent} ${JSON.stringify(code)}: { load: ${v}, filePath: ${JSON.stringify(file.filePath)} }`
@@ -333,9 +495,9 @@ function generateManifestModule(tree: RouteTree): string {
333
495
  }
334
496
 
335
497
  // Legacy status files
336
- if (node.legacyStatusFiles && node.legacyStatusFiles.size > 0) {
498
+ if (node.legacyStatusFiles && Object.keys(node.legacyStatusFiles).length > 0) {
337
499
  const legacyEntries: string[] = [];
338
- for (const [name, file] of node.legacyStatusFiles) {
500
+ for (const [name, file] of Object.entries(node.legacyStatusFiles)) {
339
501
  const v = addImport(file);
340
502
  legacyEntries.push(
341
503
  `${nextIndent} ${JSON.stringify(name)}: { load: ${v}, filePath: ${JSON.stringify(file.filePath)} }`
@@ -347,9 +509,9 @@ function generateManifestModule(tree: RouteTree): string {
347
509
  }
348
510
 
349
511
  // Metadata route files (sitemap.ts, robots.ts, icon.tsx, etc.)
350
- if (node.metadataRoutes && node.metadataRoutes.size > 0) {
512
+ if (node.metadataRoutes && Object.keys(node.metadataRoutes).length > 0) {
351
513
  const metaEntries: string[] = [];
352
- for (const [name, file] of node.metadataRoutes) {
514
+ for (const [name, file] of Object.entries(node.metadataRoutes)) {
353
515
  const v = addImport(file);
354
516
  metaEntries.push(
355
517
  `${nextIndent} ${JSON.stringify(name)}: { load: ${v}, filePath: ${JSON.stringify(file.filePath)} }`
@@ -367,9 +529,11 @@ function generateManifestModule(tree: RouteTree): string {
367
529
  }
368
530
 
369
531
  // Parallel slots
370
- if (node.slots.size > 0) {
532
+ const slotKeys = Object.keys(node.slots);
533
+ if (slotKeys.length > 0) {
371
534
  const slotEntries: string[] = [];
372
- for (const [slotName, slotNode] of node.slots) {
535
+ for (const slotName of slotKeys) {
536
+ const slotNode = node.slots[slotName]!;
373
537
  slotEntries.push(
374
538
  `${nextIndent} ${JSON.stringify(slotName)}: ${serializeNode(slotNode, nextIndent + ' ')}`
375
539
  );
@@ -391,6 +555,13 @@ function generateManifestModule(tree: RouteTree): string {
391
555
  proxyLine = ` proxy: { load: ${v}, filePath: ${JSON.stringify(tree.proxy.filePath)} },`;
392
556
  }
393
557
 
558
+ // Global error page (Tier 2)
559
+ let globalErrorLine = '';
560
+ if (tree.globalError) {
561
+ const v = addImport(tree.globalError);
562
+ globalErrorLine = ` globalError: { load: ${v}, filePath: ${JSON.stringify(tree.globalError.filePath)} },`;
563
+ }
564
+
394
565
  // Interception rewrites — computed at build time from the route tree.
395
566
  // Only interceptedPattern and interceptingPrefix are needed at runtime.
396
567
  const rewrites = collectInterceptionRewrites(tree.root);
@@ -406,7 +577,9 @@ function generateManifestModule(tree: RouteTree): string {
406
577
  ...imports,
407
578
  '',
408
579
  'const manifest = {',
580
+ ` viteRoot: ${JSON.stringify(viteRoot)},`,
409
581
  proxyLine,
582
+ globalErrorLine,
410
583
  rewritesLine,
411
584
  ` root: ${rootSerialized},`,
412
585
  '};',
@@ -137,5 +137,36 @@ export function timberServerBundle(): Plugin[] {
137
137
  },
138
138
  };
139
139
 
140
- return [bundlePlugin, esmInitFixPlugin];
140
+ // Fix Rolldown's `createRequire(import.meta.url)` CJS interop shim for
141
+ // Cloudflare Workers. Rolldown emits this for CJS dependencies (e.g.
142
+ // @opentelemetry/context-async-hooks) that use `require()`. On Workers,
143
+ // `import.meta.url` is `undefined` for non-entry modules, causing:
144
+ // TypeError: The argument 'path' must be a file URL object, a file URL
145
+ // string, or an absolute path string. Received 'undefined'
146
+ //
147
+ // The fix: provide a fallback URL when `import.meta.url` is undefined.
148
+ // The actual URL doesn't matter — `createRequire` only needs it for
149
+ // resolving relative paths, but the only `__require()` calls are for
150
+ // Node built-ins (events, async_hooks) which resolve from any base.
151
+ //
152
+ // The top-level `ssr: { target: 'webworker' }` was supposed to prevent
153
+ // this, but it doesn't propagate to custom environments (rsc) in Vite's
154
+ // Environment API. See LOCAL-405.
155
+ const createRequireFixPlugin: Plugin = {
156
+ name: 'timber-create-require-fix',
157
+ applyToEnvironment(environment) {
158
+ return environment.name === 'rsc' || environment.name === 'ssr';
159
+ },
160
+ renderChunk(code) {
161
+ const pattern = 'createRequire(import.meta.url)';
162
+ if (!code.includes(pattern)) return null;
163
+
164
+ return {
165
+ code: code.replace(pattern, 'createRequire(import.meta.url || "file:///app")'),
166
+ map: null,
167
+ };
168
+ },
169
+ };
170
+
171
+ return [bundlePlugin, esmInitFixPlugin, createRequireFixPlugin];
141
172
  }